GTK+上で動作する Windows アプリでは、 日本語(メニューやデータのテキスト)がしばしば文字化けする。 gtkrcを編集するだけの間違った直し方が紹介されていることが多い。 それでは文字化けが一応直っても、フォントがきれいに表示されない。
このメモは、 Sabbu 0.2.5 ユーザのためのものだが、 Gimp, Spondi など、他のGTKアプリにもほぼ共通するはずだ。
一般のGTKアプリとSabbu 0.2.5 の違いは、
GTK+(Gimp Toolkit)は、 簡単に言えば Java のような「クロスプラットフォームを実現するためのプラットフォーム」の一つ。 一般の Windows アプリが、基本的には「直接」 Windows 上で動作するのに対して、 GTKアプリは、GTKという中間的なレイヤーを介して動作する。 「直接」動くアプリに比べて多少効率が低下するし、開発もやや面倒だが、その代わり、同じアプリがクロスプラットフォームになる。 Linux 中心に開発されたアプリも、GTKアプリとして開発されていればWindows 上でも利用できる。 これは大きなメリットだろう。
GTK はもともとレタッチソフト Gimp のために作られたが(だから Gimp Toolkit という)、 今では、多くのアプリが GTK を利用して動作する。 2005年7月現在、Windows版のGTK環境は、日本語が文字化けするなど国際化対応が発展途上で、 ウィンドウの再描画処理が完全でないなど、完成度は必ずしも高くない。
GTKは、LGPL のフリーソフトウェアだ。 GTK同様の「クラスプラットフォームを実現するフリーの中間レイヤー」は他にもいくつかあるが、 Sabbu 0.2.5 は GTK アプリとして開発された。
以下のファイルの編集では、 改行文字がUnixなので、対応しているエディタ(メモ帳より高機能ならたいがい対応しているはず)を使うのが良いが、 手元のテストでは、メモ帳で無理矢理開いて、適切な場所でWindowsの改行文字を入れても動作した。
Tahoma =
と指定してフォントがコントロールできるのは、
Windows側のシステムフォント(メニューなどのフォント)がTahomaに設定されている場合に限る。
Windows XP ではデフォルトでそうだと思うが、変えている人もいるかもしれない。
以下では、システムフォントがTahomaでなくてもうまくいく一般的な方法を説明する。
位置の例。エディタで開く。 C:\Program Files\Common Files\GTK\2.0\etc\pango\pango.aliases
デフォルトでは、Tahoma= の行はこうなる予定。
Tahoma = "Tahoma,browallia new,mingliu,simhei,gulimche,msgothic,latha,mangal"
注: 2005年7月に Project: GTK+ and The GIMP installers for Windowsに置かれた gtk+-2.6.8-setup-1 では、実際、上記のようになっている。
そのリリースノートには gtk+-2.6.8-setup-1.zip adds a workaround for properly displaying Japanese text when wimp is used.
(日本語を正しく表示するための応急処置)とあるが、
実際には、上記の方法では日本語は表示はできるが、正しく表示できない。
直し方はいろいろあるが、 とりあえずもとの行はコメントアウトし(Tahoma=の行がないパッケージでは何もしないでいい)、 改めて Tahoma= を定義して、 MS UI Gothicを2番目にするのが良い。 日本語化だからと言ってMS UI Gothicを先頭に持ってくると、英語までMS UI Gothicになる、 ロシア語・ギリシャ語も全角になる、 フランス語・ドイツ語・スペイン語等ではMS UI Gothicの中に特殊文字だけ他のフォントが混ざる、 といった汚い状態になる。一般のアプリでは実害ないかも知れないが、 必然的に複数の言語がからむ字幕アプリではまずい。 必ず2番目にすること。一般のアプリでもMS UI Gothicを2番目にした方が絶対見栄えがいいはず。 (2番目にすることの欠点があるとしたら、ロシア語を使った顔文字が正しく表示されないことくらい。)
具体的には、
#Tahoma = "Tahoma,browallia new,mingliu,simhei,gulimche,msgothic,latha,mangal" Tahoma = "Tahoma,MS UI Gothic,browallia new,mingliu,simhei,gulimche,latha,mangal"
これはタイ文字フォントを3番目に検索したりして厳密には最適化とは言えないが、 msgothicを消して、2番目に使うフォントを入れただけ。Unicode 2の範囲を完全表示可能にするには、 末尾に Arial Unicode MS を加える。左から右へ検索するので、末尾でないと意味がない。真ん中に置いたら、 Arial Unicode MSでグリフが見つかって、それより右は永遠に評価されない。
OSのシステムフォントが全部Tahomaなら、この時点ですべての問題は解消されるが、 フォントが少し小さすぎるかもしれない。 またシステムフォントがTahomaでないと、この時点ではまだ文字化けは直らない。 いずれもステップ2で解決する。
位置の例。C:\Program Files\Common Files\GTK\2.0\etc\gtk-2.0\gtkrc
次のブロックをファイルの末尾にペースト。数字の10がフォントサイズなので好みで加減。
style "my-font" { # フォントサイズ(ツールチップ以外) font_name="Tahoma 10" } widget "*" style "my-font"
この指定で、wimpエンジンはメニュー等のインターフェイスで(OS自身のシステムフォントではなく)フォント名Tahomaを割り当てる。 Windows自身のフォントリンクは働かないが、働かない方がかえってカスタマイズの見通しが良く、 Tahomaの実体は、既にpango.aliasesで定義してある。OS自身のシステムフォントが最初からTahomaの場合、 上記ブロックはフォントサイズの制御のみ意味を持つ。
ボタンなどの上にマウスを置くと浮かぶことがあるツールチップは、 制御が別系統。 engine "wimp" という行の上あたりに、次の1行を足す。数字の10はツールチップのフォントサイズ。好みで加減。
font_name="Tahoma 10"