我在两个文件中使用相同的字体,都没有文件扩展名。
两个文件都以类型代码OTTO
开头,因此字体必须为OpenType。
当我添加文件扩展名.otf
并在字体编辑器中打开文件时,它们看起来都相同并包含相同的字形。
但是当我diff
Vim中的文件时,文件的某些部分有所不同,但由于代码对我来说是难以理解的,我无法理解文件的这些部分所指的字体的哪个方面。
如何找出这两个字体文件之间的区别?
答案 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
现在您已熟悉某些表格细节,您可能只想查看这些不同的表格。假设它只是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
如果 所有 表不同,您可以跳过-t
参数来创建完整的fontfile的TTX转储:
ttx -o otf1.ttx otf1file
ttx -o otf2.ttx otf2file
vimdiff otf1.ttx otf2.ttx
更新: 另一个有用的工具(也来自Adobe Type Tools存储库)可能是sfntdiff
。
但ttxn
工具可能是最适合您的工具。这是它的自我描述:
“此工具用于测试两种字体在功能上是否相同。它对
ttx
和tx
工具的输出进行排序和修改,以构建规范化的文本转储,消除差异由于OTL表记录顺序,字形顺序和子机构差异等问题。它为字体中的每个表写一个文件。一个好的差异编辑器,如Mac上的BBEdit或PC上的UltraEdit,可以用于比较两种不同字体的输出文件。它在比较相同字体的旧版本和新版本时特别有用。“
[1] :TTX
最初由Just van Rossum于1999年开发,并作为SourceForge上的开源项目进行维护(sf.net/projects/fonttools/ )。它是用Python编写的: