2

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

例子:

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

.NET 中是否有任何内置内容,或者您​​是否需要创建一种将字符串拆分为逗号的方法,然后为每个字体测试已安装的字体列表,直到找到匹配项?

4

1 回答 1

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");
}
于 2012-12-28T23:54:19.363 回答