В чем практическая разница между «глифом» и «символом»?

Я видел этот вопрос в предложении сайта типографии, и меня беспокоило, что я не знал ответа. Я всегда считал «глиф» и «символ» взаимозаменяемыми.


После прочтения объяснения на странице модели кодировки символов Unicode мое понимание примерно такое:

  • Символы определяются их значением в языке, глифами, их внешним видом . Итак, вязь для эстетического совмещения fi— это один глиф, а два знака.

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

  • Анализаторы текста, которые не заинтересованы в эстетике текста, будут читать глифы как соответствующие им символы. Так:
    • Если бы вы скопировали и вставили текст, содержащий глифы, в обычный текстовый редактор, глифы были бы преобразованы в соответствующие им символы ( глиф лигатуры стал бы fи i)
    • Любая хорошо сделанная автоматизированная система, основанная на анализе текста (например, сканеры поисковых систем, средства чтения с экрана, средства проверки орфографии) будет интерпретировать глифы как соответствующие им символы.
    • У одного символа может быть много глифов или наборов глифов. Я хочу сказать, что один глиф может иметь только один символ, но это явно неправильно, поскольку в связанной статье есть пример из 3 глифов и наборов глифов, каждый из которых соответствует символу и набору символов. Я не совсем понимаю, как это может работать: конечно, это означает, что будет несоответствие или двусмысленность в том, как интерпретируются эти глифы, в зависимости от интерпретатора? (или это зависит от языка или шрифта?)
    • В то время как браузеры глифов (например, в Illustrator) содержат полный набор глифов шрифта, карты символов (например, карта символов Windows) содержат только символы, а не глифы, состоящие из нескольких символов, таких как лигатуры (чего я раньше не замечал)

Мне кажется, что я почти у цели, но я явно что-то неправильно понял где-то в строке: не только вещь «Один глиф, несколько символов», но и поведение копирования и вставки с лигатурами не совсем то, что я ожидал:

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

Насколько неверно мое понимание этого? Может ли кто-нибудь поправить меня: дать четкое определение разницы между глифами и символами (если мое неверно или может быть улучшено) и привести более четкие / более точные примеры того, что это означает на практике ?

Это становится намного сложнее, когда у вас есть сценарии, такие как арабский, в которых вы комбинируете символы.
@MartinSchröder +1 Звучит как вступительное предложение отличного ответа... :)

Ответы (4)

Я не думаю, что ваше понимание неверно, вы просто видите системы, которые пытаются помочь пользователю, вставляя то, что, по его мнению, он хочет. Поскольку некоторые лигатуры («fi», «fl») довольно распространены за пределами систем набора текста, программное обеспечение распознает, что пользователь, вероятно, не ввел этот глиф, а другое приложение преобразовало набранные им символы.

Вкратце: символ относится к языковой единице. Глиф относится к разработанному экземпляру этой единицы, будь то заглавная, строчная буква, буквица, исторический или стилистический вариант.

В вычислениях A и a — разные символы. ASCII имеет 128 символов, и термин «символ» включает в себя A и a как отдельные символы.
Инженеры используют множество слов, которые не соответствуют прецедентам в других отраслях. Ваш хороший пример.
кто первым придумал термины «персонаж» и «глиф»? графические дизайнеры или компьютерные инженеры? я бы подумал, что компьютеры появились раньше графического дизайна. Но может быть полиграфическая промышленность, которая предшествовала графическому дизайну и, возможно, предшествовала компьютерам или предшествовала современным компьютерам. Я думаю, что люди, которые могли бы лучше всего ответить на то, что сейчас является графическим дизайном, — это полиграфическая промышленность, но нет никакого обмена стеками в полиграфической промышленности. Но было бы интересно узнать, кто у кого заимствовал и каким образом термин Характер.
Типографика появилась задолго до разработки программного обеспечения. Пожалуйста, напишите здесь, если вы проведете исследование и найдете истоки. Я предполагаю, что это будет где-то в 17 веке. Возможно, уже у первых типографов в середине 16-го века.

Здесь есть несколько ответов, которые дают хорошую информацию о глифах и символах, но на самом деле они не затрагивают источник вашей путаницы в отношении копирования и вставки.

