Почему chrome отображает разные символы Юникода ”你” (U + 2F804) ”和 你” (U + 4F60) - это одинаковые символы - PullRequest
0 голосов
/ 16 января 2019

В системе Windows 7 Chrome использует шрифт «Microsoft YaHei» для отображения символов U + 2F804 (你) в виде U + 4F60 (你)

но в этом шрифте нет соответствующего символа U + 2F804.

Результаты, полученные с помощью fontCreator, показаны ниже

click to show the image

В Windows 10 System, потому что есть шрифт Yu Gothic, поэтому результат правильный.

click to show the image

click to show the image

Меня удивляет, почему Windows 7 будет отображаться как U + 4F60 (你)

URL-адрес кода: http://yanglikun.github.io/encoding/code.html

Я думаю, что должен отображаться вопросительный знак 、 口 、 или другие символы, когда в шрифте Microsoft YaHei нет соответствующего символа, но нет неправильного символа U + 4F60 (你)

1 Ответ

0 голосов
/ 16 января 2019

Примечание: кодовая точка Unicode и глифы шрифта не связаны напрямую. Фактический глиф зависит от контекста, лигатуры, сочетания символов, языка и, возможно, других факторов (см. Стандарт Unicode).

Unicode определяет, что U + 2F804 разложим до U + 4F60. Часто тексты Unicode нормализуются программным обеспечением. Либо путем их разложения (так часто разделяя символы и акценты, например, для латинских языков), либо путем их составления. Такие алгоритмы описаны в Unicode. Таким образом, в этом случае считается, что U + 4F60 семантически полностью равен U + 2F804 (и предпочтительной форме). Нечасто можно увидеть разложение, которое содержит одинаковое количество кодовых точек (но также невидимо). И также не редко иметь разложение в одном направлении и никакого отношения в другом направлении.

Этот символ содержится в Дополнении к иероглифам совместимости CJK , поэтому важной частью является совместимость , что подтверждается также статьей википедии (https://en.wikipedia.org/wiki/CJK_Compatibility_Ideographs_Supplement).

Кодовая точка совместимости была введена, чтобы упростить внедрение Unicode, обеспечивая преобразование без потерь в другую кодировку. [Таким образом, можно реализовать Unicode на разных уровнях, без проблем и полностью прозрачно, без необходимости менять другие слои (или, что еще хуже: изменить весь стек за один шаг).

...