Яка практична відмінність між "гліфом" та "характером"?


26

Я побачив це запитання на пропозиції сайту «Типографія», і це мене неспокоїло, що я не знаю відповіді. Я завжди ставився до "гліфів" та "характеру" як до змінних.


Прочитавши пояснення на сторінці Модель кодування символів Unicode , моє розуміння приблизно таке:

  • Персонажі визначаються за їх значенням у мові, гліфах, за їх зовнішнім виглядом . Отже, лігатура для естетичного поєднання fi - це один гліф, але два символи.

Отже, я вірю (будь ласка, виправте мене, якщо я помиляюся), що практична різниця полягатиме в наступному :

  • Текстові аналізатори, які не зацікавлені в естетиці тексту, будуть читати гліфи як їхні відповідні символи. Так:
    • Якби ви скопіювали та вставили текст, що містить гліфи, у звичайний текстовий редактор, гліфи перетворилися б на їхні відповідні символи ( лігатурний гліф стане fі i)
    • Будь-яка добре створена автоматизована система, заснована на синтаксичному аналізі тексту (наприклад, сканери пошукової системи, зчитувачі екранів, перевірки орфографії) інтерпретували б гліфи як їхні відповідні символи.
    • Один символ може мати безліч гліфів або наборів гліфів. Я хочу сказати, що один гліф може мати лише один символ, але це явно неправильно, оскільки є приклад на пов'язаній статті з 3-х гліфів та наборів гліфів, які, здається, відповідають кожному символу та набору символів. Я не зовсім розумію, як це могло б працювати: напевно, це означає, що буде траплятися непослідовність чи неоднозначність у тому, як інтерпретуються ці гліфи, залежно від інтерпретатора? (чи змінюється це залежно від мови чи шрифту?)
    • Хоча веб-переглядачі гліфів (наприклад, той, який є в Illustrator), містять повний набір гліфів шрифту, карти символів (наприклад, карта символів Windows) містять лише символи, а не гліфи, які є декількома символами, як лігатури (чого я раніше не помічав)

Я відчуваю, що я майже там, але я чітко неправильно зрозумів щось десь уздовж лінії: не лише те, що "Один гліф з декількома символами", але також, поведінка копіювання та вставки з лігатурами не зовсім те, чого я очікував:

  • Скопіюйте лігатуру з Illustrator у це поле для введення: вставляється як fi(два символи), як очікувалося.
  • Вставити код HTML для нього ( fi) - відображається як лігатура, коли не знаходиться в блоці коду (fi - який у цьому шрифті не схожий на лігатуру, але ви побачите один, якщо спробувати вибрати лише половину з нього) і код, коли в кодовому блоці ( fi), як очікувалося.
  • Скопіюйте та вставте візуалізовану лігатуру без коду назад у поле введення: вставляє як символ лігатури, а візуалізує як лігатуру незалежно від того, перебуває вона у блоці коду чи ні (fi та ). Так само слова, що містять його: fi t mis fi ts ( fit misfits) вставляє як fi t mis fi ts ( fit misfits). Може, це залежить від того, чи розуміє місце, яке він вставляється, кодування, яке використовується?

Наскільки неправильно моє розуміння цього? Чи може хтось правильно мене сказати: виклавши чітке визначення різниці між гліфами та символами (якщо моя помиляється чи можна вдосконалити), і навести більш чіткі / точні приклади, ніж моє, що це означає на практиці ?


2
Це стає складніше, коли у вас є такі сценарії, як арабська, де ви поєднуєте символи.
Відновіть Моніку - М. Шредер

1
@ MartinSchröder +1 Звучить як вступне речення відмінної відповіді ... :)
user56reinstatemonica8

Відповіді:


4

Гліфи відносяться до того, як виводиться текст, символи до того, як його інтерпретується. Коли ви копіюєте та вставляєте, програма-джерело зазвичай надає вибір у кількох форматах. Звичайний текст розкладе фіга-лігатуру на f і i, формат HTML може перевести її в цитоване об'єкт, який ви цитували, або також розкласти в f і i.

Загалом відношення між символами та гліфами становить n: m. У індійських мовах деякі символи діляться на два гліфи, які розміщуються в різних місцях слова. Латиніною найбільш близькою до цієї ситуації було б надання е як два гліфи (e і ´). В арабській мові кожен символ має різні гліфи, залежно від свого положення в слові: початковий, середній, заключний або ізольований.

