WinForms.FontDialog 中缺少字体

bva*_*erw 3 c# fonts winforms

当我显示 WinForms.FontDialog (C#, .NET 2.0) 的一个实例时,我缺少一些我期望出现的字体(例如 Courier、Fixedsys、MS Sans Serif)。此外,一位客户抱怨他安装的 Adob​​e 字体也没有显示在列表中。

如何让这些字体显示在此对话框中?

Han*_*ant 6

FontDialog 旨在仅显示 TrueType 字体以与 GDI+ 保持兼容。让它显示设备字体需要一些反射黑客:

using System.Reflection;
Run Code Online (Sandbox Code Playgroud)

...

FontDialog fontDialog1 = new FontDialog();

MethodInfo mi = typeof(FontDialog).GetMethod("SetOption", 
    BindingFlags.NonPublic | BindingFlags.Instance);
        mi.Invoke(fontDialog1, new object[] { 0x40000, false });
fontDialog1.ShowDialog();
Run Code Online (Sandbox Code Playgroud)

我不知道这是否也启用了 Adob​​e 的 OpenType 字体,我没有。让我们知道。