WinForms.FontDialog (C#、.NET 2.0) のインスタンスを表示すると、そこにあるはずのいくつかのフォントが表示されません (Courier、Fixsys、MS Sans Serif など)。また、顧客は、インストールした Adobe フォントもリストに表示されないと不満を漏らしています。
これらのフォントをこのダイアログに表示するにはどうすればよいですか?
FontDialog は、GDI+ との互換性を維持するために TrueType フォントのみを表示するように設計されています。デバイス フォントを表示するには、Reflection のハッキングが少し必要です。
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 フォントも有効になるかどうかはわかりません。我々に教えてください。