.Net Winforms-Schriftstile aufzählen?

Ich habe nach einer Möglichkeit gesucht, die gültigen Schriftstile für eine bestimmte Schriftart mithilfe des .NET-Frameworks aufzulisten (auch wenn ich gdi32 oder eine andere API verwenden muss), da nicht alle Schriftarten in die System.Drawing.FontStyle-Aufzählung fallen Werte (Fett, Kursiv, Normal, Durchgestrichen, Unterstrichen). Ein perfektes Beispiel für eine Schriftart, die nicht in die Rechnung passt, ist Segoe UI, eine TrueType Microsoft-Schriftart mit folgenden Schriftstilen: Regular, Semibold, Light, Bold, Italic und BoldItalic. Ein weiteres Beispiel ist Arial, das Folgendes enthält: Normal, Schmal, Kursiv, Fett, Fett Kursiv, Schmal Fett, Schmal Fett Kursiv und Schmal Kursiv.

In Windows 7 (wahrscheinlich auch Vista, aber ich muss keinen Computer überprüfen) wird beim Öffnen des Explorers und Navigieren zu% SystemRoot% \ Fonts eine Spalte mit dem Namen "Font style" angezeigt, in der alle verfügbaren Elemente aufgelistet sind Stile für jede Schriftart, was mir sagt, dass es definitiv eine Möglichkeit gibt, dies zu tun, zumindest durch API-Aufrufe.

Letztendlich möchte ich die FontFamily-Liste auflisten und dann jeden Schriftstil für jede Familie auflisten. Nachfolgend finden Sie einen Beispielcode für die Auflistung aller Schriftfamilien. Ich würde es begrüßen, wenn jemand Unterstützung für die Auflistung der für jede Familie verfügbaren Schriftstile geben könnte. Wenn ich das falsch mache, bin ich auf jeden Fall offen für Vorschläge.

Drawing.Text.InstalledFontCollection ifc = new Drawing.Text.InstalledFontCollection();
foreach ( FontFamily ff in ifc.Families )
{
    Console.WriteLine(ff.ToString());
    // Something like this would be nice, but AFAIK nothing similar exists
    /*
    foreach ( FontStyle style in ff.Styles )
        Console.WriteLine(style.ToString());
    */
}

Antworten auf die Frage(10)

Ihre Antwort auf die Frage