Анализ шрифтов OpenType для удовольствия и прибыли (кто-нибудь понимает эти глупые таблицы?) - PullRequest
1 голос
/ 02 июня 2010

Итак, это в основном для развлечения, я слоняюсь по местам и пытаюсь найти свой путь в нескольких шрифтах, и у меня есть несколько вопросов, которые я действительно буду признателен за помощь, если кто-то сделал такие вещи.

таблица карт

Шрифты, с которыми я тестирую, содержат несколько вложенных таблиц cmap разных форматов. Я могу читать их, но я не понимаю, что мне следует использовать. то есть. Какова стратегия выбора наиболее подходящего подтаблицы? Имеет ли это смысл?

таблица глифов

Это действительно заставляет мою голову болеть. Я иду по тому, что здесь . Глядя на вторую таблицу на этой странице, у меня есть «n» endPtsOfContours, «n» инструкции и «n» флаги, но мне не ясно, если у меня столько же флагов, сколько у контуров (я знаю, сколько контуров Я имею). Затем, что еще хуже ... (забавно!) У меня есть массив xCoords и массив yCoords. Кажется, что эти массивы имеют неопределенную длину и могут содержать данные либо BYTE, либо SHORT, но мы не будем говорить, какие именно.

Хорошо, я полагаю, для этого есть инструкции и флаги, но, как вы, вероятно, можете сказать, я действительно не знаю, как с ними обращаться. Нужен ли мне интерпретатор TrueType для доступа к координатным данным?

Ответы [ 2 ]

1 голос
/ 02 июня 2010

Вы правы, конечно.

flags, бит 1: если установлено, соответствующая x-координата имеет длину 1 байт. Если не установлено, 2 байта.

флажки, бит 2: если установлено, соответствующая y-координата имеет длину 1 байт. Если не установлено, 2 байта.

Я написал код для обхода таблиц TrueType давно назад - конечно на C. Я полагаю, вы можете сравнить свои результаты с выводом TTFDump (все еще доступен от Microsoft ).

0 голосов
/ 26 октября 2012

Для кодирования cmap, сначала выберите любую кодировку Unicode, либо идентификатор платформы = 0, либо идентификатор платформы = 3 с идентификатором кодировки = 10 или 1 (список идентификаторов платформы в таблице имен ), и выберите cmap формат 12 (полное пространство Unicode) более 4 (только базовая многоязычная плоскость). После этого относительные приоритеты кодировок становятся более расплывчатыми {Wansung, BIG5, PRC, Shift-JIS ...}, но также менее важными, поскольку шрифт имеет тенденцию быть в основном японским, китайским или корейским шрифтом - не все выше сразу. Форматы 4 и 12 являются наиболее распространенными среди 0, 2, 6. Формат 14 можно найти в шрифтах CJK с селекторами вариантов в качестве дополнения к формату 4 или 12, а формат 13 можно найти в специальном шрифте «последней инстанции». (используется во время отката шрифта, когда хороший выбор не поддерживает данный текст).

...