font.properties.ja


Linux上のJAVAで日本語を表示させるのは難しいらしくみんな悩んでますね。って言っても僕も相当悩んでしまったんですが・・・。これは正しく、font.properties.ja(_JP[...])を書き換えてやれば済むんですが、繁雑ですね。

そこで、簡単な見本と共に説明を追記します。参考にしてください。

見本説明
font.properties.ja_JPKondara-Mary(2.0)FTP版に入ってたfontをそのまま利用したもの
font.properties.ja_JPIBM社のJDKと共に配付されていた、TimesNewRomanを利用したもの
font.properties.ja_JPMacの見やすいOsakaフォントをWinで使おうプロジェクトが作成しているOsakaを、UNICODEに変更し足りない文字をTimesNewRomanで補ったfontを利用したもの

ここでは、JAVA2であることを前提としています。jdk1.1.xでも大丈夫だと思いますが。

では、順を追って説明します。

  1. jdk(またはjre)がinstallされている。
  2. 上の好きな見本をダウンロードして、
    <jdkまたはjreのインストールされたディレクトリ>/jre/lib/
    にfont.properties.ja_JPとしてコピーする。
  3. 微調整をする。
  4. テストする。
  5. カスタマイズする。
  6. テストする。

といった流れになります。

インストール

jdkかjreがインストールされてない場合は、Sun Microsystemsか、IBMからダウンロードしてください。(IBMのは、リンクからとんで、画面右下のDownloadをクリック。さらにフォントがあるのでこれもいただいちゃってくださいね。♥)。詳しくは、ここあたりを参照して下さい。(PATHの設定も忘れずに)。

font.properties.ja_JPのコピー

インストールされたディレクトリの下、./lib/にfont.properties.jaがありますね。そこに、上の好きな見本をダウンロードしてfont.properties.ja_JPとして保存してください。

テスト

デモがインストールされているはずですので、demo/applets/SymbolTest/に移動して、

appletviewer example1.html

を実行しましょう。この時に、

  1. メニューとして、[アプレット]が表示されること。
  2. メニュー[アプレット]をクリックした時に、漢字のメニューがでてくること。
  3. Unicode baseを3000にして平仮名,片仮名が表示されること。
  4. Unicode baseをFF00にして半角仮名が表示されること。

を確認して下さい。ここで、8分音符(♪)が出てたら失敗です。

font.properties.ja_JPの設定とカスタマイズ

まず、font.properties.ja_JPの見本を見てください。これの構成は、

  1. serifの行で、serifフォントの設定をします。plain,italic,bold,bolditalicで、標準,斜体,太字,太字斜体を設定します。その後の0,1の数字は、優先順位です。0にiso8859-15、1にjisx0208.1983ー0のフォントを指定します。また半角仮名に別のfontを割り当てたい場合は、2にjisx0201.1976-0を指定します。同様にsansserif,monospaced,dialog,dialoginputを指定することができます。
  2. aliasの行で、同じだよと教えてあげます。sansserif,monospaced,dialog,dialoginput,timesroman,helvetica,courierのそれぞれを指定します。
  3. default.charで、上のフォント設定にない場合に表示する代替文字をユニコードで設定します。なんでもいいですが、わかりやすいものにしましょう。標準では274f(?)が設定されています。
  4. exclusionの行で、除外する範囲を設定します。exclusion.serif.italic.0で、serif.italic.0の行で設定してあるフォントをやめて、serif.italic.1を使うようになります。exclusion.serif.0は、exclusion.serif.italic.0があれば上書き(overrides)されます。また、exclusion.0は、exclusion.dialog.0があれば上書き(overrides)されます。
  5. fontcharsetの行で、フォントの文字コードを指定します。
  6. fontsetの行は、何をするかわからなかったのですが、serif(sansserif,monospaced,dialog,dialoginput)の行と同じ内容をここの文の書式に合わせて、コピーしてください。serif(sansserif,monospaced,dialog,dialoginput)の行の連番を崩さないよう注意しましょう。
  7. fontset.defaultの行でデフォルトを指定します。

で、まず、xfontselコマンドを使ったり、xlsfonts | grep jisx0208.1983 | grep 0-0-0として、表示される、"-misc-unknown-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0"みたいな奴の本体をインストールされたディレクトリの下、./lib/fonts/にコピー(または、シンボリックリンク)します。恐らくほとんどの人は、wadalab-gothic.ttf,watanabe-mincho.ttfのどちらかはフォントがインストールされているでしょうから、それを使いましょう。ない場合は、すぐにダウンロード出来ます。

そして、コピー(または、シンボリックリンク)を終えたら、インストールされたディレクトリの下、./lib/fonts/に移動して、rootで、

cp fonts.dir fonts.dir.backupttmkfdir > fonts.scalemkfontdir

を実行します。ユーザに戻って、

cat fonts.dir | grep jisx0208.1983 | grep 0-0-0

を実行します。

ここで表示される、"-alias-kochi_gothic-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0"みたいな奴を、font.properties.ja_JPの"-misc-unknown-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0"と差し替えて、"-alias-kochi_gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0"のように変更します(8箇所)。(よく見比べて!) ※但し、mkfontdirではかなりの確率でjisx0208.1983-0を生成出来ないようです。その場合、fonts.dirを手作業で修正します。同じフォントのjisx0201.1976-0をコピーし、jisx0201.1976-0をjisx0208.1983-0と書き換えて下さい。

これでテストして、成功したらsansserif,monospaced,dialog,dialoginputも同様にして作れるでしょう。ただし、sansserifを設定するなら、alias.sansserifの行を消しましょう。他のも同様。あと、timesroman,helvetica,courierは、jdk1.1との互換性のためだけにありますので、設定せずに、aliasしときましょう。

なお、serifは、明朝体のような字体(グリフ)。sansserifは、ゴシック体(呉竹体)のような字体(グリフ)。monospacedは、等幅。dialogは、メニューやダイアログボックス用。dialoginputは、ダイアログボックスなどへの入力用。 ※xfontselコマンドを使ったり、xlsfonts | grep jisx0208.1983 | grep 0-0-0として、表示されないフォントを指定すると、FileDialogなどの、一部のAPIで文字化けが発生します。これは、AWTがXの利用できるフォントを使用するためです。


インストールされるディレクトリ

インストールされるディレクトリは、標準では、Sunなら、/usr/java/jdk(バージョン)/になり、IBMなら、/opt/IBMJava2-13/になります。


参考Links

2001/11/112005/02/14
Copyright © 2005 antithese@metalpress All Rights Reserved