【发布时间】:2020-07-02 18:08:28
【问题描述】:
在 Windows 10 上,我正在尝试编写 VBA 代码来列出字体中的 Unicode 代码点范围。
我能够在 gdi32.dll 中使用 GetFontUnicodeRanges,但它不能处理超出 xFFFF 的代码点。
进一步的研究在 Dwrite_1.dll 中发现了 GetUnicodeRanges(作为 DirectWrite 的一部分),它应该处理所有 Unicode 代码点,但这不在我的系统上(尽管我有不包含 GetFontUnicodeRanges 的 Dwrite.dll。
我搜索了 SO、整个互联网和微软的网站,但找不到那个 dll。
问题:有人知道我如何/在哪里可以获得 Dwrite_1.dll 的副本吗?
【问题讨论】:
-
您不需要 DLL。它已经内置在 Windows 中。您只需要使用 COM 实例化 DWrite 对象并枚举 IDWriteFont 接口。您需要的一切都在 Windows SDK 中。
-
selbie - 感谢您这么快回复我。我花了一天的时间来解析您的答案,并为自己是 COM 新手而感到高兴。这就是我
-
...这是我正在研究的内容(过去几个小时): 1) DWrite 对象是什么以及如何在 VBA 中实例化一个。 2)“枚举到特定接口”的含义。我在 DirectWrite API 上找到了文档(但没有提及对象,除非接口是对象)。在该 API 中,我找到了 IDWriteFont1 接口,在该接口中我找到了 GetUnicodeRanges方法,这是我想在 VBA7 中使用的方法。任何关于如何在 VBA7 代码中使用该方法的进一步指导将不胜感激。
-
你真正想做什么?大多数 Windows 10 字体都支持大量开箱即用的 unicode。
-
我正在尝试将 Windows 10 PC 上安装的每种字体的代码点范围转储(到电子表格中)。然后我可以搜索该电子表格来做几件事:1) 确定哪些字体具有特定的字符/代码点,2) 确定哪些字体具有特定的 Unicode“块”,例如箭头、方框图。
标签: vba windows directwrite