Jede beliebige Textverarbeitung ermöglicht es, Textstellen fett, kursiv oder unterstrichen darzustellen, ebenso wie eine beliebige Kombination davon. Selbstverständlich ist dies auch in einem PDF möglich, aber es ist leider nicht ganz so einfach.
Die meisten Schriftarten bestehen aus vier einzelnen Schriften: Eine Normalschrift, eine Kursivschrift, eine Fettschrift und eine Fettkursivschrift. Um in einem Fliesstext einzelne Stellen kursiv, fett oder fettkursiv zu setzen, müssen wir also vorübergehend die Schrift umschalten, und danach wieder zurückstellen.
PDF macht es zum Glück ziemlich leicht, innerhalb einer Zeile die Schrift zu wechseln. Folgt innerhalb eines BT
ET
Blocks auf eine Textzeichenanweisung ein Tj
, ohne das dazwischen eine Platzieranweisung wie Td
oder T*
vorkommt, so wird der zweite Text direkt hinter dem ersten gesetzt. Zwischen den beiden Anweisungen kann mit Tf
die Schrift gewechselt werden.
Beispiel:
/F1 24 Tf BT 72 72 Td (Ein Text mit einem ) Tj /F2 24 Tf (fetten) Tj /F1 24 Tf ( Wort.) Tj ET
Dieses Beispiel geht davon aus, das /F1 eine Normalschrift, /F2 eine Fettschrift ist. In der Praxis hängen die Fontnamen natürlich von den Einträgen im Resourcendictionary ab.
Für Unterstreichung gibt es keine offizielle Unterstützung in PDF. Statt dessen zeichnet man einfach eine Linie an die richtige Stelle. Hierbei gilt:
Vorsicht: Die Unterstreichung darf nicht innerhalb des Textblocks (zwischen BT
und ET
) vorgenommen werden.
Beispiel:
/F1 24 Tf BT 72 72 Td (Ein Text mit einem unterstrichenen Wort.) Tj ET q 1.2 w 277.4 69.6 m 442.8 69.6 l S Q
Die verwendete Schrift ist in diesem Fall Helvetica. Bei anderen Schriften werden die X-Koordinaten für die Linie logischerweise anders sein.
Einzelne Textstellen können durch einen Wechsel der Schriftfarbe hervorgehoben werden. Dabei geht man gleich vor, wie beim temporären Wechsel der Schrift für fetten und kursiven Text.
Vorsicht: Die Anweisungen für Gruppierung dürfen nicht innerhalb eines Textblocks verwendet werden. Daher muss die Rückstellung auf die Originalfarbe „von Hand“ erfolgen.
Beispiel:
/F1 24 Tf 0 g BT 72 72 Td (Ein Text mit einem ) Tj 1 0 0 rg (roten) Tj 0 g ( Wort.) Tj ET
Falls man zusätzlich Unterstreichung verwendet, so sollte man nicht vergessen, auch die Linienfarbe um- und zurückzustellen.
Dies ist ein wenig komplizierter. Wir müssen nicht nur die Schriftgrösse ändern, sondern auch die Grundlinie verschieben. Hierfür gibt es die Ts
Anweisung. Sie erwartet einen Parameter mit der Anhebung (bei positiven Werten) bzw. Absenkung (bei negativen Werten) der Grundlinie in Point.
Was die Masse und Positionen betrifft, so verwendet Adobe folgende de facto Norm:
Beispiel:
/F1 12 Tf BT 72 72 Td (Normal) Tj /F1 7 Tf 4 Ts (hoch) Tj /F1 12 Tf 0 Ts ( Normal) Tj /F1 7 Tf -4 Ts (tief) Tj ET
Kapitälchen sind Grossbuchstaben mit reduzierter Grösse (normalerweise von der Höhe eines kleinen „x“). Sie werden manchmal in Überschriften oder zur Hervorhebung anstelle von Kleinbuchstaben verwendet.
Leider gibt es längst nicht zu allen Schriftarten Kapitälchen. Daher werden diese oft nachgebildet, indem die normalen Grossbuchstaben mit einer kleineren Schriftgrösse geschrieben werden. Dies nennt man „falsche Kapitälchen“. Das Problem hierbei ist, dass diese falschen Kapitälchen folgerichtig deutlich dünnere Linien und kürzere Zeichenabstände haben, als die Grossbuchstaben. Worte, die mit einem Grossbuchstaben beginnen, und mit falschen Kapitälchen fortfahren, sehen mitunter seltsam aus.
Generell rate ich daher vom Einsatz falscher Kapitälchen ab. Wenn es sein muss, so sollte die Schriftgrösse auf nicht weniger als 850‰ verkleinert werden. Dadurch werden die falschen Kapitälchen zwar grösser als ein „x“, aber die Unterschiede in Strichdicke und Zeichenabstand fallen nicht so sehr auf.
Beispiel:
/F1 12 Tf BT 72 72 Td (falsche K) Tj /F1 10.2 Tf (APITAELCHEN) Tj ET
Die meisten Fonts haben zusätzliche Informationen. Über diese ist feststellbar, welche Schriften zur selben Schriftart gehören, welche normal, kursiv, fett und fettkursiv sind, und unter Umständen auch Informationen für Unterstreichung, Hoch- und Tiefstellung.
Die Schriften können den Namen der Schriftart abgelegt haben, so dass sich die Schriften einer Schriftart gruppieren lassen. Der Name ist aber nicht zwingend vorhanden.
Bei Postscript Type1 ist dies ein allgemeiner Eintrag im AFM namens „FamilyName“.
Bei TrueType und OpenType ist dies ein Eintrag im „name“ Block. Plattform, Kodierung und Sprache sind gleich, wie beim betriebssystemspezifischen Schriftnamen. Der Typ ist aber 1 statt 4.
Ob eine Schrift eine Kursivschrift ist, lässt sich am Schrägungswinkel erkennen, den wir ja für den Schriftdeskriptor ermitteln mussten. Ist dieser ungleich 0, so handelt es sich um eine Kursivschrift. Ansonsten ist die Schrift gerade.
Bei Postscript Type1 Schriften lässt sich leider nicht mit Sicherheit festlegen, ob eine Schrift eine Fettschrift ist. Zwar kann das AFM einen allgemeinen Eintrag namens „Weight“ haben, aber dessen Wert ist keineswegs normiert. Als Daumenregel kennzeichnen Textwerte, welche „Demi“, „Heavy“, „Bold“ oder „Black“ als Wort oder Wortbestandteil enthalten, wahrscheinlich Fettschriften. Allerdings gibt es auch Schriften mit mehreren Dickegraden.
Bei TrueType und OpenType ist es am Einfachsten, den „Mac Style“ Wert zu ermitteln. Dieser befindert sich im „head“ Block an Position 44. Es handelt sich um eine uint16 Zahl. Sie ist ungerade bei Fettschrift, und gerade bei normal dicker Schrift.
Die Schrift kann eine alternative Schriftdicke und -position für die Unterstreichung festlegen.
Bei PostScript Type1 sind dies zwei allgemeine Einträge in der AFM Datei: „UnderlineThickness“ für die Liniendicke, und „UnderlinePosition“ für die Position. Beide Werte sind in Promille der Schriftgrösse.
Bei TrueType und OpenType sind dies zwei Einträge im „post“ Block. Die Dicke ist an Position 10, die Linienposition an Position 8 abgelegt. Beides sind int16 Zahlen, die anhand der Skala in Promille der Schriftgrösse umgerechnet werden müssen. Von der Linienposition muss zusätzlich die halbe Liniendicke abgezogen werden, da die Position der Oberkante statt der Strichmitte angegeben ist.
Was die Position der Linie betrifft, so ist sie immer relativ zur Grundlinie gesehen. Typischerweise ist sie negativ, da unterhalb der Grundlinie.
Bei TrueType und OpenType kann auch die Grösse und Position für hoch- und tiefgestellten Text festgelegt werden. Die Informationen finden sich im „OS/2“ Block und zwar an folgenden Positionen:
Position | Grösse | Typ | Inhalt |
---|---|---|---|
12 | 2 Byte | uint16 | Grösse Tiefstellung |
16 | 2 Byte | uint16 | Absenkung Tiefstellung |
20 | 2 Byte | uint16 | Grösse Hochstellung |
24 | 2 Byte | uint16 | Anhebung Hochstellung |
Alle Angaben müssen anhand der Skala in Promille der Schriftgrösse umgerechnet werden. Anders als bei der Position der Unterstreichungslinie ist die Absenkung als positive Zahl abgelegt.
Diskussion