RichTextBox 使用私有字体时行为不正确

Posted

技术标签:

【中文标题】RichTextBox 使用私有字体时行为不正确【英文标题】:RichTextBox incorrect behavoir with private fonts 【发布时间】:2012-06-12 09:59:34 【问题描述】:

使用带有私有字体的 RichTextBox 我遇到了以下问题:我可以在文本框中使用我的私有字体编写文本,但是当我选择它时(在我的程序中需要它)文本框返回 MS Sans衬线作为选择字体。

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】:

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

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

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

【讨论】:

以上是关于RichTextBox 使用私有字体时行为不正确的主要内容,如果未能解决你的问题,请参考以下文章

如何更改RichTextBox高度以适应C#中的新字体大小

C#中如何改变richtextbox中已选择部分的字体和颜色?

在 vb.net 中调整 RichTextBox 的字体样式

如何增加richtextbox中文本的字体大小

C# 关于RichTextBox控件怎么让里面的字体不一样!

怎样使用C#的RichTextBox控件