Windows – 如何找到我的CreateFont调用实际使用的字体?

前端之家收集整理的这篇文章主要介绍了Windows – 如何找到我的CreateFont调用实际使用的字体?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Windows中,如果未请求请求的字体,则 CreateFontIndirect()呼叫可以静音替换兼容的字体. GetObject()电话没有反映这种替代;它返回相同的LOGFONT传入.我如何找到实际创建的字体?或者,如何强制Windows只返回确切的字体请求?

In Windows,the CreateFontIndirect() call can silently substitute compatible fonts if the requested font is not requested. The GetObject() call does not reflect this substitution; it returns the same LOGFONT passed in.

不是CreateFontIndirect正在进行替换.当字体被选择到DC时,会发生替换. CreateFontIndirect只是给你一个LOGFONT的内部副本的句柄.这就是为什么GetObject给你相同的LOGFONT.

How can I find what font was actually created?

如果您将HFONT选择到目标DC中,您可以向DC询问实际选择的字体与LOGFONT最匹配的信息.

>面部名称可用于GetTextFace.
>您可以使用GetTextMetrics获取指标.
>如果所选字体为TrueType或OpenType,则可以使用GetOutlineTextMetrics获取其他指标.

这实际上告诉你实际创建了什么字体.

在旁边:

在打印预览时,您可以从LOGFONT开始,将其选择到打印机DC(或IC)中,获取实际字体的详细信息(打印机通常替换字体),然后创建一个更具代表性的新LOGFONT实际字体选择到屏幕DC,和 – 适当的大小转换 – 做一个很好的匹配用户将实际获得.

猜你在找的Windows相关文章