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


26

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


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

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

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

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

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

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

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


2
Это становится намного сложнее, когда у вас есть такие скрипты, как арабский, где вы комбинируете символы.
Восстановить Монику - М. Шредер

1
@ MartinSchröder +1 Звучит как вступительное предложение отличного ответа ... :)
user56reinstatemonica8

Ответы:


4

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

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

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

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


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

1
Вы пишете: «На арабском языке каждый символ имеет разные символы в зависимости от его положения в слове: начальный, средний, конечный или изолированный». <--- Разве они не будут разными персонажами? В английском есть A и a, но в компьютерных разговорах A и a - разные символы. каждый глиф сопоставляется с другим кодом. На иврите есть chaf и последний chaf (буква chaf в конце слова выглядит иначе), и я уверен, что это называется другим символом в вычислительной технике.
Barlop

14

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

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


В вычислениях А и А - это разные символы. ASCII имеет 128 символов, а термин «символ» включает символы A и a в качестве отдельных символов.
Barlop

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

кто придумал термины «характер» и «глиф» первым? графические дизайнеры или компьютерные инженеры? Я бы подумал, что компьютеры появились раньше, чем графический дизайн. Но может быть полиграфическая индустрия, которая предшествовала графическому дизайну и, возможно, предшествовала компьютерам или предшествовала современным компьютерам. Я думаю, что люди, которые могли бы ответить лучше всего за то, что сейчас является графическим дизайном, - это полиграфическая индустрия, но нет обмена в полиграфической индустрии. Но было бы интересно узнать, кто заимствовал у кого и каким образом использовать термин «персонаж».
Барлоп

1
Типография появилась задолго до разработки программного обеспечения. Пожалуйста, пишите здесь, если вы проводите исследование и выясняете происхождение. Я предполагаю, что это будет где-то в 17 веке. Возможно, уже первые типографы в середине 16-го.
штатском

6

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

Прежде всего, ваше понимание в корне верно:

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

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

Я упоминаю об этом, потому что путаница, с которой вы столкнулись выше, произошла из-за того, что в Unicode существует несколько лигатурных символов (не глифов ). Например, U+FB01это символ для подписи: 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 который был визуализирован во второй части, который всегда будет вставляться как этот символ. Ваша основная путаница, похоже, связана с различием между кодами сущностей 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.