FOPを使用する場合のフォントの追加方法

前からの懸案事項

DITA-OT1.4.3およびで1.5開発ブランチのB_REL1-5でfontを追加して使用する場合,他の人たちの書き込みを見ていると*1,OSが所有しているfontフォルダ(例えばC:\Windows\fontsとか)に置くか,フォントを任意のフォルダにおいて,fop.xconf内にあるmetrics-urlやembed-urlの指定を個々にフルパスで記述しています.
弊社の場合,マシン環境はWindowsMac,記述するDITAはSubversionに突っ込んで複数で作業,はたまたサーバ上でビルドして構成管理なんてことをやろうとしているので,フルパスで記述なんて勘弁してほしいわけです.

いままでは

metrics-urlやembed-urlの指定を毎回記述するのが嫌だったので,

<font-base>C:\DITA-OT1.4.3\demo\fo\fop\fonts</font-base>

などとfop.xconfのはじめの方に記述して,記述フォルダにフォントとメトリックスファイルをおけば,metrics-urlやembed-urlの記述でフルパスの指定が要らなくなります.

それでもfop.xconfの中でフルパスを記述する必要があり,回避する方法を探していました.

解決方法

追加するフォントとメトリックスファイルは%DITA-OT%\demo\fo\fop\fontsフォルダ以下を想定しています*2

fopを起動している箇所は%DITA-OT%\demo\fo\build.xmlの以下の通りです.

...
	    <fop format="application/pdf" fofile="${inputFile}" basedir="${dita.map.output.dir}"
	      outfile="${outputFile}" messagelevel="info" relativebase="true"
	      force="true" userconfig="${fop.home}/conf/fop.xconf">
	    </fop>
...

ここのbasedirをfontがあるフォルダへ以下のように変更します.

...
	    <fop format="application/pdf" fofile="${inputFile}" basedir="${fop.home}/fonts"
	      outfile="${outputFile}" messagelevel="info" relativebase="true"
	      force="true" userconfig="${fop.home}/conf/fop.xconf">
	    </fop>
...

次に%DITA-OT%\demo\fo\fop\conf\fop.xconfで追加したfont-baseを削除します.

<fop version="1.0">

  <!-- Base URL for resolving relative URLs -->
  <base>.</base>
  <strict-validation>false</strict-validation>

...

        <font metrics-url="ipam.xml" embed-url="ipam.ttf" kerning="yes">
          <font-triplet name="IPAMincho" style="normal" weight="normal"/>
          <font-triplet name="IPAMincho" style="normal" weight="bold"/>
          <font-triplet name="IPAMincho" style="italic" weight="normal"/>
          <font-triplet name="IPAMincho" style="italic" weight="bold"/>
        </font>

...

これでOKです.
アンテナハウスさんはこのあたりをどうやって回避しているのか気になるところ*3ですが,翻訳など多言語対応もfeatureしているDITAなので,フォントの追加はカスタマイズしたいんじゃないかと思います.

手元のWindowsMacでは動作確認できました.
社内への変更は,1.5対応への準備の変更もしたいところだけど,まずはこれだけ充てようかしら.

*1:といってもDITAに関する情報は皆無でFOP単体での記述

*2:もちろん別の場所に変更することはできます

*3:1.5に向けて,いろいろコミットしているし