.Net перечислять стили шрифтов winforms?

Я искал способ составления списка допустимых стилей шрифта для данного шрифта, используя .Net Framework (даже если мне пришлось пинвокировать gdi32 или какой-либо другой API), поскольку не все шрифты попадают в значения перечисления System.Drawing.FontStyle (Жирный, Курсив, Обычный, Зачеркнутый, Подчеркнутый). Прекрасным примером шрифта, который не соответствует требованиям, является Segoe UI, который представляет собой шрифт TrueType Microsoft, со стилями шрифтов: Regular, Semibold, Light, Bold, Italic и BoldItalic. Другой пример - Arial, который имеет: Обычный, Узкий, Курсив, Полужирный, Полужирный Курсив, Узкий Полужирный, Узкий Полужирный Курсив и Узкий Курсив.

В Windows 7 (возможно, также Vista, но у меня нет машины для проверки), когда вы открываете проводник и переходите к% SystemRoot% \ Fonts, вы увидите столбец с именем «Стиль шрифта», в котором перечислены все доступные стили. для каждого шрифта, который говорит мне, что определенно есть способ сделать это, по крайней мере, через вызовы API.

В конечном счете, я хочу перечислить список FontFamily, а затем перечислить каждый стиль шрифта для каждой семьи. Ниже приведен пример кода для перечисления всех семейств шрифтов. Если кто-то может оказать помощь в перечислении стилей шрифтов, доступных для каждого семейства, я был бы признателен. Если я поступаю неправильно, я определенно открыт для предложений.

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