しらいとブログ

ネットで検索してもなかなか出てこないIT情報を独自にまとめています

「WinFont+」開発記録 Part 1

Windowsのフォント描画を置き換えるソフトにはgdi++.dll、gdippezgdiMacTypeがあります。
きちんと調べたわけではありませんが、
最初に作られたのがgdi++.dll(本家)、
gdi++.dll(本家)から派生したのがgdi++.dll(FreeType版)、
gdi++(FreeType版)から派生したのがgdippezgdi
gdi++(FreeType版)を元に新たに開発されたのがgdi++.dll(Helium版)、
gdippから派生したのがMacTypeのようです。

そんな状況において新規開発を始めたのがWinFont+になります。
WinFont+はGDIのフォント描画をDirectWriteで置き換えます。

とりあえず出来たところまで公開します。

WinFont+_alpha01.zip
WinFont+_alpha01.zip (予備)

現状
WindowsVista以降で動く(はず)。
GDIのExtTextOutWをDirect2D+DirectWrite(DWRITE_RENDERING_MODE_OUTLINE)で置き換えています。
OUTLINEなのでガンマ値は1.0で固定、コントラストも変えられません。
下線や取り消し線はDirectWriteの描画とは別に文字をスペースに置き換えてGDIで描画しています。
背景の塗り潰しは文字色を背景色にしてGDIで描画しています。
まだFontLinkに対応していないので英語フォントで日本語を表示しようとすると半角英数字だけDirectWrite、それ以外はGDIで描画されることがあります。
子プロセスには適用されないのでChromeのようなマルチプロセスなソフトには対応できません。
一部のソフトで文字の上下が切れる可能性があります。
速度はGDIと比べると大分遅いです。
コードはコメントを抜いて400行程度。

作っていて確信したのですが、Windows8以前のDirectWriteは機能が少なすぎます。
次から7と8のサポートはあきらめて8.1以降を対象にしようと思います。

こんな感じで定期的に開発記録を残そうと思います。