テキストレンダリングにポイント。
TextOptions.TextFormattingMode="Display"
にしない (あるいは特定の条件下のみ使用する)
このレンダリングモードは System DPI
に依存してレンダリングされるため,DPI が違うディスプレイでの表示が酷くなります。
それに,個人的な主観になりますが,200% 環境だと "Ideal" の方が圧倒的に綺麗です……
仮に設定するのであれば,
- System DPI が 150% (DPI = 144) 以下であること
- テキストサイズが絶対的に (スケーリング後のサイズ) 20px を超えないものであること
- ヘッダーコンテンツなどの大きい文字には "Ideal" を使う方が好ましい。
- Per-monitor DPI で DPI 変更を取り扱っているときは全て "Ideal" にすること。
です。
Per-monitor DPI の処理を WPF に投げる場合
条件は少し減りますが,
- System DPI が 150% (DPI = 144) 以下であること
- テキストサイズが絶対的に (スケーリング後のサイズ) 20px を超えないものであること
- ヘッダーコンテンツなどの大きい文字には "Ideal" を使う方が好ましい。
です。
補足
ここでは Display <-> Ideal の境界線を定義していますが,実際に 2 番目の項目さえクリアしてれば当然ですが 1 も満たすことになります。当たり前ですが,12px のコンテンツは 175% 環境では 21px になりますからね。つまり 2 つめの項目にすでにヒットしています。
RGB pixel でないと ClearType がひどいことになるのは Windows あるあるなのですが,WPF で「TextOptions.TextRenderingMode="Grayscale"」のレンダリングってなんかいまいち綺麗じゃないですよね…… なんでなんですかね。