Fonts missing in WinForms.FontDialog

前端 未结 1 921
南方客
南方客 2020-12-21 16:20

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

相关标签:
1条回答
  • 2020-12-21 16:47

    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;
    

    ...

    FontDialog fontDialog1 = new FontDialog();
    
    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.

    0 讨论(0)
提交回复
热议问题