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

发布于 2024-07-17 07:34:12 字数 245 浏览 1 评论 0原文

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

最终,我想实现类似 HTML 的字体选择,即当指定“Verdana,Arial”时,它应该选择第一个安装的字体。

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

这是最有效的方法吗?

How can I test if a font is installed?

Ultimately, I want to implement a HTML-like font selection, i.e. when specifying e.g. "Verdana,Arial", it should pick the first font that is installed.

This Question provides an answer for .NET - it seems the recommended way is to create the font, and then cmpare the font face actually used.

Is that the most efficient way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

短叹 2024-07-24 07:34:12

您可以尝试创建字体并查看您得到的结果(从而使用操作系统的字体名称匹配/替换)。

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

“最有效”的方法将取决于“匹配”的细节,并且很可能取决于安装的字体数量。 例如,在具有 50 种字体的系统上,您可能会发现性能与安装了 1000 种字体的系统有显着不同。

最后,如果您的第一种方法(保持简单)结果证明是性能瓶颈,那么您只能在代表性系统上进行分析。

You can either try to create the font and see what you get (thus using the OS's font name matching/substitution).

Or you can enumerate installed fonts and do that matching yourself.

The "most efficient" way will depend on the details of a "match", and, in all likelihood, how many fonts are installed. On a system with, say, 50 fonts you will probably find performance is significantly different to a system with 1000 fonts installed.

In the end you can only profile on representative systems, if you first approach (keep it simple) turns out to be a performance bottleneck.

如若梦似彩虹 2024-07-24 07:34:12

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

You can use EnumFontFamiliesEx to enumerate the list of Fonts on the system, or if you pass a font name you can enumerate the fonts for that family.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文