Как отображаются связанные буквы в деванагари?
Рассмотрим буквы на картинке ниже.
Первая строка показывает сами буквы, вторая строка нумерует их, а третья строка показывает их кодовую точку Unicode, закодированную в виде трех шестнадцатеричных байтов UFT-8. Например, буква 2 - это ПИСЬМО DEVANAGARI MA с кодом 0x92E (= 2350 decimal)
, который кодируется как три шестнадцатеричных байта UTF-8: e0, a4, ae
,
Мой вопрос касается рендеринга конкретного связанного письма, такого как (1). Как этот рендеринг обрабатывается системой рендеринга? Обычно мы вводим эту соединенную букву, вводя сначала букву 2, затем букву 4 (указывающую на наше намерение соединить эту букву со следующей) и затем букву 3. Затем система рендеринга учитывает присоединяющее действие, стирая вертикальную линию. в письме 2 и наложение буквы 4 прямо там. Мне не ясно, что шрифт как для полной буквы 2, так и для ее вертикальной линии, удаленной половиной (показан со слабым красным овалом), доступен в выбранном шрифте.
Может кто-нибудь объяснить, как это работает?
2 ответа
Файлы шрифтов - это не просто набор форм для каждой буквы. Они содержат различные таблицы, которые определяют поведение глифов.
Есть:
- Таблицы для позиционирования глифов
- Таблицы для замены глифов
- Таблицы для классификации глифов и для предоставления таблицы лигатуры каретки
- Таблицы для базового размещения
- ...
Смотрите также: https://fontforge.github.io/gposgsub.html
Какие функции шрифта необходимы, зависит от системы письма (латиница, кириллица, арабский, деванагари) и от того, как должны вести себя их глифы. Какие таблицы используются, зависит от дизайнера шрифтов, типа файла шрифта (что разработано и что можно сохранить). Какие функции отображаются, зависит от средства визуализации шрифта (иногда инструкции шрифта игнорируются средством визуализации).
Вернемся к вашему вопросу. Это замена. Что именно происходит, описывается информацией в таблицах в самом файле шрифта. Если вы действительно хотите знать, что происходит, вы должны открыть шрифт в редакторе и проверить различные таблицы. Я предлагаю использовать FontForge (бесплатно и бесплатно).
Мораль этой истории заключается в том, что файлы шрифтов представляют собой не только эстетические буквы, но и программы.
Прочитайте о разложении и нормализации в приложении № 15 к стандартному Unicode® - ФОРМЫ НОРМАЛИЗАЦИИ ЮНИКОДА; например, как канонические, так и эквивалентные соответствия более подробно объясняются в главе 2 " Общая структура" и главе 3 " Соответствие" в [Unicode] - стандарт Unicode:
Шрифт и связанный с ним процесс рендеринга определяют произвольное отображение символов Unicode на глифы. Некоторые из символов в шрифте могут быть независимыми формами для отдельных символов; другие могут отображать формы, которые не соответствуют ни одному из символов.
Рендеринг текста требует, чтобы символы в памяти отображались на глифы. Окончательный вид отображаемого текста может зависеть от контекста (соседние символы в представлении памяти), изменений в типографском оформлении используемых шрифтов и информации о форматировании (размер точки, верхний индекс, нижний индекс и т. Д.). Результаты на экране или на бумаге могут значительно отличаться от прототипа формы буквы или символа, как показано на рисунке 2-3.
Для латинского алфавита эта связь между последовательностью символов и глифом относительно проста и хорошо известна; для некоторых других сценариев это задокументировано в этом стандарте. Тем не менее, во всех случаях хорошая типография требует более сложного набора правил, чем приведено здесь. Стандарт Unicode документирует отношение по умолчанию между последовательностями символов и глифическим внешним видом с целью обеспечения того, чтобы одно и то же текстовое содержимое могло храниться с одинаковыми и, следовательно, взаимозаменяемыми последовательностями кодов символов.