当我在C#,.NET 2.0中显示WinForms.FontDialog实例时,我缺少一些我希望出现的字体(例如Courier、Fixedsys、MS Sans Serif)。同时,客户抱怨他安装的Adobe字体也没有出现在列表中。
请问如何让这些字体在对话框中显示?
请问如何让这些字体在对话框中显示?
FontDialog被设计为仅显示TrueType字体,以保持与GDI+的兼容性。如果想要显示设备字体,则需要进行一些Reflection hacking:
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字体,我没有任何相关的经验。请告诉我们。
FontDialog was designed to only show TrueType fonts to stay compatible with GDI+
- Hans Passant