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

标签 c# fonts gdi+ mschart truetype

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

我想显示一个 FontDialog 以便用户可以更改 Chart 上的字体,但是如果用户选择了非 TrueType 字体,那么一个异常(exception)是抛出。 GDI+ 只能处理 TrueType 字体。

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

最佳答案

FontDialog 类已经这样做了,它使用带有 CF_TTONLY 选项的 ChooseFont() API 调用。这会强制对话框仅显示宣传为 TrueType 字体的字体。这些链接表明周围有一些字体可以欺骗对话框,直到今天才听说过。这使得它非常罕见但肯定并不意外,周围有很多垃圾字体和错误的元数据。

您无法采取任何措施来捕获异常,它是在内置于 .NET 框架中的回调函数中引发的。重写类是一种选择,但不是一个令人愉快的选择。卸载 troublemaker 字体当然是简单的解决方案。

关于C# 将 FontDialog 设置为仅显示 TrueType 字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6302454/

相关文章:

c# - 异常 : Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host

c# - 如何通过 ASP.NET Core 中的链接进行 POST

fonts - Adobe LiveCycle 字体转换

java - 如何在工具栏android中为标题设置自定义字体

delphi - GDI+ 在 TBitmap 上绘图

c# - 在 C# 中使用 ImageAttributes 旋转色调

C# 局部变量在 Try-Catch-Finally 中访问之前可能不会初始化

c# - 从 .NET 中的 t 分数计算百分位数

css - 如何缩小 Google 字体 CSS

分层窗口上的 C++ GDI+ 绘图图像不起作用