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のプログラムが正しく日本語を表示できるようになります。

方法2: fallbackディレクトリへのシンボリックリンクの作成

$JAVA_HOME/lib/fonts/fallbackディレクトリの作成

まず、$JAVA_HOME/lib/fonts/fallbackディレクトリを、以下のコマンドで作成します。

mkdir /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/fonts
mkdir /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/fonts/fallback
※rootでの実行が必要

日本語フォントへのシンボリックリンクの作成

次に、日本語フォントへのシンボリックリンク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のプログラムが正しく日本語を表示できるようになります。