gdi++.dll, Smooth edges on screen font again.

重要: gdi++.dll の開発は中断しています。このソフトならびにページはこれ以上更新されないかもしれません。その代わりといってはなんですが、FreeType2 をラスタライザとして利用する新しい gdi++.dll の派生版の開発が、現在有志の方々によって進められています。オリジナルと比較して、パフォーマンスや品質が劇的に向上しています。詳細については、2ch の該当スレッドWikiをご覧ください。
「2006年 窓の杜大賞」で「Windows Vista先取り賞」を頂きました。

Mac OS X のそれと同じくらいボケボケの美しいスクリーンフォントを、Windows にも。
Windows のグラフィック操作の中枢をつかさどる gdi32.dll をインターセプトします。

Windows の低品質なクソフォントレンダラ

従来の Windows のフォントレンダラでは、ビットマップを持たないたいていのアウトラインフォントは薄く、かすれて表示されていました。Windows XP で ClearType が導入されましたが、劇的に改善したのは欧文の表示だけで、複雑なグリフを持つ漢字は逆に潰れて表示されてしまいます。Windows Vista で新しく採用されるフォント「メイリオ」で、フォント側からの改善が図られ、小さいポイントでもクッキリと表示されるようになりました。しかし、問題が根本的に解決したわけではありません。他のアウトラインフォントの画面表示は一向に改善される気配がありません。フォントは、GUI において最も重要な構成要素の一つと言えるでしょう。世界シェア第一位の Windows が、他のライバル OS にフォントレンダラの品質で劣っているという現実には、一ユーザーとして憤慨せざるを得ません。

小さなポイントでも、力強く

gdi++.dll は、Windows のシステムファイルの一つ、 gdi32.dll の動作を横取りし、文字描画を担当する API をオーバーライドすることで、フォントの表示品質を改善します。APIが呼ばれると、一度バックバッファに最大4倍のフォントサイズで文字を描画し、それを縮小してから画面に転送します。 Mac OS(Classic) 用の有名なシェアウェアに、SmoothType がありますが、すなわちそれと似たような働きをします。右のスクリーンショットは、M+2P+IPAG を 9 ポイントで表示させたサンプルです。左の標準のレンダラの表示と比較して、右の表示は文字のかすれや歪みが少なく、力強い印象を受けるでしょう。

使い方は無限大

gdi++.dll は、今回のバージョンから、面倒なバイナリエディタを使った編集作業は不要になりました。gdi++.exe にあなたのお気に入りのプログラムをドラッグ&ドロップするだけです。これだけで、gdi32.dll に対するリクエストは全て gdi++.dll に横流しされることになります。例えば、ウェブブラウザのOperaのインストールされたディレクトリにある、 "Opera.exe"をドラッグ&ドロップするだけで、Opera の全てのフォント描画が gdi++.dll を通じて行われることになります。右の画像がそのスクリーンショットです。これが Windows 上で動作しているとは、にわかには信じられないでしょう。

また、自作のアプリケーションに応用することもできます。 gdi32.dll を利用した通常通りのプログラムをビルドしたら、上記の操作を行うだけで、高品質なフォント描画が行われます。エロゲビジュアルノベル形式のゲームや、テキストビューアなどに打ってつけです。

オープンソース

gdi++.dll はオープンソースで、信頼の Microsoft Visual C++ 6.0 SP6 でビルドされています。再頒布はどうぞご自由に。ソースを改良した場合は、ぜひフィードバックをお願いします。

連絡先

バグの報告や、要望などは Windows@2ch掲示板のスレッド か、個人的なものは下記のメールアドレスまでどうぞ。