torutkのブログ

ソフトウェア・エンジニアのブログ

Fedora 17のJava JDK

Linuxでソフトウェア開発環境をなるべく最新バージョンで揃えようと思うと、Fedora の最新版(今ならFedora 17)を使うのが簡単です。最近なら仮想化でわざわざデュアルブート環境を用意する必要もないので導入が簡単になっています。

Fedora 17には、GCC 4.7.0、OpenJDK 1.7.0(Java SE 7)、Tomcat 7.0.27、JBOSS AS 7.1.1(Java EE 6)といった環境が入っています。

Open JDK 1.7.0

Fedora 17では、環境変数を設定しなくてもjavaコマンドが実行できます。まず、Javaのバージョンを見ると、

$ java -version
java version "1.7.0_03-icedtea"
OpenJDK Runtime Environment (fedora-2.2.1.fc17.8-x86_64)
OpenJDK 64-Bit Server VM (build 23.0-b21, mixed mode)

となっています。

Open JDKで日本語文字が豆腐になる

しかし、GUI(Swing)プログラムを実行すると、日本語文字が豆腐(□)になってしまいました。
Open JDKでは有名な問題のようです。

参考記事

最初の記事を参考に、Open JDK 1.7.0での対処をしていきます。

Javaのインストールディレクトリを探します。今回はalternativesで調べます。

$ alternatives --config java

1 プログラムがあり 'java' を提供します。

  選択       コマンド
-----------------------------------------------
*+ 1           /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:

ちなみに、JDKJREで2か所設定する必要があるかを調べると、/usr/lib/jvmの下には

となって、実体は1つでした。

font設定ファイル

ディレクトリには、fontconfig関係ファイルが多数存在します。

$ cd /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/lib
$ ls fontconfig*
fontconfig.Fedora.bfc        
fontconfig.Fedora.properties.src
fontconfig.Ubuntu.bfc
fontconfig.Ubuntu.properties.src
fontconfig.SuSE.bfc
fontconfig.SuSE.properties.src
fontconfig.bfc
fontconfig.properties.src

Fedora 17では、fontconfig.Fedora.* が使用されています。そこで、fontconfig.Fedora.bfcを削除し*1、fontconfig.Fedora.properties.srcをfontconfig.Fedora.propertiesにコピーして修正します。

まず、fontconfig.Fedora.properties.src から日本語関係を抜粋したものが次です。

dialog.plain.japanese-x0208=Sazanami Gothic
dialog.bold.japanese-x0208=Sazanami Gothic
dialog.italic.japanese-x0208=Sazanami Gothic
dialog.bolditalic.japanese-x0208=Sazanami Gothic

sansserif.plain.japanese-x0208=Sazanami Gothic
sansserif.bold.japanese-x0208=Sazanami Gothic
sansserif.italic.japanese-x0208=Sazanami Gothic
sansserif.bolditalic.japanese-x0208=Sazanami Gothic

serif.plain.japanese-x0208=Sazanami Mincho
serif.bold.japanese-x0208=Sazanami Mincho
serif.italic.japanese-x0208=Sazanami Mincho
serif.bolditalic.japanese-x0208=Sazanami Mincho

monospaced.plain.japanese-x0208=Sazanami Gothic
monospaced.bold.japanese-x0208=Sazanami Gothic
monospaced.italic.japanese-x0208=Sazanami Gothic
monospaced.bolditalic.japanese-x0208=Sazanami Gothic

dialoginput.plain.japanese-x0208=Sazanami Gothic
dialoginput.bold.japanese-x0208=Sazanami Gothic
dialoginput.italic.japanese-x0208=Sazanami Gothic
dialoginput.bolditalic.japanese-x0208=Sazanami Gothic

sequence.allfonts.x-euc-jp-linux=japanese-x0208,latin-1
sequence.fallback=chinese-big5,chinese-gb18030,japanese-x0208,korean,bengali,gujarati,hindi,oriya,punjabi,malayalam,tamil,telugu,sinhala

filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf
filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf

各種論理フォントの日本語で使用する物理フォント名がSazanami {Gothic|Mincho}になっており、このフォントファイルが/usr/share/fonts/sazanami-fonts-{gothic,mincho}/sazanami-{gothic,mincho}.ttfとなる設定ですが、Fedora 17にはデフォルトではsazanamiフォントはインストールされていません。

そこで、さざなみ明朝・ゴシックフォントをインストールします。

# yum install sazanami*
  :

で、インストール先は

  • /usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf
  • /usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf

となります。

次にフォント設定ファイルを修正します。

# mv fontconfig.Fedora.bfc fontconfig.Fedra.bfc.orig
# cp fontconfig.Fedora.properties.src fontconfig.Fedora.properties
# vi fontconfig.Fedora.properties

フォントのパスの部分を変更します。

filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf
filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf

さざなみフォントはいまいちなので、VLゴシックにしてみます。
まじめに設定ファイルを書くと修正箇所が多いので、フォント名だけ変更します。

filename.Sazanami_Gothic=/usr/share/fonts/vlgothic/VL-Gothic-Regular.ttf
もう1つの方法

/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/lib/fonts/fallback/ディレクトリを作成し、その中に日本語フォントを放り込んでおくと、設定ファイルで見つからなかった場合に放り込んだフォントを使ってくれるようです。

*1:フォント設定ファイルの優先度では、fontconfig.Fedora.propertiesがfontconfig.Fedora.bfcより高いので、fontconfig.Fedora.bfcは削除しなくてもよい