Я увидел этот вопрос в предложении на сайте Типографии, и мне показалось, что я не знаю ответа. Я всегда считал «глиф» и «характер» взаимозаменяемыми.
После прочтения объяснения на странице модели кодировки символов Unicode мое понимание примерно следующее:
- Символы определяются по их значению в языке, глифы, по их внешнему виду . Итак, лигатура для эстетического сочетания
fi
- это один глиф, но два символа.
Итак, я верю (пожалуйста, поправьте меня, если я ошибаюсь), что практическая разница будет:
- Текстовые парсеры, которые не интересуются эстетикой текста, будут читать глифы как соответствующие им символы. Так:
- Если бы вы копировали и вставляли текст, содержащий глифы, в простой текстовый редактор, глифы были бы преобразованы в соответствующие им символы (
fi
лигатурный глиф стал быf
иi
) - Любая хорошо сделанная автоматизированная система, основанная на разборе текста (например, поисковые роботы, программы чтения с экрана, средства проверки орфографии) будет интерпретировать глифы как соответствующие им символы.
- Один символ может иметь много глифов или наборов глифов. Я хочу сказать, что один глиф может иметь только один символ, но это явно не правильно, поскольку в связанной статье есть пример 3 глифов и наборов глифов, каждый из которых, по-видимому, соответствует символу и набору символов. Я не совсем понимаю, как это могло бы работать: конечно, это означает, что будет несогласованность или неоднозначность в том, как эти глифы интерпретируются, в зависимости от интерпретатора? (или это зависит от языка или шрифта?)
- В то время как браузеры глифов (например, в Illustrator) содержат полный набор глифов шрифта, карты символов (например, карта символов Windows) содержат только символы, а не глифы, которые являются несколькими символами, такими как лигатуры (то, что я раньше не замечал)
- Если бы вы копировали и вставляли текст, содержащий глифы, в простой текстовый редактор, глифы были бы преобразованы в соответствующие им символы (
Я чувствую, что я почти на месте, но я явно что-то неправильно понял: не только «Один символ с несколькими символами», но также копирование и вставка поведения с помощью лигатур не совсем то, что я ожидал:
- Скопируйте лигатуру
fi
из Illustrator в это поле ввода: вставьте какfi
(два символа), как и ожидалось. - Вставьте в HTML-код для него (
fi
) - отображается как лигатура, когда не в блоке кода (если этот шрифт не очень похож на лигатуру, но вы увидите один, если попытаетесь выбрать только половину о нем), и код, когда в блоке кода (fi
), как и ожидалось. - Скопируйте и вставьте визуализированную лигатуру без кодового блока обратно в поле ввода: вставьте как символ лигатуры и отобразите как лигатуру независимо от того, находится ли она в блоке кода или нет (fi и
fi
). Точно так же слова, содержащие его: FIF FITS (fit misfits
) вставляет как FIT FITS (fit misfits
). Может быть, это зависит от того, понимает ли место, куда он вставляется, используемую кодировку?
Насколько неправильно мое понимание этого? Может ли кто-то исправить меня: сформулировать четкое определение различий между глифами и символами (если мой неверен или может быть улучшен) и привести более четкие / более точные примеры, чем мои, о том, что это означает на практике ?
источник
Ответы:
Символы относятся к тому, как текст отображается, символы к тому, как он интерпретируется. При копировании и вставке исходное приложение обычно предоставляет выбор из нескольких форматов. Обычный текст разлагает лигатуру на f и i, формат HTML может переводить ее в цитируемую вами сущность char, а также разлагать ее на f и i.
В общем, отношение между символами и глифами n: m. В индийских языках некоторые символы делятся на два символа, которые расположены в разных местах слова. На латинском языке наиболее близким к этой ситуации было бы отображение é как двух глифов (e и ´). В арабском языке каждый символ имеет разные символы в зависимости от его положения в слове: начальный, средний, конечный или изолированный.
Перевод символов в глифы специфичен для каждого приложения и типографских функций, которые он поддерживает. Для латинского текста этот перевод был простым, но шрифты OpenType добавили дополнительные функции, такие как лигатуры, штрихи, альтернативные формы, маленькие заглавные буквы и т. Д.
По практическим соображениям вы заботитесь о глифах только тогда, когда вы реализуете, как приложение отображает текст, или когда вы разрабатываете шрифт, или когда вы хотите применить функцию OpenType, которая заменяет некоторые глифы другими (например, лигатуры). В противном случае кодовые точки Unicode - ваш друг.
источник
Я не думаю, что ваше понимание неверно, вы просто видите системы, которые пытаются помочь пользователю, вставляя то, что он думает, что он хочет. Поскольку некоторые лигатуры ('fi', 'fl') довольно распространены за пределами систем набора текста, программное обеспечение распознает, что пользователь, вероятно, не вводил этот глиф, а другое приложение преобразовало их печатные символы.
Вкратце: характер относится к языковой единице. Глиф относится к спроектированному экземпляру этого устройства, будь то заглавная, строчная, маленькая кепка, исторический или стилистический вариант.
источник
Здесь есть несколько ответов, которые дают хорошую информацию о глифах и символах, но на самом деле они не обращаются к источнику вашей путаницы в отношении копирования и вставки.
Прежде всего, ваше понимание в корне верно:
Стоит подчеркнуть, что список символов определяется стандартом Unicode, который публикуется Консорциумом Unicode, из-за того, что они имеют право на кодирование текста в машиночитаемом формате. Вышеприведенное определение по сути является основным руководством, которое члены Консорциума Unicode используют для определения того, является ли какое-либо предлагаемое дополнение к Unicode символом и, следовательно, заслуживающим включения или глифом и должно ли обрабатываться средствами визуализации шрифтов.
Я упоминаю об этом, потому что путаница, с которой вы столкнулись выше, произошла из-за того, что в Unicode существует несколько лигатурных символов (не глифов ). Например,
U+FB01
это символ для подписи: http://unicode.org/charts/PDF/UFB00.pdfНаличие лигатурных символов в Unicode на самом деле не соответствует духу приведенного выше определения того, какие вещи следует включать в стандарт Unicode в качестве символов, поскольку лигатуры на самом деле не имеют значения, независимого от композиции двух других символов. Люди Unicode, естественно, знают об этом, и часто задаваемые вопросы Unicode по лигатурам допускают следующее:
Существование этого персонажа в конечном итоге является источником вашей путаницы.
В правильно реализованном программном обеспечении, копируя текст всегда должен скопировать символы , которые были заданы, а не глифы , и это именно то , что происходит в ваших трех примерах.
1) В первом примере, вы набрали
f
иi
в Illustrator, который вынес одну лигатуры глиф . Когда вы выбрали и скопировали этот визуализированный глиф, Illustrator правильно скопировал символыf
(U+0066
) иi
(U+0069
) в буфер обмена.2) Во втором примере вы ввели код HTML для лигатурного символа (
fi
) в поле ввода и правильно получили лигатурный глиф, представляющий лигатурный символ (поскольку базовый символ на самом деле является темным и относительно бессмысленным лигатурным символом, о котором я упоминал выше, выбор этого глифа будет копировать один символU+FB01
.3) В третьем примере вы копируете визуализированный лигатурный символ,
U+FB01
который был визуализирован во второй части, который всегда будет вставляться как этот символ. Ваша основная путаница, похоже, связана с различием между кодами сущностей HTML и символами, особенно в том, как они отображаются внутри и снаружи блоков кода.Код сущности HTML
fi
представляет собой строку из 8 различных символов. HTML - рендерер вашего веб - браузера подменяет эти 8 символовU+0026 U+0023 U+0036 U+0032 U+0035 U+0037 U+0023
с одного символа UnicodeU+FB01
, который затем делает правильно. Однако<code>
тег в HTML отключает это поведение, оставляя эти 8 символов такими, какие они есть.Когда вы копируете визуализированный HTML, вы копируете визуализированные символы (которые отличаются от визуализированных глифов ). Таким образом, когда вы копируете визуализированную сущность HTML, отдельный
U+FB01
символ копируется в буфер обмена.Когда вы вставляете
fi
U+FB01
символ обратно в HTML, подстановка не требуется, то есть символ отображается как лигатура независимо от того, попадает ли он в<code>
блок.источник
Символы - это то, что хранится в текстовых файлах, обрабатывается приложениями и перемещается, а глифы - это их визуальное представление.
Чтобы получить четкое изображение, давайте посмотрим, что происходит, когда приложение пытается отобразить строку текста на экране (в несколько упрощенном виде):
f
иi
с лигатурным глифомfi
) и позиционирование (например, кернинг).file
соответствуют двум первым глифам (fi
лигатура), 3-му символу для 2-го глифа и 4-му символу для 3-го глифа.источник