Wine 1.1.12におけるフォントのサブピクセルレンダリングについて
Wineのバージョン1.1.12でフォントのサブピクセルレンダリングができるようになっているが、これを使用するには、幾つかの準備が必要となる。
(2010/6/1)バージョン1.2-rc1以上ではデスクトップ上の設定を参照するようになっている。「Wine 1.2-rc1以上のフォントのサブピクセルレンダリングの設定について」を参照。
freetypeのサブピクセルレンダリングサポート
x86_32版freetypeライブラリについて、サブピクセルレンダリングをサポートするようにビルドされている必要がある。具体的にはfreetype-[バージョン]/include/freetype/config/ftoption.hに
#define FT_CONFIG_OPTION_SUBPIXEL_RENDERING
を記述してからビルドするのだが、以下に挙げるディストリのパッケージとして利用する場合は手動でここをいじる必要はない。どうしても手動でビルドして上書きしなくてはならない状況になった場合にのみそれを行う。
Mandriva Linux 2009.0
i586版のlibfreetype6がPLF版である必要がある。PLFのメディアを使用しない場合は公式パッケージのミラーサーバからfreetypeのソースRPMを入手してrpmbuildに--define='_with_plf 1'オプションを付けることでPLF版をビルドすることができる(推奨する方法)。出力されたRPMファイルのファイル名に「plf」が含まれていれば成功で、これをシステムにインストールすればOK。下は作業例(一般ユーザでRPMパッケージの作成ができるような設定が必要)。
$ alias rpmbuild-srpm2rpm-586='linux32 rpmbuild --target i586 --rebuild' $ rpmbuild-srpm2rpm-586 --define='_with_plf 1' [freetype2-2.3.7-1mdv2009.0.src.rpmの場所] $ sudo rpm -Uvh --force [RPMパッケージの出力ディレクトリ]/i586/[libfreetype6-2.3.7-1plf2009.0.i586.rpmの場所]
Ubuntu Intrepid(8.10)
Ubuntu Intrepidでは後述のレジストリ設定のみでサブピクセルレンダリングがされた。特に手動のパッケージ再ビルドなどの必要性はない。Gentoo
手元に環境がないので確認はできないが、パッケージ「media-libs/freetype」のバージョン2系において「bindist」のUSEフラグを付けなければOK。*1[引用]ファイル名: ${PORTDIR}/media-libs/freetype/freetype-2.3.7-r1.ebuild より
enable_option() { sed -i -e "/#define $1/a #define $1" \ include/freetype/config/ftoption.h \ || die "unable to enable option $1" } disable_option() { sed -i -e "/#define $1/ { s:^:/*:; s:$:*/: }" \ include/freetype/config/ftoption.h \ || die "unable to disable option $1" } if ! use bindist; then # Bytecodes and subpixel hinting supports are patented # in United States; for safety, disable them while building # binaries, so that no risky code is distributed. # See http://freetype.org/patents.html enable_option FT_CONFIG_OPTION_SUBPIXEL_RENDERING enable_option TT_CONFIG_OPTION_BYTECODE_INTERPRETER disable_option TT_CONFIG_OPTION_UNPATENTED_HINTING fi
レジストリ設定
WindowsのClearTypeと設定は互換*2らしく、Windows上でもClearTypeのチューニングにこのレジストリ設定が使用されるようだ。Wineのバージョン1.1.12の時点ではWine環境を新しく作っても設定はされないが、今後のバージョンで対応すると思われる。*3
下は設定例のレジストリ。レジストリエディタで取り込める。
[任意]ファイル名: subpixel.reg
REGEDIT4 [HKEY_CURRENT_USER\Control Panel\Desktop] "FontSmoothing"="2" "FontSmoothingType"=dword:00000002 "FontSmoothingGamma"=dword:000003e8 "FontSmoothingOrientation"=dword:00000001
(2009/11/5)ここのレジストリ設定については「winetricksの覚え書き(2009/10/9現在)」にも書いているように、winetricksを用いることで設定の変更が容易に行える(従来方式アンチエイリアス,RGB順サブピクセル,BGR順サブ...の内のいずれかを指定し、設定できる)。
以下は各設定についてのメモ。
FontSmoothing
文字列(REG_SZ)型。0にするとアンチエイリアスが切れる。サブピクセルレンダリングをするには「2」を指定する?Wineのバージョン1.1.12の時点では「1」でもサブピクセルレンダリングはされたが、Windowsにおいてどうなるかは分からない。
FontSmoothingType
従来型も使えるが、サブピクセルレンダリングを使用するなら「dword:00000002」。
"FontSmoothingType"=dword:00000001
"FontSmoothingType"=dword:00000002
FontSmoothingGamma
- dword:000003e8(0x3e8)では1000
- dword:00000578(0x578)では1400
- dword:00000898(0x898)では2200
フォントのガンマ調整で1000(0x3e8)から2200(0x898)の値をとるらしい。
Wineのバージョン1.1.12の時点では値の変更は全く反映されず、同じ領域のスクリーンショットをファイルに保存したものは全て同一のハッシュ(MD5など)となった。
1000/1400/2200のいずれも上の画像の通り。
FontSmoothingOrientation
サブピクセルの順番の指定で、使用している液晶モニタの並び順に合わせないと綺麗に出ない。Wineのバージョン1.1.12の時点では
- dword:00000000(0x0)ではBGR(青-緑-赤)
- dword:00000001(0x1)ではRGB(赤-緑-青)
となっている。WindowsのClearTypeでもこのように動作しているらしい。
"FontSmoothingOrientation"=dword:00000000(BGR)
"FontSmoothingOrientation"=dword:00000001(RGB)
使用したバージョン:
- Wine 1.1.12
- freetype 2.3.7