4

一部のテキストのフォントの太さを太字にすると、通常のフォントの太さのテキストよりも小さくなるという問題がありました。これは、TextFormattingModeが「Display」に設定されているためであることがわかりました。TextFormattingModeが"Ideal"に設定されている場合、問題は発生しません。

たとえば、次のコードです。

 <Label FontFamily="Calibri" FontSize="12" FontWeight="Bold" Content="This is some test text" TextOptions.TextFormattingMode="Ideal"/>
 <Label FontFamily="Calibri" FontSize="12" Content="This is some test text" TextOptions.TextFormattingMode="Ideal"/>
 <Label></Label>
 <Label FontFamily="Calibri" FontSize="12" FontWeight="Bold" Content="This is some test text" TextOptions.TextFormattingMode="Display"/>
 <Label FontFamily="Calibri" FontSize="12" Content="This is some test text" TextOptions.TextFormattingMode="Display"/>

次を生成します。

実行時のXAMLの結果

最後の2つのラベルのフォントサイズを約14に増やすと、太字のテキストは通常​​の重み付けされたテキストよりも大きくなります。

私の質問は、TextFormattingModeが「Display」に設定された12ポイントの太字テキストを、通常の重み付けされたテキストと同じサイズ/わずかに大きいものにするために使用できる設定はありますか?

4

2 に答える 2

9

問題は、太字のテキストが短すぎるということではなく、通常のテキストが長すぎるということです。

この背後には歴史があります。WPFは元々.NET3.0で出荷され、テキストをスケーリングするための「理想的な」モードのみをサポートしていました。このモードは、真の解像度に依存しないテキストスケーリングをサポートします。テキストの行は、インチあたりのドット数の解像度が異なるさまざまなディスプレイデバイスで、インチ単位の予測可能な長さになります。これはうまく受け入れられず、これが生成するぼやけたテキストを好まないWPFプログラマーからの大規模な苦情を引き起こしました。これはスクリーンショットに表示されます。太字のmの左の語幹は、理想モードでは太すぎますが、表示モードでは太すぎないことに注意してください。

.NET 4.0では、WPFチームは「表示」と呼ばれるテキストをレンダリングする新しい方法をサポートしていました。これは、GDIと同じようにテキストをレンダリングし、フォントヒンティングルールを適用して文字の形状を微調整し、モニターのピクセルグリッドとよりよく一致するようにします。これは、特にステムに1つのピクセルしかない場合に、文字を引き伸ばす傾向があります。ポイントサイズが小さいほど、これはより顕著になります。そのため、テキストは非常に読みやすくなりますが、真の解像度に依存しないレンダリングは失われます。

Winformsも、Graphics.DrawString()からTextRenderer.DrawText()へと同様の進化を遂げました。

WPFチームからのこのブログ投稿に詳細があります。

したがって、あなたの質問に対する答えは「いいえ」です。

于 2012-11-02T21:15:27.820 に答える
1

残念ながら、あなたはすでにあなたの質問に答えています。答えはいいえだ。なぜこれが起こっているのかわかりません。私はそれを見て、SNOOPでそれを引き上げました、そしてそれが十分に小さくレンダリングされていることを確認しました。

10.5から12.4までのすべてのフォント設定にこの問題があるようです。フォント8、9、または10、10.4および12.5、13、14はそうではありません。

マイクロソフトに連絡する時間のように聞こえます。バグを送信します。

また、これはWindowsの表示設定と関係があります。表示設定を100%から125%に切り替えると、問題が変わりました。これらは両方ともほぼ同じサイズに見えますが、小さくはありません。

于 2012-11-02T19:50:58.543 に答える