Переклад з символів на гліфи характерний для кожної програми та типографічних особливостей, які вона підтримує. Для латинського тексту цей переклад був простим, але шрифти OpenType ввели додаткові функції, такі як лігатури, кадри, альтернативні форми, невеликі шапки тощо.

З практичних причин ви ставитеся до гліфів лише тоді, коли реалізуєте, як додаток надає текст, або коли ви створюєте шрифт, або коли ви хочете застосувати функцію OpenType, яка замінює деякі гліфи іншими (наприклад, лігатурами). Інакше кодові точки Unicode - ваш друг.


Привіт user322483, ласкаво просимо до GDSE і дякуємо за вашу відповідь. Якщо у вас є якісь запитання, будь ласка, зверніться в довідковий центр або зателефонуйте одному з нас у графічний дизайн чату, коли ваша репутація буде достатньою (20). Продовжуйте сприяти і насолоджуйтесь сайтом!
Вінсент

1
Ви пишете: "Арабською мовою кожен символ має різні гліфи, залежно від свого положення в слові: початковий, середній, заключний або ізольований". <--- Чи б вони не були різними персонажами. В англійській мові є A і a, але в обчислювальній розмові A і a - це різні символи. кожен гліф відображається в іншому коді. На івриті є тертка та остаточна плівка (буквене письмо в кінці слова, виглядає інакше), і я впевнений, що його називають різним символом у обчисленні.
барлоп

14

Я не думаю, що ваше розуміння невірно, ви просто бачите системи, які намагаються допомогти користувачеві, вставивши те, що він думає, що їм хочеться. Оскільки деякі лігатури ('fi', 'fl') є досить поширеними поза системами набору програм, програмне забезпечення визнає, що користувач, ймовірно, не ввів цей гліф, а інша програма перетворила їх введені символи.

Коротше кажучи: персонаж відноситься до мовної одиниці. Гліф позначає розроблений екземпляр цього блоку, будь то великі, малі, маленькі шапки, історичний чи стилістичний варіант.


В обчислювальних технологіях A і a - це різні символи. ASCII має 128 символів, а термін "символ" містить A та a як окремі символи.
барлоп

Інженери використовують багато слів, які не узгоджуються з прецедентами в інших галузях. Ваш - один хороший приклад.
цивільний одяг

хто першим придумав термін "характер" та "гліф"? графічні дизайнери чи комп'ютерні інженери? я б подумав, що комп'ютери прийшли до графічного дизайну. Але може існувати поліграфічна галузь, яка передувала графічному дизайну та певними способами, що передували, і передувала сучасним комп'ютерам. Я думаю, хоча люди, які могли б найкраще відповісти за те, що зараз є графічним дизайном, - це поліграфічна галузь, але немає жодної зміни поліграфічної галузі. Але було б цікаво дізнатися, хто запозичив у кого і яким способом переймати термін Характер.
барлоп

1
Типографія вийшла задовго до інженерії програмного забезпечення. Будь ласка, напишіть тут, якщо ви проведете дослідження та знайдете витоки. Я здогадуюсь, що це буде колись у 17 столітті. Можливо, вже перші друкарні в середині 16-го.
цивільний одяг

6

Тут є кілька відповідей, які дають добру інформацію про гліфи проти символів, але вони насправді не вирішують джерело вашої плутанини щодо копіювання та вставки.

Перш за все, ваше розуміння принципово правильне:

Персонажі визначаються за їх значенням у мові, гліфах, за їх зовнішнім виглядом . Отже, лігатура для естетичного поєднання fi - це один гліф, але два символи.

Варто підкреслити, що список символів визначається стандартом Unicode, який публікується консорціумом Unicode, через те, що вони мають повноваження щодо кодування тексту у машиночитаному форматі. Визначене вище значення є по суті основним принципом, яким користуються члени Консорціуму Unicode для визначення того, чи є якесь запропоноване доповнення до Unicode символом і, таким чином, гідним включення, або глифом, і яким слід керувати рендери.

Я згадую про це, тому що плутанина, яку ви зазнали вище, була пов'язана з тим, що в Unicode існує кілька символів лігатури (а не гліфів ). Наприклад, U+FB01є символом для g лігатури: http://unicode.org/charts/PDF/UFB00.pdf

