+ All Categories
Home > Documents > TEX Praxis || Die Schriften von TEX

TEX Praxis || Die Schriften von TEX

Date post: 10-Dec-2016
Category:
Upload: silvio
View: 220 times
Download: 2 times
Share this document with a friend
26
4 Die Schriften von TEX 4.1 lEX's Fonts Plain-TEf( gibt Ihnen die Moglichkeit, mehrere verschiedene Arten von Fonts (Schrift- arten, 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 vergro- Berte Laufweite) und unslanted italic (nicht-geneigte Kursivschrift), sowie Schreibma- schinenschriften 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. verwen- den. 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
Transcript
Page 1: TEX Praxis || Die Schriften von TEX

4 Die Schriften von TEX

4.1 lEX's Fonts

Plain-TEf( gibt Ihnen die Moglichkeit, mehrere verschiedene Arten von Fonts (Schrift­arten, 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 vergro­Berte Laufweite) und unslanted italic (nicht-geneigte Kursivschrift), sowie Schreibma­schinenschriften 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. verwen­den.

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

Page 2: TEX Praxis || Die Schriften von TEX

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 bes­sere Moglichkeit: Setzen Sie \sevenrm und das entsprechende Wort in eine Gruppe. Wenn TEX die Gruppe verHiBt, kehrt es automatisch zum vorher verwendeten Font zu­rtick.

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

Page 3: TEX Praxis || Die Schriften von TEX

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 la­den 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,

Page 4: TEX Praxis || Die Schriften von TEX

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 italic­Font 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.

Page 5: TEX Praxis || Die Schriften von TEX

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 mathemati­schen 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.

Page 6: TEX Praxis || Die Schriften von TEX

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 Treiber­Programmen bekommen, die die Zeichen zu Ihrem Drucker schicken, wenn diese keine Informationen iiber die erforderlichen VergroBerungen finden konnen. Mit anderen Wor­ten, wenn in Ihrem System keine Datei mit den Bitmaps fUr 12-Punkt groBes cmr10 vor­handen 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 Zwischen­raume 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.

Page 7: TEX Praxis || Die Schriften von TEX

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 Skalie­rungsfaktor, 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 Ein­sehrankung: 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 kombi­niert. Wenn Sie z. B. den oben mit \magstepl definierten \twelverm-Font in einem Dokument verwenden, das mit \magnification=\magstepl beginnt, so wird das Er­gebnis 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 weiterge­hende Skalierfahigkeiten verftigen, verwendet, wenn eine Ausgabe vergroBert oder ver­kleinert 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) vorgenom­men werden konnen. Lesen Sie die Besehreibung Ihres DVI -Treiberprogramms, urn des­sen 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:

Page 8: TEX Praxis || Die Schriften von TEX

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 Mathematik­modus. 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 Mitglie­der 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 "nor­male" 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 regi­striert wurde, tiberhaupt keine Wirkung im Mathematikmodus zeigt. FUr einen Fontwech­sel 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:

Page 9: TEX Praxis || Die Schriften von TEX

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 Mathe­matik-Familie andert, aber nieht den aktuellen Font. Andererseits arbeitet \oldstyle in­nerhalb 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 aus­dehnbaren 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 ande­ren 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 Num­mer 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 mathe­matisehen Formeln verwenden.

Page 10: TEX Praxis || Die Schriften von TEX

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 an­derem auch Fraktur oder "Gotisch" (eufm) und blackboard bold, die bei einigen Mathe­matikern beliebt sind: A, lB, ... , Z (msbm-Fonts; s. im Glossar unter \bb). Der Vollstlin­digkeit halber geben wir die Definition eines Makros \frak an, das sowohl im Mathema­tikmodus 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 For­meln 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,

Page 11: TEX Praxis || Die Schriften von TEX

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 wir­kungslos.

