测试是否安装了字体(Win32)

pet*_*hen 4 c++ winapi fonts

如何测试是否安装了字体?

最终,我想实现类似HTML的字体选择,即在指定例如"Verdana,Arial"时,它应该选择安装的第一个字体.

这个问题提供了.NET的答案 - 似乎推荐的方法是创建字体,然后cmpare实际使用的字体.

这是最有效的方式吗?

Ric*_*ard 6

您可以尝试创建字体并查看所获得的内容(因此使用OS的字体名称匹配/替换).

或者您可以枚举已安装的字体并自行匹配.

"最有效"的方式取决于"匹配"的细节,并且很可能,安装了多少字体.在具有50种字体的系统上,您可能会发现性能与安装了1000种字体的系统明显不同.

最后,您只能在代表性系统上进行分析,如果您第一次接近(保持简单)则证明是性能瓶颈.


Ste*_*ven 5

您可以使用EnumFontFamiliesEx枚举系统上的字体列表,或者如果传递字体名称,则可以枚举该族的字体.