Наявність символів лігатури в Unicode насправді не відповідає духу наведеного вище визначення того, які види речей повинні бути включені до стандарту Unicode як символи, оскільки лігатури насправді не мають значення, незалежне від складу двох інших символів. Про це природно знають люди Unicode, і поширені запитання щодо лігатур Unicode допускають стільки:

Існуючі лігатури в основному існують для сумісності та кругового відключення з наборами символів не Unicode. Їх використання не рекомендується.

Існування цього персонажа в кінцевому рахунку є джерелом вашої плутанини.

У правильно виконаному програмному забезпеченні при копіюванні тексту завжди слід копіювати вказані символи , а не гліфи , і саме це відбувається у ваших трьох прикладах.

1) У першому прикладі ви ввели fі iв Illustrator, який створив єдиний лігатурний гліф . Коли ви вибрали та скопіювали цей візуалізований гліф, Illustrator правильно скопіював символи f( U+0066) та i( U+0069) у буфер обміну.

2) У другому прикладі, ви ввели HTML код для лігатури символу ( &#64257) в поле вводу, і правильно отримав лігатури символ , який представляє лігатури характер (. Так як основний персонаж насправді неясного і щодо безглуздо лігатури характер я вже говорив вище, вибравши, що гліф буде копіювати один символ U+FB01.

3) У третьому прикладі ви копіюєте виведений символ лігатури, U+FB01який було надано у частині 2, який завжди буде вставляти як цей символ. Ваша основна плутанина, здається, стосується різниці між кодами сутності HTML та символами, особливо щодо того, як вони відображаються в блоках коду та поза ними.

Код сутності HTML &#64257;- це рядок з 8 різних символів. HTML візуалізації вашого веб - браузера підміняє ці 8 символів U+0026 U+0023 U+0036 U+0032 U+0035 U+0037 U+0023з одного символу Unicode U+FB01, який потім робить правильно. Однак <code>тег у HTML відключає таку поведінку, залишаючи ці 8 символів такими, якими вони є.

Коли ви копіюєте виведений HTML, ви копіюєте відображені символи (які відрізняються від відображених гліфів ). Таким чином, коли ви копіюєте відтворену сутність HTML, один U+FB01символ копіюється у буфер обміну.

Коли ви вставляєте U+FB01символ назад у HTML, заміни не потрібно проводити, тобто символ відображається як лігатура незалежно від того, потрапляє він у <code>блок.


1

Символи - це те, що зберігається у текстових файлах, обробляється програмами та переміщується, тоді як гліфи - це їх візуальне зображення.

Щоб мати чітке зображення, давайте подивимося, що відбувається, коли програма намагається вивести рядок тексту на екран (трохи спрощеним способом):

  • Програма спочатку прочитала текстовий рядок, що це рядок символів, що зберігаються на диску або в пам'яті.
  • Потім він надішле його в механізм компонування тексту, серед деяких інших властивостей, таких як бажаний шрифт, мова тексту тощо:
    • Двигун розташування тексту в основному відкриває файл шрифту, задає його для гліфа (ів) , відповідного кожному символу і зробити деякі гліфів заміни (наприклад , заміна гліфа для fі iз лігатури гліфа fi) і позиціонування (як кернинг).
    • В кінці двигун компонування має послідовність гліфів, їх положення відносно один одного та відображення між вхідними символами та вихідними гліфами. Символ для відображення гліфів такий, що він знає, що перші два символи у слові fileвідповідають двом першому гліфу ( fiлігатура), 3-му символу - 2-му гліфу та 4-му символу - 3-му гліфом.
  • Потім бібліотека візуалізації графіки використовується для "малювання" цих гліфів на екрані, використовуючи фігури з шрифту.
  • Коли користувач вибирає "глифи" на екрані, програма додатково звертається до глифів для відображення тексту, наданого механізмом компонування, щоб знайти, яка частина вхідного тексту відповідає тому, що вибирає користувач, і надішле цей текст до буфера обміну, коли користувач копіює його.
  • Те саме відбувається, коли користувач вставляє курсор в середину тексту і починає набирати текст, відображення визначає, куди у вхідний текст вставити нові символи, а оновлений текст надсилається в механізм компонування для обробки та перемальовування тощо.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.