【发布时间】:2023-03-10 00:38:01
【问题描述】:
我需要找出字体支持哪些 Unicode 字符。有一个 WinAPI 函数 GetFontUnicodeRanges,但它们仅适用于 BMP(基本多语言平面)。是否有任何功能或源代码示例也适用于 SMP(补充多语言平面)。我知道 DirectWrite 有这样的功能,但我没有在我的应用程序中使用 DirectX/DirectWrite。
【问题讨论】:
-
您需要澄清“字体支持”的含义。字体本身支持的内容与通过回退和链接使用该字体时 Windows 将显示的内容有所不同,例如,请参见 how does windows deal with drawing chars not in the current font。
-
仅在此字体中具有字形的 Unicode 符号。我知道字体 cmap 表中可用的信息,但我试图找到一个简单的解决方案。
-
我不知道任何用于 SMP 的 API,但免费实用程序 BabelMap 会告诉您哪些 Windows 字体可用于任何给定的 Unicode 字符组合(甚至可以来自不同的 Unicode 块任何飞机)。因此,如果您确实找到了一种以编程方式执行此操作的方法,BabelMap 可能是验证您的代码是否良好的有用方法。有关 BabelMap 的更多信息,请参阅this answer to How can I know which programs and fonts will support certain unicode characters / glyphs that I want to use?。
标签: delphi winapi unicode fonts