Integration von eigenen Fonts in das XSL/FOP-Framework
PDF-Ausgabe mit speziellen Schriften.
PDF-Ausgabe mit speziellen Schriften.
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
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> ....
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.
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