如何确定要使用的LOGFONT字符集?

时间:2019-03-27 20:48:01

标签: winapi fonts character-encoding mfc

我有一个文本选择/规范对话框,用户可以从列表中指定字体,设置粗体,斜体等。然后,我使用LOGFONT中的信息来创建CFont以便随后在CEdit中用作预览。

但是,如果用户选择Wingdings之类的符号字体,则除非我将LOGFONT::lfCharset设置为SYMBOL_CHARSET,否则预览将无法正常工作。因此,从本质上讲,仅给定字体名称,我如何确定默认字符集应该是什么(即,如何确定我是否应该SYMBOL_CHARSET)?

我已经看到使用GetTextMetrics()的建议,但这涉及将字体设置为DC,并且我还没有创建字体,所以...?

1 个答案:

答案 0 :(得分:3)

一旦有了字体名称,就可以使用EnumFontFamiliesEx查看特定字符集是否存在该字体。您可以使用DEFAULT_CHARSET对其进行一次调用,如果不起作用,请使用SYMBOL_CHARSET对其进行调用。

那还是一个猜测。我还没有机会自己尝试一下。