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