Нахождение различий в двух (возможно, OpenType) файлах шрифтов

У меня один и тот же шрифт в двух файлах, оба без расширений.

Оба файла начинаются с кода типа OTTO, поэтому шрифты должны быть OpenType.

Когда я добавлю расширение файла .otf и откройте файлы в редакторе шрифтов, они оба выглядят одинаково и содержат одинаковые глифы.

Но когда я diff файлы в Vim, некоторые части файлов различаются, но так как код для меня непонятен, я не могу понять, к какому аспекту шрифта относятся эти части файлов.

Как я могу узнать, в чем разница между этими двумя файлами шрифтов?

1 ответ

Решение

Вы должны найти инструмент ttx [1].

Это инструмент командной строки для преобразования файла шрифта из формата OpenType в представление XML и обратно.

Представление XML очень легко редактировать в любом текстовом редакторе (например, для незначительных изменений шрифта). Также должно быть легко (ab) использовать его как формат, в котором вы можете провести сравнение.

Таким образом, эти команды должны дать вам отправную точку:

ttx -l otf1file
ttx -l otf2file

-l опция еще не разбирает (и не конвертирует в XML) файлы шрифтов. Вместо этого он печатает обзор таблиц, как показано ниже:

 Listing table info for "/Library/Fonts/WeidemannStd-Medium.otf":
     tag     checksum   length   offset
     ----  ----------  -------  -------
     BASE  0x3f624fba       52    24836
     CFF   0xec0764e1    18801     2752
     DSIG  0xa4d90535     5180    24888
     GPOS  0xffb60926     1456    23380
     GSUB  0x6de87013      812    22568
     OS/2  0x7c681439       96      320
     cmap  0x79e54a16      932     1788
     head  0xd391fc8f       54      220
     hhea  0x06fd0364       36      276
     hmtx  0xf9581b97     1012    21556
     maxp  0x00fd5000        6      312
     name  0x987b2db3     1370      416
     post  0xffb80032       32     2720

Теперь, когда вы знакомы с некоторыми особенностями таблиц, вы можете просто взглянуть на эти таблицы, которые отличаются. Предполагая, что это только cmap а также name столы:

ttx -o otf1-cmap+name-tables.ttx -t cmap -t name otf1file
ttx -o otf2-cmap+name-tables.ttx -t cmap -t name otf2file
vimdiff otf1-cmap+name-tables.ttx otf2-cmap+name-tables.ttx

Если все таблицы разные, вы можете создать полный TTX-дамп шрифтового файла, пропустив -t параметры:

ttx -o otf1.ttx  otf1file
ttx -o otf2.ttx  otf2file
vimdiff otf1.ttx  otf2.ttx

Обновление: Еще один полезный инструмент для поиска (также из репозитория Adobe Type Tools) может быть sfntdiff,

Но, возможно, ttxn инструмент то, что служит вам лучше всего. Вот его самоописание:

"Этот инструмент используется для проверки, если два шрифта функционально одинаковы. Он сортирует и изменяет выходные данные из ttx а также tx инструменты для создания нормализованного текстового дампа, который устраняет различия из-за таких проблем, как порядок записи таблицы OTL, порядок глифов и различия подпрограммы. Он пишет один файл для каждой таблицы в шрифте. Хороший редактор различий, такой как BBEdit на Mac или UltraEdit на ПК, может быть использован для сравнения выходных файлов из двух разных шрифтов. Это особенно полезно при сравнении старых и новых версий одного и того же шрифта. "


[1]: TTX изначально был разработан Just van Rossum в 1999 году и поддерживался как проект с открытым исходным кодом на SourceForge ( http://sf.net/projects/fonttools/). Это написано на Python:

  1. Репозиторий Git: https://g ithub.com/adobe-type-tools/afdko.g it (смотрите в подкаталоге "afdko/FDK/Tools/${operatingsystem}/"!)
  2. "Дружелюбная" вилка оригинального репо, с множеством исправлений, улучшений и дополнений от Бехдада Исфахбада: https://g ithub.com/behdad/fonttools/
Другие вопросы по тегам