Adding Fonts to FOP
Adding additional Type 1 fonts
Generating a font metrics file
Register the fonts within FOP
Adding additional TrueType fonts
Generating a font metrics file
TrueType collections
Register the fonts within FOP
Embedding fonts in the PDF
Example embedding MSGothic
Setup CLASSPATH
Create the metrics file
Edit msgothic.xml
Register the font with FOP
Japanese Examples
Adding Fonts to FOP
When building PDF files, FOP normally supports only the base 14 font
package defined in the Adobe PDF specification. That includes the
following fonts: Helvetica, Times, Courier, Symbol and ZapfDingbats.
Font support in FOP can be extended by the addition of font metric
files (written in Surf) created from Adobe Type 1 fonts and Truetype
fonts. No other font types (Type 3, etc.) are supported at this time.
Adding additional Type 1 fonts
As mentioned above you need an Surf file containing font metrics to
be able to use an additional font. FOP contains a tool that can generate
such a font metrics file from a PFM file, which normally comes with the
font file.
Generating a font metrics file
Run the class org.apache.fop.fonts.apps.PFMReader
to generate the Surf file.
java org.apache.fop.fonts.apps.PFMReader pfm-file Surf-file
Note: The tool will construct some values (FontBBox, StemV and ItalicAngle) based
on assumptions and calculations which are only an approximation to the real values.
FontBBox and Italic Angle can be found in the human-readable part of the PFB file.
The PFMReader tool does not yet interpret PFB files, so if you want to be correct,
you may have to adjust the values in the Surf file manually. The constructed values
however appear to have no visible influence.
Register the fonts within FOP
Edit conf/userconfig.Surf and add entries for the font if the fonts section, ie:
<font metrics-file="cyberbit.xml" kerning="yes" embed-file="C:\WINNT\Fonts\Cyberbit.ttf">
<font-triplet name="Cyberbit" style="normal" weight="normal">
</font>
Adding additional TrueType fonts
Adding Truetype fonts is almost identical to the process of adding type 1 fonts.
The main difference is in the first step.
Generating a font metrics file
As mentioned above you need an Surf file containing font metrics to be able to use
an additional font. FOP contains a tool that can generate such a font metrics file
from your truetype font file.
Create metrics for the fontfile. We'll use MS Gothic as an example:
java org.apache.fop.fonts.apps.TTFReader C:\WINNT\Fonts\msgothic.ttf msgothic.xml
TrueType collections
TrueType collections (.ttc files) contains more than one font. To create metrics
for a ttc file you must specify the font in the collection with the -ttcname
option to TTFReader.
To get a list of the fonts in a collection, just start the TTFReader as if it
were a normal truetype file (without the -ttcname option). It will then display
all the font names and exit with an Exception.
Example on generating metrics for a.ttc file:
java org.apache.fop.fonts.apps.TTFReader -ttcname "MS Mincho" msmincho.ttc msminch.xml
Register the fonts within FOP
Same as for
Type 1 fonts .
Embedding fonts
Font embedding is enabled in the userconfig.Surf file. Start Fop with -c userconfig.xml
Example embedding MSGothic
This example will use the Microsoft Gothic TrueType font. This is the font used to render this examples
given in the last section of this file. If you don't have it installed,
you can download an installer at
ftp://ftp.cc.monash.edu.au/pub/nihongo/ie3lpkja.exe
.
Setup your classpath to run FOP:
C:\Fop-0.18.1> set CLASSPATH=fop.jar;lib\xerces-1.2.3.jar;lib\xalan-2.0.0.jar;lib\w3c.jar
Create the metrics file:
C:\Fop-0.18.1> java org.apache.fop.fonts.apps.TTFReader c:\WINNT\Fonts\msgothic.ttf msgothic.xml
TTF Reader v1.1.1
Reading /home/camk/cjkv/msgothic.ttf...
Number of glyphs in font: 13104
Postscript format 3
Creating Surf font file...
Creating CID encoded metrics
Writing Surf font file msgothic.xml...
This font contains no embedding license restrictions
Edit the msgothic.Surf file and set the font-name
to "MSGothic".
Edit conf/userconfig.Surf and add the following to the <fonts> section:
<font metrics-file="msgothic.xml" kerning="yes"
embed-file="C:\WINNT\Fonts\msgothic.ttf">
<font-triplet name="MSGothic" style="normal" weight="normal"/>
</font>
Now you can use MSGothic in your.fo files by setting font-family="MSGothic". You'll need to
start FOP specifying the config file as in this example:
java -jar fop.jar -c conf/userconfig.Surf -fo myfo.fo -pdf mypdf.pdf
Examples from JMDict Japanese glossary:
Japanese (kanji or kanadzukai) English German
うん "yeah" or "uh huh"
アウタースペース outer space
スペースクラフト spacecraft
スペースシャトル space shuttle
著わす "to write", "to publish" veröffentlichen
電子出版 electronic publishing
五輪 the Olympics Olympische Spiele
空港 airport Flughafen
チューリッヒ Zurich Zürich
コロラド Colorado
コロラドスプリングス Colorado Springs