我们如何知道一个真正的字体的代码点是否高于0xFFFF?

我们如何知道一个真正的字体的代码点是否高于0xFFFF?

有一个API(GetFontUnicodeRanges / GetGlyphIndices),但它不会超过0xFFFF,因为我怀疑你知道。

编程方式有两种明显的方法:

  1. 解析.ttf文件( 规范是开放的ish)
  2. 尝试并测量您感兴趣的字符的输出,并将测量结果与已知的替换字符进行比较

这个答案有一个.NET / C#解决方案: 获取支持的字体的字体 – 在C#

如果运行Windows 7 +,可以调用DirectWrite的IDWriteFontFace::GetGlyphIndices从给定的代码点的cmap或IDWriteFontFace1::GetUnicodeRanges (Win 8+或Windows 7平台更新)中获取名义字形标识,如果您只想知道所有的范围。 GDI GetGlyphIndices和Uniscribe ScriptGetCmap仅支持基本的多语言平面。