RichTextBox与私有字体的行为不正确

时间:2012-06-08 10:33:23

标签: c# fonts richtextbox

将RichTextBox与私有字体一起使用我遇到了以下问题:我可以在文本框中使用我的私有字体编写文本,但是当我选择它时(在我的程序中需要它)文本框返回MS Sans Serif as Selection字体。

PrivateFontCollection pfc = new PrivateFontCollection(); // font collection
pfc.AddFontFile("..\\..\\Fonts\\infotra1.ttf"); // load font
rtb.Font = new Font(pfc.Families[0], 10.0f, FontStyle.Regular);
rtb.AppendText("lorem ipsum bla bla bla\n");

现在,文本已正确添加到文本框中。

  

private void rtb_SelectionChanged(object sender,EventArgs e){         var f = rtb.SelectionFont; }

如果我选择文本并检查rtb.SelectionFont,则返回MS Sans Serif。

我知道当系统无法找到我的字体时,系统会返回MS Sans Serif。我应该以某种方式告诉RichTextBox我还使用我的私人字体吗?

1 个答案:

答案 0 :(得分:3)

它可能按预期工作,但您需要查看f.OriginalFontName而不是f.Name来实现它,因为您使用的是私有字体。

查看字体文档(http://msdn.microsoft.com/en-us/library/164w6x6z)我发现了这个:

  

如果familyName参数指定未安装的字体   运行应用程序的计算机或不受支持, Microsoft   Sans Serif将被替换