查找两个(可能是OpenType)字体文件的差异

时间:2015-05-04 09:47:22

标签: fonts ttx-fonttools

我在两个文件中使用相同的字体,都没有文件扩展名。

两个文件都以类型代码OTTO开头,因此字体必须为OpenType

当我添加文件扩展名.otf并在字体编辑器中打开文件时,它们看起来都相同并包含相同的字形。

但是当我diff Vim中的文件时,文件的某些部分有所不同,但由于代码对我来说是难以理解的,我无法理解文件的这些部分所指的字体的哪个方面。

如何找出这两个字体文件之间的区别?

1 个答案:

答案 0 :(得分:2)

您应该找到工具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

现在您已熟悉某些表格细节,您可能只想查看这些不同的表格。假设它只是cmapname表:

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

如果 所有 表不同,您可以跳过-t参数来创建完整的fontfile的TTX转储:

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

更新: 另一个有用的工具(也来自Adobe Type Tools存储库)可能是sfntdiff

ttxn工具可能是最适合您的工具。这是它的自我描述:

  

“此工具用于测试两种字体在功能上是否相同。它对ttxtx工具的输出进行排序和修改,以构建规范化的文本转储,消除差异由于OTL表记录顺序,字形顺序和子机构差异等问题。它为字体中的每个表写一个文件。一个好的差异编辑器,如Mac上的BBEdit或PC上的UltraEdit,可以用于比较两种不同字体的输出文件。它在比较相同字体的旧版本和新版本时特别有用。“

[1] TTX最初由Just van Rossum于1999年开发,并作为SourceForge上的开源项目进行维护(sf.net/projects/fonttools/ )。它是用Python编写的:

  1. Git存储库:github.com/adobe-type-tools/afdko.git(查看“afdko / FDK / Tools / $ {operatingsystem} /”子目录!)
  2. “友好”的原始回购分叉,Behdad Esfahbod提供了大量修复,改进和补充:github.com/behdad/fonttools/