从TTF或OTF字体文件中获取字形名称

4

大家好,有人知道如何从C#中获取TTF或OFT字体文件的字形名称吗?如果必要的话,我愿意直接解析文件来获取它们。我在这里找到了这篇帖子:Access opentype glyph names from WPF,但是它没有答案。

P.S. 我已经创建了字体,并正在创建一个程序来创建CSS(LESS或SASS)文件,以便在像Bootstrap或FontAwesome这样的网页中轻松使用我制作的Glyphs :)

1个回答

3
在基于TrueType的字体(.TTF文件)中,您可以尝试解析“post”表。这很容易弄清楚。但是,只有2.0格式明确存储字形名称。如果post表是3.0格式,则不会存储任何字形名称(还定义了一些其他格式,但使用它们的字体非常罕见)。在这种情况下,您的唯一选择是使用“cmap”中的Unicode值进行回溯...有一些Unicode到字形名称的标准参考资料可能会有用。
对于基于CFF的字体(.OTF文件),字形名称存储在“CFF”表中。这要更加棘手一些,但如果您只想查找字形名称引用,那么应该不难弄清楚。

在这个例子中,我已经创建了字体,并有TTF和OTF版本。通过查看十六进制转储,我可以看到字形名称。我真的只想自动化一个繁琐的过程(如果你有成千上万个字形,那么非常繁琐),所以我故意保存了字形名称,希望能够获得访问它们以自动创建样式表使其对所有人有用。所以我会看看是否能够管理它,我真的希望有一个我可以使用的.NET库。 :( - Wizzard
你提到你“愿意直接解析文件”,这就是我发布相关数据结构链接的原因。特别是对于“post”表,它真的不太难理解。CFF表只是稍微棘手一点,需要获取名称字符串。你需要知道的唯一额外事项是如何读取文件的表目录以定位文件中的表格。这也很简单,请参见http://www.microsoft.com/typography/otspec/otff.htm下的“OpenType字体的组织”。 - djangodude
这个问题涉及到_字形名称_,它们并没有存储在name表中。但是既然你提出了这个问题,我会澄清我的答案,以明确我所说的是_字形名称_,而不是一般的字体名称字符串(这些字符串是存储在name表中的)。 - djangodude
抱歉重新激活这个旧帖子,但我应该如何通过C#访问帖子表?我甚至无法从谷歌获得任何有用的结果来解决这个特定的问题。 - Christoph Mett
Christoph Mett,请访问 https://github.com/LayoutFarm/Typography。 - WinterDev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接