Managed Windows Forms

Mono Meetingに参加しました。MonoでWindows Formsが動くということを知りました。ピアのラッパーではなく、Managed Windows FormsといってツールキットからC#で記述しているとのことです。

遠い昔にWINEを使おうとしていたという話を聞いたことがありましたが、それ以来まったく動向を把握していませんでした。そのためこういう動きがあったことすら知らなかったので非常に驚きました。

ためしに適当なものを動かしてみましたが、特に設定しなくても日本語がきちんと表示されました。

Cairo

MonoではCairoを利用してGDI+を実装しているようです。Managed Windows Formsのコントロール類の描画もすべてGDI+で行われているようです。

文字列描画

文字列描画を少し追ってみました。すべてCairoに任せているようです。Cairoの関数は引数にUTF-8を取るため、System.Stringのデータ(UTF-16)をUTF-8に変換してCairoに渡しているようです。ASCII以外を切り捨てたりはしていないようです。

Cairoの内部ではFreeTypeからパスを取得してベクトルとして描画しているようでした。そのためUnicodeフォントがインストールされていれば特に問題なく日本語が表示されるようです。XDrawString()等のXlibの描画関数は一切使用していないようです。

カテゴリー: プログラミング パーマリンク

コメントを残す