Fedora11でSwingのプログラムに日本語を正しく表示させる方法
Fedora11でSwingのプログラムを作って日本語を表示したとところ、「□□□□」のように化けてしまいました。Javaが日本語フォントを見つけられないのが、文字化けの原因です。
そこで、以下の方法でJavaが日本語フォントを見つけられるようにし、Swingのプログラムが日本語を正しく表示できるようにしました。なお、方法は二つありますが、方法1が正当な手法だと思います。
目次
$JAVA_HOMEについて
$JAVA_HOMEはjavaのホームディレクトリを格納した環境変数です。
僕の環境では、$JAVA_HOMEは/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jreでした。
日本語フォントについて
日本語フォントは/usr/share/fontsディレクトリ配下に存在します。
僕の環境では、以下の日本語フォントが存在しました。
- /usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf
- /usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf
方法1: fontconfig.propertiesの設定
$JAVA_HOME/lib/fontconfig.Fedora.propertiesの作成
$JAVA_HOME/lib/fontconfig.Fedora.propertie.srcをコピーし、$JAVA_HOME/lib/fontconfig.Fedora.propertiesを作成します。
コピーは、以下のコマンドで行います。
cp /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/fontconfig.Fedora.properties.src /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/fontconfig.Fedora.properties ※rootでの実行が必要
$JAVA_HOME/lib/fontconfig.Fedora.propertiesの編集
エディタで$JAVA_HOME/lib/fontconfig.Fedora.propertiesを編集し、正しい日本語フォントのパスを設定します。
編集前 filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf ↓ 編集後 filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf ※rootでの実行が必要
$JAVA_HOME/lib/fontconfig.Fedora.bfcのリネーム
$JAVA_HOME/lib/fontconfig.Fedora.propertiesとは別に、$JAVA_HOME/lib/fontconfig.Fedora.bfcというファイルが存在します。このファイルが存在していると、$JAVA_HOME/lib/fontconfig.Fedora.propertiesの設定が読み込まれません。
そこで、$JAVA_HOME/lib/fontconfig.Fedora.properties設定が読み込まれるよう、以下のコマンドで$JAVA_HOME/lib/fontconfig.Fedora.bfcをリネームします。
mv /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/fontconfig.Fedora.bfc /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/fontconfig.Fedora.bfc.org ※rootでの実行が必要
以上の方法で、Swingのプログラムが正しく日本語を表示できるようになります。
日本語フォントへのシンボリックリンクの作成
次に、日本語フォントへのシンボリックリンクをJAVA_HOME/lib/fonts/fallbackディレクトリに作成します。
ln -s /usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/fonts/fallback ln -s /usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/fonts/fallback ※rootでの実行が必要
以上の方法でも、Swingのプログラムが正しく日本語を表示できるようになります。