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.
- 0. Terms - Begriffliches
- 1. Primitives - Commercial Script
- 2. Basics - Garamond
- 3. Experts - Garamond Experts, SmallCaps und OsF
- 4. Extensions - Gefakte slanted, upright italic, bessere Fußnoten
- 5. Magics - Der \latinfamily-Befehl