Как использовать fontTools для обнаружения шрифтов Type 1 и OpenType CFF - PullRequest
0 голосов
/ 03 мая 2019

Я знаю, что можно обнаружить шрифты Type 1 и OpenType CFF («OpenType со вкусом PostScript»), проверив первые 4 байта для «OTTO» (0x4F54544F).

Как бы я сделал это в Python с библиотекой fontTools ? То есть, какую таблицу шрифтов мне нужно проверить для этого значения?

1 Ответ

1 голос
/ 04 мая 2019

Версия хранится в заголовке файла шрифта, а не в таблице данных шрифта.Если у вас есть объект ttLib.TTFont (т. Е. Вы открыли файл шрифта с помощью fontTools), вы можете посмотреть на атрибут .sfntVersion вашего TTFont объекта, чтобы получить версию (обычно это либо 0x00010000 /Версия 1 или 0x4F54544F / OTTO, но возможны и другие значения, см. Ниже).Но этот тип предполагает, что вы уже создали объект TTFont, открыв файл шрифта, так что это может быть проблемой типа курицы и яйца.Если вам интересно узнать версию, прежде чем пытаться открыть файл / создать TTFont, вам нужно будет прослушать первые четыре байта (как минимум) вне fontTools.


Примечание: я немного смущен вашим вопросом.Вы упоминаете Type 1, который на самом деле является разновидностью шрифта PostScript, но не (обычно) такого же типа в шрифтах OpenType / sfnt-housed (это будет Type 2 , "Compact Font"Формат "или CFF). - это, предположительно, способ хранения Типа 1 в шрифтах OpenType / sfnt-housed;Apple упоминает об этом в своем справочном руководстве TrueType :

Значения 'true' (0x74727565) и 0x00010000 распознаются OS X и iOS как обозначающие шрифты TrueType.Значение 'typ1' (0x74797031) распознается как относящееся к старому стилю шрифта PostScript, помещенному в оболочку sfnt.Значение «OTTO» (0x4F54544F) указывает шрифт OpenType с контурами PostScript (т. Е. Таблица «CFF» вместо таблицы «glyf»).Другие значения в настоящее время не поддерживаются.

Так что, если typ1 на самом деле то, о чем вы спрашиваете, вы можете искать 0x74797031 / "typ1" в первых четырех байтах файла,Но фактические typ1 sfnt-размещенные шрифты чрезвычайно редки - почти не существуют.Подавляющее большинство фактических шрифтов Type 1 будет либо в файлах .PFA / .PFB (для платформ не-Mac), либо в файле «Printer Font» (pre-OS X Mac), который будет связан со старым ресурсом.-fork файл "чемодан", содержащий растровые изображения.Файлы шрифтов типа 1 будут иметь %!PS-AdobeFont-1 в качестве первых байтов файла.

...