EclipseからSwingアプリを起動すると、フォント構成ファイルの情報が無視される(final)
※以下はWindows上で(のみ?)発生する問題です。
原因みっけー!!
- Eclipseの、設定、もしくはプロジェクトのプロパティで、テキストファイルのエンコードをUTF-8にする。
- この状態で「実行」を行うと、システムプロパティ「file.encoding」が「UTF-8」になる。
- 複合フォントにおける物理フォントの選択順序は、フォント構成ファイルの「sequence.*」で定義されているが、この定義には文字エンコーディングのタグが含まれる。
- 「sequence.*」で使用される文字エンコーディングは「file.encoding」によって決定されるため、(2)の状態だと選択順序の情報が見付けられない。
対策は以下のどちらか。
- JVMのオプションに「-Dfile.encoding=windows-31j」を指定する。(プログラム中で直接指定する手もある)
- フォント構成ファイルに以下の設定を追加する。(赤字の部分)
(前略) sequence.dialoginput.windows-31j=alphabetic,japanese,dingbats,symbol sequence.serif.UTF-8.ja=alphabetic,japanese,dingbats,symbol sequence.sansserif.UTF-8.ja=alphabetic,japanese,dingbats,symbol sequence.monospaced.UTF-8.ja=japanese,alphabetic,dingbats,symbol sequence.dialog.UTF-8.ja=alphabetic,japanese,dingbats,symbol sequence.dialoginput.UTF-8.ja=alphabetic,japanese,dingbats,symbol sequence.serif.x-windows-949=alphabetic,korean,dingbats,symbol (以下略)
アプリを配布するなら(1)が無難……か?