Я видел этот вопрос в предложении сайта типографии, и меня беспокоило, что я не знал ответа. Я всегда считал «глиф» и «символ» взаимозаменяемыми.
После прочтения объяснения на странице модели кодировки символов Unicode мое понимание примерно такое:
fi
— это один глиф, а два знака.Итак, я считаю (пожалуйста, поправьте меня, если я ошибаюсь), что практическая разница будет заключаться в следующем:
fi
глиф лигатуры стал бы f
и i
)Мне кажется, что я почти у цели, но я явно что-то неправильно понял где-то в строке: не только вещь «Один глиф, несколько символов», но и поведение копирования и вставки с лигатурами не совсем то, что я ожидал:
fi
из Illustrator в это поле ввода: вставьте как fi
(два символа), как и ожидалось.fi
) — отображается как лигатура, когда не находится в блоке кода (fi — что в этом шрифте не очень похоже на лигатуру, но вы увидите, что это один из них, если вы попытаетесь выделить только половину из него) и код в блоке кода ( fi
), как и ожидалось.fi
). Точно так же слова, содержащие его: подходят несоответствия ( fit misfits
) вставляют как подходят несоответствия ( fit misfits
). Может быть, это зависит от того, понимает ли место, куда оно вставляется, используемую кодировку?Насколько неверно мое понимание этого? Может ли кто-нибудь поправить меня: дать четкое определение разницы между глифами и символами (если мое неверно или может быть улучшено) и привести более четкие / более точные примеры того, что это означает на практике ?
Я не думаю, что ваше понимание неверно, вы просто видите системы, которые пытаются помочь пользователю, вставляя то, что, по его мнению, он хочет. Поскольку некоторые лигатуры («fi», «fl») довольно распространены за пределами систем набора текста, программное обеспечение распознает, что пользователь, вероятно, не ввел этот глиф, а другое приложение преобразовало набранные им символы.
Вкратце: символ относится к языковой единице. Глиф относится к разработанному экземпляру этой единицы, будь то заглавная, строчная буква, буквица, исторический или стилистический вариант.
Здесь есть несколько ответов, которые дают хорошую информацию о глифах и символах, но на самом деле они не затрагивают источник вашей путаницы в отношении копирования и вставки.
Во-первых, ваше понимание в корне правильное:
Символы определяются их значением в языке, глифами, их внешним видом . Итак, лигатура для эстетического сочетания 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-код для символа лигатуры ( fi
) в поле ввода и правильно получили глиф лигатуры, представляющий символ лигатуры (. Поскольку базовый символ на самом деле является неясным и относительно бессмысленным символом лигатуры, о котором я упоминал выше, при выборе этого глифа будет скопирован один символ U+FB01
.
3) В третьем примере вы копируете визуализированный символ U+FB01
лигатуры , который был визуализирован в части 2, который всегда будет вставляться как этот символ. Ваша основная путаница, по-видимому, связана с разницей между кодами объектов HTML и символами, особенно в отношении того, как они отображаются внутри и вне блоков кода.
Код объекта HTML fi
представляет собой строку из 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
символ копируется в буфер обмена.
Когда вы вставляете fi
U+FB01
символ обратно в HTML, замены не требуется, то есть символ отображается как лигатура независимо от того, попадает ли он в <code>
блок или нет.
Глифы относятся к тому, как отображается текст, символы к тому, как он интерпретируется. При копировании и вставке исходное приложение обычно предлагает на выбор несколько форматов. Обычный текст разложит лигатуру fi на f и i, формат HTML может преобразовать ее в цитируемый вами объект char или также разложить ее на f и i.
В общем отношение между символами и глифами равно n:m. В индийских языках некоторые символы делятся на два глифа, которые располагаются в разных местах слова. На латыни ближе всего к этой ситуации будет перевод é в виде двух символов (e и ´). В арабском языке каждый символ имеет разные глифы в зависимости от его положения в слове: начальный, средний, конечный или изолированный.
Перевод символов в глифы специфичен для каждого приложения и типографских функций, которые оно поддерживает. Для латинского текста этот перевод раньше был простым, но шрифты OpenType представили дополнительные функции, такие как лигатуры, росчерки, альтернативные формы, капители и т. д.
Из практических соображений глифы интересуют вас только тогда, когда вы реализуете то, как приложение отображает текст, или когда вы разрабатываете шрифт, или когда вы хотите применить функцию OpenType, которая заменяет одни глифы другими (например, лигатурами). В противном случае кодовые точки Unicode — ваш друг.
Символы — это то, что хранится в текстовых файлах, обрабатывается приложениями и перемещается, а глифы — это их визуальное представление.
Чтобы иметь ясное представление, давайте посмотрим, что происходит, когда приложение пытается отобразить строку текста на экране (немного упрощенно):
f
и позиционирование (например, кернинг).i
fi
file
соответствуют двум первым глифам ( fi
лигатурам), 3-й символ — второму глифу и 4-й символ — третьему глифу.
Мартин Шредер
пользователь56reinstatemonica8