.Net enumerar estilos de fuente winforms?

He estado buscando una manera de enumerar los estilos de fuente válidos para una fuente dada usando el marco .Net (incluso si tengo que invocar gdi32 o alguna otra API) ya que no todas las fuentes caen en los valores de enumeración System.Drawing.FontStyle (Negrita, Cursiva, Regular, Tachado, Subrayado). Un ejemplo perfecto de una fuente que no se ajusta a la factura es Segoe UI, que es una fuente TrueType de Microsoft, con estilos de fuente: Regular, Semibold, Light, Bold, Italic y BoldItalic. Otro ejemplo es Arial que tiene: Regular, Estrecho, Cursiva, Negrita, Negrita Cursiva, Estrecho Negrita, Estrecho Negrita Cursiva y Estrecho Cursiva.

En Windows 7 (probablemente también vista, pero no tengo una máquina para verificar) cuando abra el explorador y busque% SystemRoot% \ Fonts verá una columna llamada "Estilo de fuente" que enumera todos los estilos disponibles para cada fuente, lo que me dice que definitivamente hay una manera de hacer esto, al menos a través de llamadas API.

En última instancia, estoy buscando enumerar la lista FontFamily y luego enumerar cada estilo de fuente para cada familia. A continuación se muestra un código de muestra para enumerar todas las familias de fuentes, si alguien pudiera brindar asistencia para enumerar los estilos de fuente disponibles para cada familia, lo agradecería. Si voy por este camino equivocado, definitivamente estoy abierto a sugerencias.

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());
    */
}

Respuestas a la pregunta(5)

Su respuesta a la pregunta