4 Die Schriften von TEX
4.1 lEX's Fonts
Plain-TEf( gibt Ihnen die Moglichkeit, mehrere verschiedene Arten von Fonts (Schriftarten, Schriftschnitte) zu verwenden: Roman (Antiquaschrift), Kursivschrift (italics), fette Schrift (bold), schraggestellte Schrift (slanted), Schreibmaschinenschrift (typewriter). Schraggestellte und kursive Schrift sind zwei Paar Schuhe, wie Sie bald sehen werden. AIle diese Fonts gehoren zu einer groBen Familie, genannt Computer Modem, die von Knuth speziell fUr TEf( gestaltet wurde. Die meisten Systeme, auf denen TEf( lauft, bieten aIle Computer Modern-Fonts an, die zusatzlich zu den Obengenannten auch eher selten verwendete wie Sans-Serif (Groteskschrift), unextended bold (Fettschrift ohne vergroBerte Laufweite) und unslanted italic (nicht-geneigte Kursivschrift), sowie Schreibmaschinenschriften beinhalten.
Heutzutage erlauben viele Installationen, ob PCs oder groBere Systeme, Zugang zu PostScript-Fonts: Times, Helvetica, Courier, Bookman und tiber was Ihr Drucker sonst noch verftigt. Sie konnen auch Fonts fUr fremde Alphabete, Sonderzeichen etc. verwenden.
Die Fonts, die Sie mit TEf( verwenden konnen, fallen in zwei Kategorien: diejenigen, die TEf( schon mit dem Aufruf kennt - sie werden als vorgeladene Fonts bezeichnet - und diejenigen, die Sie vor Gebrauch zusatzlich laden mtissen. Sehen wir sie uns der Reihe nach an.
R. Séroul et al., TEX Praxis© Birkhäuser Verlag 1998
40 Kapitel 4. Die Schriften von T E'<
4.2 Vorgeladene Fonts Starten Sie Plain-1EX, so wird Ihr Text mit dem Computer Modern Roman
Font, 10 Punkt groB gesetzt, soweit Sie nichts Gegenteiliges angegeben haben. Dieser Absatz ist in diesem Font gesetzt: Er sieht dem Times-Roman Font iihnlich, der im Rest des Buches verwendet wird; aber die Schrift ist offener, runder und nicht so groB.
TEX kennt diesen Font unter dem Namen tenrm, und der gleiche Roman-Font in 7 oder 5 Punkt GroBe heiBt \sevenrm bzw. \fiverm. Die Namen erkHiren sich von selbst. Urn 7 -Punkt Roman zu verwenden gentigt es, \sevenrm einzugeben: Von dann an erhalten Sie diesen Font. Wir wollen ein biBchen damit spielen:
Er hatte einen riesigen Kopf Er hatte einen riesigen Kopf\par auf mittelgroBem Rumpf \sevenrm auf mi tte1gro{\ss}em Rumpf\par und ku,ze, spindeldiine Beine. \fi verm und kurze, spinde1d\ "urre Beine.
(Beachten Sie den Gebrauch von \par urn eine neue Zeile zu beginnen.)
Angenommen, Sie wollen nur einen kleines StUck Text 7 Punkt groB setzen:
Auf Zehenspitzen trat sie lautlos in den Raum.
Sie konnten Auf Zehenspitzen trat sie \sevenrm 1aut1os \tenrm in den Raum. eingeben, aber es ist Histig, explizit zu \ tenrm zurtickzukehren. Es gibt eine bessere Moglichkeit: Setzen Sie \sevenrm und das entsprechende Wort in eine Gruppe. Wenn TEX die Gruppe verHiBt, kehrt es automatisch zum vorher verwendeten Font zurtick.
Auf Zehenspitzen trat sie {\sevenrm 1aut1os} in den Raum.
Hier kommt eine vollstandige Liste der nicht -mathematischen Fonts, die von Plain-TEX vorgeladen werden. 1m nachsten Abschnitt folgt eine Erkliirung der Font-Dateinamen.
Font -Dateiname Aufruf Beschreibung
cmrl0 \tenrm 10 Punkt Roman cmr7 \sevenrm 7 Punkt Roman cmr5 \fiverm 5 Punkt Roman
cmbxl0 \tenbf 10 Punkt fett cmbx7 \sevenbf 7 PUnkt feu cmbx5 \fivebf 5 Punkt feu
cmtil0 \tenit 10 Punkt kursiv
cms110 \tens1 10 Punkt schraggestellt
cmttl0 \tentt 10 PUnkt Schreibmaschinenschrift
Zusatzlich zu den obigen Befehlen zur Anderung des Fonts bietet TEX die Abkiirzungen \rm, \bf, \i t, \sl und \tt an, mit denen die entsprechenden Fonts in 10 Punkt aktiviert
4.3 Andere Fonts laden 41
werden. Diese Befehle funktionieren auch im Mathematikmodus, was fUr \ tenrm etc. nicht der Fall ist (vgl. Abschnitt 4.7, falls Sie wissen wollen, warum). Diese Abktirzungen sind der gtinstigste Weg, urn Fonts zu andem, sofem Sie nicht die GroBe andem mtissen.
4.3 Andere Fonts laden
Angenommen, Sie wollen 8-Punkt Roman, einen Font, der nicht von TEX geladen ist, verwenden. Sie mtissen diesem Font einen Namen geben, unter dem Sie ihn von TEX "registrieren" lassen, und auBerdem TEX mitteilen, wo Informationen tiber den Font zu finden sind. Die Informationen tiber jeden Font sind in einer speziellen Datei irgendwo in Ihrem Computer-System enthalten; die Datei fUr den Computer Modem Roman 8 Punkt Font wird cmr8. tfm genannt. TEX verwendet die Datei mit der Extension tfm, diese wurde von METAFONT aus der Datei cmr8. mf berechnet. Der Befehl zu Registrierung ist in diesem FaIle
\font \eightrm=cmr8
(Kein Backslash vor dem Fontnamen angeben! Die Extension tfm wird ebenfalls nicht mitangegeben.) Sind die Registrierungsformalitaten tiberstanden, wird TEX das soeben definierte Makro \eightrm genauso wie die vordefinierten Namen des letzten Abschnitts behandeln:
Er hatte einen riesigen Kopf Er hatte einen riesigen Kopf\par auf mittelgroBem Rumpf \eightrm auf mi ttelgro{\ss}em Rumpf\par und kurze, spindeldiirre Beine. \sevenrm und kurze, spindeld\ "urre Beine.
Der Name \eightrm ist nicht zwingend, Sie hatten den Font auch \romaneight oder \roman VI I I nennen konnen (leider sind Ziffem nicht erlaubt) oder \romainhui t, falls Sie mehr in Franzosisch beschlagen sind. Die interne BuchfUhrung von TEX wird die eigenartigsten Namen registrieren, ohne mit der Wimper zu zucken.
Ein iiblicher Anfangerfehler ist es, den Font nur zu registrieren, also \f ont \ toto= ... einzugeben. Dies reicht aber noch nicht, urn TEX zu einem Fontwechsel zu veranlassen, es kennt dadurch nur den Namen. Erst wenn Sie \toto eingeben, wird TEX den Font andem.
PostScript-Fonts
Wenn Ihre TEX-Installation PostScript-Fonts unterstiitzt, miissen Sie diese genauso laden wie aIle anderen Fonts, die nicht vorgeladen sind. Das Einzige, was es zu beachten gilt, ist, daB PostScript-Fonts anders als Computer Modem Fonts unterschiedliche Namen und Design-GraBen auf verschiedenen Systemen haben konnen. Urn den Times Roman IO-Punkt Font, den in dies em Buch hauptsachlich verwendeten Font, zu erhalten, miissen Sie vielleicht auf dem einem System
\font\timesX=PS-Times-Roman
eingeben und auf dem anderen
\font\timesX=Times at 10pt,
42 Kapite/ 4. Die Schriften von T EX
weil dort die "Design-GroBe" willkiirlich auf 1 pt gesetzt wurde. Sie sollten nicht \ times fUr den Fontnamen gebrauchen, da dies ein Befehl fUr das Symbol x ist.
4.4 Eine FOlie von Fonts
emri0
embxi0
emesei0
Hier sind einige Beispiele von Computer Modem Fonts. Zunachst der Roman Font (emr) mit zwei Variationen: fett (embx fUr bold extended, ein Hinweis auf die Breite der Zeichen) und caps-small caps (emese, Versalien & Kapitalchen):
MURPHY'S GESETZ: Wenn etwas schiefgehen kann, dann geht es auch schief.
MURPHY'S GESETZ: Wenn etwas schiefgehen kann, dann geht es auch schief.
MURPHY'S GESETZ: WENN ETWAS SCHIEFGEHEN KANN, DANN GEHT ES
AUCH SCHIEF.
Nun die Kursivschrift, verfiigbar als regularer italic Font (emti fUr text italic) und als fetter Font (embxti):
emtii0 MURPHY'S GESETZ: Wenn etwas schiefgehen kann, dann geht es auch schief.
embxtilO MURPHY'S GESETZ: Wenn etwas schiefgehen kann, dann geht es auch schief.
emui0
ocmrl0
Es gibt noch eine Variante der Kursivschrift, die als aufrecht oder ungeneigt bezeichnet wird:
MURPHY'S GESETZ: Wenn et'Was schiefgehen kann, dann geM es auch schief·
Hier kommt noch die UmriBvariante des normalen Roman Fonts:
MURPHY'§ GE§E'I'Z: WelDllDl etw1lI§ sdhiiefgelhelDl kalDllDl, damll gelht es aUl<clh sclhiie[
Stellt man einen aufrechten Font ohne weitere Anderungen schrag, so ergibt dies einen slanted-Font (falsche Kursivschrift). Beachten Sie, wie sich der slanted-Font yom italicFont unterscheidet:
ems110 MURPHY'S GESETZ: Wenn etwas schiefgehen kann, dann geht es auch schief.
embxsli0 MURPHY'S GESETZ: Wenn etwas schiefgehen kann, dann geht es auch schief.
Die Schreibmaschinenschrift (cmtt) besitzt mehrere Varianten, italic (emi tt), slanted (emsltt) und caps-small caps (emtese):
cmtti0 MURPHY'S GESETZ: Wenn etwas sehiefgehen kann, dann geht es auch schief.
emitti0 MURPHY'S GESETZ: Wenn etwas schiefgehen kann, dann geht es auch schief.
cmsltti0 MURPHY'S GESETZ: Wenn etwas schiefgehen kann, dann geht es auch schief.
cmtcsei0 MURPHY'S GESETZ: WENN ETWAS SCHIEFGEHEN KANN, DANN GEHT ES AUCH SCHIEF.
Eine besondere Form ist die Schreibmaschinenschrift mit variabler Zeichenbreite:
cmvtti0 MURPHY'S GESETZ: Wenn etwas sehiefgehen kann, dann geht es auch schief.
4.5 Skalieren von Fonts 43
Hier sind einige serifenlose-Fonts (dc steht flir demibold condensed):
cmss10 MURPHY'S GESETZ: Wenn etwas schiefgehen kann, dann geht es auch schief.
cmssbx10 MURPHY'S GESETZ: Wenn etwas schiefgehen kann, dann geht es auch schief.
cmssdc10 MURPHY'S GESElZ: Wenn etwas schiefgehen kann, dann geht es auch schief.
cmssi10 MURPHY'S GESETZ: Wenn etwas schiefgehen kann, dann geht es auch schier
Die meisten der obigen Fonts sind in versehiedenen GraBen verfligbar, aueh wenn wir hier nur die lO-Punkt Fonts verwendet haben. Es gibt noeh weitere Computer Modem Fonts, wie cmdunh (flir Dunhill) und emff (flir. .. funny) sowie Fonts mit mathematischen Symbolen:
cmdunh10 MURPHY'S GESETZ: Wenn etwas schiefgehen kann, dann geht es auch schief.
cmff10 MURPHY'S GESET2: W(\nn (\twQ,S SCili(\ig(\\1(\n KQ,nn, OQ,nn g(\ilt (\S Q,llcil sCili(\1.
Verlassen wir die Computer Modem Fonts, so gibt es noch Euler Fraktur, die von der American Mathematical Society bereitgestellt wird:
eufm10 9Jlli9tIf}Sj~'6 (5<56<5'1'3: Wenn ettuas sef)iefgef)en eann, Dann gef)t es auef) sef)ief. Drei weitere, sehr schOne Frakturschriften (ygoth, yswab und yfrae) konnen verwen-
det werden 1 :
ygoth J\llmlt'~·~ ~<t~<t~Z: Wenn rtbJM (d)/rfgrlJn hann, lllnn grot wand) (d)/rf.
yswab mU1tp-6l1'6 <1)~6~~3: tuenn etroas fef)iefgel)en fann, bann gel)t es auef) fef)ief.
yfrak ID?Uffilll-9:1)'e ®€e€;t8: ~enn etroas fd)iefge~en fann, bann gebt es aud) fd)ief.
und viele Fonts flir fremde Alphabete: Kyrillisch, Griechisch, Hebraisch, ... Wir haben nur die Spitze des Eisberges gesehen.
4.5 Skalieren von Fonts
Angenommen, Sie benotigen einen 12-Punkt Roman Font, aber Ihre TEX Installation verftigt nur tiber den lO-Punkt Font cmrl0. Sie konnen dann den existierenden Font durch
\font\twelverm=cmr10 at 12pt
vergroBem. Dies sagt TEX, alle Dimensionen des Fonts cmr10 mit einem Faktor 12/10 = 1,2 zu multiplizieren, was also zu einem 12-Punkt Font flihrt. (TEX weiB, daB die originale GroBe (oder DesigngrofJe) von cmrl0 10 pt ist, da diese Informationen in der tfm-Datei gespeichert sind; der Name dieser Datei ist damr irrelevant.)
Die folgende Zeile ergibt das gleiche Resultat:
\font\twelverm=cmr10 scaled 1200
(Beaehten Sie, daB vor "scaled" oder "at" kein Baekslash steht.) Das Schliisselwort scaled funktioniert wie folgt: scaled 1000 bedeutet einen Skalierungsfaktor 1 (also
1 Die hier vorgestellten Frakturschriften eignen sich gut flir die Wiedergabe alt-deutscher Texte. Sie enthalten die beiden Varianten des "s", die abhiingig von der Stellung im Wort verwendet werden. Das "SchluB-S" wird in Form einer Ligatur - als s: - eingegeben.
44 Kapitel 4. Die Schriften von T EK
keine Anderung), scaled 1200 einen Faktor von 1,2 (also 20% groBer), scaled 500 einen Faktor von 0,5 (also eine Verkleinerung urn 50%).
Urn Ihnen iiberfliissige Rechnerei zu ersparen, bietet T}3X mehrere Befehle an, die Sie nach scaled eingeben konnen: \magstep1 steht fiir 1000 x 1,2 = 1200, \magstep2 fiir 1000 x 1,2 x 1,2 = 1440, und so weiter bis \magstep5. Mit Hilfe dieser Konvention kann die obige Definition also folgendermaBen geschrieben werden:
\font\twelverm=cmr10 scaled \magstep1
Es gibt auch den Befehl \magstephalf, der einem VergroBerungsfaktor von yT,2 = 1,09545 entspricht.
Was T}3X betrifft, so konnen Sie Fonts nach Belieben vergroBem oder verkleinem, weil T}3X nur die Dimensionen der Fonts kennen muB. Sie werden aber Arger mit Ihren TreiberProgrammen bekommen, die die Zeichen zu Ihrem Drucker schicken, wenn diese keine Informationen iiber die erforderlichen VergroBerungen finden konnen. Mit anderen Worten, wenn in Ihrem System keine Datei mit den Bitmaps fUr 12-Punkt groBes cmr10 vorhanden ist, die sich von denen fiir die lO-Punkt-Schrift unterscheiden, so wird sich zwar T}3X nicht iiber das \ twel verm beschweren, aber der Drucker wird entweder alle Zeichen dieses Fonts ignorieren oder sie - mit Hilfe der cmr10-Bitmaps - durch eine Naherung ersetzen. Das Ergebnis variiert von Drucker zu Drucker, aber es ist nie ideal.
Wir wollen hier einmal die unterschiedliche Darstellung durch originale und genaherte Fonts vergleichen.
lOpt-Font aus crnr5 - emrlO-Font original- lOpt-Font aus emrl7 -
Wie Sie sehen, unterscheiden sich die Ergebnisse doch betrachtlich voneinander. Fonts kleiner EntwurfsgroBe verbreitem sich iiberproportional stark und wirken wenig elegant (eher etwas breitgetreten), wenn sie zu stark vergroBert werden. Umgekehrt wirken die linear verkleinerten Fonts sehr schmal (gedriingt), und die Strichstarken und Zwischenraume nehmen viel zu stark ab, als daB sie noch gut zu Ie sen waren.
PostScript-Fonts
Dieses Problem entsteht nicht fUr PostScript-Fonts, die outline-Fonts sind und ohne Riicksicht auf den Treiber vergroBert bzw. verkleinert werden konnen. Hier sind noch mehr Beispiele fUr die Registrierung von PostScript-Fonts:
Sauter-Fonts
\font\tenpalatino=Palatino at 10pt \font\bighelvetica=Helvetica at 30pt
John Sauter hat Anfang der 90er Jahre begonnen, die Quelltexte der CM-Fonts so zu modifizieren, daB alle MaBe von der DesigngroBe abhangig sind. Das Projekt hat viel Anklang bei den T}3Xianem gefunden (diese Fonts werden als "Sauter-Fonts" bezeichnet), und inzwischen hat Jorg Knappen die Arbeit zu Ende gefiihrt. Die neuen EC-Fonts (siehe Abschnitt 4.8, ab Seite 54) werden ebenfalls als "sauterisierte Fonts" (d. h. mit einer in einem wei ten Bereich skalierbaren DesigngroBe) bereitgestellt.
4.6 Globale Skalierung 45
Ein letzter Punkt: Jede skalierte Version eines Fonts muB separat registriert werden. Die Eingabe von \font \ twel vebf=cmrlO at 12pt erlaubt es Ihnen zum Beispiel noeh nicht, cmrlO zu 10 pt zu verwenden. Mit anderen Worten, mit dem Registrieren eines Fonts ordnet man einem Befehl genau ein Paar, bestehend aus Dateinamen und Skalierungsfaktor, zu.
4.6 Globale Skalierung
Der folgende Befehl ist eigentlich kein Font-Befehl: Er ermoglieht Ihnen, ein ganzes Dokument zu vergroBeren bzw. verkleinem. Durch die Eingabe
\magnification=1200
am Anfang Ihres Dokuments vergroBem Sie dieses urn 20%. Es gibt eine wichtige Einsehrankung: Sie konnen die VergroBerung nur einmal, und zwar am Anfang, festlegen. Sie konnen den Befehl nieht in der Mitte eines Dokuments andem, wohl aber konnen Sie die Fonts einzeln skalieren.
Die Wirkung von \magnification wird mit den individuellen Skalierungen kombiniert. Wenn Sie z. B. den oben mit \magstepl definierten \twelverm-Font in einem Dokument verwenden, das mit \magnification=\magstepl beginnt, so wird das Ergebnis ein Font sein, der mit einem Faktor 1,2 x 1,2 vergroBert ist, was einer VergroBerung von 44% entsprieht. Das ist tibrigens der Grund, warum die \magstep-Serie multiplikativ ist: Der kumulative Effekt zweier \magstepl ist \magstep2 und so weiter.
Der \magnification-Befehl ist sehr ntitzlieh beim Korrekturlesen. Dieses Buch z. B. wurde in 10 pt gesetzt, aber aile Korrekturabztige wurden mit \magnification = \magstepl vergroBert. Beim Setzer wurde dieser Befehl dann entfemt, und die letzte Version wurde gedruckt, wie Sie sie hier sehen.
Heute werden allerdings meistens die DVI -Treiberprogramme, die aile tiber weitergehende Skalierfahigkeiten verftigen, verwendet, wenn eine Ausgabe vergroBert oder verkleinert werden soli. Dies hat den Vorteil, daB der Quelltext nieht verandert werden muB
und daB spezielle Anordnungen der Seiten (z. B. vier Seiten auf einem Blatt) vorgenommen werden konnen. Lesen Sie die Besehreibung Ihres DVI -Treiberprogramms, urn dessen Fahigkeiten auszunutzen.
Wahre GroBen Angenommen, Sie woIlen ein Dokument 12 Punkt groB setzen. Viele System haben
keine Fonts wie cmr12 etc., wei I groBe Fonts viel Speieherplatz einnehmen. Aber sie haben wahrseheinlieh 12-Punkt cmrlO. Sie haben also zwei Mogliehkeiten: entweder Sie skalieren jeden Font einzeln, oder Sie beginnen Ihr Dokument mit dem Befehlsaufruf \magnification=\magstepl (entsprieht dem Faktor 1.2), was viel einfaeher ist.
Das Problem ist dann aber, daB aile Dimensionen urn 20 % vergroBert werden. Wenn Sie etwa 2,5 em zwischen zwei Zeilen frei lassen wollen, mtissen Sie 2,5 em dureh 1,2 dividieren und \ vski p 2, 083cm eingeben. Das ist nieht sehr spaBig.
Gltieklicherweise gibt es eine bessere Losung:
46 Kapitel 4. Die Schriften von T £X
\vskip 2.5truecm
Der Vorsatz true kann vor allen Einheiten von TEX (in, em, pt, pc, etc.; spater darliber mehr) geschrieben werden. Begegnet TEX einem true, so dividiert es die Dimension durch die globale VergroBerung, bevor es die Dimension gebraucht. Es fUhrt also die Division aus, die Sie sonst zu berechnen hatten.
4.7 FOr den angehenden Zauberer Fonts im Mathematikmodus
TEX besitzt einen ausgefeilten Mechanismus zum Umgang mit Fonts im Mathematikmodus. Es wahlt automatisch eine kleinere GroBe fUr Zeichen, die einen (tiefstehenden oder hochstehenden) Index oder Exponenten bilden, und eine noch kleinere GroBe fUr den Index eines Indexes:
$2A ~2$, $nA_n$ .................................................... 2A2 , nAn
$R+B~{2~S}$, $S-B~{R_S}$ ................................ R + B 2S , S - BRs
$R+B_ {2~S}$, $S-B_ {R_S}$ ................................ R + B2s, S - BRs
Dieser komplizierte Mechanismus fUhrt dazu, daB wir es im Mathematikmodus, anders als im normalen Textsatz, wo es den Begriff eines einzelnen aktuellen Font gibt, gleich mit einer Familie von ahnlich aussehenden Fonts in drei verschiedenen GroBen zu tun haben, z. B. in den Punkt-GroBen 10,7 und 5. Auf eine Familie von Mathematik-Fonts wird durch den Befehl \fam, gefolgt durch eine Zahl, also etwa \famO, zugegriffen. Die drei Mitglieder der Familie \famO heiBen \ textfontO, \scriptfontO und \scriptscriptfontO.
Auf Seite 351 von The TJj(book finden Sie den folgenden Code: \textfontO=\tenrm \scriptfontO=\sevenrm \scriptscriptfontO=\fiverm \def\rm{\famO\tenrm}
Die ersten beiden Zeilen definieren die Familie \famO. Die letzte Zeile sagt TEX, daB Familie \famO bzw. der Font \tenrm verwendet werden solI, wenn es einen \rm-Befehl ausfUhrt. AuBerhalb des Mathematikmodus wird TEX dann den Font \ tenrm verwenden, wahrend es im Mathematikmodus die Fonts von \famO aktiviert: also \tenrm fUr "normale" Zeichen, \sevenrm fUr Indizes und \f i verm fUr Indizes von Indizes:
$\rm S-B_ {R_S}$ ..................................................... S - BRs
Es ist wichtig zu verstehen, warum ein Name, der mit der \font-Konstruktion registriert wurde, tiberhaupt keine Wirkung im Mathematikmodus zeigt. FUr einen Fontwechsel im Mathematikmodus muB man die \fam-Konstruktion verwenden oder eine \hbox, die Sie vortibergehend in den horizontalen Modus bringt:
$A$, $\eightrm A$, {\eightrm $A$, $\hbox{A}$} ............... A, A, A, A
(Nur das letzte A ist wirklich 8 pt groB.)
ZUrUck zu den Definitionen in Plain-TEX. Hier ist die Familie \faml, die die speziellen italic-Fonts beschreibt, die in mathematischen Formeln verwendet werden:
4.7 Fur den angehenden Zauberer
\textfontl=\teni \scriptfontl=\seveni \scriptscriptfontl=\fivei \def\mit{\faml} \def\oldstyle{\faml\teni}
47
Der Befehl \mi that auBerhalb des Mathematikmodus keine Wirkung, da er die Mathematik-Familie andert, aber nieht den aktuellen Font. Andererseits arbeitet \oldstyle innerhalb und auBerhalb des Mathematikmodus. Der Grund flir die Existenz zweier Befehle ist, daB die italic-Buchstaben der Mathematik-Fonts nicht zur Verwendung auBerhalb des Mathematikmodus bestimmt sind (sie verfligen z. B. tiber kein Kerning), daB aber die Ziffern dieses Fonts, 0123456789, auBerhalb verwendet werden konnen. Geben Sie also \oldstyle ein, so brauehen Sie sich nicht zu sorgen, daB TEX in den Mathematikmodus und zum Mathematik-Italic-Font wechselt.
Die Familien \fam2 und \fam3 beschreiben die mathematischen Symbole und ausdehnbaren Symbole (groJ3envariablen Symbole), welche TEX gebraucht urn Formeln zu setzen. Wir diskutieren diese hier nicht weiter.
Betrachten wir jetzt die Definition des \i t-Makros:
\newfam\itfam \textfont\itfam=tenit \def\it{\fam\itfam\tenit}
Die Familien 0 bis 3 haben eine besondere Bedeutung flir TEX, und man verweist auf sie normalerweise dureh Nummern. Aber sich an weitere Zahlen erinnern zu mussen, wird dann lastig - was war \fam4 nochmal? -, und deshalb besitzt TEX noch einen anderen Weg, urn Fontfamilien anspreehen zu konnen. Der Befehl \newfam\itfam ktindigt eine neue Familie mit der "Nummer" \i tfam an. Intern gibt TEX dieser Familie die Nummer 4, aber dariiber brauchen wir uns keine Gedanken zu machen, wir schreiben einfaeh \fam\itfam, was vie! aussagekraftiger ist als \fam4. (Aueh das "fam" in \itfam ist nieht obligatoriseh: \newfam\toto und \fam\toto wiirde es eben so tun.)
Die Definition des \it-Makros ist derart, daB zwar $\it A$ funktioniert (das "ft:' ist in 10 Punkt Text-Kursivsehrift gesetzt), aber $\it A_k$ nieht, weil der Index "k" keinen assoziierten Font hat. Die letzte Eingabe verursacht eine Fehlermeldung
! \scriptfont 4 is undefined (character k).
(Leider verwendet TEX hier nicht den symbolischen Namen flir die Familie.)
Zur weiteren Vertiefung betrachten wir noch die Definition des \bf-Makros:
\newfam\bffam \textfont\bffam=\tenbf \scriptfont\bffam=\sevenbf \scriptscriptfont\bffam=\fivebf \def\bf{\fam\bffam\tenbf}
Hier sind alle drei Mitglieder der Familie definiert, Sie konnen \bf uberall in mathematisehen Formeln verwenden.
48 Kapitel 4. Die Schriften von T EX
Die Definition neuer Font-Familien Wir wissen nun genug, urn unsere eigenen Makros zum Fontwechsel analog zu \rm,
\bf etc. zu erzeugen. Angenommen der Font PostScript-Times-Roman ist in der Datei Times (d. h. in Times. tfm vgl. das Ende von Abschnitt 4.3) verfiigbar. Dann konnen wir ein Makro \tm schreiben, das sowohl im Text- als auch im Mathematik-Modus TEX zu Times wechseln liillt:
\font\tentm=Times at 10pt \font\seventm=Times at 7pt \font\fivetm=Times at 5pt \newfam\tmfam \textfont\tmfam=\tentm \scriptfont\tmfam=\seventm \scriptscriptfont\tmfam=\fivetm \def\tm{\fam\tmfam\tentm}
Die American Mathematical Society, AMS, vertreibt eine Anzahl von Fonts, unter anderem auch Fraktur oder "Gotisch" (eufm) und blackboard bold, die bei einigen Mathematikern beliebt sind: A, lB, ... , Z (msbm-Fonts; s. im Glossar unter \bb). Der Vollstlindigkeit halber geben wir die Definition eines Makros \frak an, das sowohl im Mathematikmodus als auch im Textmodus zu Fraktur-Fonts umschaltet:
\font\tenfrak=eufml0 \font\sevenfrak=eufm7 \font\fivefrak=eufm5 \newfam\frakfam \textfont\frakfam=\tenfrak \scriptfont\frakfam=\sevenfrak \scriptscriptfont\frakfam=\fivefrak \def\frak{\fam\frakfam\tenfrak}
Falls Sie die Fraktur-Fonts auf den Mathematikmodus einschrlinken wollen, muB in der letzten Zeile folgendes stehen:
\def\frak{\fam\frakfam}
8efehle zur Anderungen der GroBe Plain-TEX arbeitet im wesentlichen mit nur einer FontgroBe: 10 Punkt. Die 7- und 5-
Punkt Fonts sind fUr Indizes der in der BasisgroBe lO-Punkt groBen mathematischen Formeln berechnet.
Eines der haufigsten Bediirfnisse selbst eines Neulings in TEX ist ein Befehl, der die GroBe eines Fonts in kohlirenter Weise lindert - zum Beispiel urn FuBnoten kleiner als den Text zu machen. Ein solcher Befehl sollte so definiert sein, daB \bf, \i t etc. wie auch die Konstruktionen im Mathematikmodus genau so wie zuvor arbeiten, aber mit geeigneten kleineren Fonts.
Dazu sammeln wir aIle Definitionen von Plain-TEX, die mit einem Fontwechsel zu tun haben, in einem Makro und nennen es \tenpoint. (Tatsachlich wollen wir allerdings,
4.7 FOr den angehenden Zauberer 49
daB \ tenpoint sich auch noch urn andere Dinge kiimmert wie etwa den Zeilenabstand (der direkt von der ZeichengroBe abhangig ist). In diese Details wollen wir hier aber nicht gehen, vgl. das Glossar flir eine komplette Liste.)
\def\tenpoint{% \textfontO=\tenrm \scriptfontO=\sevenrm \scriptscriptfontO=\fiverm \def\rm{\famO\tenrm}% \textfont1=\teni \scriptfont1=\seveni \scriptscriptfont1=\fivei \def\oldstyle{\fam1\teni}% \textfont2=\tensy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy \textfont\itfam=\tenit \def\it{\fam\itfam\tenit}% \textfont\slfam=\tensl \def\sl{\fam\slfam\tensl}% \textfont\ttfam=\tentt \def\tt{\fam\ttfam\tentt}% \textfont\bffam=\tenbf \scriptfont\bffam=\sevenbf \scriptscriptfont\bffam=\fivebf \def\bf{\fam\bffam\tenbf}% \rm}
Es gilt hier, mehrere Dinge zu beachten:
• Das % am Ende einiger Zeilen ist notwendig urn zu verhindem, daB sich das CR
in die Definition einschleicht; dieses wiirde sonst einen zusatzlichen Zwischenraum (ein Leerzeichen) einfiigen, jedesmal wenn \tenpoint im horizontalen Modus aufgerufen wird. Nur hinter einer Kontrollsequenz, die aus Buchstaben besteht, sind CR und Sp wirkungslos.
• Die Familienmitglieder von \f am3 werden nicht umdefiniert: ausdehnbare Symbole konnen selbst ihre eigene GroBe aus dem Kontext heraus berechnen.
• Fontnamen wie \tenrm und die Familiennamen wie \itfam sind in Plain-TEX ein flir allemal definiert und sollten nicht in \ tenpoint umdefiniert werden, da einige Makropakete auf diese Definitionen zugreifen.
• Die letzte Zeile ist ein Aufruf von \rm; wenn Sie also \tenpoint eingeben, so erhalten Sie als Vorgabe den lO-Punkt Roman Font. Natiirlich konnen Sie eine andere Vorgabe wahlen, indem Sie diese Zeile andem.
• Sie konnen in die Definition von \tenpoint Ihre eigenen Fontwechselbefehle eingeben, wie z. B. \tm und \frak. Auch hier sollten Befehle wie \newfam\tmfam oder
50 Kapitel 4. Die Schriften von T eX
\font\tentm=Times at 10 pt nicht Eingang in \tenpoint finden, sondern vorangestellt werden, so daB sie nur einmal gelesen (und ausgeflihrt) werden.
Wir sind nun bereit zur 8-Punkt Schrift zu wechseln, indem wir ein \eightpoint-Makro vollkommen analog zu \ tenpoint definieren:
\def\eightpoint{% \textfontO=\eightrm \scriptfontO=\sixrm \scriptscriptfontO=\fiverm \def\rm{\famO\eightrm}% \textfont1=\eighti \scriptfont1=\sixi \scriptscriptfont1=\fivei \def\oldstyle{\fam1\eighti}% \textfont2=\eightsy \scriptfont2=\sixsy \scriptscriptfont2=\fivesy \textfont\itfam=\eightit \def\it{\fam\itfam\eightit}% \textfont\slfam=\eightsl \def\sl{\fam\slfam\eightsl}% \textfont\ttfam=\eighttt \def\tt{\fam\ttfam\eighttt}% \textfont\bffam=\eightbf \scriptfont\bffam=\sixbf \scriptscriptfont\bffam=\fivebf \def\bf{\fam\bffam\eightbf}% \rm}
Wir benotigen ferner, irgendwo auBerhalb der Definition von \eightpoint, einige Zauberformeln, die TFC beim Setzen von Akzenten im Mathematikmodus unterstiitzen:
\skewchar\eighti='177 \skewchar\sixi='177 \skewchar\eightsy='60 \skewchar\sixsy='60
Schauen wir uns an, wie die omniprasenten Computer Modem Text-Fonts flir dieses Buch zugunsten von PostScript Times entthront wurden. Alles was wir tun muBten, war eine Umdefinition der Befehle \i t und \bf, urn die entsprechenden Times Gegenstticke aufrufen zu konnen, sowie die Definition eines neuen Befehls \ tm, der oben erklart ist und der Times Roman aufruft.
\font\tentm=Times at 10pt \def\tm{\famO\tentm} \font\tentmit=TimesI at 10pt \def\it{\fam\itfam\tentmit} \font\tentmbf=TimesB at 10pt \def\bf{\fam\bffam\tentmbf}
Wir behielten das alte \rm, urn einfacher Beispiele flir die TFC-Ausgabe angeben zu konnen. Wir behielten auch die Computer Modem Mathematikfonts bei, da wir nieht die
4.8 Ein neues Auswahlverfahren fOr Fonts (NFSS) 51
Familien \famO, \i tfam und \bffam umdefinierten. Der Grund dafUr ist, daB PostScriptFonts im Mathematikmodus schlecht arbeiten: Sie setzen die Zwischenraume falsch, und einige Zeichen sind nicht verfiigbar.
Einen Buchstaben benennen Der nachste Abschnitt zeigt auf Seite 52 eine Tabelle der 128 Zeichen des Fonts cmr10.
Die Position des Zeichens B ist 25, oktal ausgedriickt also 31 (3 x 8 + 1 = 25) bzw. hexadezimal 19 (1 x 16 + 9 = 25). Die maschinennaben Befehle, urn an dieses Zeichen zu kommen, sind {\tenrm\char25} oder {\tenrm\char'31} oder {\tenrm\char" 19}, je nachdem welche Basis Sie bevorzugen. (Beachten Sie, daB der hexadezimalen Zabl ein Anfiihrungszeichen " und nicht zwei einfache Anfiihrungszeichen ' , vorangestellt ist.)
Ein benutzerfreundlicher Befehl, der das Zeichen aus Position 25 des aktuellen Fonts ausgibt, konnte wie folgt definiert werden:
\def{\char25} oder \def{\char' 31} oder \def{\char" 19}.
Es gibt auch noch eine Alternative, die effizienter ist, weil sie keinen zusatzlichen Makroaufruf benotigt:
\chardef=25 oder \chardef=' 31 oder \chardef=" 19.
Analog konnen mit \mathchar und \mathchardef Befehle fUr Zeichen im Mathematikmodus definiert werden. Ihre Anwendung ist etwas kompliziert, da man spezifizieren muB, zu welcher Familie das Zeichen gehort und welchem Zweck es dient (z. B. ob es ein gewohnliches Zeichen, ein Operator oder ein Satzzeichen ist), denn davon hangt der zu vergebende Leerraum urn dieses Zeichen abo Details dazu stehen im Abschnitt 11.2 und im Glossar.
4.8 Ein neues Auswahlverfahren fOr Fonts (NFSS)
Die bisher beschriebenen Mechanismen zur Verwendung unterschiedlicher Fonts erinnern stark an die Arbeitstechnik der Bleisatzerstellung: Dem Setzer (TEX) wird der entsprechende Satzkasten bezeichnet und hingestellt (wir nannten diesen Vorgang oben "registrieren"), und TEX greift sich die benotigten Zeichen aus diesem Vorrat. Wollen wir einen anderen Font verwenden, miissen wir das TEX explizit mitteilen, den neuen Setzkasten bereitstellen und zuordnen, ...
Das Makro \ tenpoint stellte einen ersten Schritt in eine grundlegend andere Richtung dar: Mit diesem Makro wurde der verwendete Font nach Design-Kriterien ausgewahlt (hier dem Schriftgrad), und TEX wahlte den dazugehOrigen Font selbst aus. Damit ist der erste Schritt auf dem Weg yom Setzer zum typographischen Designer getan. Nunmehr bestimmen Design-Kriterien - wir werden unten naher auf sie eingehen - den zum Satz verwendeten Font.
52 Kapite/ 4. Die Schriften von T E'<
emrlO '0 '1 '2 '3 '4 :5 '6 7
'OOx r Ll e A ~ II ~ Y "Ox
'Olx <T> W n ff fi fl ffi fH
'02x , , v V - 0
1 J "ix '03x
> B re 00 0 1E CE 0 '04x - ! " # $ % &
, "2x
'05x ( ) * + - / , '06x 0 1 2 3 4 5 6 7
"3x '07x 8 9 i - i ? , -
'lOx @ A B C D E F G "4x
'llx H I J K L M N 0 '12x P Q R S T U V W
"5x '13x X Y Z [ " 1
A
'14x , a b e d e f g
"6x '15x h i j k 1 m n 0
'16x p q r s t u v w " - .. "7x
'17x x y z - -
"8 "9 "A "B "c "D "E "F
Frank Mittelbach und Rainer Schopf haben - primlir fUr das neue Ie.Tpc - ein auf Design-Kriterien der Schriften (den Schriftattributen) basierendes logisches und automatisches Auswahlverfahren fUr Fonts entwickelt. Es ist unter dem schonen Namen "New Font Selection Scheme" (neues Auswahlverfahren fUr Fonts) bekannt und wird seit mehr als vier Jahren eingesetzt, wodurch es eine entsprechende StabiliHit erreicht hat.
In U\TEX wird inzwischen die Version 2 des NFSS (NFSS2) zur Fontverwaltung eingesetzt, bisher steht fUr Plain-TEX nur die Version 1 zur Verfiigung. Da aber ein Update auf NFSS2 vorgesehen ist, beschreiben wir jetzt bereits diese Version (in der Hoffnung, daB dieses Buch dann fUr Sie auch in der Zukunft noch niitzlich sein wird).
Schriftattribute Das NFSS2 verwendet fUnf beschreibende Merkmale zur Auswahl eines Fonts2. Es
sind dies die Attribute Kodierung, Familie, Serie, Schnitt und Grad, die in den folgenden Abschnitten vorgestellt werden.
2 Wir werden ab hier der Namensgebung in [5] folgen: Font beschreibt wie oben die konkrete Realisierung
eines Zeiehensatzes, wahrend Zeiehensatz und Sehrift die dureh die Sehriftattribute besehriebene logisehe Struktur besehreibt.
4.8 Ein neues Auswahlverfahren tilr Fonts (NFSS) 53
ecrmlOOO '0 '1 2 '3 '4 :5 '6 7
'OOx , , A - .. ~ 0 v
'Olx v - "Ox > . , < >
'02x " " « » - -
" "1x '03x 0 1 J ff fi fl ill fR
'04x ! " # $ % & ,
~ "2x '05x ( ) * / + , -
'06x 0 1 2 3 4 5 6 7
'07x 8 9 ? "3x
, < = > 'lOx @ A B C D E F G ']Jx H I J K M
"4x L N 0
'i2x P Q R S T U V W
'i3x X Y Z [ \ 1 A
"5x
'14x ,
a b c d e f g
'15x h i j k I "6x
m n 0
'16x p q r s t u v w
'17x { I } - "7x x y z -
20x A 1\ C C D E Ft (;
L N N 0 R "8x
21x L L f.)
22x it S S S T T U -0 Y Z Z Z i
"9x 23x IJ d §
24x 13, fl: C c d' e ~ g f
"Ax 25x r 1 n n IJ (5 f
26x t S S § e t 11 U
27x "Bx
y i Z Z ij i i £
30x A A A A A A lE <; E E E E I f I I
"Cx 3]x
32x D N- O 6 0 0 b CE
U -0- 0 tJ Y "Dx
33x 0 1> SS '34x a a a a a a re c;
"Ex 35x e e e e i f )' 1
36x 0 ii 0 6 {) 0 i5 00
37x P "Fx
0 U 11 U ii Y IS
"8 "9 "A "B "c "D "E "F
54 Kapitel 4. Die Schriften von T eX
Font-Kodierung Ftir TE,X ist ein Font eine Ansammlung von bis zu 256 Zeichen, die aufgrund ihrer
Position angeordnet sind. (Wie wir oben schon sagten: TE,X weiB nicht, wie die Zeichen aussehen, die gesetzt werden. Ligaturen und Kerning werden aufgrund von Tabellen berUcksichtigt, die in der tfm-Datei enthalten sind.)
Die Anordnung der Zeichen innerhalb eines Fonts wird als Kodierung des Fonts bezeichnet. Zur Zeit existieren bereits eine ganze Reihe von Kodierungen, von denen wir hier die beiden wichtigsten vorstellen wollen.
Die originale TE,X-Kodierung flir Textfonts wird als OTI-Kodierung bezeichnet. Sie umfaBt nur 128 Positionen (7-Bit) und bietet damit leider nieht ausreiehend Platz flir aIle in europaischen Sprachen verwendeten Sonderzeichen, so sind z. B. keine Umlaute enthalten, was zu den an anderer Stelle beschriebenen Problemen bei der automatischen Silbentrennung flihrt.
Wie Sie aber sehen, ist an der Position 25 das "B"-vorhanden, wir haben diese Tatsache oben ja bereits ausgenutzt, indem wir mit \chardef\ss=25 den Befehl \ss deklarierten.
Die Kodierung OTl ist flir die TE,X-Fonts leider nicht ganz einheitlich, besonders die Platze 11 bis 15,60,62,92 und 123 bis 125 werden bei anderen OTl-kodierten Fonts mit anderen Zeichen besetzt, wie z. B. der cmttlO-Font zeigt.
Zur Beseitigung dieser Probleme wurde 1990 auf der TE,X-Konferenz in Cork (Irland) ein neues und einheitliehes Kodierungsverfahren beschlossen. Es ist als Tl- oder CorkKodierung bekannt. Die Kodierung (oder TE,Xnisch ausgedrtickt: der Kodierungsvektor) umfaBt 256 Positionen. Damit erhalten erstmals auch unsere Umlaute eigene Positionen. Die ersten 128 Platze werden aber z. T. von anderen Zeichen belegt als dies bei den OTlkodierten (Computer Modem) Fonts der Fall war. Das B ist z. B. jetzt auf der Position 255 zu tinden, so daB es bei der Verwendung von Tl-kodierten Fonts \chardef=255 heiBen muB. (Ftigen Sie diese Zeile einfach am Anfang Ihres Quelltextes oder am Ende Ihrer Makrodatei ein, wenn Sie die Tl-kodierten Fonts verwenden wollen.)
Es gibt eine Variante der CM -Fonts, die mit dem Tl-Kodierungsvektor erstellt wurden, die sogenannten EC-Fonts. EC steht flir European Computer Modern Fonts oder Extended Computer Modern Fonts und enthalt die notwendigen Zeichen, urn die europaischen und viele weitere Sprachen (z. B. auch viele afrikanische) zu setzen.
Bei dieser Kodierung sind tibrigens auch die von uns in Abschnitt 2.2 schmerzlichst vermiBten Anflihrungszeichen, wie ", ", '" «, und » auf den Positionen (oktal) ) 020 bis ) 024 als eigenstandige Zeichen vorhanden. Dabei werden die «franzosischen» Anflihrungszeichen jetzt als Ligaturen verwaltet, d. h. » erzeugt automatisch » und « wird durch das Zeichen « ersetzt, und " setzt ". (Das Kodierungsattribut wird erst ab der Version 2 des NFSS explizit untersttitzt.)
Die TC-Fonts Weitere wichtige Textzeichen sind in den als Erganzung zu den EC-Fonts gestalteten
TC-Fonts (Text Companion) vorhanden. Diese Fonts verftigen tiber eine eigene Kodierung mit dem Namen TSI.
Wie Sie sehen, sind bisher noch nicht alle moglichen Positionen mit Zeichen belegt worden. Dadurch werden sich diese Fonts in der Zukunft noch verandern.
4.8 Ein neues Auswahlverfahren fOr Fonts (NFSS) 55
tcrmlOOO '0 '] '2 '3 '4 )" '6 '7
'OOx . , A - " - 0 v
"Ox 'O]x v -
, < I
'02x - -
" "ix '03x +--- --+
~ ~ ~ ~
'04x b $ I
"2x '05x * , = / '06x 0 1 2 3 4 5 6 7 "3x '07x 8 9 ( -- I 'lOx
'lJx (j 0 "4x
'i2x n 'l3x [ ] t 1
"5x
'14x * 010 t "6x
'15x @ CJD J '16x
'17x -"7x
=
'20x ~ ~ " " t + II %0
"8x '2lx • °C $ ~ f <C W N
'22x ([j P £ R t ~ d TM
"9x '23x %00 ~ 1B N~ /. e 0
SM
'24x f l ¢ £ D ¥ I § I "Ax '25x
.. © it @ ® ® ---,
26x ° ± 2 3 11 1
'27x 1 Q I 1 ! i "Bx
'* 4: « '32x x
'33x "Dx
'36x
'37x "Fx
"8 "9 "A "B "c "D "£ "F
Weitere, z. Z. implementierte Kodierungen sind z. B. in [4] und [5] angegeben.
56 Kapitel 4. Die Schriften von T E'<
Die EC-Fonts Die EC-Fonts werden nach einem ziemlich einheitlichen Schema benannt, das wir hier
kurz vorstellen wollen. Alle Font-Dateinamen bestehen aus weniger als neun alphanumerischen Zeichen, so daB sie unter allen Dateisystemen einheitlich sind.
Die ersten beiden Buchstaben sind immer "ec". Der (oder die beiden) folgenden Buch-staben beschreiben die Design-Parameter des Fonts:
• r steht fUr die normale (Roman-) Variante der Schrift
• b bezeichnet die fette Form
• bx die breit-fette Form
• sl steht fUr slanted, also geneigt
• b1 fUrfett-geneigt
• bm Fettschrift-Variante der Roman-Schrift
• dh "Dunhill"-Variante der Roman-Schrift (vergroBerte Oberlangen)
• cc bezeichnen Kapitalchen
• sc geneigte Kapitalchen
• xc breit-fette Kapitalchen
• ti kursive, geneigte (Roman-) Schrift
• bi kursive, breit-fette (Roman-) Schrift
• u kursive, ungeneigte (Roman-) Schrift
• ci geneigte Kursivschrift mit klassischen Serifen
• ss Sans-Serif-Schrift, Grotesk-Schrift, ohne Serifen
• si geneigte Sans-Serif-Schrift
• sx breit-fette Sans-Serif-Schrift
• so breit-fette, geneigte Sans-Serif-Schrift
• tt Typewriter (Schreibmaschinenschrift) fester Breite
• st geneigte Schreibmaschinenschrift fester Breite
• tc Kapitalchenvariante der Schreibmaschinenschrift fester Breite
• it kursive Schreibmaschinenschrift fester Breite
• vt Vario Typewriter (Schreibmaschinenschrift) variabler Breite
• vi kursive Schreibmaschinenschrift variabler Breite
• fb Fibonaccii-Schrift (Design-Parameter basieren auf den Fibonaccii-Zahlen)
• ff "Funny-Roman" Schrift mit verkiirzten Oberlangen
• f i kursive Variante der Schrift mit verkiirzten Oberlangen
Die letzten vier Zeichen der Fontnamen sind fUr die Angabe der DesigngroBe der Schrift reserviert. Hier wird die auch fUr den \magnification-Befehl giiltige Nomenklatur angewendet: 1000 entspricht dem Faktor 1 bezogen auf die SchriftgroBe lOpt.
4.8 Ein neues Auswahlverfahren fOr Fonts (NFSS) 57
0500 meint folglich den 5 pt-Schriftgrad, und 3583 entspricht einem Grad von 35 pt (exakt 35,83) pt.
Der Befehl zum Einstellen des Kodierungsvektors heiBt:
\fontencoding{Kodierung}
Neben der verbesserten Silbentrennung, die durch die Verwendung des Tl-Kodierungsvektors moglich wird, konnen fast aIle EC-Fonts auch skaliert werden. Eine typische Fontdatei (hier flir ecrm1000) enthalt namlich nur folgende Zeilen:
% This is ecrm1000.mf in text format as of January, 19, 1997 if unknown exbase: input exbase fi; gensize:=10; generate ecrm
Die DesigngroBe des Fonts wird in der Einheit pt nach dem Schliisselwort gensize : = angegeben. Hier sind nahezu aIle Angaben moglich, die Benennung ist jedoch nur flir Fonts bis zu einer GroBe von 99.99 pt definiert. Neben sehr groBen Fonts konnen mit diesem Verfahren auch sehr genau abgestufte EntwurfsgroBen definiert werden, wodurch die Qualitat der Fonts entsprechend erhoht wird.
Wird am Anfang der Datei noch die Zeile
input outlines outlining:=true;
hinzugefligt, so wird die UmriBvariante (siehe Beispiel auf Seite 42) der Schrift erzeugt. (Notwendig ist daflir die auf Seite 58 dargestellte Datei outline. mf.)
Familie Bei der obigen Beschreibung der EC-Fonts flillt auf, daB flir beinahe jede Grundschrift
mindestens eine Variante existiert, meisten sind es aber wesentlich mehr. Die Grundschriften der Tf¥C-Fonts sind:
Roman (cmr), Sans Serif (cmss), Typewriter (cmtt), Vario-Typewriter (cmvtt), FunnyRoman (emfr), Fibonaccii (emfib) und Dunhill (emdh).
Diese Grundschriften werden als Schriftfamilien bezeichnet. Die Bezeichnung dieser Schriftfamilien erfolgt mit dem Prefix cm, da sie auf den Computer Modem Fonts bas iereno AIle diese Schriftfamilien sind sowohl als OTl-kodierte Fonts (cmr5 .. cmr35, cmss5 .. cmss35, cmtt .. , cmfib, cmdh, ... ), als auch mit dem Kodierungsvektor Tl (ecrm0500 .. ecrm3583, ecss0500 .. ecss3583, ectt .. , ecfb, ecdh, ... ) verfiigbar. Die Angabe des Vektors entscheidet, ob der cm-Font oder die ec-Variante zum Satz verwendet wird.
AIle Fonts einer Familie unterliegen dem gleichen Design-Konzept und sind als zusammengehorig zu erkennen.
Der Befehl zur Auswahl der Schriftfamilie lautet:
\fontfamilie{FamiLie}
58 Kapitel 4. Die Schriften von T p<
% This is OUTLINES.MF as of 5/7/89 % Outline routine - by Doug Henderson Minor enhancements % for ww laser printers and MFT compatibility Don Hosek
boolean outlining; outlining:=false;
message"Loading the font outline macros."; def outline = if outlining: cull currentpicture keeping (1,infinity); picture v; v:=currentpicture; cull currentpicture keeping (1,1) withweight 3; addto currentpicture also v - v shifted right -v shifted left - v shifted up - v shifted down;
cull currentpicture keeping (1,4); if (pixels_per_inch >= 1270) v:=currentpicture; addto currentpicture also v shifted right + v shifted left + v shifted up + v shifted down;
cullit; if (pixels_per_inch >= 1270) v:=currentpicture; addto currentpicture also v shifted right + v shifted left + v shifted up + v shifted down;
cullit; elseif (pixels_per_inch >= 600)
or (write_white=1) : % {MF \mode=rcc; write_white:=1 input fn} addto currentpicture also currentpicture shifted left; addto currentpicture also currentpicture shifted up;
fi showit;
fi enddef; extra_endchar:=extra_endchar & "outline;";
if unknown write_white: write_white:=O; fi
Eine METAFONT-Routine zum Kreieren von UmriBvarinaten der CM- und EC-Fonts. Dieser Quelltext ist auf den CTAN-Servem unter dem Namen outlines .mf in dokumentierter Form vorhanden.
4.8 Ein neues Auswahlverfahren fOr Fonts (NFSS) 59
Serie Schriftserien bezeichen die groBen Design-Varianten einer Schrift innerhalb einer Fa
milie. Sie beeinftuBen die Laufweite der Schrift, also den Platz, den ein mit dieser Schrift gesetzter Text einnimmt. Gewohnlich werden die folgenden Serien unterschieden:
Strichstiirke Dickte ultramager ul ultraschmal 50% ue extramager el extraschmal 62.5% ee mager 1 schmal 75% c halbmager sl halbschmal 87.5% se normal m normal 100% m halbfett sb halbbreit 112.5% sx fett b breit 125% x extrafett eb extrabreit 150% ex ultrafett ub ultrabreit 200% ux
Normalerweise, aber nicht notwendigerweise, korrespondieren die Strichstiirke und die Dickte (Laufweite) einer Schrift. Wenn beide Merkmale einer Schrift m sind, wird nur ein m angegeben.
Die EC-Fonts sind bisher in folgenden Serien vorhanden:
• emr-Familie: normal, fett, breitfett
• emss-Familie: normal, fett, breitfett, halbfett-schmal
• emtt und andere Familien: normal
Der Befehl zum Einstellen der Schriftserie lautet:
\fontseries{serie}
Schriftschnitt Der Schriftschnitt beschreibt die Ausfiihrung (z. B. ihre Fonn, Neigung, ... ) der ein-
zelnen Zeichen der Schrift. ublich sind die folgenden Schnitte:
• normal, aufrecht
• italic, geneigt-kursiv
• slanted, geneigt
• se Small Caps, Kapithlchen
• ui upright italic, aufrecht-kursiv
• 01 outlined, UmriB-Schrift
Die beiden letzten Schnitte sind eigentlich nur beim Computerdrucksatz vorhanden. Nichtsdestotrotz stehen sie dem TEX-Anwender zur Verfugung. 1m Prinzip sind viele weitere Schriftschnitte denkbar, so k6nnte man z. B. farbige Schriften als Schnitte deklarieren.
Der Befehl zum Einstellen des Schriftschnittes lautet:
\fontshape{Schriftschnitt}
60 Kapitel 4. Die Schriften von T g<
Schriftgrad
Der Schriftgrad bezeichnet die GrofJe der Schrift. Allerdings handelt es sich dabei urn kein genormtes MaS - also nicht etwa die Hohe der GroBbuchstaben - sondem urn eine mehr intuitive Angabe. Nicht aIle lOpt Fonts passen zueinander:
Dies ist der Dunhill-Font in 10 pt - diQS dQf Funny-RoffiQ,n-Font in 10 pt.
Der DurchschufJ (der Zeilenabstand) ist unmittelbar an die verwendete SchriftgroBe gekoppelt, deshalb wird dieser auch bei jeder SchriftgroBenanderung mit angegeben.
Der Befehl zum Einstellen des Schriftgrades lautet:
\fontseries{Schrijtgrad}{Durchschufl}
Anwendung des NFSS
Die oben beschriebenen Befehle stellen den aktuellen Fontvektor ein, ohne jedoch die Verwendung des neuen Vektors zu forcieren. Dazu wird der Befehl \selectfont aufgerufen.
\fontxx\selectfont
Zuerst wird ein neuer Fontvektor definiert, wofUr ein oder mehrere der oben beschriebenen \fontxx-Befehle aufgerufen werden. Danach wird dieser Vektor aktiviert, und TPC bestimmt den zu den Schriftattributen passenden Font, ladt ihn, wenn notwendig, und verwendet ihn.
Ein Beispiel: Der folgende Text solI mit einem serifenlosen Font in halbfetter Schmal-schrift in 12 pt GroBe (bei 14pt DurchschuB) gesetzt werden.
\fontfamily{cmss}% serifenloser Font \fontseries{sbc}% fett, aber schmal: sb c \fontshape{n}% normaler Schnitt \fontsize{12}{14}% 12pt Font, 14pt Durchschu\ss
Schmale, fette Schrift, 12 pt graB: realisiert durch cmssdc12.
Was ist geschehen? Wir haben mit den \fontxx-Befehlen einen Font anhand seiner Schriftattribute ausgewahlt. Das NFSS hat entschieden, daB der Font cmssdc12 diesen Anforderungen am besten entspricht, und ihn zum Satz verwendet.
Das eigentliche Geheimnis der Fontauswahl liegt in der Definition der zum System gehOrenden Fonts. Das NFSS2 verwendet fd-Dateien fUr die Zuordnung von Schriftattributen zu den vorhandenen Fonts. Bei der Version 1 des NFSS findet diese Zuordnung noch zentral in einer Datei Namens fontdef . tex statt. Hier ist ein kleiner Ausschnitt aus dieser Datei:
4.8 Ein neues Auswahlverfahren tilr Fonts (NFSS)
\subst@fontshape{cmss}{m}{sc}{cmr}{m}{sc} %%%%%%%% semibold condensed series \new@fontshape{cmss}{sbc}{n}{%
<5>cmssdc8 at5pt% <6>cmssdc8 at6pt% <7>cmssdc8 at7pt% <8>cmssdc8% <9>cmssdcl0 at9pt%
<10>cmssdc10% <11>cmssdcl0 atl0.95pt% <12>cmssdc12% <14>cmssdc14 at14.4pt% <17>cmssdc17 at17.28pt% <20>cmssdc20 at20.74pt% <25>cmssdc24 at24.88pt% H}
%%%%%%%%% bold extended series \new@fontshape{cmss}{bx}{n}{%
<5>cmssbxl0 at5pt% <6>cmssbxl0 at6pt% <7>cmssbxl0 at7pt%
61
Mit dem Befehl \subst@fontshape wird ein neuer Schriftschnitt dem NFSS bekannt gegeben. Dieser Schriftschnitt wird fUr die Attribute cmss/sbc/n durch Fonts aus der Fontfamilie cmssdc reprasentiert. FUr kleine Grade (5 pt bis 7 pt) wird der Font cmssdc8 verwendet, der linear skaliert wird. (Hier k6nnte man bei der Verwendung von SauterFonts die entsprechenden, in der Designgr6Be skalierten Fonts einsetzen, analog zu den folgenden Zeilen).
Die Grade ab 8 pt sind durch eigene tfm-Dateien realisiert, T£X verwendet deshalb jeweils die entsprechenden Fonts cmssdc8 bis cmdcss24. Sie k6nnen diese Liste beliebig erweitem, als z. B. fUr 35 pt die Zeile <35> cmdcss35 einfUgen. Oder auch Ee-Fonts hier eintragen: <35> ecssdc3583, wenn die Datei ecssdc3583. mf den entsprechenden Font enthalt und ecssdc3583 . tfm vorhanden ist.
Fontsubstitution Was geschieht, wenn eine bestimmte Kombination von Schriftattributen kein Pendant
hat? Hier tritt die automatische Fontsubstitution des NFSS in Kraft. Zuerst wird das shape-Attribut durch einen Vorgabewert (n) ersetzt. Das NFSS sucht dann also einen Font mit den gleichen Attributen fUr Jami Ly und series, aber shape n. Wird auch fUr diese Kombination kein Font gefunden, so wird das series-Attribut - diesmal durch m - ersetzt und emeut ein Font bestimmt. Bleibt auch diese Suche erfolglos, so wird das
62 Kapitel 4. Die Schriften von T EX
fami Ly-Attribut auf cmr gesetzt und der entsprechende CM-Font (also meistens cmr10) verwendet.
In dem Beispiel oben sahen Sie, wie mit dem Befehl
\subst@fontshape{cmss}{m}{sc}{cmr}{m}{sc}
eine Ersetzung definiert wurde.
Installation des NFSS
Die Installation des NFSS ist einfach. Sie benotigen dafiir die folgenden auf den CTANServem vorhandenen Dateien (im Verzeichnis macros/plain/ contrib/nfss-plain): plainfsl. tex, newplffont. sty und fontdef . tex (die Sie selbst modifizieren konnen).
Dann erzeugen Sie ein Format in der tiblichen Weise:
initex plain
Die Shell zeigt dabei etwa:
(plain.tex Preloading the plain format: codes, registers, fonts, more fonts,
*
Der Prompt fordert Sie auf, einen Befehl einzugeben. Jetzt geben Sie folgendes an:
\input plainfsl.tex (plainfsl.tex File: 'plainfsl' File: 'fam' English Documentation
(fontdef.tex
0.01 <91/8/20> (WGS) v1.3a <91/11/27> (FMi and RmS)
<90/01/28> (FMi and RmS)
File: 'fontdef.tex' v1.1k <91/11/26> (FMi and RmS)
Includes Font/Shape Definitions for:
Computer Modern Standard Fonts (plus down scaled shapes),
Concrete Roman Fonts. File: 'newplffont' 0.02 <91/12/12> (WGS)
Choose oldlfont.sty or basefont
4.9 Ubungen
(newplffont.sty
) File: 'newplffont' 0.02 <91/12/12> (WGS)
Choose oldlfont.sty or basefont (newplffont.sty Style-Option: 'newlfont' v1.3a <91/11/27> (FMi and RmS) English Documentation <91/03/30> (FMi and RmS) )
Add extra material to the format here: Style-Option: 'newlfont' v1.3a <91/11/27> (FMi and RmS) English Documentation <91/03/30> (FMi and RmS) )
Add extra material to the format here:
) Beginning to dump on file plain.fmt
Damit wurde das neue Format erzeugt.
Dokumentation des NFSS
63
Das NFSS ist eine wirklich gut gelungene Schnittstelle zur Auswahl von Fonts. (Die ganze Leistungsfahigkeit zeigt sich bei bei der Verwendung von PostScript-Fonts, die sich mit dem NFSS sehr leicht in das System integrieren lassen.)
Die Dokumentation des NFSS in der Version 1 zur Anwendung mit Plain-T}jX findet in den Dateien [readme.plf], [nfssinst.tex], [nfss.tex] und [driver.tex] statt. Bei Problemen lesen Sie [nfssprob. tex] und die anderen ReadMe-Dateien in dem Verzeichnis.
[4] stellt alle wesentlichen Informationen zu dem Thema (allerdings auf dem Stand von 1994, in zwischen sind einige Erganzungen und Anderungen vorgenommen worden) zur Verfiigung. Es handelt sich hierbei urn eine Referenz vom Entwickler-Team selbst.
[5] enthalt eine aktuelle und ausfiihrliche praktische Einfiihrung in das Thema. [usrguide. tex] (Bestandteil der U\TEX-Distribution) enthalt die neuesten technischen
Informationen in knapper Form.
4.90bungen
Eine umsichtige Auswahl der Fonts macht eine bibliographische Referenz wie die in Abschnitt 2.5 lesbarer. Formatieren Sie, unter Verwendung der Befehle zum Fontwechsel, die rumanische Referenz in einem Stil, wie er oft in Bibliographien gebraucht wird:
GEORGESCU, V. A., Bizantul §i institutiile romane§ti pfna la mijlocul secolului al XVIII-lea (Byzanz und die rumiinischen Institutionen bis zur Mitte des 18. Jahrhunderts). Bucure§ti, Ed. Academiei RSR, 1980. Reviewed by C. R. Zach, in Sudost-Forschungen, 40, 1981, pp. 434-435.
64 Kapite/ 4. Die Schriften von T £X
Hier ist eine mogliche Losung:
\font\sc=cmcsc10 {\sc Georgescu, V. A.}, {\it Bizan\c tul \c si institu\c tiile rom\-ane\c sti p\-\i n\u a la mijlocul secolului al XVIII-lea\l} (Byzanz und die rum\" anischen Institutionen bis zur Mitte des 18.-Jahrhunderts). Bucure\c sti, Ed.-Academiei RSR, 1980. Reviewed by C. R. Zach, in {\it S\"udost-Forschungen}, {\bf 40}, 1981, pp.-434--435.
Kursiv-Korrektur Eine Kontrollsequenz haben wir vorher noch nicht besprochen: \/. Haben Sie ein
Wortin Kursivschrift vor einem Wort in einem normalen (aufrechten, nicht geneigten) Font, so erscheinen diese beiden, wegen der Schrage des ersten Wortes, oftmals zu nahe beieinander zu stehen. Der letzte Satz z. B. wurde als . .. {\i t Wort} in ... eingegeben. Hatten wir stattdessen
{\it Wort\/} in ...
geschrieben, so ware das Resultat besser gewesen: Wort in. 1m allgemeinen sollte man diese Kursiv-Korrektur immer dann einsetzen, wenn man von einem geneigten zu einem normalen (aufrechten) Font wechselt.