2009-12-29

【備忘録】Java/Swing のプログラムにおける日本語フォント表示

Java の GUI プログラムで、日本語のフォントが正しく表示されません。環境は Fedora 12 (x86_64) です。

そもそも、Fedora で Java のプログラミングをほとんどしないので気がつきませんでした。

例えば、以下のようなプログラム Hello.java をコンパイルして実行してみます。

// Hello.java
import javax.swing.*;

public class Hello extends JFrame {
private static final long serialVersionUID = 1L;

Hello() {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
add(new JLabel("こんにちは、世界!"));
pack();
}

public static void main(String[] args) {
new Hello().setVisible(true);
}
}


$ javac Hello.java
$ java Hello

日本語フォントが □□□□ となってしまって表示されません。

しかしながら、コンパイルした Hello.class を Windows へコピーして実行してみると日本語フォントが正しく表示されます。

これは、Fedora の Java 実行環境に問題がありそうだと考え、インターネットを検索してみると、既に調べている方がおられました。

[1] Fedora11でSwingのプログラムに日本語を正しく表示させる方法 - 何かしらの言語による記述を解析する日記

 
[1] のサイトの「方法1」に従い、自分の環境に読み替えて編集すると Fedora 上で日本語を表示させることができました。ただし $JAVA_HOME/lib/fontconfig.Fedora.bfc のリネームはしていません。

会社で他の人に使ってもらう GUI ツールがあって、プロトタイプは Tcl/Tk で作って試用してもらいました。しかし、そもそも自分は IT 部門の人間ではないので、長期的な保守を考えれば、(自分しか保守ができない言語で作るより) Java あたりで作り直しておいた方が無難かと思い、この年末年始の休みに作り替えてしまおうとしています。実行環境は Windows 上になりますが、開発は使い慣れた Fedora の方がはかどるからです。
 

追記


[1] の方法で確かに日本語フォントが表示できるようになりましたが、Fedora デフォルトでインストールされていなかった「さざなみ」フォントをインストールしたことで、ブラウザなどの表示フォントが変わってしまいました。以前のフォントの方が断然見やすかったので、「さざなみ」フォントの使用を止めて元に戻し、Windows のフォントを持ってきて(RPM を作成して)Java 用に使用できるように変更してしまいました。

 

0 件のコメント: