文字描画のエンジンにWindows 7の頃まではGDIが積極的に利用されていましたが、Windows 8.1が出た頃から急にDirectWriteに切り替えていくアプリケーションが増えてきています。
それは何故なのでしょうか。
それは何故なのでしょうか。
そもそもDirectWriteってなんでしょう?
DirectXのコンポーネントの1つで、GDIの後継となる文字描画API群のこと。
メリットは?
DirectXのコンポーネントの1つで、GDIの後継となる文字描画API群のこと。
メリットは?
- Direct2Dを経由してハードウェアアクセラレーションを利用出来る
- OpenType機能対応
- GDIより多くの言語に対応
- 縦方向のアンチエイリアス処理にも対応
- スケーリングがGDIより強く、100%以外でも綺麗
- GDIとの併用が出来る
どのように描画するの?
簡単に説明すると、DirectXの文字描画機能群がDirectWriteなので、グラフィックシステムに文字描画システムを組み込んでいるという形になります。全体の画面描画をする前に文字描画を済ませ、それをグラフィックスAPIなどで合成するという流れになるみたいです。
レンダリングオプションは何が使えるの?
簡単に説明すると、DirectXの文字描画機能群がDirectWriteなので、グラフィックシステムに文字描画システムを組み込んでいるという形になります。全体の画面描画をする前に文字描画を済ませ、それをグラフィックスAPIなどで合成するという流れになるみたいです。
レンダリングオプションは何が使えるの?
- RGBサブピクセルレンダリング(色にじみが出る代わりに細かく描画)
- 縦横両方向アンチエイリアス+RGBサブピクセルレンダリング(ぼかし強め、滑らかに見える)
- エイリアス表示
- グレースケール(RGBサブピクセルの無効化)
- GDI固有の幅モード
- GDIと互換性のある幅(MSゴシックなどのアジア系ビットマップフォント含む)
- アウトライン(ビットマップ化しない=ヒンティング無し描画モード)
これらはDirectWrite APIとWindows 7以降付属のClearTypeチューナーである程度調整できます。
しかし、十分とはいえないのでしらいと氏のDirectWriteパッチを導入したほうが良いかもしれません。
スケーリング処理について
こちらが参考になりそうです。
今さらWPF?いいえ、今こそWPF!
まとめ
特にスケーリング設定が100%以外のときの描画品質を安定させるために、DirectWriteの機能拡張が何度か繰り返され、ある程度のアプリが移行し始めているという現状みたいです。
スケーリング100%の場合それほど変化を感じませんが、125%を超える設定になっている場合だとGDIはボケボケの見づらい文字になってしまうというのが1番の強い理由なのかもしれません。
しかし、十分とはいえないのでしらいと氏のDirectWriteパッチを導入したほうが良いかもしれません。
スケーリング処理について
こちらが参考になりそうです。
今さらWPF?いいえ、今こそWPF!
まとめ
特にスケーリング設定が100%以外のときの描画品質を安定させるために、DirectWriteの機能拡張が何度か繰り返され、ある程度のアプリが移行し始めているという現状みたいです。
スケーリング100%の場合それほど変化を感じませんが、125%を超える設定になっている場合だとGDIはボケボケの見づらい文字になってしまうというのが1番の強い理由なのかもしれません。
Comment
コメントする