Может ли Unicode-символ лигатуры иметь более одного представления в UTF8? - PullRequest
0 голосов
/ 22 февраля 2012

Может иметь лигатурный символ Unicode fi (Unicode U + FB01) более одного представления в UTF8?Который из?Для каждой формы нормализации?

Ответы [ 2 ]

2 голосов
/ 22 февраля 2012

Это зависит от значения слова «характер», которое довольно неясно.В Unicode «символ» обычно означает кодовую точку, назначенную символу, и это в точности соответствует интуитивному понятию «символ».

Одна кодовая точка, такая как U + FB01, имеет только одно представление в UTF-8, потому что UTF-8 определяет однозначный алгоритм для генерации закодированной формы.

Интуитивный символ, такой как лигатура, может иметь различные представления в качестве кодовой точки или в виде последовательности кодовых точек, каждая из которых имеетUTF-8 представлений.Правила нормализации Unicode частично определяют сопоставления между такими альтернативами.

Но отображение совместимости для U + FB01 (для U + 0066 U + 0069, т.е. «f», за которым следует «i») не сохраняет идентичность интуитивного символа: лигатура отображается на два нормальныхбуквы.

С другой стороны, вы можете попросить или предложить лигатурное поведение, вставив U + 200D ZERO WIDTH JOINER (ZWJ) между двумя буквами, такими как «f» и «i».В некотором смысле последовательность U + 0066 U + 200D U + 0069 является альтернативным представлением фигуры, но это не является формальным свойством символа, и от программного обеспечения рендеринга зависит, обращает ли оно внимание на ZWJ.

2 голосов
/ 22 февраля 2012

Символ должен быть закодирован как 0xEF 0xAC 0x81 в utf-8, но этот же символ можно разложить до последовательностей f и i, которые вместе равны 0x66 0x69.На ваш вопрос фактически ответили эта таблица из спецификации Unicode :

normalized forms of ligatures

Как видите, нормализации NFD и NFCвсе еще используя ту же кодовую точку для лигатуры, в то время как формы NFKD и NFKC используют комбинацию f + i.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...