我一直在尝试获取 Windows 上已安装字体的列表,包括字体样式。
经过调查,我发现我需要使用:EnumFontFamiliesEx。我使用它但我只得到字体名称而不是该字体的所有样式。
例如:对于字体:“Verdana”
有四种不同的风格,但我只得到一种——常规的。我的问题是:如何获取包含所有样式的字体列表?
我的代码:
void getFonts()
{
LOGFONT lf;
memset(&lf, 0, sizeof(lf));
lf.lfCharSet = DEFAULT_CHARSET;
HDC hDC = GetDC(NULL);
EnumFontFamiliesEx(hDC, &lf, (FONTENUMPROC)(EnumFontFamExProc), NULL, 0);
}
int CALLBACK EnumFontFamExProc(
ENUMLOGFONTEX *lpelfe,
NEWTEXTMETRICEX *lpntme,
DWORD FontType,
LPARAM lParam
)
{
UTF8String fontName = (lpelfe->elfFullName);
return 1;
}
ENUMLOGFONTEX *lpelfe - 包含字体。但我没有得到所有不同的风格
经过更多调查,我发现如果我将 lfFaceName 更改为特定字体,该方法将返回所有样式。
// To enumerate all styles of all fonts for the ANSI character set
lf.lfFaceName[0] = '\0';
lf.lfCharSet = ANSI_CHARSET;
// To enumerate all styles of Arial font that cover the ANSI charset
hr = StringCchCopy( (LPSTR)lf.lfFaceName, LF_FACESIZE, "Arial" );
所以我不确定我应该做什么,我需要获取所有已安装字体的所有样式。
先感谢您
