Windows API 访问字体表(Kern、GPOS 等)

Windows API To Access Font Tables (Kern, GPOS, etc)

本文关键字:GPOS Kern API 访问 字体 Windows      更新时间:2023-10-16

目前Apple提供了访问字体表中数据的函数,例如CTFontCopyTable。我正在使用它在可用时从字体中解析信息(字距调整等(。是否有任何类似的方法可以在Windows上按字体提取相同的数据?

当涉及到这些字体表时,我可以在窗口端看到很多文档,但我似乎找不到一种按字体提取这些数据的方法。

以下是我在osx中提取数据的方式:

CTFontRef lCTFont = CTFontCreateWithName((CFStringRef)lNSFontName, 800.0f, NULL);
CFDataRef lKernTable = CTFontCopyTable(lCTFont, kCTFontTableKern, kCTFontTableOptionNoOptions);
CFDataRef lGPOSTable = CTFontCopyTable(lCTFont, kCTFontTableGPOS, kCTFontTableOptionNoOptions);

GetFontData将获取原始表数据,但正如其他建议建议的那样,您可能希望使用系统提供的文本布局方法,而不是尝试使用自己的文本布局方法。

您可以使用

GetKerningPairs获取字距调整数据,GetCharacterPlacement获取 GPOS 数据。

如果您的真实意图只是简单地正确呈现一些文本,则可能需要改用Uniscribe。