4-1. フォントメトリクスファイルの作成

FOP には日本語フォントが含まれていないため、日本語を含む PDF を作成するためには、日本語フォントをインストールしておく必要があります。フォントの種類にはさまざまなものがありますが、2004年1月現在、FOP で使用可能なフォントは Type1 フォントTrueType フォント の 2 種類です。

FOP は、フォント・メトリクス・ファイルという フォント情報を記述した XML 形式のフォント・データ・ファイルを使用します。今のところ、FOP が利用可能な日本語のフォント・メトリクス・ファイルを配布・販売を行っているサイトや企業はありませんので、ユーザが日本語 Type1 フォント、または、 TrueType フォントをフォント・メトリクス・ファイルに変換して作成する必要があります。日本語 Type1 フォント、または、 TrueType フォントの入手には、パブリック・ドメインなものをダウンロードしたり、企業が販売しているものを購入するなど、いくつかの方法が考えられます。

ここでは、一番簡単な方法として、Widows XP に標準でインストールされているフォントを、フォント・メトリクス・ファイルに変換する方法を説明します。

まず、Windows XPに含まれる、日本語 TrueType フォントを確認してみます。

Windows XP で [コントロールパネル]-[フォント] を開くと、現在インストールされているフォントの一覧表が表示されます。

今回は Windows XP で日本語フォントとして提供されている以下のフォントを取り出すものとします。

  • MS Gothic MS PGothic MS UI Gothic

  • MS Mincho MS PMincho

  • MS ゴシック MS Pゴシック MS UI Gothic

  • MS 明朝 MS P明朝

"MS Gothic MS PGothic MS UI Gothic" と "MS ゴシック MS Pゴシック MS UI Gothic" は、単にフォント名が日本語・英語であるだけで、実際には同じフォントです。"MS Mincho MS PMincho" と "MS 明朝 MS P明朝" も同様です。

また、アイコンと拡張子の違いにより、フォントの種類を判別することができます。

.FON

Adobe Type Manager フォント。アドビシステムズ社が開発し Windows・Mac・unix に提供された、最初の倍率を変更出来るフォント。大きいサイズではアウトラインのギザギザが目立つものがある。

.TTF

TrueType フォント。 アップル社が開発しマイクロソフトにライセンス供与しているフォント。各文字ごとにポイントサイズの指定が可能。高品質の文字を表示出来る。Windows と Mac の TrueType フォントには若干の相違がある。

.TTF

OpenType フォント。TrueType フォーマットの拡張であり、高品質の国際印刷をサポートするため,フォントの能力を拡張する追加情報を包む。OpenType は文字の構造を読みとり、文字と文字の組み合わせを関連づける事が出来る。Windows2000 , WindowsXP に標準で幾つかの欧文用 OpenTypeフォントが入っている。

.TTC

TrueType Collectionフォント。TrueTypeフォーマットの拡張で、和文フォントに多く見られる。固定ビッチとプロポーショナルなど、複数の TrueType フォントのテーブルを含む。

[コントロールパネル]-[フォント] は、実際には、ディレクトリ C:\WINDOWS\Fonts (Cygwin の表記では /cygdrive/c/WINDOWS/Fonts/ となる) のことであり、このディレクトリにあるファイルが Windwos XP へインストールされたフォントファイルです。

Cygwin でフォント・ファイルを確認します。

$ ls -l /cygdrive/c/WINDOWS/Fonts/
...
-rwxrwx---+   1 Administ SYSTEM    8272028 Aug 27  2001 msgothic.ttc
-rwxrwx---+   1 Administ SYSTEM    9135960 Aug 27  2001 msmincho.ttc
...

フォントファイルと含まれているフォントの関係は以下のようになります。

/cygdrive/c/WINDOWS/Fonts/msgothic.ttc:

  • MS Gothic MS PGothic MS UI Gothic

  • MS ゴシック MS Pゴシック MS UI Gothic

/cygdrive/c/WINDOWS/Fonts/msmincho.ttc:

  • MS Mincho MS PMincho

  • MS 明朝 MS P明朝

