4-2. ユーザー・コンフィグレーション・ファイル

フォント・メトリクス・ファイルを作成するだけでは、 FOP にフォントを追加したことになりません。

FO 中では単にフォント名が記述されているだけです。このため、FOP のコンフィグレーションに、フォント名と実際のフォント・メトリクス・ファイルの関係を追加しておく必要があります。

Apache FOP を展開したディレクトリの中に conf/userconf.xml というファイルがあります。このファイルにフォント名とフォン・メトリクス・ファイルの関係を記述します。

fonts 要素の中に複数の font 要素が書けますので、ここに追加します。

追加の留意点:

  1. フォント名は自由につけてかまいません。

  2. ひとつのフォント・メトリクス・ファイルに対して、複数のフォント名を指定することができます。

  3. この例のように フォント名に漢字が含まれている 場合は、ファイルは UTF-8 で保存 しなければなりません。 Shift JIS や EUC で保存すると、 FOP 実行時にエラーになります。

  4. DocBook から FO を作成する際に、 DocBook のどの要素に、どのフォントを使用するかを XSL で記述する必要があります。この際のフォント名として、このコンフィグレーションで定義したフォント名を使用します。

<fonts
font metrics-file="C:\cygwin\usr\local\java\fop-0.20.5\conf\msmincho.xml"
 kerning="yes" embed-file="C:\WINDOWS\Fonts\msmincho.ttc">
    <font-triplet name="Mincho" style="normal" weight="normal"/>
    <font-triplet name="Mincho" style="normal" weight="bold"/>
    <font-triplet name="Mincho" style="italic" weight="normal"/>
    <font-triplet name="Mincho" style="italic" weight="bold"/>
    <font-triplet name="MS-Mincho" style="normal" weight="normal"/>
    <font-triplet name="MS-Mincho" style="normal" weight="bold"/>
    <font-triplet name="MS-Mincho" style="italic" weight="normal"/>
    <font-triplet name="MS-Mincho" style="italic" weight="bold"/>
    <font-triplet name="MSMincho" style="normal" weight="normal"/>
    <font-triplet name="MSMincho" style="normal" weight="bold"/>
    <font-triplet name="MSMincho" style="italic" weight="normal"/>
    <font-triplet name="MSMincho" style="italic" weight="bold"/>
    <font-triplet name="MS明朝" style="normal" weight="normal"/>
    <font-triplet name="MS明朝" style="normal" weight="bold"/>
    <font-triplet name="MS明朝" style="italic" weight="normal"/>
    <font-triplet name="MS明朝" style="italic" weight="bold"/>
 </font>
 <font metrics-file="C:\cygwin\usr\local\java\fop-0.20.5\conf\mspmincho.xml"
  kerning="yes" embed-file="C:\WINDOWS\Fonts\msmincho.ttc">
    <font-triplet name="PMincho" style="normal" weight="normal"/>
    <font-triplet name="PMincho" style="normal" weight="bold"/>
    <font-triplet name="PMincho" style="italic" weight="normal"/>
    <font-triplet name="PMincho" style="italic" weight="bold"/>
    <font-triplet name="MS-PMincho" style="normal" weight="normal"/>
    <font-triplet name="MS-PMincho" style="normal" weight="bold"/>
    <font-triplet name="MS-PMincho" style="italic" weight="normal"/>
    <font-triplet name="MS-PMincho" style="italic" weight="bold"/>
    <font-triplet name="MSPMincho" style="normal" weight="normal"/>
    <font-triplet name="MSPMincho" style="normal" weight="bold"/>
    <font-triplet name="MSPMincho" style="italic" weight="normal"/>
    <font-triplet name="MSPMincho" style="italic" weight="bold"/>
    <font-triplet name="MSP明朝" style="normal" weight="normal"/>
    <font-triplet name="MSP明朝" style="normal" weight="bold"/>
    <font-triplet name="MSP明朝" style="italic" weight="normal"/>
    <font-triplet name="MSP明朝" style="italic" weight="bold"/>
 </font>
 <font metrics-file="C:\cygwin\usr\local\java\fop-0.20.5\conf\msgothic.xml"
  kerning="yes" embed-file="C:\WINDOWS\Fonts\msgothic.ttc">
    <font-triplet name="Gothic" style="normal" weight="normal"/>
    <font-triplet name="Gothic" style="normal" weight="bold"/>
    <font-triplet name="Gothic" style="italic" weight="normal"/>
    <font-triplet name="Gothic" style="italic" weight="bold"/>
    <font-triplet name="MS-Gothic" style="normal" weight="normal"/>
    <font-triplet name="MS-Gothic" style="normal" weight="bold"/>
    <font-triplet name="MS-Gothic" style="italic" weight="normal"/>
    <font-triplet name="MS-Gothic" style="italic" weight="bold"/>
    <font-triplet name="MSGothic" style="normal" weight="normal"/>
    <font-triplet name="MSGothic" style="normal" weight="bold"/>
    <font-triplet name="MSGothic" style="italic" weight="normal"/>
    <font-triplet name="MSGothic" style="italic" weight="bold"/>
    <font-triplet name="MSゴシック" style="normal" weight="normal"/>
    <font-triplet name="MSゴシック" style="normal" weight="bold"/>
    <font-triplet name="MSゴシック" style="italic" weight="normal"/>
    <font-triplet name="MSゴシック" style="italic" weight="bold"/>
 </font>
 <font metrics-file="C:\cygwin\usr\local\java\fop-0.20.5\conf\mspgothic.xml"
  kerning="yes" embed-file="C:\WINDOWS\Fonts\msgothic.ttc">
    <font-triplet name="PGothic" style="normal" weight="normal"/>
    <font-triplet name="PGothic" style="normal" weight="bold"/>
    <font-triplet name="PGothic" style="italic" weight="normal"/>
    <font-triplet name="PGothic" style="italic" weight="bold"/>
    <font-triplet name="MS-PGothic" style="normal" weight="normal"/>
    <font-triplet name="MS-PGothic" style="normal" weight="bold"/>
    <font-triplet name="MS-PGothic" style="italic" weight="normal"/>
    <font-triplet name="MS-PGothic" style="italic" weight="bold"/>
    <font-triplet name="MSPGothic" style="normal" weight="normal"/>
    <font-triplet name="MSPGothic" style="normal" weight="bold"/>
    <font-triplet name="MSPGothic" style="italic" weight="normal"/>
    <font-triplet name="MSPGothic" style="italic" weight="bold"/>
    <font-triplet name="MSPゴシック" style="normal" weight="normal"/>
    <font-triplet name="MSPゴシック" style="normal" weight="bold"/>
    <font-triplet name="MSPゴシック" style="italic" weight="normal"/>
    <font-triplet name="MSPゴシック" style="italic" weight="bold"/>
 </font>
 <font metrics-file="C:\cygwin\usr\local\java\fop-0.20.5\conf\msuigothic.xml"
  kerning="yes" embed-file="C:\WINDOWS\Fonts\msgothic.ttc">
    <font-triplet name="UIGothic" style="normal" weight="normal"/>
    <font-triplet name="UIGothic" style="normal" weight="bold"/>
    <font-triplet name="UIGothic" style="italic" weight="normal"/>
    <font-triplet name="UIGothic" style="italic" weight="bold"/>
    <font-triplet name="MS-UIGothic" style="normal" weight="normal"/>
    <font-triplet name="MS-UIGothic" style="normal" weight="bold"/>
    <font-triplet name="MS-UIGothic" style="italic" weight="normal"/>
    <font-triplet name="MS-UIGothic" style="italic" weight="bold"/>
    <font-triplet name="MSUIGothic" style="normal" weight="normal"/>
    <font-triplet name="MSUIGothic" style="normal" weight="bold"/>
    <font-triplet name="MSUIGothic" style="italic" weight="normal"/>
    <font-triplet name="MSUIGothic" style="italic" weight="bold"/>
    <font-triplet name="MSUIゴシック" style="normal" weight="normal"/>
    <font-triplet name="MSUIゴシック" style="normal" weight="bold"/>
    <font-triplet name="MSUIゴシック" style="italic" weight="normal"/>
    <font-triplet name="MSUIゴシック" style="italic" weight="bold"/>
 </font>
