如何使默认fontstyle成为字体喜欢的?

时间:2017-11-07 14:58:59

标签: c# fonts

我有一个小应用程序,可以获取所有Windows字体的列表。然后,我可以选择一个并显示其所有字符。一直工作,直到我发现我有一个问题,并非所有字体都有FontStyle:Regular。没问题我可以做一个检查,但这是我遇到问题的地方,当我启动系统似乎有FontStyle:常规作为其默认值,我不能改变它所以如果我运行下面的代码文本" Aharoni& #34;在我的组合框中选择它告诉我,不支持常规。如何让它忽略样式或强制样式成为粗体使用的样式?

 var cvt = new FontConverter();
 Font fname = cvt.ConvertFromString(cmbobx_fontname.Text) as Font;

如果我不能这样做,那么是否可以获得所选字体支持的样式?

1 个答案:

答案 0 :(得分:0)

FontFamily类有一个检查样式是否可用于字体的方法 - 所以不要尝试直接创建Font,而是先创建一个FontFamily实例&通过风格进行交流,直到找到支持的风格,例如

  FontFamily fontf = new FontFamily("Aharoni");
  System.Drawing.FontStyle fs = System.Drawing.FontStyle.Regular;
  System.Drawing.Font font;
  if (fontf.IsStyleAvailable(System.Drawing.FontStyle.Regular))
    fs = System.Drawing.FontStyle.Regular;
  else if (fontf.IsStyleAvailable(System.Drawing.FontStyle.Bold))
    fs = System.Drawing.FontStyle.Bold;
  else if (fontf.IsStyleAvailable(System.Drawing.FontStyle.Italic))
    fs = System.Drawing.FontStyle.Italic;
  else if (fontf.IsStyleAvailable(System.Drawing.FontStyle.Strikeout))
    fs = System.Drawing.FontStyle.Strikeout;
  else if (fontf.IsStyleAvailable(System.Drawing.FontStyle.Underline))
    fs = System.Drawing.FontStyle.Underline;
  else
     throw new Exception("No Font Styles Available");
  font = new System.Drawing.Font(fontf, 10, fs);

你可以遍历FontStyle枚举 - 而不是像我一样使用if / else。