ここでは、すでにフォント名はわかっていますが、念のためにフォント名を取得してみます。この方法は、フォントファイルに含まれているフォント名を調査する場合に有効な方法です。FOP に他のフォントを 追加する場合には、必ず必要になると思います。

調査方法は、 FOP に含まれる org.apache.fop.fonts.apps.TTFReader クラス (TrueType フォントをレンダリングするためのクラス) を、オプションに ttc ファイルを指定して実行します。ttc ファイルを指定する際には、フォント名を指定するため -ttcname オプションも指定しなければなりませんが、ここではわざと -ttcname オプションを指定せず 、エラーを発生させてフォント名を表示させます。

Java のディレクトリ名とファイル名指定

Java は Windows アプリケーションとして動作するため、ディレクトリ名とファイル名指定は、 C:\Windows などの Windows 表記に準じます。 あるいは、 C:/Windows のように区切り文字として \ でなく / を使用することもできますので。ここでは Cygwin との兼ね合いもあり、区切り文字 / を使います。

$ java -cp \
c:/cygwin/usr/local/java/fop-0.20.5/build/fop.jar \
org.apache.fop.fonts.apps.TTFReader \
c:/WINDOWS/Fonts/msmincho.ttc test.xml
TTF Reader v1.1.1

Reading c:/WINDOWS/Fonts/msmincho.ttc...

This is a TrueType collection file with 2 fonts
Containing the following fonts:
MS Mincho
MS PMincho
java.lang.IllegalArgumentException: For TrueType collection
you must specify which font to select (-ttcname)
        at org.apache.fop.fonts.TTFFile.readFont(TTFFile.java:416)
        at org.apache.fop.fonts.apps.TTFReader.loadTTF(TTFReader.java:222)
        at org.apache.fop.fonts.apps.TTFReader.main(TTFReader.java:184)

$ java -cp \
c:/cygwin/usr/local/java/fop-0.20.5/build/fop.jar \
org.apache.fop.fonts.apps.TTFReader \
c:/WINDOWS/Fonts/msgothic.ttc test.xml
TTF Reader v1.1.1

Reading c:/WINDOWS/Fonts/msgothic.ttc...

This is a TrueType collection file with 3 fonts
Containing the following fonts:
MS Gothic
MS PGothic
MS UI Gothic
java.lang.IllegalArgumentException: For TrueType collection
you must specify which font to select (-ttcname)
        at org.apache.fop.fonts.TTFFile.readFont(TTFFile.java:416)
        at org.apache.fop.fonts.apps.TTFReader.loadTTF(TTFReader.java:222)
        at org.apache.fop.fonts.apps.TTFReader.main(TTFReader.java:184)

以上の結果より、各ファイルに含まれているフォント名がはっきりしました。

/cygdrive/c/WINDOWS/Fonts/msgothic.ttc:

  • MS Gothic

  • MS PGothic

  • MS UI Gothic

/cygdrive/c/WINDOWS/Fonts/msmincho.ttc:

  • MS Mincho

  • MS PMincho

次に FOP に含まれる org.apache.fop.fonts.apps.TTFReader クラスを正しく実行して、フォント・メトリクス・ファイルを作成します。

org.apache.fop.fonts.apps.TTFReader クラスの実行方法は以下のとおりです。

java -cp \
  c:/cygwin/usr/local/java/fop-0.20.5/build/fop.jar \
  org.apache.fop.fonts.apps.TTFReader \
  -ttcname フォント名 \
  Input TrueTypeフォントファイル名 \
  Output フォントメトリクスファイル名 (XMLフォーマット)

フォントメトリクスファイル名は以下のディレクトリへ出力するものとします。

フォントメトリクスファイル名の出力ディレクトリ:

  • /usr/local/java/fop-0.20.5/conf/

実際に実行すると以下のようになります。

$ java -cp  \
c:/cygwin/usr/local/java/fop-0.20.5/build/fop.jar  \
org.apache.fop.fonts.apps.TTFReader  \
-ttcname "MS Gothic" \
c:/WINDOWS/Fonts/msgothic.ttc \
c:/cygwin/usr/local/java/fop-0.20.5/conf/msgothic.xml
TTF Reader v1.1.1

