Ширина глифа PDF для составных (Type0) шрифтов - PullRequest
0 голосов
/ 25 февраля 2020

В какой единице / пространстве определены ширины CIDfont? Я пытаюсь получить координаты пространства устройства для глифов в документе (или, что эквивалентно в моем случае, в пользовательском пространстве по умолчанию), но у меня возникают проблемы со смещением глифов для составных шрифтов.

Спецификация ISO c (8.7.1 на CIDFonts) говорит, что DW определяется в пользовательских единицах. Это кажется странным выбором, учитывая, что другие типы шрифтов (кроме Type3) имеют ширину, определенную в пространстве глифов, но тогда имеет смысл, что ширины в W также определяются в пользовательских единицах.

Это не Похоже, не в этом дело. При вычислении смещений глифов (как описано в 9.4.4 Сведения о текстовом пространстве) умножение ширины с обратной текстовой матрицей для преобразования их в текстовое пространство не дает правильных результатов. Документ, над которым я работаю, использует пространство пользователя по умолчанию (не определяет CTM или не устанавливает UserUnit), поэтому, насколько я понимаю, это должно сработать.

Где я ошибаюсь?

1 Ответ

1 голос
/ 25 февраля 2020

Спецификация ISO c (8.7.1 для CIDFonts) говорит, что DW определяется в пользовательских единицах.

Я полагаю, вы обнаружили, что "пользовательские единицы" упоминаются в ISO 32000 -1, раздел 9.7.4.1 (подраздел «Общие» раздела «CIDFonts»):

DW целое число (необязательно) Ширина по умолчанию для глифов в CIDFont (см. 9.7.4.3, «Метрики глифов в CIDFonts»). Значение по умолчанию: 1000 (определено в пользовательских единицах).

(ISO 32000-1, Таблица 117 - Записи в словаре CIDFont)

Действительно, "(определено в пользовательских единицах)" в данном случае вводит в заблуждение, поэтому оно было удалено в ISO 32000-2, где соответствующая запись содержит только

DW number (Необязательно) Ширина по умолчанию для глифов в CIDFont (см. 9.7.4.3, «Метрики глифов в CIDFonts»). Значение по умолчанию: 1000.

(ISO 32000-2, Таблица 115 - Записи в словаре CIDFont)

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

Вместо этого мы фактически находимся в той же ситуации со шрифтами CID, что и с другими шрифтами, смещения задаются в глиф-пространстве и преобразуются в текстовое пространство, как определено в разделе 8.3.2.4 («Другие пространства координат») обоих ISO 32000- 1 и ISO 32000-2:

Глифы символов в шрифте должны быть определены в пробел глифов (см. 9.2.4, «Расположение символов и метрики»). Преобразование из глиф-пространства в текстовое пространство должно определяться матрицей шрифта . Для большинства типов шрифтов эта матрица должна быть предопределена для отображения 1000 единиц пространства глифов на 1 единицу текстового пространства; для шрифтов типа 3 матрица шрифтов должна быть задана явно в словаре шрифтов (см. 9.6.5, «Шрифты типа 3»).

Таким образом, значение по умолчанию 1000 ширины глифа CIDFont по умолчанию DW допускает квадратную область текстового пространства 1 × 1, а площадь sh - это то, что позволяет правильно нарисовать много глифов CJK, делая это значение по умолчанию разумным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...