我正在解析CFF文件。我得到了带有字形的表格,看起来像 GC4G38GFCGD7G70G4BGEAG39GFDG4CGEBGFEG72G4DGEC ...带有名字。 我对每个字形都有偏移量,并且对CharStringINDEX有偏移量。我必须将字形符号与符号相关联。我需要做什么?所有补偿都不能解释符号的位置。
答案 0 :(得分:2)
这取决于CFF所依赖的编码类型:它是否遵循任何预定义的字符集/编码,还是一个免费的字符集/编码CFF块? (它的类型记录在TOP DICT结构中)
如果是第一个,字形名称只是由Adobe的字符集/编码规范定义,而不是存储在字体本身中。如果您正在编写解析器,则需要使用其关联的字形名称对这些预定义编码进行编码。如果字体遵循其中一个,它必须包含预定义字形排序中集合中的每个字符(因此编码X后的CFF将始终具有由字形位置23中的第23个名称字符串命名的字形。)
如果是第二个,每个字形的名称都存储在String块中,就像CFF中的每个其他字符串一样(但是偏移390,因为有许多文档指定的字符串适用于所有CFF,因此没有需要明确存储在CFF数据中)。要查找字形名称,可以使用Charset结构,该结构告诉您哪个字符串ID属于哪个字形。然后查看String INDEX以找到id将在的偏移量,然后从该偏移量上的String数据块中获取字符串。
我专门为了解释CFF布局而写了http://pomax.github.io/CFF-glyphlet-fonts,所以你可能想要给它一个查看。