gdipp

gdi++ の流れを汲んだ font renderer 。 32/64bit の Windows7/Vista が対象で New BSD license らしい。 Windows7 でもやっぱり font rendering の精度がアレなので ( ClearType の横線と縦線の太さの違いが気になる、 "[" とか顕著にわかる ) なんかないかなーと思っていれてみたんだけどいきなり正解だったぽい。 gdi++ の source code をもとにしてるみたいだけどけっこう手も加えられてるみたいで gdi++ に比べてのウリもけっこうあるぽい。

Better than gdi++

gdipp is superior than gdi++ in various aspects:

  • Seamless support for 32/64-bit Windows. The main reason that gdi++ does support 64-bit Windows is the Detours hooking library, which is free only for its 32-bit version. gdimm instead uses the open-source EasyHook library, and support 64-bit Windows from scratch.
  • DirectWrite support.
  • Vertical text in programs like PowerPoint are correctly rendered. There is no color glitch in PowerPoint presentation.
  • Subtitles in various media players (SPlayer,KMPlayer,PotPlayer ...) are rendered without problem, no matter which video renderer is selected. On the contrary, subtitles are displayed only with the Overlay Mixer in gdi++ case.
  • Aero window title can be rendered correctly (by default rendered with ClearTyep).
  • No glitch after changing the wallpaper in Windows 7 when Aero is enabled.
  • Rotated text are displayed correctly.
  • Numerous compatibility enhancement (e.g. the control character in the Date/Time window in Windows 7).
  • So on and so forth...

俺訳) gdippgdi++ よりも様々な面で優れています。

  • 32/64-bit Windows を同様にサポート。 gdi++ が 64 bit Windows をサポートしている ( 訳注: 「していない」の間違いだと思う ) 主な理由は Detours hooking ライブラリーが 32 bit 版のみフリーだからです。 gdimm はオープンソースである EasyHook ライブラリーを代替として使い、 64 bit Windows サポートを一から行っています。
  • DirectWrite をサポートしています。
  • PowerPoint のようなプログラム内の縦書き文字もきちんと表示されます。 PowerPoint における色誤差もありません。
  • 様々なメディアプレーヤー ( SPlayer 、 KMPlayer 、 PotPlayer ... ) においてどの動画レンダラーでも字幕が問題なく表示されます。対して、 gdi++ の場合 Overlay Mixer を用いたときのみ字幕が表示されます。
  • Aero ウィンドウタイトルが正しく表示されます ( 既定である ClearType による表示です ) 。
  • 回転した文字が正しく表示されます。
  • 多くの互換性が強化されています ( 例えば Windows 7 における日時・時間ウィンドウでの制御文字 ) 。
  • などなど…
Google Code Archive - Long-term storage for Google Code Project Hosting.

他に重要なのは ClearType で処理済みの文字に対しては働かないので overhead がなくて軽い、とか service として動かすことができて registory を気にする必要がない、とか registory を使うこともできる、とか ( http://code.google.com/p/gdipp/wiki/README ) 。

他の類似 project に ezgdi ( http://code.google.com/p/ezgdi/ ) てのもあるみたいなんだけど 64bit application のみの対応だったり license が GNU GPLv3 だったり更新頻度がそれほどでもなかったりという感じで総合的に gdipp のが扱いやすいかなーと。

というか ( 全然関係ないんだけど ) gdi++ はけっこうな数の派生 project を生んでいるんだなぁとちょっと感心してしまった。知っているのだけでも 7 つ。

これだけ出てくるってことはやっぱり文字をキレイに表示したいという needs は高いわけだよな。いやまぁ「ないなら自分で作ればいいじゃない」という人種のみの needs なのかもしれないけど。

でまぁ本題の gdipp もまだ安定してないようで install したら終了というわけではなかった。

  • 0.8.2 beta
  • 0.8.1 beta
  • 0.7.6 stable
    • service mode でしか試してないけど 64bit app を起ち上げようとすると "?gdipp_register_module@@YAXPEAUHINSTANCE__@@@Z" が gdipp_common_64.dll 内に見つからないとか言われる。
    • 他にも live messenger の初回起動時に msvcr80.dll が見つからないとか言われるようになったりとけっこう不具合多いので素直に使わない方がいい。

というわけで今現在最新版じゃない beta が一番安定してるという罠があるので導入するひとは気をつけるべき。

最後に使用前 / 使用後の screen shot 。使っている font は "AR丸ゴシック体M" 。おれの趣味じゃねぇよ。