Какая разница между символом, точкой кода, глифом и графемой?

Попытка понять тонкости современного Юникода заставляет мою голову болеть. В частности, различие между кодовыми точками, символами, глифами и графемами - понятия, которые в простейшем случае при использовании английского текста с использованием символов ASCII имеют взаимно-однозначное отношение друг к другу - вызывает у меня проблемы.

Увидев, как эти термины используются в таких документах, как Matthias Bynens JavaScript имеет проблему с unicode или часть Википедии на Объединение Han, я понял, что эти понятия не то же самое, и что это опасно для их объединения, но я как бы пытаюсь понять, что означает каждый термин.

Консорциум Unicode предлагает glossary, чтобы объяснить это, но он полон "определений" следующим образом:

Абстрактный символ. Единица информации, используемая для организации, контроля или представления текстовых данных....

...

Символ.... (2) Синоним абстрактного характера. (3) Базовая единица кодирования для кодировки символов Юникода....

...

Символ. (1) Абстрактная форма, представляющая одно или несколько изображений глифов. (2) Синоним для изображения глифов. При отображении символьных данных Юникода один или несколько глифов могут быть выбраны для отображения определенного символа.

...

графема. (1) Минимально отличительная единица записи в контексте конкретной системы письма....

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

Итак, я ищу тайную мудрость тех, кто учится больше, чем я. Как именно каждая из этих концепций отличается друг от друга и в каких обстоятельствах они не будут иметь отношения "один к одному" друг с другом?

Ответ 1

  • Характер - это перегруженный термин, чем может означать много вещей.

  • Кодовая точка - это атомная единица информации. Текст - это последовательность кодовых точек. Каждая кодовая точка представляет собой число, которое задается стандартом Unicode.

  • Блок кода является единицей хранения части закодированной кодовой точки. В UTF-8 это означает 8 бит, в UTF-16 это означает 16 бит. Единый блок кода может представлять собой полную кодовую точку или часть кодовой точки. Например, символ снеговика () представляет собой единую кодовую точку, но 3 кодовых блока UTF-8 и 1 кодовый блок UTF-16.

  • Графема - это последовательность из одной или нескольких кодовых точек, которые отображаются как единый графический элемент, который читатель распознает как один элемент системы письма. Например, как a, так и ä являются графемами, но они могут состоять из нескольких кодовых точек (например, ä может быть двумя кодовыми точками, один для базового символа a, за которым следует один для диареи; также альтернативный, старый, единый код, представляющий эту графему). Некоторые кодовые точки никогда не являются частью какой-либо графемы (например, нулевой ширины без участия или направленного переопределения).

  • Символ - это изображение, обычно хранящееся в шрифте (который представляет собой набор глифов), используемый для представления графемов или их частей. Шрифты могут составлять несколько глифов в одном представлении, например, если выше ä является одной кодовой точкой, шрифт может отображать это как два отдельных, пространственно перекрытых глифа. Для OTF таблицы GSUB и GPOS шрифтов содержат информацию о замещении и позиционировании, чтобы сделать эту работу. Шрифт может содержать несколько альтернативных глифов для одной и той же графемы.

Ответ 2

Вне стандарта Unicode символ - это отдельная единица текста, состоящая из одной или нескольких графем. То, что стандарт Unicode определяет как "символы", на самом деле представляет собой смесь графем и символов. Юникод предоставляет правила для интерпретации сопоставленных графем как отдельных символов.

Кодовая точка Unicode - это уникальный номер, присваиваемый каждому символу Unicode (который является либо символом, либо графемой).

К сожалению, правила Unicode позволяют интерпретировать некоторые сопоставленные графемы как другие графемы, которые уже имеют свои собственные кодовые точки ( предварительно составленные формы). Это означает, что в Unicode существует несколько способов представления символа. Нормализация Unicode решает эту проблему.

Глиф это визуальное представление персонажа. Шрифт предоставляет набор глифов для определенного набора символов (не символов Юникода). Для каждого символа существует бесконечное количество возможных символов.

Ответ Марку Эмери

Во-первых, как я уже говорил, существует бесконечное количество возможных символов для каждого символа, поэтому нет, символ не "всегда представлен одним символом". Unicode не имеет большого отношения к глифам, и то, что он определяет в своих диаграммах кода, безусловно, не является глифами. Проблема в том, что они не все персонажи. Так что они?

Какая великая сущность, графема или персонаж? Как назвать те графические элементы в тексте, которые не являются буквами или пунктуацией? Один термин, который быстро приходит на ум, это "графема". Это слово, которое точно вызывает в воображении идею "графической единицы в тексте". Я предлагаю следующее определение: графема - это самый маленький отдельный компонент в письменном тексте.

Можно пойти другим путем и сказать, что графемы состоят из символов, но тогда они будут называться "китайскими графемами", и все эти фрагменты, из которых состоят китайские графемы, должны называться "символами". Однако это все задом наперед. Графемы - это отличные маленькие кусочки. Персонажи более развиты. Фраза "глифы являются составными", была бы лучше сформулирована в контексте Unicode как "символы являются составными".

Unicode определяет символы, но также определяет графемы, которые должны быть составлены с другими графемами или символами. Те чудовища, которые вы составили, являются прекрасным примером этого. Если они поймут, возможно, они получат свои собственные кодовые точки в более поздней версии Unicode;)

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