Eine „Schrift“ im Sinne von PDF ist eine Sammlung von Zeichen einer bestimmten Schriftart in einem bestimmten Stil und einer bestimmten Schriftdicke.
Was heisst das in der Praxis? Nun, es heisst ganz einfach das Times, Times Kursiv, Times Fett und Times Fettkursiv vier verschiedene Schriften sind, die zur Schriftart Times gehören (unter Windows besser bekannt als Times New Roman). Das ist im Übrigen eine Konvention, die praktisch überall im Computerbereich gilt. Nur versteckt das Betriebssystem dies geschickt.
Wichtig ist nur: Wenn hier von einer Schrift die Rede ist, dann ist immer eine bestimmte Ausprägung einer Schriftart gemeint.
PDF definiert 14 Standardschriften zusammengefasst in 5 Schriftarten. Jedes PDF Anzeigeprogramm muss diese Schriften kennen. Daher können sie genutzt werden, ohne in das Dokument eingebettet zu werden. Die Standardschriften sind:
Times ist eine Serifenschriftart. Dieser Schrifttypus ist vor allem für Fliesstext geeignet. Zudem hat Times schmale Buchstaben, was gut für Spaltensatz ist.
Helvetica ist eine serifenlose Schriftart. Dieser Schrifttypus ist vor allem für Überschriften geeignet, wird aber – vor allem auf Webseiten – durchaus auch für Fliesstext verwendet. Helvetica hat relativ breite Buchstaben.
Courier ist eine Fixbreitenschriftart. Das heisst, alle Zeichen haben dieselbe Breite. Dieser Schrifttypus wird vor allem in Computersachbüchern für Auszüge aus Quellcode oder anderen Textdateien, sowie als stilistisches Element zur Hervorhebung von Nutzereingaben verwendet.
Symbol und Zapf Dingbats sind symbolische Schriften. Das heisst, sie enthalten Zeichen für Sonderzwecke. Im Falle von Symbol sind dies mathematische Symbole. Im Falle von Zapf Dingbats sind dies Symbole wie Pfeile, zeigende Hände, Scheren, usw.
Die Standardschriften zu verwenden ist in der Praxis nicht ganz unproblematisch. Dies, weil die Schriften zwar überall vorhanden sein müssen, aber Unterschiede in der Darstellung haben können. Insbesondere Symbol und ZapfDingbats sehen zuweilen äusserst unterschiedlich aus. Bei den anderen Schriften hingegen halten sich die Differenzen in Grenzen. Bis wir lernen, wie andere Schriften eingebettet werden können, sind sie für unsere Zwecke brauchbar.
Im Kapitel Seitenparameter haben wir schon mal gesehen, wie die Schriftobjekte eingebunden werden. Jetzt müssen wir nur noch die Objekte selbst definieren.
Schriftobjekte sind indirekte Dictionaryobjekte. Von den möglichen Einträgen interessieren uns diese:
/Type | immer /Font |
---|---|
/Subtype | technischer Typus der Schrift |
/BaseFont | Name der Schrift |
/Encoding | Zeichenkodierung im Dokument |
Der technische Typus der Standardfonts ist Postscript Type1, wofür der Name /Type1
steht.
BaseFont ist der Name der Schrift, wie er in der Schrift selber definiert ist. Der Wert muss dabei als Namenobjekt angegeben werden.
Encoding schliesslich gibt an welche Zeichenkodierung wir für die Stringobjekte verwenden, welche mit dieser Schrift dargestellt werden sollen. Es stehen drei Varianten zur Verfügung: WinAnsi, MacRoman und MacExpert. WinAnsi ist „Windows westlich“. MacRoman und MacExpert sind zwei mittlerweile veraltete Kodierungen, die auf Apple Computern vor Mac OS X üblich waren. Wir verwenden für unsere Dokumente WinAnsi, auch wegen dessen Kompatibilität zu ISO Latin-1 (siehe dazu die Bemerkungen zur Syntax von Strings). Der zugehörige Name ist /WinAnsiEncoding
.
Symbolische Schriften lassen sich nicht einer Zeichenkodierung zuordnen. Darum wird bei Ihnen der /Encoding
Eintrag weggelassen.
In diesem Beispiel definieren wir Fontobjekte für alle Times Schriften, für Helvetica Fett und für Courier Normal:
3 0 obj << /Type /Pages /MediaBox [0 0 595 842] /Resources << /Font << /F1 4 0 R /F2 5 0 R /F3 6 0 R /F4 7 0 R /F5 8 0 R /F6 9 0 R >> /ProcSet [/PDF /Text] >> /Kids [10 0 R] /Count 1 >> endobj 4 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Times-Roman /Encoding /WinAnsiEncoding >> endobj 5 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Times-Italic /Encoding /WinAnsiEncoding >> endobj 6 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Times-Bold /Encoding /WinAnsiEncoding >> endobj 7 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Times-BoldItalic /Encoding /WinAnsiEncoding >> endobj 8 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj 9 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Courier /Encoding /WinAnsiEncoding >> endobj
Diskussion