最新

cheep, cheep, cheep...


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)