X のインプットメソッド

CJK 諸言語のテキストの入力には、キーボードによる単純なタイプ入力は適していません。その代わり、キーストロークから文字への変換を扱うプログラムが存在し、それらはインプットメソッドと呼ばれています。

私は FontForge を無料で入手可能な 2 種類の入力メソッド、kinput2 (日本語) と xcin (中国語) でテストしました (中国語、日本語または中国語を話す人ほど十分ではありませんが)

kinput2 のインストールと使用法に関する比較的よくできた (英語の) 文書が Mozilla のサイトと、suse のサイトにあります。kinput2 を実行するには、別のサーバ (一般には cannaserver か jserver) を実行していなければならないという興味深い複雑さがあります。それだけではなく中国語版や韓国語版の jserver を kinput2 で使うことも可能なようですが、それは試していません。

台湾の xcin のサイトには、中国語と英語のよくできた文書があります (英語はデフォルトではありませんが、 3 行ほど下から入手可能です)。

これらをインストールする際に最も困難だった問題は、適切なロケールを見つけることです。RedHat 7.3 のディストリビューションからはそれを見つけることができず、それらを含む RedHat の RPM も見つかりませんでした。Mandrake のロケール RPM (中国語では`locales-zh*`, 日本語では`locales-jp*` というように名前がついています。) が優れた供給元でしたが、Mandrake はそれを違う場所にインストールするので、インストール後に `/usr/share/locales` から `/usr/lib/locales` に移動しなければなりませんでした。SUSE の文書には、現在の SUSE のディストリビューションにはそれらのロケールが付属しているという意味のことが書かれていました。

FontForge でインプットメソッドを使うようにして起動するには、まずインプットメソッドそのものが走っていることを確かめなければなりません。kinput2 では以下のようにしてください:

>     $ cannaserver &
>     $ kinput2 -canna -xim &

xcin の場合、こうなります:

>     $ setenv LC_CTYPE zh_TW.Big5		(or $ LC_CTYPE=zh_TW.Big5 ; export LC_CTYPE )
>     $ xcin &

注意: 各種のシステムは、それぞれ微妙に異なるロケール名をもっています (時には `zh_TW.big5` ですし、時には別のロケールです) ので、うまく動かない場合は別の設定を試してみてください。

まずインプットメソッドを起動したなら、次に FontForge を起動しなければなりません。環境変数 LC_CTYPE (または LC_ALL か LANG) を適切なロケールに設定します。おそらく (同じロケールをサポートする複数のインプットメソッドが実行中の場合) 環境変数 XMODIFIERS を使用したいメソッドの名前に設定します。xcin は複数の名前をもつことができ、現在使用している値を起動時に印字します。

>     $ setenv LC_CTYPE ja_JP.eucJP
>     $ setenv XMODIFIERS "@im=kinput2"
>     $ fontforge -new

FontForge は IM に接続していると、明らかに起動が遅くなりますが、我慢してそのままお待ちください。FontForge はテキストフィールドではその場入力 (OverTheSpot) を、フォントビューとアウトライングリフビューでは一行入力 (Root) をサポートしています。すべてのテキストフィールドが Unicode 入力を受け付けるわけではありませんが、Unicode が入力可能なフィールドはすべて、これで IM から入力を受け付けるようになります。

この機能は、XFree86 4.0.2 で導入された拡張 `X_HAVE_UTF8_STRING` が定義されている環境でしか動きません (つまり、Solaris では動作しません)

XIM プログラミングの機構に興味をもたれたならば、O'Reilly の秀逸な Programmers Reference Guide for X11 の第 11 章をお奨めします。