如何从html/css样式字符串(例如:Futura,Verdana,Arial)中设置c# winforms控件中的F

本文关键字:Arial Verdana 设置 控件 winforms Futura html css 样式 例如 字符串 | 更新日期: 2023-09-27 17:49:44

是否有一种方法可以在c#中设置Windows窗体控件的字体,以接受逗号分隔的字体列表?我想要一些类似于浏览器如何解释CSS字体族的东西,它沿着列表向下,直到找到计算机上安装的第一个字体。

的例子:

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

是否有任何内置到。net或你需要创建一个方法,将分割逗号字符串,然后测试安装的字体列表,直到找到一个匹配?

如何从html/css样式字符串(例如:Futura,Verdana,Arial)中设置c# winforms控件中的F

没有现成的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");
}