如何在html / css样式字符串中设置C#winforms控件(例如TextBox)中的FontFamily(即:Futura,Verdana,Arial)

时间:2012-12-28 23:41:16

标签: c# winforms fonts

有没有办法在C#中设置Windows窗体控件的字体,它将接受以逗号分隔的字体列表?我想要一些类似于浏览器解释CSS字体系列的方法,直到它找到计算机上安装的第一个字体为止。

示例:

string fontList = "Obscure Font1, Obscure Font2, Verdana"
textBox1.Font = new Font( FontFamilyFromHtml(fontList), FontStyle.Bold);

.NET内置了什么内容,或者您​​是否需要创建一个将逗号分隔字符串的方法,然后测试每个字符串的安装字体列表,直到找到匹配项为止?

1 个答案:

答案 0 :(得分:3)

没有开箱即用的API调用,因此您必须拆分字符串并搜索已安装的字体。

以下是使用InstalledFontCollection执行此操作的实现:

private FontFamily FindFontByCSSNames(string cssNames)
{
    string[] names = cssNames.Split(',');
    System.Drawing.Text.InstalledFontCollection installedFonts = new System.Drawing.Text.InstalledFontCollection();
    foreach (var name in names)
    {

        var matchedFonts = from ff in installedFonts.Families where ff.Name == name.Trim() select ff;

        if (matchedFonts.Count() > 0)
            return matchedFonts.First();
    }

    // No match, return a default
    return new FontFamily("Arial");
}