Die Anpassung von PostScript-Type-1-Schriften an LaTeX - Eine Schritt-für Schritt-Einführung

Einige einleitende Worte

LaTeX bietet dem Eingeweihten die Möglichkeit, aus tausenden verfügbarer PostScript-Schriften auszuwählen. Davon sind einige kostenlos erhältlich - inzwischen die Computer Modern durch das Package cm-super, andere wie Times, Helvetica, Bookman uvm. sind in jedem PS-Drucker fest installiert und stehen zusammen mit Utopia, Charter und Palatino auch mit der Installation von ghostscript zum Einsatz in PDFs bereit; näheres findet sich in psnfss2e.tex, was jeder LaTeX-Distribution beiliegen sollte. Wem diese Auswahl noch nicht ausreicht, kann sich der Schriften bedienen, die verschiedenen Programmen und Büchern beiligen. Corel Draw wird in der Regel mit einer Unmenge von Bitstream-Schriften ausgeliefert, wobei bei den alten Versionen die PostScript-Versionen mitunter fehlen - vorher erkundigen! Zweihundert Schriften von SoftMaker bietet die Begleit-CD zu [Cavanaugh], gleich fünfhundert aus der gleichen Quelle die Fontsite-CD. Für den Hausgebrauch sollte diese Auswahl ausreichen, aber natürlich kann man sich jede existierende Schrift in allen Varianten zulegen, manche sogar mit passenden Mathematik-Schriften - sofern man bereit ist, dafür Geld zu bezahlen. Dem Neuling hingegen bietet sich diese Möglichkeit nur theoretisch; die Hindernisse, die sich ihm bei der praktischen Umsetzung in den Weg stellen, sind so vielfältig, daß sie ihn von der Nutzung dieser Schriften de facto ausschließen und auf die ComputerModern-Familie beschränken. Wobei es im Leben schlimmeres gibt ...

Der Weg vom Anfänger zum Experten ist schwierig. Wie nahezu fast alles in LaTeX ist auch die Einbindung von Type-1-Schriften gut dokumentiert. Leider existiert keine geschlossene Einführung, die den Anfänger auf seinem Kenntnisstand abholt. Dem Ideal noch am nächsten kommt [Hoenig], wobei hier davon ausgegangen wird, daß die Welt nur aus Adobe-Schriften besteht. Die vollständigste Doku zu fontinst ist wohl immer noch der dokumentierte Source-Code - der dürfte aber auch dem Eingeweihten noch einige Rätsel aufgeben. Die immer nötigen Tips & Tricks zur Anpassung des eigenen Problems an die Standardlösung findet man in Mailinglisten, Newsgroups - und dort, wo sie schon angewandt werden: in Style-Files

In diesem Tutorial soll gezeigt werden, wie PostScript-Type-1-Schriften unter LaTeX verfügbar gemacht werden können. Die hier gebrachten Beispiele verwenden Schriften von der FontSite-500-CD, und zwar die Commercial Script und die Garamond, zu der es dort außer der regular und bold auch die zugehörigen Kursiven, Expert-Schriften und SmallCaps gibt. Die dort vorhandene Garamond Condensed hat zwar mit der Garamond gar nichts zu tun, da sie aber im Namensschema in die gleiche Familie fällt, wird sie mitbehandelt. Grundsätzlich sollten die gezeigten Installationswege auch mit anderen Schriften anderer Hersteller funktionieren, dabei sind aber insbesondere in der Bezeichnung der Dateien und Pfade vom Benutzer selbständig Anpassungen vorzunehmen.

Natürlich wird ein funktionierendes LaTeX vorausgesetzt. Cygwin oder eine andere bash werden dringend als Shell empfohlen. Unumgänglich ist das Paket fontinst, das im CTAN erhältlich ist und nach der beiligenden Anleitung installiert werden sollte.

