Как отображаются связанные буквы в деванагари?

Рассмотрим буквы на картинке ниже.

Первая строка показывает сами буквы, вторая строка нумерует их, а третья строка показывает их кодовую точку 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.

Рисунок 2-3

Для латинского алфавита эта связь между последовательностью символов и глифом относительно проста и хорошо известна; для некоторых других сценариев это задокументировано в этом стандарте. Тем не менее, во всех случаях хорошая типография требует более сложного набора правил, чем приведено здесь. Стандарт Unicode документирует отношение по умолчанию между последовательностями символов и глифическим внешним видом с целью обеспечения того, чтобы одно и то же текстовое содержимое могло храниться с одинаковыми и, следовательно, взаимозаменяемыми последовательностями кодов символов.

Другие вопросы по тегам