当我显示WinForms.FontDialog(C#,.NET 2.0)的实例时,我缺少一些我期望在那里的字体(例如Courier,Fixedsys,MS Sans Serif)。此外,客户抱怨他安装的Adobe字体也没有出现在列表中。
如何在此对话框中显示这些字体?
答案 0 :(得分:4)
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字体,我没有。请告诉我们。