有没有办法在C#中设置Windows窗体控件的字体,它将接受以逗号分隔的字体列表?我想要一些类似于浏览器解释CSS字体系列的方法,直到它找到计算机上安装的第一个字体为止。
示例:
string fontList = "Obscure Font1, Obscure Font2, Verdana"
textBox1.Font = new Font( FontFamilyFromHtml(fontList), FontStyle.Bold);
.NET内置了什么内容,或者您是否需要创建一个将逗号分隔字符串的方法,然后测试每个字符串的安装字体列表,直到找到匹配项为止?
答案 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");
}