Linux-JDK における日本語入力について


Sorry, this page is written only in Japanese.

Linux版のJDKでは、libcのlocaleの問題やスタティックリンクされているMotifの国際化がイマイチなことなどから、単純にインストールしただけでは、AWTのTextComponentに対して直接日本語入力をすることができません。

そこで私は、とりあえず以下のようにして、TextField/TextAreaに対してkinput2により日本語を直接入力できるようにしています。

  1. 藤原さんのページ久松さんのページを参考にして、JDKを日本語化する。(これは必須ではありません)
  2. 久松さんのページからは、liblocale.soのソース、.java_wrapper、font.properties.ja が入手できますが、このうち font.properties.ja については、X-TTなフォントサーバが生成するフォントを使うように、全面的に書き換えます。また、.java_wrapper についてはそのまま使ってもいいと思いますが、バージョンが古いようなので、いちおうJDKにもともと付いているものを自分で書き換えて(具体的には、LD_PRELOAD と LANG の設定を付け加えて)使っています。(変更した .java_wrapperfont.properties.ja
  3. 次に Red Hat Motif 2.1 をインストールしておきます。他の商用MotifやLesstifでうまくいくかどうかは、試していないのでわかりません。
  4. export DYN_JAVA=1 などとして、JDKのツールが、上でインストールしたlibXm.so.2をdynamic linkするように設定する。
  5. appletviewer は環境変数DYN_JAVAを参照せず、常にstatic link版のjavaを使うので、$(JAVA_HOME)/bin/i686/green_threads/appletviewer の最後の方を書き換えて、DYN_JAVAに値が設定されていればdynamic link版の java_dyn を使うようにしてやります。(変更した appletviewer

以上の手順で、JAVAのアプリケーションおよびアプレット(appletviewerまたはhotjava使用時のみ)上のTextField/TextAreaに対して、Cut&Pasteだけでなく、kinput2を使った日本語の直接入力が可能になりました。

私の試した範囲内では、Motifをdynamic linkさせることと、X-TTなフォントサーバが生成するフォントを使うことが、日本語を直接入力できて文字化けもしないようにする必須条件でした。

[追記: jdk116-v5からは、上記の2の作業だけでうまくいくようになりました。(つまり、外部のMotifは不要)]

しかし、現時点では以下のような問題があって、あまり実用になりません。

そこで次に、Swing-1.1beta2をインストールしてJTextField/JTextAreaで試してみました。すると、上で挙げた問題点は解決しました。しかも嬉しいことに、JTextField/JTextAreaを使った場合は、X-TTのフォントを使うようにしたり、Red Hat Motifをダイナミックリンクさせたりといった小細工を弄しなくても、kinput2を使って正常に日本語の入力と表示ができました。

現在のところは、既存のJAVAアプリケーションやアプレットでは、従来のAWTのTextField/TextAreaが使われていますので、JFCでうまくいったからといって根本的な解決にはなりませんが、世の中がみんなJDK-1.2に移行してSwingが標準になれば、かなり期待できそうです。

なお、テスト環境は以下の通りです。


[れんねんのホームページへ]


Copyright(c) 1998, Minori TAKAGAKI