\chapter{Virtuelle Zeichens"atze}
Beginnend mit Version~3.0 der Treiber sind \dvi\ und \dvilw\ in der
Lage, virtuelle Zeichens"atze zu verarbeiten. Damit steht eine
einfach zu bedienende und elegante M"oglichkeit zur Verf"ugung,
verschiedene Zeichensatzbeschreibungen mit \dvi-Treibern zu
verwenden, ohne beim Schreiben mit \TeX\ auf spezielle Macros
zur"uckgreifen zu m"ussen.

Bei virtuellen Zeichens"atzen handelt es sich um ein
Interface zwischen der Codierung der Zeichen, wie sie \TeX\ handhabt
und der Art und Weise, wie das Ausgabeger"at dieses Zeichen
schlie"slich darstellt. Im einfachsten Fall handelt es sich also nur
um eine Zwischenstufe in der Zeichensatzbearbeitung, die bei "Ubersetzung
der {\tt .dvi}-Datei die Umsetzung des Codes des aktuellen Zeichens in den
entsprecheden Code der {\tt .tfm}-Datei vornimmt. In nicht so einfachen F"allen
k"onnen in der Beschreibung virtueller Zeichens"atze auch rekursive
Aufrufe von Zeichensatzbeschreibungen, Linienkommandos oder sogar
\verb|\special|-Kommandos f"ur den \dvi-Treiber stehen. Eine Spezifikation
der Beschreibungssprache {\tt VPL} kann man in den \TeX hax~1990,
Issue 11--13 oder in der TUGboat v.\ 11, no.\ 1 vom April 1990,
Seite 13--23 finden. Die Programme zur Bearbeitung der {\tt VPL}-Sprache
--- {\tt VFTOVP} und {\tt VPTOVF} --- gibt es ja schon seit einiger Zeit
mit jeder ordentlichen \TeX-Implementierung.

Zur Motivation --- nach dem Motto \glqq Brauche ich das denn?\grqq ---
stellen sie sich folgende Situation vor: Sie haben einen \ps-Dru"cker,
dazu teuer gekaufte Zeichens"atze wie {\tt Garamond} oder {\tt Lucida}
und ein \TeX-System mit einem Treiber, der {\em keine\/} virtuellen
Zeichens"atze versteht. Im g"unstigsten Fall hat dann jemand per Hand
bzw.\ mit {\tt PLTOTF} {\tt TFM}-Dateien gestrickt und Sie k"onnen Ihren
Text mit den kostbaren Zeichens"atzen schreiben, solange Sie keine
Zeichen wie \glqq "s\grqq\ oder \glqq "A\grqq\ verwenden, die von \TeX\ und
\ps\ unterschiedlich codiert werden. Im "Ubrigen fehlt Ihnen eine
Preview-M"oglichkeit, sofern Sie nicht ein Display-\ps-System zur
Verf"ugung haben. Jeder, der schon einmal mit \TeX\ gearbeitet hat, wei"s,
wie unbefriedigend und papierfressend eine solche Arbeitsweise w"are \dots

Das erste uns bekannte Treiberprogramm, das in diesem Zusammenhang Abhilfe
schaffte, war {\tt DVIPS} von Tomas Rokicki. Durch Verwendung virtueller
Zeichens"atze war jetzt immerhin die Verwendung von Sonderzeichen m"oglich.
Zudem wird mit diesem Treiber ein Programm ({\tt AFM2TFM}) mitgeliefert,
das die Zeichensatzmetrikbeschreibung und die Zeichensatzcodierung der
\ps-Zeichens"atze in den {\tt .AFM}-Dateien in einen virtuellen Zeichensatz
und eine zugeh"orige {\tt .TFM}-Datei "ubersetzt. Fehlt also nur noch ein
Preview \dots

Basierend auf der Arbeit von Rokicki und Knuth wurde f"ur \dvilw\ {\em und\/}
\dvi\ die Verwendung virtueller Zeichens"atze implementiert. Damit ist ein
weiterer Schritt in Richtung Benutzerfreundlichkeit getan, denn jetzt
braucht man nur noch entsprechende virtuelle Zeichens"atze, die die Umsetzung
der \ps-Zeichens"atze auf die Computer Modern Zeichens"atze erledigen, um mit
Bildschirmpreview und Dru"ckerausgabe mit \ps-Zei\-chen\-s"at\-zen zu
arbeiten. Es wird "ubrigens noch ein Freiwilliger f"ur die Anpassung von
{\tt AFM2TFM} gesucht!

{\bf Da uns momentan die Verwendung von \ps-Zeichens"atzen als sinnvollste Anwendung
virtueller Zeichens"atze erscheint und Tomas Rokicki auf diesem Gebiet Pionierarbeit
geleistet hat, orientiert sich der Rest dieses Abschnittes eng an die Anleitung
zu {\tt DVIPS} und {\tt AFM2TFM} bzw.\ ist sogar eine direkte "Ubersetzung.
Warum das Rad neu erfinden?}

\section{{\tt AFM2TFM}}
Damit \dvi\ und \dvilw\ mit virtuellen Zeichens"atzen arbeiten k"onnen, m"ussen
zun"achst die zugeh"origen {\tt .vf} und ggf.\ die zugeh"origen {\tt .tfm}-Dateien
vorhanden sein. F"ur \ps-Zeichens"atze liegt die ben"otigte Information in
Form von {\tt .afm}-Dateien vor, die mittels {\tt AFM2TFM} in die entsprechenden
{\tt .vf} und {\tt .tfm}-Dateien umgesetzt wird. Angenommen, Sie wollen mit
dem Palatino-Roman Zeichensatz in \TeX\ arbeiten, dann m"ussen Sie zun"achst die
von \TeX\ und \dvi\ bzw.\ \dvilw\ ben"otigten Zeichensatzinformationen mit
dem Kommando

\begin{compout}
afm2tfm Palatino-Roman -v pplr rpplr
\end{compout}

erzeugen. Im folgenden wird "ubrigens von einem Betriebssystem ausgegangen, das zwischen
Klein- und Gro"sschreibung unterscheidet und beliebige Zeichen und Dateinamensl"angen
verkraftet. F"ur Systeme mit z.B.\ $8+3$-Beschr"ankungen wie {\tt MS-DOS} lesen Sie
bitte Abschnitt~\ref{lafontnames}. Die virtuelle Zeichensatzinformation in der
{\tt VPL}-Sprache mu"s dann noch mittels

\begin{compout}
vptovf pplr.vpl pplr.vf pplr.tfm
\end{compout}

in die f"ur den \dvi-Treiber verst"andliche Bin"arform "ubersetzt und eine f"ur
\TeX\ ben"otigte {\tt .TFM}-Datei erzeugt werden. Die gerade erzeugten
Dateien {\tt pplr.vf},{\tt pplr.tfm} und {\tt rpplr.tfm} m"ussen dann noch in die
Unterverzeichnisse
kopiert werden, wo sie von \TeX\ bzw.\ \dvi/\dvilw\ erwartet werden (Je nach
Betriebssystem verschieden. Bitte Installationsanleitungen lesen). Jetzt k"onnen Sie
den Palatino-Roman Zeichensatz in \TeX\ mit

\begin{quote}
\begin{verbatim}
\font\myfont=pplr at 11pt
{\myfont Dies ist jetzt die PostScript-Schrift
Palatino-Roman mit Umlauten wie "A, Sonderzeichen
wie "s und Ligaturen!}
\end{verbatim}
\end{quote}

verwenden und erhalten folgenden Ausdruck:

\begin{quote}
{\myfont Dies ist jetzt die PostScript-Schrift Palatino-Roman\\
mit Umlauten wie "A, Sonderzeichen wie "s und Ligaturen!}
\end{quote}

Bitte beachten Sie, da"s eigentlich zwei Varianten der Palatino-Roman Schrift
f"ur \TeX\ existieren\seealso{\ref{lafontnames}}, n"amlich die Eins-zu-Eins-Umsetzung
ohne spezielle Satzinformation {\tt rpplr} und der virtuelle Zeichensatz {\tt pplr}
mit der Umsetzung f"ur Umlaute, Ligaturen, etc.

Um das Dokument mit diesem Zeichensatz schlie"slich zu drucken, mu"s noch
in der Datei {\tt DVILW.MAP} ein Eintrag stehen/nachgetragen werden, der die
Beziehung zwischen dem \ps-Namen Palatino-Roman und der Eins-zu-Eins-Font-Metrik
{\tt rpplr.tfm} herstellt. Es ist "ubrigens wichtig, die Eins-zu-Eins-Umsetzung
anzugeben, da die Umsetzung der Zeichencodes in der {\tt .dvi}-Datei durch
den virtuellen Zeichensatzmechanismus in genau diese Eins-zu-Eins-Umsetzung erfolgt!
Die Eintr"age in {\tt DVILW.MAP} haben folgende Form:

\begin{compout}
rpplr = Palatino-Roman
\end{compout}

Der erste Eintrag ist der Namen der {\tt .TFM}-Datei der Eins-zu-Eins-Umsetzung
ohne Extension, der zweite der Namen des Zeichensatzes, wie er mit dem
{\tt findfont}-\ps-Operator gefunden werden kann (ohne f"uhrenden \glqq /\grqq). 

\section{Namenskonventionen f"ur Zeichens"atze}\label{lafontnames}
Im vorigen Abschnitt haben Sie schon die Datei {\tt DVILW.MAP} kennengelernt.
Die beiden Eintr"age jeder Zeile wurden als Dateiname einer \TeX-{\tt TFM}-Datei
und als Name eines \ps-Zeichensatzes vorgestellt. Vielleicht haben Sie sich
inzwischen schon "uber den etwas kryptisch anmutenden Namen des ersten Eintrags
gewundert, doch hinter dieser willk"urlich anmutenden Buchstabenkombination
steht ein ausgkl"ugeltes Namenssystem, das Benutzern antiquierter Betriebssysteme
wie {\tt MS-DOS} erlaubt, mit den Beschr"ankungen der Dateinamensl"ange
trotzdem eine F"ulle von Informationen zu codieren. Mit anderen Worten: Der
erste Eintrag ist ein tats"achlicher Dateiname, der auch als Alias f"ur den
tats"achlichen (und l"angeren) \ps-Namen dient.

Die Initiatoren dieses Namenssystems waren --- wieder einmal --- Mittelbach
und Sch"opf, deren Artikel in der TUGboat, v.~11, no.~2 vom Juni~1990 Karl
Berry zu der vorliegenden Namenskonvention inspiriert hat.

Die acht Buchstaben des Basisdateinamens sind folgenderma"sen aufgeteilt:

\begin{compout}
FTTWVEDD
\end{compout}

wobei die einzelnen Buchstaben folgende Information codieren (Liste der
Abk"urzungen f"ur \ps\ folgt):

\begin{itemize}
\item[{\tt F}]
Foundry. Hersteller des Zeichensatzes. Wird ggf.\ weggelassen.

\item[{\tt TT}]
Typeface name. Name des Zeichensatzes.

\item[{\tt W}]
Weight. Die Dicke der einzelnen Zeichen.

\item[{\tt V}]
Variant. Verschiedene Auspr"agungen desselben Zeichensatzes wie z.B.\ {\it
Italic\/} oder {\sc Small Caps}. Die Auspr"agung wird weggelassen, falls 
sie und der folgende Parameter Expansion \glqq normal\grqq\ sind.

\item[{\tt E}] 
Expansion. Die Breite der Zeichen. Wird weggelassen, falls \glqq normal\grqq.

\item[{\tt DD}]
Design size. Punktgr"o"se der Zeichen. Wird weggelassen, falls alle
Zeichensatzgr"o"sen durch Skalieren aus einer einzigen {\tt TFM}-Datei
hervorgehen. 
\end{itemize}

\subsection{Foundry}
Die Liste der Hersteller von Zeichens"atzen:

\begin{tabular}{ll}
a&Autologic\\
b&Bitstream\\
c&Agfa-Compugraphic\\
g&Free Software Foundation ({\tt g} for GNU)\\
h&Bigelow \& Holmes (with apologies to Chuck)\\
i&International Typeface Corporation\\
p&Adobe ({\tt p} for PostScript)\\
r&reserved for use with virtual fonts; see below\\
s&Sun\\
\end{tabular}

\subsection{Typeface Families}
Die Liste der Zeichensatznamen:

\begin{tabular}{llll}
ad&Adobe Garamond&go&Goudy Oldstyle\\
ag&Avant Garde&gs&Gill Sans\\
ao&Antique Olive&jo&Joanna\\
at&American Typewriter&lc&Lucida\\
bb&Bembo&lt&Lutetia\\
bd&Bodoni&nc&New Century Schoolbook\\
bg&Benguiat&op&Optima\\
bk&Bookman&pl&Palatino\\
bl&Balloon&pp&Perpetua\\
bv&Baskerville&rw&Rockwell\\
bw&Broadway&st&Stone\\
cb&Cooper Black&sy&Symbol\\
cl&Cloister&tm&Times\\
cr&Courier&un&Univers\\
cn&Century&uy&University\\
cs&Century Schoolbook&zc&Zapf Chancery\\
hv&Helvetica&zd&Zapf Dingbats\\
gm&Garamond&&\\
\end{tabular}

\subsection{Weight}
Die Liste der Zeichendicken, grob geordnet nach Dicke (zuerst die
feinen Schriftdicken):

\begin{tabular}{llll}
a&hairline&d&demi\\
t&thin&s&semi\\
i&extra light&b&bold\\
l&light&x&extra bold\\
k&book&h&heavy\\
r&regular&c&black\\
m&medium&u&ultra\\
\end{tabular}

\subsection{Variants}

Die Liste der Auspr"agungen:

\begin{tabular}{llll}
a&alternate&n&informal\\
b&bright&o&oblique (z.B.\ slanted)\\
c&small caps&r&normal (roman oder sans)\\
e&engraved&s&sans serif\\
g&grooved (wie beim {\tt IBM} logo)&t&typewriter\\
h&shadow&u&unslanted italic\\
i&(text) italic&x&expert\\
l&outline&&\\
\end{tabular}

Es gibt einige Ausnahmen bei der Namensbildung mit Auspr"agungen. Wenn
die Auspr"agung \glqq r\grqq\ und die Breite der Zeichen (Expansion)
\glqq normal\grqq\ ist, dann werden beide weggelassen. Falls die normale
Auspr"agung einer Schrift serifenlos ist, wie z.B.\ bei Helvetica, sollte
als Auspr"agung \glqq n\grqq\ an Stelle von \glqq s\grqq\ benutzt
werden. Die \glqq alternate\grqq\ und \glqq expert\grqq-Auspr"agungen
werden von einigen \ps-Zeichens"atzen mit speziellen Zeichen und
zus"atzlichen Ligaturen benutzt.

\subsection{Expansion}

Die Liste der Zeichenbreiten, geordnet von schmalen zu breiteren
Versionen:

\begin{tabular}{llll}
o&extra condensed&x&extended (per Hand)\\
c&condensed (by hand)&e&expanded (automatisch)\\
n&narrow (automatisch)&w&wide\\
r&\multicolumn{3}{l}{regular, normal, medium (normalerweise weggelassen)}
\end{tabular}

Die Zeichenbreiten k"onnen in \ps\ automatisch, wie z.B.\ durch den
{\tt scale}-Operator, als auch per Hand f"ur jeden Buchstaben einzeln
codiert werden. Deshalb die unterschiedlichen Namen.

\section{Namenskonventionen f"ur virtuelle Zeichens"atze}
Wenn Sie sich an den vorvorigen Abschnitt erinnern, k"onnen Sie sich
das Namensschema f"ur virtuelle (\ps-)Zeichens"atze sicher schon denken,
denn der Name des virtuellen Zeichensatzes
sollte nach Karl Berry's Schema aufgebaut sein.

Bei \ps-Zeichens"atzen kam noch das Problem der verschiedenen Codierung
einzelner Zeichen hinzu, das durch Verwendung zweier {\tt .TFM}-Dateien
gehandhabt wurde, wobei die Eins-zu-Eins-Codierung ein \glqq r\grqq\ als
Prefix erhielt, ansonsten aber der Name dem Schema entsprach. F"ur reine
Anwender ist durch die Verwendung der {\tt .TFM}-Datei des virtuellen
Zeichensatzes ohnehin keinerlei Abweichung vom Namensschema vorhanden.
Es folgt noch eine Liste der Namen der {\em virtuellen\/} Zeichensatznamen
der gebr"auchlichsten \ps-Zeichens"atze:

\begin{tabular}{llll}
pagk  &AvantGarde-Book&pncri &NewCenturySchlbk-Italic\\
pagkc &\sc AvantGarde-Book&pncr  &NewCenturySchlbk\\
pagko &AvantGarde-BookOblique&pncrc &\sc NewCenturySchlbk\\
pagd  &AvantGarde-Demi&pplb  &Palatino-Bold\\
pagdo &AvantGarde-DemiOblique&pplbi &Palatino-BoldItalic\\
pbkd  &Bookman-Demi&pplbu &Palatino-BoldUnslanted\\
pbkdi &Bookman-DemiItalic&pplrrn&Palatino-Narrow\\
pbkl  &Bookman-Light&pplrre&Palatino-Expanded\\
pbkli &Bookman-LightItalic&pplri &Palatino-Italic\\
pbklc &\sc Bookman-Light&pplr  &Palatino\\
pcrb  &Courier-Bold&pplro &Palatino-Oblique\\
pcrbo &Courier-BoldOblique&pplru &Palatino-Unslanted\\
pcrro &Courier-Oblique&pplrc &\sc Palatino\\
pcrr  &Courier&psyr  &Symbol\\
phvb  &Helvetica-Bold&psyro &Symbol-Oblique\\
phvbo &Helvetica-BoldOblique&ptmb  &Times-Bold\\
phvro &Helvetica-Oblique&ptmbi &Times-BoldItalic\\
phvr  &Helvetica&ptmrrn&Times-Narrow\\
phvrc &\sc Helvetica&ptmrre&Times-Expanded\\
phvbrn&Helvetica-Narrow-Bold&ptmri &Times-Italic\\
phvbon&Helvetica-Narrow-BoldOblique&ptmro &Times-Oblique\\
phvron&Helvetica-Narrow-Oblique&ptmr  &Times-Roman\\
phvrrn&Helvetica-Narrow&ptmrc &\sc Times-Roman\\
pncb  &NewCenturySchlbk-Bold&pzcmi &ZapfChancery-MediumItalic\\
pncbi &NewCenturySchlbk-BoldItalic&pzdr  &ZapfDingbats\\
\end{tabular}

F"ur Kommentare oder Erweiterungen des Namensschemas k"onnen Sie sich
direkt an Karl Berry wenden:

\begin{verbatim}
karl@cs.umb.edu

135 Center Hill Road
Plymouth, MA 02360
\end{verbatim}