Zu Dank bin ich vielen verpflichtet, die mich auf den Pfad der Erkenntnis führten. Stellvertretend seien hier zwei genannt: Walter Schmidt, der mich mit seiner Homepage "angefixt" hat und bei meinen ersten Gehversuchen mit Styles mit Fehlersuche und Ratschlägen geduldig zur Seite stand, Hilmar Schlegel, der ausdauernd genug war, meine Begriffstutzigkeit bzgl. der Codierung von Schriften zu überwinden, und Lars Hellstroem, der mir Patches für fontinst zur Verfügung gestellt hat.

Und nun ans Werk.

0. Terms - Die Grundbegriffe

Eine Schrift ist eine Ansammlung von Glyphen, die ein gemeinsames Design aufweisen. Eine Glyphe ist ein elementares Zeichen, wie z.B. ein a, eine 1 oder ein =. Ein ä ist keine Glyphe, sondern ein zusammengesetztes Zeichen: es besteht aus einem a und einem Doppelpunkt. In den meisten Schriften sind auch solche zusammengesetzten Zeichen enthalten; wenn nicht, lassen sie sich aus den Glyphen konstruieren.

Damit der Computer eine Schrift benutzen kann, muß er verschiedene Informationen über sie erhalten. Diese Informationen kann man in zwei Gruppen einteilen: zum einen Metriken, die Angaben zur Größe einer Schrift - x-Höhe, Versalhöhe, Unterlänge - oder eines Zeichens - Breite und Höhe des Zeichens, Orientierung zur Grundlinie, Raum zu den Nachbarzeichen - machen; zum anderen Informationen über die Outline, das tatsächliche Aussehen der Zeichen.

Ursprünglich hat TeX nur mit Bitmap-Schriften zusammengearbeitet. Hierbei liegen die Outlines für jede Schriftgröße in einer eigenen Datei; wer eine Schrift in 10pt hat, hat also noch lange keine 14pt-Schrift. Allerdings können in vielen Fällen die verschiedenen Schriftgrößen vom Programm Metafont aus einer gemeinsamen Quelle erzeugt werden.

Umgänglicher zeigen sich da skalierbare Schriften, bei denen die Outline-Informationen generell für alle Schriftgrößen aus der gleichen Datei genommen werden. Hier sind zuerst die TrueType-Schriften zu nennen, die besonders unter Windows weit verbreitet sind. Sie enthalten Metriken und Outlines im gleichen File, dem .ttf-File. Einen anderen mathematischen Ansatz in der Beschreibung der Outlines verwenden PostScript-Type-1-Schriften. Außerdem sind hier Metriken und Outlines in verschiedenen Files untergebracht: Die Metriken sind im Adobe Font Metric File .afm untergebracht, die Outlines entweder im Klartext in einem .pfa- oder binär in einem .pfb-File. PostScript-Schriften sind im Druckereigewerbe gebrächlicher, daher haben sie sich inzwischen auch für das Aufrüsten von LaTeX als Standard durchgesetzt; wir werden sie im folgenden ausschließlich betrachten.

Die Auswahl der Zeichen erfolgt meist über ihre Position im File. Damit wird die Anordnung wichtig. Eine bestimmte Anordnung nennt man Codierung (engl.: encoding). Grundsätzlich ist jede Codierung möglich, nicht alle sind sinnvoll, und nur wenige werden tatsächlich eingesetzt. Die Problematik bei der Verwendung von PostScript-Schriften unter LaTex beruht in erster Linie darauf, daß Schriften nicht so codiert sind, wie LaTeX es erwartet.

Damit wären wir schon beim Konzept der Virtuellen Schrift. Bei einer normalen Schrift findet man bei Zugriff auf das x-te Zeichen an der Stelle x Informationen über Metrik und Outline. Bei virtuellen Schriften wird hier zusätzlich angegeben, welches Zeichen aus welcher Schrift zu verwenden ist. Virtuelle Schriften ermöglichen also, Zeichen, die in einer Schrift nicht vorhanden sind, aus anderen "auszuleihen" - oder auch, die Zeichen einer Schrift in eine andere Reihenfolge zu bringen.

