WPF の DataGrid コントロール使用時、セル内に表示した文字の一部が欠ける

現象
WPF アプリケーションにおいて、DataGrid コントロールのセル内に表示した文字の一部が欠けることがあります。いくつかのフォントの種類とフォント サイズの組み合わせで発生し、テキストのレンダリング モードが Ideal モードである場合にのみ発生します。

また、DataGrid コントロールに限らず、TextBox コントロール、および TextBlock コントロールでも発生することがあります。
原因
この現象は、.NET Framework 4.0 の不具合により発生します。フォントの種類やフォント サイズによっては、描画領域の計算で丸め誤差が発生
します。この丸め誤差が影響し、実際に必要なサイズよりも描画領域が小さく計算され、レンダリング エンジンが描画領域の範囲外にあるピクセルの描画を不要と判断してしまうために本現象の発生に至ります。レンダリング モードが Display モードの場合には計算方法が異なるため、現象が発生しません。


解決方法
この問題を解決するには、以下のいずれかの方法を使用します。

方法 1
フォントの種類に依存した現象であることから、別のフォントに変更することにより現象を回避することが可能です。
たとえば、アプリケーションで MS UI Gothic に設定している場合は、MS ゴシック、MS Pゴシック、MS 明朝、MS P明朝、メイリオ、メイリオ UI (英語表記では、それぞれ MS Gothic、MS PGothic、MS Mincho、MS PMincho、Meiryo、Meiryo UI が該当します)などに変更します。フォント サイズを小さくしたり大きくしたりすることにより丸め誤差がなくなり、現象が回避できる場合もあります。

なお、WPF が利用する ClearType に適したフォントであるメイリオやメイリオ UI はより多く評価が行われているため、他のフォントと比べて比較的安全です。

方法 2
この問題はテキストのレンダリング モードが Ideal モードである場合にのみ発生しますので、明示的に TextOptions.TextFormattingMode="Display" を指定することにより問題を解決することが可能です。

TextOptions.TextFormattingMode アタッチされるプロパティ

TextFormattingMode 列挙体

なお、レンダリング モードを Display モードに変更した場合、描画サイズが変化することがあります。そのため、とくに大きなサイズのフォントを使用している場合には顕著に影響が現れる可能性があります。
状況
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
注意 : これは、マイクロソフトのサポート組織内で直接作成された "緊急公開" の資料です。 この資料には、確認中の問題に関する現状ベースの情報が記載されています。 情報提供のスピードを優先するため、資料には誤植が含まれる可能性があり、予告なしに随時改定される場合があります。 その他の考慮事項については、使用条件を参照してください。
プロパティ

文書番号:2678870 - 最終更新日: 03/01/2012 09:59:00 - リビジョン: 5.0

Microsoft .NET Framework 4.0

  • kbfix kbexpertiseinter KB2678870
フィードバック