- Metafont
-
METAFONT Entwickler: Donald Knuth Aktuelle Version: 2.718281
(März 2008)Betriebssystem: viele Kategorie: TeX Lizenz: Freie Software CTAN-Comprehensive TeX Archive Network METAFONT ist eine abstrakte Beschreibungssprache zur Definition von Vektorschriften. Es ist auch der Name des zugehörigen Interpreters, der den Metafont-Code ausführt und Bitmap-Schriften bestimmter Auflösung erzeugt. Es wurde von Donald E. Knuth als Begleiter von TeX entwickelt, um den zweiten Band von The Art of Computer Programming zu setzen, da er mit dem Resultat des Fotosatzes des ersten Bandes unzufrieden war. METAFONT ist speziell entworfen, um TeX zu unterstützen, und ist deshalb auch Teil vieler TeX-Distributionen.
Knuth begann seine Arbeit an der Fonterstellungssoftware 1977 und brachte 1979 die erste Version von METAFONT heraus. Wegen Unzulänglichkeiten der originalen METAFONT-Sprache entwickelte Knuth 1984 ein komplett neues METAFONT-System, dieses überarbeitete System ist heute in Benutzung.
Inhaltsverzeichnis
Allgemeines
Die Form der Buchstaben wird in METAFONT über mächtige geometrische Gleichungen definiert. Anders als die verbreiteteren Outline-Schriften (wie TrueType oder PostScript-Type-1-Fonts), besteht ein METAFONT-Font hauptsächlich aus Strichen von „Stiften“ bestimmter Breite, zusammen mit gefüllten Flächen. Daher beschreibt eine METAFONT-Datei nicht die Umrisse der Zeichen, sondern den Weg des Stiftes und die jeweilige Breite des Striches beim Zeichnen. Ein schönes Beispiel dazu findet sich in u. g. METAFONTtutorial in Kapitel 0.5.
Einige einfachere METAFONT-Fonts, wie die kalligraphischen Mathematikfonts der Computer-Modern-Familie verwenden einen einzigen Strich eines relativ großen Stifts um jeden sichtbaren „Strich“ eines Zeichens zu definieren. Komplexere Schriften wie die Roman-Textschriften der Computer-Modern-Familie verwenden einen schmalen Stift um die Umrisse der sichtbaren „Striche“ zu zeichnen, die dann gefüllt werden; das Ergebnis ist einem Outline-Font recht ähnlich, aber durch die Stiftform mit etwas weicheren Ecken.
METAFONT unterscheidet sich von anderen Systemen durch die Variabilität der Fonts durch wenige Parameter wie Seitenverhältnis, Neigung, Strichstärke, Serifengröße (deswegen auch das Meta im Namen). So kann durch Veränderung von relativ abstrakten Parametern an einer Stelle in der METAFONT-Datei eine in der ganzen Schrift konsistente Änderung im Aussehen erreicht werden. Über „Breite eines schmalen Striches“, „Größe von Serifen“, „Neigung der Ellipse in Rundungen“ kann eine klassizistische Antiqua zu einer modernen Grotesken geändert werden.
Computer Modern Roman illustriert viele Verwendungen dieses Features; eine typische TeX-Installation beinhaltet eine Anzahl Versionen des Fonts in Größen von 5 bis 17 Punkt, mit der gleichen (statt durch die Hochskalierung zunehmenden) Strichstärke in allen Größen und für bessere Lesbarkeit zunehmenden Zeichenbreiten. Zusätzlich sind Computer Modern Typewriter und die Sans-Serif-Versionen im Wesentlichen über die gleiche METAFONT-Datei, jedoch mit unterschiedlichen globalen Parametern, definiert.
Andere Parameter wie die O-Korrektur (der Betrag, den eine Rundung größer gezeichnet wird) oder des Blackness-Parameters (Linien werden etwas dicker) dienen zur Anpassung an verschiedene Ausgabegeräte. Daneben sind in Metafont die Definition von Ligaturen und die Beeinflussung des Kernings möglich.
Vor einiger Zeit ist ein Abkömmling von METAFONT entstanden, der eine PostScript-Datei ausgibt: MetaPost. Aus diesem wurde später METATYPE1 entwickelt, das einen Postscript-Type-1-Font mit den für TeX nötigen Metrikdateien erzeugt. Beide können jedoch keine Stifte verwenden, sondern beschreiben den Umriss des Bildes bzw. Zeichens.
Die wichtigste in Metafont entwickelte Schrift ist die Computer Modern von Donald Knuth, die von TeX als Standardschrift benutzt wird.
Der METAFONT-Interpreter kann auch interaktiv ausgeführt werden und kennt Kommandos um die produzierten Bilder am Bildschirm auszugeben. Knuth sagte, er benutzt METAFONT als eine Art Tischrechner zur Lösung komplizierter Gleichungen, obwohl er mittlerweile MetaPost für mathematische Illustrationen verwendet.
Beschreibungssprache
Hier ein kleines Beispiel aus dem Metafont-Logo-font, einer sehr einfachen Schriftart. Jeder Punkt hat eine X- und eine Y-Koordinate, die mit x1, y1, x2, etc. bezeichnet werden. Der Ausdruck z4 ist eine Abkürzung für (x4,y4).
Quelltext eines METAFONT-Buchstabens Ausgabe im Proof-Modus 1: beginlogochar("F", 14); 2: x1 = x2 = x3 = leftstemloc; 3: x4 = w - x1 + ho; 4: x5 = x4 - xgap; 5: y2 = y5; 6: y3 = y4; 7: bot y1 = -o; 8: top y3 = h; 9: y2 = barheight; 10: draw z1 11: -- z3 12: -- z4; 13: draw z2 14: -- z5; 15: labels(1, 2, 3, 4, 5); 16: endchar;
Die Zeile 1 definiert ein neues Zeichen mit dem Namen F und dem Zeichenkode 14.
In Zeile 2 werden die x-Positionen der Punkte 1, 2 und 3 auf leftstemloc gesetzt, einen Wert, der die Position des linken Striches angibt.
Die Zeile 3 definiert x4 so, dass er, abgesehen vom over-shot ho, den gleichen Abstand vom rechten Rand (spezifiziert durch w) hat, wie ihn Punkt 1 vom linken Rand hat.
In Zeilen 10 bis 14 werden letztendlich die Punkte 1, 3 und 4 durch gerade Linien (der linke und obere Strich vom F) verbunden und der kleine waagerechte Strich in der Mitte durch Verbinden der Punkte 2 und 5 gezeichnet.
Literatur
- Donald Knuth: Metafont: the Program. Addison-Wesley, 1986, ISBN 0-201-13438-1
- Donald Knuth: The MetafontBOOK. Addison-Wesley, 1986, ISBN 0-201-13444-6
Siehe auch
Weblinks
Wikimedia Foundation.