• 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 Ma­kropakete 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 ein­geben, wie z. B. \tm und \frak. Auch hier sollten Befehle wie \newfam\tmfam oder

Page 12: TEX Praxis || Die Schriften von TEX

50 Kapitel 4. Die Schriften von T eX

\font\tentm=Times at 10 pt nicht Eingang in \tenpoint finden, sondern vorange­stellt 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

Page 13: TEX Praxis || Die Schriften von TEX

4.8 Ein neues Auswahlverfahren fOr Fonts (NFSS) 51

Familien \famO, \i tfam und \bffam umdefinierten. Der Grund dafUr ist, daB PostScript­Fonts 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 Ma­kroaufruf benotigt:

\chardef=25 oder \chardef=' 31 oder \chardef=" 19.

Analog konnen mit \mathchar und \mathchardef Befehle fUr Zeichen im Mathema­tikmodus 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 er­innern 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 Setzka­sten 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.

Page 14: TEX Praxis || Die Schriften von TEX

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 automa­tisches 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 ein­gesetzt, 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.

Page 15: TEX Praxis || Die Schriften von TEX

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

Page 16: TEX Praxis || Die Schriften von TEX

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 be­rUcksichtigt, die in der tfm-Datei enthalten sind.)

Die Anordnung der Zeichen innerhalb eines Fonts wird als Kodierung des Fonts be­zeichnet. 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 Cork­Kodierung 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 OTl­kodierten (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» Anflih­rungszeichen 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.

Page 17: TEX Praxis || Die Schriften von TEX

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.

Page 18: TEX Praxis || Die Schriften von TEX

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 alphanume­rischen 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 Nomen­klatur angewendet: 1000 entspricht dem Faktor 1 bezogen auf die SchriftgroBe lOpt.

Page 19: TEX Praxis || Die Schriften von TEX

4.8 Ein neues Auswahlverfahren fOr Fonts (NFSS) 57

0500 meint folglich den 5 pt-Schriftgrad, und 3583 entspricht einem Grad von 35 pt (ex­akt 35,83) pt.

Der Befehl zum Einstellen des Kodierungsvektors heiBt:

\fontencoding{Kodierung}

Neben der verbesserten Silbentrennung, die durch die Verwendung des Tl-Kodierungs­vektors moglich wird, konnen fast aIle EC-Fonts auch skaliert werden. Eine typische Font­datei (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 Grundschrif­ten der Tf¥C-Fonts sind:

Roman (cmr), Sans Serif (cmss), Typewriter (cmtt), Vario-Typewriter (cmvtt), Funny­Roman (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 ie­reno 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 zusam­mengehorig zu erkennen.

Der Befehl zur Auswahl der Schriftfamilie lautet:

\fontfamilie{FamiLie}

Page 20: TEX Praxis || Die Schriften von TEX

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 doku­mentierter Form vorhanden.

Page 21: TEX Praxis || Die Schriften von TEX

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 de­klarieren.

Der Befehl zum Einstellen des Schriftschnittes lautet:

\fontshape{Schriftschnitt}

Page 22: TEX Praxis || Die Schriften von TEX

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 aufge­rufen.

\fontxx\selectfont

Zuerst wird ein neuer Fontvektor definiert, wofUr ein oder mehrere der oben beschrie­benen \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 Schriftat­tributen 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:

Page 23: TEX Praxis || Die Schriften von TEX

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 Sauter­Fonts 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

Page 24: TEX Praxis || Die Schriften von TEX

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 CTAN­Servem vorhandenen Dateien (im Verzeichnis macros/plain/ contrib/nfss-plain): plainfsl. tex, newplffont. sty und fontdef . tex (die Sie selbst modifizieren kon­nen).

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

Page 25: TEX Praxis || Die Schriften von TEX

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 Ver­zeichnis.

[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 seco­lului 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.

Page 26: TEX Praxis || Die Schriften von TEX

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 ... einge­geben. 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.


Recommended