2

プライベートフォントでRichTextBoxを使用すると、次の問題が発生します。テキストボックス内にプライベートフォントでテキストを書き込むことができますが、テキストボックスを選択すると(プログラムでさらに必要になります)、MSSansSerifが選択として返されます。フォント。

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を調べると、MSSansSerifが返されます。

フォントが見つからない場合、システムがMSSansSerifを返すことを知っています。プライベートフォントも使用していることを何らかの方法でRichTextBoxに伝える必要がありますか?

4

1 に答える 1

3

おそらく期待どおりに機能していますが、プライベートフォントを使用しているため、実現するf.OriginalFontNameのではなく、確認する必要があります。f.Name

フォントドキュメント(http://msdn.microsoft.com/en-us/library/164w6x6z)を調べたところ、次のことがわかりました。

familyNameパラメーターが、アプリケーションを実行しているマシンにインストールされていない、またはサポートされていないフォントを指定している場合、MicrosoftSansSerifが代用されます。

于 2012-06-08T12:13:38.300 に答える