Как символ Unicode отображается в глифе шрифта? - PullRequest
35 голосов
/ 27 августа 2010

Мне интересно, что у каждого символа в Unicode есть кодовая точка; что такое аналогичный термин для символа в шрифте?

Я никогда не понимал часть процесса, когда декодированный файл должен быть сопоставлен со шрифтом (или шрифтами, с помощью какой-либо современной технологии замены шрифта).

Например, когда текстовый редактор декодировал файл из кодировки символов, и предположим, что есть греческая альфа α (U + 03B1). Каков точный процесс, это приложение выбирает определенный глиф в шрифте? Большинство приложений имеет предпочтительный шрифт. Допустим, это Курьер. (И что происходит в случае с редким символом Unicode в сердце ♥ (U + 2665), которого нет в шрифте по умолчанию? Как приложение узнает, что шрифт не содержит этот символ?)

Содержит ли шрифт метаинформацию о том, какие символы он имеет?

Если 2 шрифта имеют символ альфа, обязательно ли они имеют одну и ту же «кодовую точку»? Или это зависит от типа шрифта, такого как Type1, Type3, TrueType, OpenType? ...

Спасибо за любые ссылки или ссылки.

1 Ответ

31 голосов
/ 29 марта 2011

Шрифты TrueType состоят из нескольких разделов, наиболее важными для этого вопроса являются таблица «глифов» и таблица («cmap») для сопоставления символов с этими глифами.

Короче говоря, операционнаяСистема использует таблицу «cmap» для преобразования символов в индексы глифов, заменяя глиф по умолчанию на любой, у которого нет соответствующей записи.К сожалению, существует несколько версий спецификации файла шрифта (не говоря уже о разных типах шрифтов) и разные кодировки символов для одних и тех же отображений в этих таблицах, поэтому фактический процесс создания сопоставления и его эффективного выполнения для быстрого рисования текста, оказывается очень сложным.

«Кодовая точка» полностью независима от символов, кодировок и шрифтов.Конкретная кодовая точка универсальна, но для нее есть много кодировок (UTF-8, UTF-16 и т. Д.), И она будет отображаться на разные индексы глифов в разных шрифтах.

Документация разработчика Apple имеет довольноХороший раздел о деталях шрифтов TrueType:

http://developer.apple.com/fonts/ttrefman/

В частности:

Таблица символов: https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html

Карта символов: https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6cmap.html

Я также рекомендую приложение под названием BabelMap , которое дает вам много интересной информации о шрифтах.В частности, обратите внимание на раздел «Сводка инструментов / Юникод», «Утилита анализа шрифтов / шрифтов» и «Информация о шрифтах / шрифтах», где можно извлечь всю таблицу сопоставления глифов в буфер обмена.

...