【问题标题】:Find characters supported by a font查找字体支持的字符
【发布时间】:2023-03-10 00:38:01
【问题描述】:

我需要找出字体支持哪些 Unicode 字符。有一个 WinAPI 函数 GetFontUnicodeRanges,但它们仅适用于 BMP(基本多语言平面)。是否有任何功能或源代码示例也适用于 SMP(补充多语言平面)。我知道 DirectWrite 有这样的功能,但我没有在我的应用程序中使用 DirectX/DirectWrite。

【问题讨论】:

标签: delphi winapi unicode fonts


【解决方案1】:

没有理由不在您的应用中为此目的使用 DWrite。正如你所指出的,GetFontUnicodeRanges 只支持 BMP,所以如果你想要 SMP 或其他字符,你需要使用 something else,那么为什么不使用 DWrite。您可以使用IDWriteFont1::GetUnicodeRanges 方法获取您想要的信息。

【讨论】:

  • 我解决这个问题解析cmap字体表。 SMP 字符只能编码为子表格式 8、10、12 和 13。格式 8 和 10 没有被广泛使用,因此解析格式 12 和 13 就足够了。
  • 编写自己的解析器比使用 DWrite 更好?!好的。但是您可能会忽略格式 13,因为它可能对您的目的没有用:格式 13 仅对将许多字符映射到同一个字形有效 - 即,它仅对包含 Unicode 的整个块或平面的终极后备字体真正有用字符以相同的字形显示。
  • 不是更好:),但我没有任何理由将 DWrite 添加到应用程序中仅用于一项功能。无论如何,我已经有很大一部分代码可以解析字体文件。
猜你喜欢
  • 2011-05-26
  • 2014-06-01
  • 2011-07-13
  • 2012-01-29
  • 2011-05-12
  • 2018-06-05
  • 2010-11-29
  • 1970-01-01
相关资源
最近更新 更多