PostScript-Schriften kommen in der Regel in der Adobe-Standardcodierung 8a daher. Diese Codierung hat einen kleinen Nachteil: mit ihr sind nicht alle 229 Zeichen des vollständigen Adobe Roman Character Set darstellbar. Nicht darstellbare Zeichen erhalten dann als Zeichennummer die -1 und sind vorläfig zwar vorhanden, aber ohne Zugriffsmöglichkeit. Daher erfolgt meist zuerst eine Umcodierung ins raw font encoding 8r, auch 8y und PDFDocEncoding sind verwendbar. Nun sind alle Zeichen verfügbar. TeX kennt verschiedene Codierungen: Das Original-Tex-Encoding OT1 ist eine 7-bit-Codierung und kann daher nur 128 Zeichen darstellen. Daraus ergab sich die Notwendigkeit einer Erweiterung auf 8 bit mit der Möglichkeit, 256 Zeichen anzusprechen. Diese Codierung heißt nach dem Ort, an dem sie beschlossen wurde, Cork Encoding T1. Für benötigte Zeichen, die auch hier nicht unterkamen, wurde dann noch das TextCompanion Encoding TS1 entwickelt, das vom Gedanken her keine neue, eigene, selbständige Schrift repräsentieren soll, sondern eine Erweiterung zu einer vorhandenen T1-Schrift. Weitere Codierungen existieren für Mathematik-Schriften, sollen aber in diesem Rahmen nicht betrachtet werden.

TeX selbst interessiert sich bei Schriften nur für die Metriken; es erstellt ja lediglich DVI-Files. Diese Metriken liegen als TeX Font Metric .tfm vor. Sie sind nicht lesbar, können aber mit Hilfe von tftopl in lesbare Property Lists .pl umgewandelt werden - und mit pltotf auch wieder zurück. Die Korrelation zwischen einer verwendeten Schrift und dem zugehörigen .tfm-File geschieht in Font Definition .fd-Files.

Outlines kommen erst bei der Ausgabe von DVIs zur Verwendung und werden vom entsprechenden Programm benutzt. YAP, der DVI-Viewer der MikTeX-Distribution, wird relativ problemlos mit den hier gezeigten Anpassungen funktionieren, eine hundertprozentig richtige Anzeige hat allerdings mit Alchemie zu tun - Thema anderer Leute. Wesentlich wichtiger ist die Transformation nach PostScript mit dvips. dvips nimmt sich hierzu seine Informationen aus den .tfm- und .vf-Files, schaut nach, welche Buchstaben aus welcher Schrift vorkommen, und schreibt die entsprechenden PostScript-Befehle dann in ein .ps-File. Dazu wird auch ein .map-File ausgewertet, das darüber Aufschluß gibt, welche PostScript-Schrit von welcher virtuellen Schrift jetzt wirklich angesprochen wird.

Die Umwandlung von .afm- in .pl-Files und die Erzeugung von virtuellen Schriften mit den zugehörigen .vpl-Files geschieht am besten mit fontinst. Dabei werden .fd-Files gleich miterzeugt, die Herstellung von .map-Files ist noch nicht ausgereift.

Mitunter unterscheiden sich Schriften nur in wenigen Merkmalen. Solche Schriften faßt man zu einer Schriftfamilie zusammen. So gehören alle Schriften, die sich nur in der Schriftgröße unterscheiden, zusammen, das ist noch verständlich. Schriften können sich auch durch ihr Gewicht, d.h. durch die verwendete Strichdicke unterscheiden; man spricht dann von einer mittleren, leichten, halbfetten, fetten, ... Schrift. Auch in ihrer Form können sie sich unterscheiden; eine Schrift kann aufrecht oder geneigt sein, sie kann in Großbuchstaben oder in einer Kombination von großen und kleinen Großbucshtaben auftreten. Die Kursive gehört zwar zur Schriftfamilie, ist aber in der Regel nicht einfach eine verschrägte, sondern eine komplett neu entworfene Schrift. Weiterhin kann eine Schrift in verschiedenen Weiten auftreten, als condensed oder extended.

