Pdf 如何获取CFF字体中的字形符号

Pdf 如何获取CFF字体中的字形符号,pdf,fonts,glyph,Pdf,Fonts,Glyph,我正在解析一个CFF文件。我得到了一张有字形的桌子,看起来像 GC4G38GFCGD7G70G4BGEAG39GFDG4CGEBGFEG72G4DGEC。。。有名字。 我对每个glyph都有偏移量,对CharStringINDEX也有偏移量。我必须把字形、鬃毛和符号联系起来。我该怎么办?所有偏移量都不能解释符号的位置。这取决于CFF所依赖的编码类型:它是否遵循任何预定义的字符集/编码,或者它是自由字符集/编码CFF块?(记录在顶部DICT结构中的类型) 如果是第一种,字形名称仅由Adobe的字符

我正在解析一个CFF文件。我得到了一张有字形的桌子,看起来像 GC4G38GFCGD7G70G4BGEAG39GFDG4CGEBGFEG72G4DGEC。。。有名字。
我对每个glyph都有偏移量,对CharStringINDEX也有偏移量。我必须把字形、鬃毛和符号联系起来。我该怎么办?所有偏移量都不能解释符号的位置。

这取决于CFF所依赖的编码类型:它是否遵循任何预定义的字符集/编码,或者它是自由字符集/编码CFF块?(记录在顶部DICT结构中的类型)

如果是第一种,字形名称仅由Adobe的字符集/编码规范定义,而不是存储在字体本身中。如果您正在编写解析器,则需要使用这些预定义编码及其关联的标志符号名称对其进行编码。如果字体跟在其中一个之后,它必须按照预定义的字形顺序包含集合中的每个字符(因此编码X之后的CFF在字形位置23将始终有一个由第23个名称字符串命名的字形)

如果是第二个,则每个glyph的名称都存储在字符串块中,就像CFF中的每个其他字符串一样(但偏移390,因为有那么多文档指定的字符串适用于所有CFF,因此不需要显式存储在CFF数据中)。要查找glyph的名称,可以使用字符集结构,它告诉您哪个字符串ID属于哪个glyph。然后在字符串索引中查找id将位于的偏移量,然后从该偏移量上的字符串数据块中获取字符串


我专门写这篇文章是为了解释CFF布局,所以你可能想看一看。

@Jongware作为一个写过几个字体分析器的人:不是吗?这个问题听起来像是一个正常的编程问题。@Mike:嗯。。所有需要的信息都是由Adobe发布的——这正是我成功使用的——因此这可能仍然属于“研究不足”的范畴。尽管如此,技术文档也是文档中最密集、最难以访问的部分,因此告诉人们先阅读这些文档可以保证你会再次看到它们“我读过技术文档。我仍然不知道wtf正在进行“=P