Reading c:/WINDOWS/Fonts/msgothic.ttc...

This is a TrueType collection file with 3 fonts

Containing the following fonts:
* MS Gothic
MS PGothic
MS UI Gothic
Number of glyphs in font: 20458
Postscript format 3
Creating xml font file...
Creating CID encoded metrics
Writing xml font file c:/cygwin/usr/local/java/fop-0.20.5/conf/msgothic.xml...

This font contains no embedding license restrictions

これを、以下の 5 フォントについて実行して、 5 個のフォント・メトリクス・ファイルを作成します。

/cygdrive/c/WINDOWS/Fonts/msgothic.ttc:

  • 入力: MS Gothic

    → 出力: c:/cygwin/usr/local/java/fop-0.20.5/conf/msgothic.xml

  • 入力: MS PGothic

    → 出力: c:/cygwin/usr/local/java/fop-0.20.5/conf/mspgothic.xml

  • 入力: MS UI Gothic

    → 出力: c:/cygwin/usr/local/java/fop-0.20.5/conf/msuigothic.xml

/cygdrive/c/WINDOWS/Fonts/msmincho.ttc:

  • 入力: MS Mincho

    → 出力: c:/cygwin/usr/local/java/fop-0.20.5/conf/msmincho.xml

  • 入力: MS PMincho

    → 出力: c:/cygwin/usr/local/java/fop-0.20.5/conf/mspmincho.xml

面倒なので以下のような シェル・スクリプトを作っておく方が良いでしょう。

#! /bin/sh
#
# Shell script to create font metrics files.

FOP_HOME=c:/cygwin/usr/local/java/fop-0.20.5
WINDOWS_FONT_DIR=c:/WINDOWS/Fonts

java -cp \
 "$FOP_HOME"/build/fop.jar \
 org.apache.fop.fonts.apps.TTFReader \
 -ttcname "MS Gothic" \
 "$WINDOWS_FONT_DIR"/msgothic.ttc \
 "$FOP_HOME"/conf/msgothic.xml
java -cp \
 "$FOP_HOME"/build/fop.jar \
 org.apache.fop.fonts.apps.TTFReader \
 -ttcname "MS PGothic" \
 "$WINDOWS_FONT_DIR"/msgothic.ttc \
 "$FOP_HOME"/conf/mspgothic.xml
java -cp \
 "$FOP_HOME"/build/fop.jar \
 org.apache.fop.fonts.apps.TTFReader \
 -ttcname "MS UI Gothic" \
 "$WINDOWS_FONT_DIR"/msgothic.ttc \
 "$FOP_HOME"/conf/msuigothic.xml
java -cp \
 "$FOP_HOME"/build/fop.jar \
 org.apache.fop.fonts.apps.TTFReader \
 -ttcname "MS Mincho" \
 "$WINDOWS_FONT_DIR"/msmincho.ttc \
 "$FOP_HOME"/conf/msmincho.xml
java -cp \
 "$FOP_HOME"/build/fop.jar \
 org.apache.fop.fonts.apps.TTFReader \
 -ttcname "MS PMincho" \
 "$WINDOWS_FONT_DIR"/msmincho.ttc \
 "$FOP_HOME"/conf/mspmincho.xml

実行後は、以下のようなファイルが作成されます。

$ pwd
/usr/local/java/fop-0.20.5/conf
$ ls -l
total 2104
-rw-r--r--    1 merita なし          193 Jul 15  2003 config.dtd
-rw-r--r--    1 merita なし         1547 Jul 15  2003 config.xml
-rwxr-xr-x    1 merita なし       441841 Jan 19 13:11 msgothic.xml
-rwxr-xr-x    1 merita なし       406363 Jan 19 13:11 msmincho.xml
-rwxr-xr-x    1 merita なし       444157 Jan 19 13:11 mspgothic.xml
-rwxr-xr-x    1 merita なし       408678 Jan 19 13:11 mspmincho.xml
-rwxr-xr-x    1 merita なし       444160 Jan 19 13:11 msuigothic.xml
-rw-r--r--    1 merita なし         3245 Jul 15  2003 userconfig.xml

新着記事