</fonts>

サンプル: userconfig.xml

これでフォントの追加は終了です。

日本語を含む PDF を作成することができるかどうか確認してみます。

まず、日本語を含む .fo ファイルが必要ですので、 FOP に添付されているサンプル helloworld.fo を日本語を追加して helloworld-jp.fo を作成します。

<?xml version="1.0" encoding="UTF-8"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
  <fo:layout-master-set>
    <fo:simple-page-master master-name="simpleA4" page-height="29.7cm"
     page-width="21cm" margin-top="2cm" margin-bottom="2cm" margin-left="2cm"
     margin-right="2cm">
      <fo:region-body/>
    </fo:simple-page-master>
  </fo:layout-master-set>
  <fo:page-sequence master-reference="simpleA4">
    <fo:flow flow-name="xsl-region-body">
      <fo:block>Hello World!</fo:block>
      <fo:block font-size="18pt" font-family="Mincho">
        Mincho: ハロー ワールド!
      </fo:block>
      <fo:block font-size="18pt" font-family="PMincho">
        PMincho: ハロー ワールド!
      </fo:block>
      <fo:block font-size="18pt" font-family="Gothic">
        Gothic: ハロー ワールド!
      </fo:block>
      <fo:block font-size="18pt" font-family="PGothic">
        PGothic: ハロー ワールド!
      </fo:block>
      <fo:block font-size="18pt" font-family="UIGothic">
        UIGothic: ハロー ワールド!
      </fo:block>
    </fo:flow>
  </fo:page-sequence>
