フォント・メトリクス・ファイルを作成するだけでは、 FOP にフォントを追加したことになりません。
FO 中では単にフォント名が記述されているだけです。このため、FOP のコンフィグレーションに、フォント名と実際のフォント・メトリクス・ファイルの関係を追加しておく必要があります。
Apache FOP を展開したディレクトリの中に conf/userconf.xml というファイルがあります。このファイルにフォント名とフォン・メトリクス・ファイルの関係を記述します。
fonts 要素の中に複数の font 要素が書けますので、ここに追加します。
追加の留意点:
フォント名は自由につけてかまいません。
ひとつのフォント・メトリクス・ファイルに対して、複数のフォント名を指定することができます。
この例のように フォント名に漢字が含まれている 場合は、ファイルは UTF-8 で保存 しなければなりません。 Shift JIS や EUC で保存すると、 FOP 実行時にエラーになります。
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
#1703. 春を感じるご馳走 - 春竹の子と干し椎茸の醤油煮込み + 桜海老と春野菜の土鍋ご飯 山椒風味 @一楽.横浜中華街:
2018-03-26 横浜中華街・中華街大通りの一楽にて晩飯。一品目は、春メニューから春竹の子と干し椎茸の醤油煮込み。これは・・・素食(スゥシー,精進料理)の紅焼烩双冬かな? 紅焼(ホンシャオ)ともちょっと違うような、甘い香りのする焼付け具合が肉厚の干し椎茸とよ...
#1702. 福建料理 (閩菜) の定番麺料理 - 燜麺 (海鮮煮込みそば) @華錦飯店.横浜中華街:
2018-03-25 横浜中華街・市場通りの華錦飯店(かきんはんてん)にて晩飯。こちらは隣の魚屋が経営母体の中華料理店。このため海鮮料理に強いと言われている。また、経営者の出身地が福建とのことで、一般的な中華料理を中心に、福建料理(閩菜)を少し加えたメニュー構成...
#1701. 横浜中華街で中国茶 - 龍井茶 @隆記.横浜中華街:
2018-03-25 オフィスでは、だいたい中国茶を飲んでいる。自分用の中国茶マグ・カップで、茶葉の種類を変えつつ何杯も飲んでいるが、これがコーヒーよりも精神バランスに良い感じで、リラックスして、かつ、集中できる感じ。正念場・修羅場・短時間でいいから集中がほしい...
#1700. アットホームな広東料理店 - 春巻 + 咸蛋蒸肉餅 (塩タマゴと豚肉の蒸し) @龍鳳酒家.横浜中華街:
2018-03-24 横浜中華街・中山路の龍鳳酒家(りゅうほうしゅか)にて晩飯。こちらは家庭的なお店で、広東料理(粤菜)の家庭料理(家郷菜)が得意。一品目はビールの酒肴として春巻をオーダー。中身がしっかりと詰まった春巻は、カリッとかじると熱々の中身が口の中に弾け...
#1699. 横浜・元町で米国式スタンダードな朝食を - ブレックファスト・プレート + 玉子1個追加 @バイ・ミー・スタンド.代官坂.元町.横浜:
2018-03-24 横浜・元町・代官坂のバイ・ミー・スタンド(BUY ME STAND)元町店 にて朝食。ここはユニークかつ美味しいサンドイッチを出す店。朝8時から開店していて、ゴージャスな朝食が食べられるので、朝から開店している飲食店が少ない元町近辺では貴重...