. 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());
    */
}
7
задан Todd Main 12 March 2011 в 08:12
поделиться