Во-первых, ваше понимание в корне правильное:

Символы определяются их значением в языке, глифами, их внешним видом . Итак, лигатура для эстетического сочетания fi — это один глиф, а два знака.

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

Я упоминаю об этом, потому что путаница, с которой вы столкнулись выше, была связана с тем, что в Unicode существует несколько лигатурных символов (не глифов ). Например, U+FB01это символ лигатуры: http://unicode.org/charts/PDF/UFB00.pdf

Наличие лигатурных символов в Unicode на самом деле не соответствует духу приведенного выше определения того, какие вещи должны быть включены в стандарт Unicode в качестве символов, поскольку лигатуры на самом деле не имеют значения, независимого от композиции двух других символов. Разработчики Unicode, естественно, знают об этом, и FAQ 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>блок или нет.

Глифы относятся к тому, как отображается текст, символы к тому, как он интерпретируется. При копировании и вставке исходное приложение обычно предлагает на выбор несколько форматов. Обычный текст разложит лигатуру fi на f и i, формат HTML может преобразовать ее в цитируемый вами объект char или также разложить ее на f и i.

В общем отношение между символами и глифами равно n:m. В индийских языках некоторые символы делятся на два глифа, которые располагаются в разных местах слова. На латыни ближе всего к этой ситуации будет перевод é в виде двух символов (e и ´). В арабском языке каждый символ имеет разные глифы в зависимости от его положения в слове: начальный, средний, конечный или изолированный.

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

Из практических соображений глифы интересуют вас только тогда, когда вы реализуете то, как приложение отображает текст, или когда вы разрабатываете шрифт, или когда вы хотите применить функцию OpenType, которая заменяет одни глифы другими (например, лигатурами). В противном случае кодовые точки Unicode — ваш друг.

Привет, user322483, добро пожаловать в GDSE и спасибо за ответ. Если у вас есть какие-либо вопросы, обратитесь в справочный центр или свяжитесь с одним из нас в чате графического дизайна , как только ваша репутация станет достаточной (20). Продолжайте вносить свой вклад и наслаждайтесь сайтом!
Вы пишете: «В арабском языке каждый символ имеет разные глифы в зависимости от его положения в слове: начальное, среднее, конечное или изолированное». <--- Разве это не разные персонажи. В английском есть A и a, но в компьютерном разговоре A и a — разные символы. каждый глиф сопоставлен с другим кодом. В иврите есть чаф и последний чаф (буква чаф в конце слова выглядит иначе), и я уверен, что в вычислительной технике это называется другим символом.

Символы — это то, что хранится в текстовых файлах, обрабатывается приложениями и перемещается, а глифы — это их визуальное представление.

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

  • Приложение сначала считывает текстовую строку, то есть строку символов, хранящуюся на диске или в памяти.
  • Затем он отправляет его в механизм компоновки текста, среди некоторых других свойств, таких как желаемый шрифт, язык текста и т. д.:
    • Механизм текстового макета в основном открывает файл шрифта, запрашивает у него глиф(ы), соответствующие каждому символу, и выполняет некоторую замену глифа (например, замену глифа на лигатурный глиф ) fи позиционирование (например, кернинг).ifi
    • В конце механизм компоновки имеет последовательность глифов, их положения относительно друг друга и сопоставление между входными символами и выходными глифами. Отображение символа в глиф таково, что он знает, что первые два символа в слове fileсоответствуют двум первым глифам ( fiлигатурам), 3-й символ — второму глифу и 4-й символ — третьему глифу.
  • Затем библиотека графического рендеринга используется для «рисования» этих глифов на экране с использованием форм из шрифта.
  • Когда пользователь выбирает «глифы» на экране, приложение обращается к сопоставлению глифа с текстом, предоставляемому механизмом компоновки, чтобы найти, какая часть входного текста соответствует тому, что выбирает пользователь, и отправлять этот текст в буфер обмена, когда пользователь копирует его.
  • То же самое происходит, когда пользователь вставляет курсор в середину текста и начинает печатать, сопоставление определяет, где во входном тексте вставить новые символы, а обновленный текст отправляется в механизм компоновки для обработки и перерисовки и так далее.