Как использовать fontTools для обнаружения шрифтов Type 1 и OpenType CFF
Я знаю, что можно обнаружить шрифты Type 1 и OpenType CFF ("OpenType со вкусом PostScript"), проверив первые 4 байта для "OTTO" (0x4F54544F).
Как бы я сделал это в Python с библиотекой fontTools? Т.е., какую таблицу шрифтов мне нужно проверить на это значение?
1 ответ
Версия хранится в заголовке файла шрифта, а не в таблице данных шрифта. Если у тебя есть ttLib.TTFont
объект (т.е. вы открыли файл шрифта с помощью fontTools), вы можете посмотреть на .sfntVersion
атрибут вашего TTFont
объект, чтобы получить версию (которая обычно будет либо 0x00010000
/ Версия 1 или 0x4F54544F
/ ОТТО, но есть и другие возможные значения, см. Ниже). Но это предполагает, что вы уже создали TTFont
объект, открыв файл шрифта, так что это может быть своего рода проблема курица и яйцо. Если вам интересно узнать версию, прежде чем пытаться открыть файл / создать TTFont
Вам нужно будет прослушать первые четыре байта (по крайней мере) вне fontTools.
Примечание: я немного смущен вашим вопросом. Вы упоминаете Type 1, который на самом деле является своего рода шрифтом PostScript, но не (обычно) таким, как в шрифтах OpenType/sfnt-housed (это будет Type 2, "Compact Font Format" или CFF). Предположительно есть способ сохранить Type 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
как первые байты файла.