当我显示 WinForms.FontDialog (C#, .NET 2.0) 的一个实例时,我缺少一些我期望出现的字体(例如 Courier、Fixedsys、MS Sans Serif)。此外,一位客户抱怨他安装的 Adobe 字体也没有显示在列表中。
如何让这些字体显示在此对话框中?
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)
我不知道这是否也启用了 Adobe 的 OpenType 字体,我没有。让我们知道。
| 归档时间: |
|
| 查看次数: |
2630 次 |
| 最近记录: |