C++ 如何检查已安装的字体样式?

C++ 如何检查已安装的字体样式?,c++,winapi,mfc,C++,Winapi,Mfc,我需要客户端计算机(始终为Windows)中所有已安装字体的列表,其中包含样式粗体、斜体和粗体。有这样的功能吗 我已经能够使用EnumFontFamiliesEx列出所有已安装的字体,我认为可以筛选该列表,但我正在寻找一种“更好的方法”: 谢谢 ps:< /强>我用C++和MFC。< /P> 编辑: 对于没有这些样式的字体,Windows可以“伪造”这种行为(强制字体看起来粗体或斜体),但我需要知道哪些字体真正具有这些样式。当您使用“EnumFontFamiliesEx”时,回调函数接收结构L

我需要客户端计算机(始终为Windows)中所有已安装字体的列表,其中包含样式粗体、斜体和粗体。有这样的功能吗

我已经能够使用
EnumFontFamiliesEx
列出所有已安装的字体,我认为可以筛选该列表,但我正在寻找一种“更好的方法”:

谢谢
<强> ps:< /强>我用C++和MFC。< /P> 编辑:
对于没有这些样式的字体,Windows可以“伪造”这种行为(强制字体看起来粗体或斜体),但我需要知道哪些字体真正具有这些样式。

当您使用“EnumFontFamiliesEx”时,回调函数接收结构LOGFONT

LOGFONT
有两个变量
lfWeight
lfItalic

使用这两个变量检查枚举字体是否具有样式

<> > <代码> LFBoox值为0(<代码> FWYDONCAREX)和 LFITALIC是错误的,您可以认为这没有任何样式。

或如果你想非常具体,例如,你想考虑字体只有粗体和规则,那么你可以验证,如果<代码> LFBoosix有{{ 400(正则),600(粗体),700(粗体),800(粗体)}/P>的值。 下面的链接有所有的细节


在上一篇文章中,我在备注中发现了这一点:
lfCharSet=DEFAULT\u CHARSET lfFaceName=a specific font | | |列举了特定字体中的所有字符集和样式。
@rak007我将不得不逐个字体检查样式,但我相信这是最好也是唯一的选择。我有点希望有一个功能,将所有的字体与这些风格。谢谢@BarmakShemirani据我所知,并非所有字体都有斜体和粗体选项,windows可以“伪造”这些行为,但我需要知道哪些字体真正有这些选项,以便我可以将它们嵌入到PDF中。这是真的。你应该把这些信息放在问题中,以澄清你在PDFAsking中做的事情是为了“更好的方式”,而不解释“更好”对你意味着什么并不构成一个可回答的问题。请看。