C#将FontDialog设置为仅显示TrueType字体

Ozz*_*zah 7 c# fonts gdi+ truetype mschart

几乎每个论坛都会提出这个问题,包括这里,但我找不到任何可接受的答案.我开始认为实际上没有解决方案,我只需将我的代码包装在try/catch块中,并向用户道歉并要求他们选择另一种字体.

我想显示一个FontDialog用户可以更改a上的字体Chart,但是如果用户选择非TrueType字体,则会抛出异常.GDI +只能处理TrueType字体.

如何过滤不能与GDI +一起使用的FontDialog中的字体?

Han*_*ant 5

FontDialog类已经执行此操作,它使用带有CF_TTONLY选项的ChooseFont()API调用.这迫使对话框仅显示将自己宣传为TrueType字体的字体.这些链接表明这个对话框周围有字体,直到今天才从未听说过.这使它非常罕见,但肯定不是意料之外,有很多垃圾字体与坏元数据.

没有任何东西可以捕获异常,它是在回调函数中引发的,该函数已经被嵌入到.NET框架中.重写课程是一种选择,但不是一个令人愉快的选择.卸载troublemaker字体肯定是一个简单的解决方案.

  • 谢谢汉斯.我正在运行Win7 x64,只安装了Adobe Photoshop和Mathematica字体; 其余的都是股票字体.我的大约一半的字体导致了这个异常,所以卸载麻烦的字体是不可取的,遗憾的是. (2认同)