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

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

Первая строка показывает сами буквы, вторая строка нумерует их, а третья строка показывает их кодовую точку Unicode, закодированную как три шестнадцатеричных байта UFT-8. Например, буква 2 — это ПИСЬМО ДЭВАНАГАРИ MA с кодовой точкой 0x92E (= 2350 decimal), которая кодируется тремя шестнадцатеричными байтами UTF-8: e0, a4, ae.

Мой вопрос касается рендеринга конкретной связанной буквы, такой как (1). Как этот рендеринг обрабатывается системой рендеринга? Обычно мы вводим эту связную букву: сначала вводим букву 2, затем букву 4 (что указывает на наше намерение объединить эту букву со следующей), а затем букву 3. Затем система рендеринга учитывает присоединиться к действию, удалив вертикальную черту в букве 2 и наложив на нее букву 4. Мне непонятно, доступен ли выбранный шрифт для как полной буквы 2, так и ее стертой по вертикали половины (показана бледно-красным овалом).

Может кто-нибудь объяснить, как это работает?

введите здесь описание изображения


person Kedar Mhaswade    schedule 16.01.2017    source источник
comment
Что касается вопроса о том, как на самом деле работает формирование текста, а не программирование как таковое, его гораздо лучше задать на чем-то вроде typedrawers.com — у некоторых пользователей SO наверняка есть знания, чтобы ответить на этот вопрос, но это хорошая ставка, что это < я>уже ответили в соответствующем месте (например, на форумах по разработке шрифтов и внедрению)   -  person Mike 'Pomax' Kamermans    schedule 17.01.2017


Ответы (2)


Файлы шрифтов — это больше, чем набор форм для каждой буквы. Они содержат различные таблицы, определяющие поведение глифов.

Есть:

  • Таблицы для размещения глифов
  • Таблицы замены глифов
  • Таблицы для классификации глифов и предоставления таблицы лигатурных знаков вставки
  • Столы для базового размещения
  • ...

См. также: https://fontforge.github.io/gposgsub.html

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

Вернемся к вашему вопросу. Это замена. Что именно происходит, описано информацией в таблицах в самом файле шрифта. Если вы действительно хотите знать, что происходит, вам нужно открыть шрифт в редакторе и просмотреть различные таблицы. Я предлагаю использовать FontForge (бесплатно).

Мораль этой истории в том, что файлы шрифтов — это не только эстетические формы букв, но и части программного обеспечения.

person allcaps    schedule 17.01.2017

Прочтите о декомпозиции и нормализации в Стандартном приложении Unicode® № 15 — ФОРМЫ НОРМАЛИЗАЦИИ UNICODE; например, как каноническая эквивалентность, так и эквивалентность совместимости более подробно объясняются в Главе 2, Общая структура, и Главе 3, Соответствие, в [Unicode] — Стандарт Unicode:

Шрифт и связанный с ним процесс рендеринга определяют произвольное сопоставление символов Unicode с глифами. Некоторые глифы в шрифте могут быть независимыми формами отдельных символов; другие могут отображать формы, которые не соответствуют напрямую ни одному символу.

Рендеринг текста требует, чтобы символы в памяти были сопоставлены с глифами. Окончательный вид визуализируемого текста может зависеть от контекста (соседние символы в представлении в памяти), вариантов типографского дизайна используемых шрифтов и сведений о форматировании (размер пункта, надстрочный индекс, подстрочный индекс и т. д.). Результаты на экране или на бумаге могут значительно отличаться от прототипа формы буквы или символа, как показано на рис. 2-3.

Рисунок 2-3

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

person JosefZ    schedule 17.01.2017
comment
Это описывает спецификацию, но не охватывает фактический вопрос о том, как это делают конкретные механизмы рендеринга, что в любом случае выходит за рамки SO и является отличным вопросом для печатников. - person Mike 'Pomax' Kamermans; 17.01.2017