2008-02-14
_ [windows][linux] rdesktop で antialiasing フォント
結論から書く.
rdesktop 1.5.0 で,ログオンした直後からアンチエイリアス (ClearType) を有効にするためには, rdesktop のオプションに -x 80 と付ければ良い.
ただし,この場合,アンチエイリアス以外の画面効果も有効になってしまう. アンチエイリアスだけを有効にし,その他の画面効果を全て無効にしたい場合は, -x ef にする.
経緯
Windows Vista の UI フォントである Meryo はアンチエイリアス (ClearType) が無効だとかなり汚い. PC を直接使用するのならば,画面のプロパティから ClearType を有効する変更を1度だけ行なえば良い. しかし, rdesktop でログオンした場合にはこの設定が反映されないため,ログオン毎に画面のプロパティで変更しなければならなかった.
Windows のリモートデスクトップクライアント (mstsc.exe) には,アンチエイリアスを制御するオプションがある *1 が, rdesktop 1.5.0 (現時点での最新リリース) には該当するオプションはないし,ウェブを検索してもそれらしき情報が見つからない.
RDP をちゃんと調べるのがスジだが, rdesktop のマニュアルとソースコードを見てみたところ,画面効果 (エクスペリエンス) の制御は 32bit 整数の各ビットをフラグとして制御しており, -x オプションでその設定が出来る. -x オプションの引数は16進の整数値か,3段階の設定を表すラベル (lan, broadband, modem) である.
rdesktop のソースコードが知っていたのは 7bit 分のみであり,それより上位の桁は0を送信していた. 試しに 8bit 目を 1 にしてみたところ,ログオン直後からアンチエイリアスが有効になったため, mstsc.exe の該当設定と同様のものだと判断した.
下位 7bit が何を意味するかを知りたい人は rdesktop のソースコードに含まれている constants.hの RDP5_NO_WALLPAPER から RDP5_NO_CURSORSETTINGS までを参照していただきたい.
*1 オプション(O) → エクスペリエンス → フォント スムージング(F)