</fo:root>

FOPを実行します。

$ pwd
/usr/local/java/fop-0.20.5/examples/embedding/xml/fo
$ fop helloworld-jp.fo helloworld-jp.pdf
[INFO] Using org.apache.xerces.parsers.SAXParser as SAX2 Parser
[INFO] Using org.apache.xerces.parsers.SAXParser as SAX2 Parser
[INFO] FOP 0.20.5
[INFO] Using org.apache.xerces.parsers.SAXParser as SAX2 Parser
[INFO] building formatting object tree
[INFO] setting up fonts
[INFO] [1]
[INFO] Using org.apache.xerces.parsers.SAXParser as SAX2 Parser
[INFO] Using org.apache.xerces.parsers.SAXParser as SAX2 Parser
[INFO] Using org.apache.xerces.parsers.SAXParser as SAX2 Parser
[INFO] Using org.apache.xerces.parsers.SAXParser as SAX2 Parser
[INFO] Using org.apache.xerces.parsers.SAXParser as SAX2 Parser
[INFO] Parsing of document complete, stopping renderer
$ ls -l
total 23
-rw-r--r--    1 merita なし         1124 Jan 19 13:44 helloworld-jp.fo
-rwxr-xr-x    1 merita なし        19558 Jan 19 13:57 helloworld-jp.pdf
-rw-r--r--    1 merita なし          541 Jul 15  2003 helloworld.fo

サンプル: helloworld-jp.pdfhelloworld.fo

Acrobat Reader 6.0 で見ると、以下のようになります。

[ファイル]-[文書のプロパティ] の [フォント] で確認すると、日本語のフォントが埋め込まれていることが確認できます。

コマンドラインで起動する注意点

こちらで提供している fop_sh.txt では、デフォルトでユーザーコンフィグレーションをリードするようにしてあります。実際の java のコマンドラインでは、 -c ファイル名 でユーザーコンフィグレーションを指定する必要があります。

java -classpath (クラスパス) org.apache.fop.apps.Fop \
  -c c:/usr/local/java/fop-0.20.5/conf/userconfig.xml \
  input.fo output.pdf

新着記事