Schriften, die in erster Linie Alpahbet und Ziffern enthalten, bezeichnet man als Standardschriften. Dem stehen Expertenschriften gegenüber, die zusätzliche Ligaturen, Brüche, Super- und Subscript-Ziffern, Kapitächen (SC = small caps, kleine Großbuchstaben, aber mit der Strichdicke der großen, deswegen dürfen nicht einfach Großbuchstaben einer kleineren Schriftgröße verwendet werden) und Oldstyle-Ziffern (Ziffern als Kleinbuchstaben - OsF) enthalten. Bei manchen Herstellern sind Sc+OsF in den Expert-Schriften enthalten, bei anderen bilden sie eine eigene Schrift.

Abschließend noch ein paar Worte zur Benennung von Schrift-Files. Aufgrund der immer noch vorkommenden 8+3-Beschränkung von DOS ist es nicht möglich, eine Datei GaramondCompressed-BoldItalic.pfb zu nennen. Es ist auch nicht wünschenswert, das zu tun, weil die Schreibarbeit und damit die Fehlerquote ansteigt. Daher gibt es ein Benennungsschema, das Karl-Berry-Schema, dessen Lektüre ausdrücklich empfohlen wird. Hier die Kurzfassung: Zunächst wird der Hersteller der Schrift in einem Buchstaben codiert, danach die Schriftfamilie in zwei Buchstaben. Es folgt das Gewicht und manche Varianten (Kapitälchen, Kursive) in je einem Buchstaben. Die nächsten beiden Stellen machen vielen Einsteigern die meisten Probleme: hier wird die Codierung festgelegt. Den Abschluß bildet die Laufweite. Der Filename sieht also so aus: HFFGVCCW.pfb. PostScript-Schriften werden in aller Regel vom Hersteller nicht nach diesem Schema benannt, man muß seine Files also umbenennen.

Davon abweichend ist die Ansprache einer Schrift unter LaTeX. Da viele Parameter gleich zu sein scheinen, entsteht oft der Eindruck, daß die Karl-Berry-Konventionen und das NFSS-Schema miteinander identisch seien. Das ist falsch, vielmehr wird in den .fd-Files das LaTeX-Schema in Filenamen übersetzt. LaTeX benutzt: Die Codierung (aber nicht als 7t, 8t, 8c, sondern als OT1, T1, TS1), die Schriftfamilie (oft tatsächlich die ersten drei Buchstaben aus dem Karl-Berry-Schema, aber nicht zwingend, und auch beliebig zu variieren), die Serie, eine Zusammenfassung aus Gewicht und Laufweite (was heißt, daß die Laufweite nicht unabhängig vom Gewicht verändert werden kann), die Variante und die Schriftgröße. Letztere hat gleich zwei Parameter: der erste ist der tatsächliche Schriftgrad, der andere der Abstand von einer Grundlinie zu nächsten, so daß hier der Durchschuß variiert werden kann.

Geliefert werden PostScript-Schriften als .pfb- und .afm-Dateien, LaTeX braucht aber .tfm- und .vf-Dateien. Die Umwandlung des Einen in das Andere wird im wesentlichen von fontinst geleistet. Vorausgesetzt wird hier mindestens Version 1.914, ab Kapitel 3 sind zusätzlich die bisher veröffentlichten Patches erforderlich. Da diese bisher nur auf der fontinst-Mailingliste erschienen sind, biete ich sie im entsprechenden Kapitel zum Download an.

Literatur