\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<&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®ular&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}