tags:

views:

501

answers:

1

When I display an instance of WinForms.FontDialog (C#, .NET 2.0), I am missing some fonts that I expect to be there (e.g. Courier, Fixedsys, MS Sans Serif). Also, a customer is complaining that Adobe fonts he has installed are also not showing up in the list.

How can I get these fonts to display in this dialog?

+3  A: 

FontDialog was designed to only show TrueType fonts to stay compatible with GDI+. Getting it to show the device fonts takes a bit of Reflection hacking:

using System.Reflection;
...
      MethodInfo mi = typeof(FontDialog).GetMethod("SetOption",
        BindingFlags.NonPublic | BindingFlags.Instance);
      mi.Invoke(fontDialog1, new object[] { 0x40000, false });
      fontDialog1.ShowDialog();

I don't know whether this also enables Adobe's OpenType fonts, I don't have any. Let us know.

Hans Passant