Linux版のjavaで文字が□になる問題

linux版のastahのzip版をダウンロードして、さっそく起動したら、文字が□になる問題が発生しました。
世にいう豆腐問題です。ずっと前にも見たことがありましたが、どうやって解決したか忘れました。
とりあえず、いろいろ調べてみる。

利用しているJavaを調べる

[foo@localhost astah_community]$ which java
/usr/bin/java
[foo@localhost astah_community]$ ls -al /usr/bin/java
lrwxrwxrwx. 1 root root 22 11月 15 06:34 /usr/bin/java -> /etc/alternatives/java
[foo@localhost astah_community]$ alternatives --display java
java -ステータスは自動です。
リンクは現在 /usr/lib/jvm/jre-1.7.0-openjdk/bin/java を指しています。
/usr/lib/jvm/jre-1.7.0-openjdk/bin/java - 優先項目 17009
[foo@localhost astah_community]$ 

これで、/usr/lib/jvm/jre-1.7.0-openjdk/bin/javaが利用されていることが分かりました。

Javaで利用してフォントを調べる

/usr/lib/jvm/jre-1.7.0-openjdk/lib/fontconfig.Fedora.properties.srcを調べる。
何か見るとdialog.bold.japanese-x0208=Sazanami GothicとかなっていてSazanamiってフォントを使うようになっているぽい。
さらに下を見るとfilename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttfとなっている。
あるのかどうか調べると

[foo@localhost astah_community]# ls -al /usr/share/fonts/sazanami-fonts-gothic
ls: /usr/share/fonts/sazanami-fonts-gothic にアクセスできません: そのようなファイルやディレクトリはありません
[foo@localhost astah_community]# 

となりそのフォントがない。原因は、このフォントがないためですね。
解決方法は、2つです。

  1. sazanamiフォントを入れる。
  2. 別のフォントを参照するように変更する。

解決方法

今回は、2を選択します。
上のファイルを編集して参照先をかえてもいいですが、面倒なのでgoogleで検索するとjreでは、jre/lib/fonts/fallbackを作成して
そこにフォントを入れるらしい。
ディレクトリを作成

mkdir -p /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/fonts/fallback

フォントを作成(VL-PGothicを使うようにした)

[foo@localhost astah_community]# ls -al /usr/lib/jvm/jre-1.7.0-openjdk/lib/fonts/fallback/
合計 8
drwxr-xr-x. 2 root root 4096 12月  8 21:36 .
drwxr-xr-x. 3 root root 4096 12月  8 21:35 ..
lrwxrwxrwx. 1 root root   47 12月  8 21:36 VL-Gothic-Regular.ttf -> /usr/share/fonts/vlgothic/VL-Gothic-Regular.ttf
lrwxrwxrwx. 1 root root   48 12月  8 21:36 VL-PGothic-Regular.ttf -> /usr/share/fonts/vlgothic/VL-PGothic-Regular.ttf

このあと起動したら、とりあえず、メニューとかは表示された。多分、これで直ったはず。