当我显示 WinForms.FontDialog(C#、.NET 2.0)的一个实例时,我缺少一些我希望出现的字体(例如 Courier、Fixedsys、MS Sans Serif)。此外,一位客户抱怨他安装的 Adobe 字体也没有出现在列表中。
如何让这些字体显示在此对话框中?
FontDialog 旨在仅显示 TrueType 字体以保持与 GDI+ 的兼容性。让它显示设备字体需要一些反射黑客:
using System.Reflection;
...
FontDialog fontDialog1 = new FontDialog();
MethodInfo mi = typeof(FontDialog).GetMethod("SetOption",
BindingFlags.NonPublic | BindingFlags.Instance);
mi.Invoke(fontDialog1, new object[] { 0x40000, false });
fontDialog1.ShowDialog();
我不知道这是否也启用了 Adobe 的 OpenType 字体,我没有。让我们知道。