Linux上でJavaで日本語を使うと文字化け 戻る
環境
  • Amazon Linux
  • IPAフォント
  • JDK1.8
目次
  • とは
  • Linuxにフォントを追加する
  • 追加したフォントをJavaに認識させる
  • おまけ
とは

JFreeChartをLinux上で動作させたら日本語が「豆腐」みたいに白い正方形になりました。Windows上だと表示できるのになぜだろう?が出発点です。java.awt系でも同じことが起こるようです。

Linuxにフォントを追加する

まずは現状のフォントの状況を調べます。

フォントの状況を調べる $ fc-list Utopia:style=Bold Italic DejaVu Serif,DejaVu Serif Condensed:style=Condensed,Book DejaVu Serif,DejaVu Serif Condensed:style=Condensed Bold Italic,Bold Italic DejaVu Serif,DejaVu Serif Condensed:style=Condensed Bold,Bold ・ ・(途中省略) ・ DejaVu Serif:style=Bold $

一覧に日本語っぽいものは表示されたでしょうか。私は残念ながら表示されませんでした。

今回はIPAさんからフォントをいただくことにしました。こちらからIPAフォント(exでないほう)を利用しました。

ダウンロードとインストール $ wget http://ipafont.ipa.go.jp/xxxxxx/IPAfontXXXXXX.zip $ unzip IPAfontXXXXXX.zip $ ls /usr/share/fonts/ ipag.ttf ipagp.ttf ipam.ttf ipamp.ttf <- のようになるように配置 $
再度フォントの状況を調べる $ fc-list | grep IPA IPAゴシック,IPAGothic:style=Regular <- 4つ増えました IPA Pゴシック,IPAPGothic:style=Regular IPA明朝,IPAMincho:style=Regular IPA P明朝,IPAPMincho:style=Regular $
追加したフォントをJavaに認識させる

Javaに認識させるために、フォントファイルをリンクします。

フォントファイルをリンク $ cd Javaホーム/jre/lib/fonts/ $ mkdir fallback $ cd fallback $ ln -s /usr/share/fonts/ipag.ttf . <- シンボリックでOK $ ln -s /usr/share/fonts/ipagp.ttf . $ ln -s /usr/share/fonts/ipam.ttf . $ ln -s /usr/share/fonts/ipamp.ttf . $
おまけ

フォントファイルをJavaに認識させるために、いろいろと方法があるようです。今回はJavaホーム/jre/lib/fonts/fallbackに単純に配置しました。このディレクトリに配置すると単純に認識するようです。

Javaホーム/jre/lib/fontconfig.properties」を配置し認識させる方法もあるようです。こちらはフォントファイルの詳細設定(複数の日本語フォントがあるときにコチラを優先させるとか)ができるようです。fontconfig.propertiesのサンプルは「Javaホーム/jre/lib/fontconfig.properties.src」のようです。「Javaホーム/jre/lib/fontconfig.bfc」はバイナリファイルのようで編集はできないようです。