FOP benötigt metrische Informationen von Buchstaben (individuelle Buchstabengröße, Abstände, Unterscheidungen etc.), damit ein schrift-spezischer Satz erfolgen kann; die Angaben zur Buchstabengröße befinden sich bei Postscript-Font in den metrischen pfm-Files. Bei Truetype-Fonts dagegen sind die metrischen Angaben in den ttf-Files integriert; der hier vorgestellte Registrierungs-Prozess für eigene Postscript-Fonts verläuft bei TTF-Files analog.

mehr dazu siehe: http://xml.apache.org/fop/fonts.html

1. Erzeugung der metrisches Files

Aus den binären PFM-Files werden XML-Files für die metrischen Fonts erzeugt; dies geschieht mit der FOP-Class PFMReader. Der Aufruf der Class (hier FOP 0.20.4) benötigt zusätzliche Java-Bibliotheken (xerces, xalan etc.); beispielhaft wird eine entsprechende XML-Datei "Compacta.XML" aus der PFM-Datei "0783A___.PFM" erzeugt:

C:\Programme\FOP\>
java -cp build\fop.jar;lib\xercesImpl-2.0.1.jar;
lib\xml-apis.jar;lib\xalan-2.3.1.jar;
lib\batik.jar org.apache.fop.fonts.apps.PFMReader 
C:\psfonts\pfm\0783A___.PFM Compacta.XML

Das entstandene metrische XML-File sieht dann folgendermaßen aus:

<?xml version="1.0" encoding="UTF-8" ?>
<font-metrics type="TYPE1">
 <font-name>CompactaBT-Light</font-name>   <embed />  <encoding>WinAnsiEncoding</encoding>   <cap-height>812</cap-height>  <x-height>662</x-height>  <ascender>812</ascender>  <descender>-155</descender> <bbox>   <left>-100</left>   <bottom>-160</bottom>   <right>1010</right>   <top>817</top>   </bbox>   <flags>6</flags> ....

2. Registrierung der Fontfiles für FOP

Das XML-File verbleibt im FOP-Root-Verzeichnis C:\Programme\FOP\; die Registrierung erfolgt der Datei C:\Programme\FOP\conf\userconfig.xml, indem dort ein entsprechendes Font-Element hinzugefügt wird (weitere Syntaxbeispiele finden sich in der Datei selbst):

....
<font metrics-file="Compacta.XML"
kerning="yes" embed-file="C:\psfonts\0783A___.PFB">
<font-triplet name="CompactaBT" style="normal"
weight="bold"/>
</font>
....

Die Referenzierung auf eine lokale binäre Fontdefinitions-Datei (Postscript-Font, PFB) ermöglicht FOP das komplette Einbetten der entsprechenden Fontdatei; für das eigentliche Rendern der Seite werden nur die metrischen Angaben herangezogen.

3. FOP-Rendering mit neuen Fonts

Das Rendering mit einem neuen Font kann man mit einer mitgelieferten fo-Files ausprobieren, z.B. cid-fonts.fo; dafür tauscht man in der Datei die Font-Deklarationen per Suchen und Ersetzen aus, hier z.B. "Helvetica" gegen "CompactaBT".

Für FOP ist nun wichtig, das die neue Userkonfiguration userconfig.xml explizit aufgerufen wird:

C:\Programme\FOP\>
Fop -c conf\userconfig.xml cid-fonts.fo cid-fonts.pdf

Das Ergebnis ist eine PDF-Datei in der alle Überschriften im neuen Font CompactaBT erscheinen.

Erstellt von: Dr. Frank Hoffmann , erstellt am:  27.06.2008 , zuletzt geändert: 27.06.2008