Типографика. Как Мне Изменить Порядок/Положение Символов В Шрифтах Юникода, Если Этого Требует Язык?

  • Автор темы Redlyreri
  • Обновлено
  • 22, Oct 2024
  • #1

При разработке шрифта для другого языка в Юникоде, как изменить положение символов, чтобы они отображались так, как им нужно?

Редактировать: поскольку у некоторых из вас символы не отображаются, я включаю изображение с текстом и буду ссылаться на ту строку изображения, на которую я ссылаюсь при использовании символов (Формат: [символ]/[ номер строки на изображении])

типографика. Как мне изменить порядок/положение символов в шрифтах Юникода, если этого требует язык?

Например, в Гурмукхи символ ਿ/1 (гласная) должен появляться перед (согласным) символом, к которому он присоединен. Например, если он прикреплен к ਸ/2, он отображается как ਸਿ/3. Хотя он появляется раньше, символ ਿ/1 на самом деле находится после символа ਸ/2 (с точки зрения того, как он хранится). Вы можете увидеть это, скопировав символы вместе в другое текстовое поле и нажав клавишу Backspace.

Примечательно, что он даже сдвигает символ, к которому прикреплен, чтобы освободить место, когда это необходимо. См. этот пример: ਨਾਮ/4 и ਨਾਮਿ/5. Здесь вы можете сдвинуть символ ਮ/6 вправо, чтобы освободить место для символа ਿ/1 (опять же, вы можете увидеть это лучше, если скопируете и нажмете Backspace).

Я видел другие позиции персонажей, обрабатываемые с помощью якорей, но, похоже, они здесь не совсем применимы. Даже для других персонажей в Гурмухи для изменения положения персонажа используются якоря. Например, ੁ/7 должна располагаться под согласной, например: ਸੁ/8. Шрифты Unicode справляются с этой задачей с помощью привязок, но когда дело доходит до ਿ/1, это не тот случай. Открыв шрифт Unicode на чем-то вроде FontForge, вы можете увидеть, что в символе ਿ/1 нет привязки (U+0A3F, если хотите). Кроме того, я видел, что в языках с написанием справа налево, таких как арабский, также нет привязок, поэтому они, вероятно, тоже обрабатываются по-другому.

Но как именно решаются эти дела?

#шрифты #типографика #дизайн шрифтов #unicode

Redlyreri


Рег
31 Aug, 2005

Тем
82

Постов
197

Баллов
627
  • 26, Oct 2024
  • #2

Объединение персонажей и позиционирование

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

От спецификация Microsoft OpenType:

Таблица GPOS поддерживает восемь типов действий по позиционированию и прикреплению глифов:

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

  • Прикрепление MarkToBase позиционирует комбинированные знаки относительно базовых глифов, например, при расположении гласных, диакритических знаков или знаков тона в арабском, иврите и вьетнамском языках.

  • Вложение MarkToLigature позиционирует объединение меток относительно глифов лигатуры. Поскольку лигатуры могут иметь несколько точек для прикрепления меток, разработчику шрифта необходимо связать каждую метку с одним из компонентов лигатурного глифа.

  • Приложение MarkToMark позиционирует один знак относительно другого, как при расположении знаков тона относительно диакритических знаков гласных во вьетнамском языке.

  • Контекстное позиционирование описывает, как расположить один или несколько глифов в контексте внутри идентифицируемой последовательности конкретных глифов, классов глифов или различных наборов глифов. Одна или несколько операций позиционирования могут выполняться над «входными» контекстными последовательностями. Рисунок 4e иллюстрирует контекст корректировок позиционирования.

  • Объединение в цепочки Контекстное позиционирование описывает, как расположить один или несколько глифов в связанном контексте, внутри идентифицируемой последовательности конкретных глифов, классов глифов или различных наборов глифов. Над «входными» контекстными последовательностями могут выполняться одна или несколько операций позиционирования.

Таблица GPOS в сочетании с объединение персонажей может быть использован для создания диакритические знаки и другие комбинации планировок.

Существуют спецификации OpenType для поддержки скриптов, требующих изменения положения и сложных макетов, эти функции должны быть автоматическими и реализовываться механизмом макетирования OpenType.

Пример того, как механизм компоновки OpenType может объединять сложные строки Гурмухи:

Однако на самом деле они не реализованы повсеместно, например, продукты Adobe (полагаю, все, кроме Photoshop) имеют много проблем с набором текста с письмом справа налево и сложными скриптами без использования конкретных «ближневосточных» версий программного обеспечения.

Ссылки и чтение:


Предварительно составленные символы и лигатуры

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

Например, в Юникоде имеется большое количество арабских лигатур, некоторые из которых обозначают целые слова и фразы, например Аллах (U+FDF2):

И Бисмиллях ар-Рахман ар-Рахим:

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

 

Scarlord


Рег
26 Oct, 2023

Тем
82

Постов
208

Баллов
648
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно