\magnification=\magstep1
\input nice
%%\input amiga	% amiga.tex is in the formatfile
\hsize = 5 in
\vsize = 7.7 in
\voffset = 0.4in

\def\mynum#1{\ifnum #1<10 0\the#1\else \the#1\fi}
\def\mymonth#1{\ifcase#1 \or Januar \or Februar \or M\"arz \or April
   \or Mai \or Juni \or Juli \or August
   \or September \or Oktober
   \or November \or Dezember \fi}
\def\fonttab#1#2{
 $$\vbox{\halign{\strut\vrule\vrule##&\hskip 4pt##&  % Quality
   \vrule##&\hskip 4pt\hfil##\hfil&  % mag0
   \vrule##&\hskip 4pt\hfil##\hfil&  % mag0.5
   \vrule##&\hskip 4pt\hfil##\hfil&  % mag1
   \vrule##&\hskip 4pt\hfil##\hfil&  % mag1.5
   \vrule##&\hskip 4pt\hfil##\hfil&  % mag2
   \vrule##&\hskip 4pt\hfil##\hfil&  % mag2.5
   \vrule##&\hskip 4pt\hfil##\hfil&  % mag3
   \vrule##&\hskip 4pt\hfil##\hfil&  % mag4
   \vrule##&\hskip 4pt\hfil##\hfil&  % mag5
   \vrule\vrule##\cr
  \noalign{\hrule}
  \noalign{\hrule}
  & Qual. && mag0 && mag0.5 && mag1 && mag1.5 &&
  mag2 && mag2.5 && mag3 && mag4 && mag5 & \cr
  \noalign{\hrule}
  #1
  \noalign{\hrule}
  \noalign{\hrule}
 }}$$
 \centerline{\bf Flib's f\"ur den #2-Treiber} \vskip 3pt
}

\def \DVIprint {DVIprint}
\def \ShowDVI {ShowDVI}

\def\tbw {\hskip 10pt \it to be written $\ldots$}

\book
\contentslevel=3
\contfill={\dotfill}
\contskip=7pt
\let\scstyle=\bf
\font\subsubsectiontitlefont=cmr10 scaled \magstep1

\titlepage
\vskip 1in
\title{\DVIprint{}, der \TeX-Druckertreiber}
\removelastskip
\smallskip
\title{f\"ur den AMIGA}
\bigskip
\release{Version 1.13}
\smallskip
\release{vom}
\release {\mynum{\day}. \mymonth{\month}\mynum{\year}}
\bigskip
\author{von}
\author{Georg He\ss{}mann}
\vfill
\abstract{
  \DVIprint{} ist ein \TeX-Druckertreiber, der vor allem durch
  seine Flexibilität besticht. Zum einen auf allen
  HP-DeskJet kompatiblen Druckern ausdrucken. Dann kann er aber noch
  auf mit praktisch allen Nadeldruckern umgehen. Er ist nicht starr für einen
  bestimmten Nadeldrucker programmiert, sondern kann mittels eines
  Konfigurationsfile an jeden einzelnen Nadeldrucker angepaßt werden.
  Wem dies immer noch nicht ausreicht, der kann auch über die Preference
  Treiber des Betriebssystems ausdrucken. Somit sollte eigentlich jeder
  graphicfähige Drucker von \DVIprint{} angesprochen werden können.
  Und das alles bei maximal möglicher Geschwindigkeit.
}
\vskip 0.5in
\endtitlepage



\medskip
\plainsection{Inhaltsverzeichnis:}
\medskip
\makecontents
%%\newpage

\section{Copyright und \"ahnliches}

Das Programm \DVIprint{} ist ``freely distributable copyrighted software''.
Das hei\ss{}t, jeder darf es sich kopieren und verwenden. Das
Copyright bleibt jedoch vollst\"andig bei mir (Georg Heßmann).

Das Programm darf ohne meine ausdr\"uckliche Genehmigung nicht kommerziell
verkauft werden. Als PD-Software vertrieben mu\ss{} der Preis unter
5 DM pro Diskette liegen oder genau 5 DM betragen.

Die Weitergabe ist nur in vollst\"andiger und unver\"anderter Form erlaubt.

Diese Anleitung ``{\tt dvip.tex}'' ist ebenfalls Copyright Georg Heßmann und darf
nicht kommerziell vervielfältigt werden. Man darf sie sich ausdrucken und auch
kopieren, man darf sie aber {\bf nicht} für Geld weitergeben.

F\"ur weitere Erkl\"arungen siehe das README-File.

An dieser Stelle möchte ich mich noch bei Jörg-Cyril Höhle bedanken, der
mir sehr bei der Weiterentwicklung des \DVIprint{} Programms geholfen hat.


\section{Allgemeines \"uber \DVIprint{}}

\DVIprint{} ist ein \TeX-Druckertreiber.
Da \TeX{} als einzige Ausgabe ein DVI\footnote{device independent}-File erzeugt,
braucht man eigene Programme, um das Resultat zum einen auf den
Bildschirm und zum anderen schwarz auf wei\ss{} zu Papier zu bringen.
Dazu mu\ss{} das DVI-File interpretiert und eine Bitmap der
einzelnen Seiten erzeugt werden. Da im DVI-File lediglich steht, welche
Buchstaben wohin kommen --  aber nicht, wie sie aussehen --,
kann man die Seiten eines DVI-Files in beliebigen
Aufl\"osungen darstellen. Das einzige, was man dazu ben\"otigt, sind
die Fonts in der jeweiligen Aufl\"osung.

Als Besonderheit ist \DVIprint{} nicht nur ein Druckertreiber f\"ur
einen einzigen Drucker, sondern gleich f\"ur viele.
Fest eingebaut ist eine Ansteerung der HP-DeskJet Druckern sowie
ein konfigurierbares Nadeldrucker Interface. Dieses Interface
wird über das File {\tt DVIprint.printers} definiert. Durch
Einträge in diesem File kann man \DVIprint{} an alle ``halbwegs normalen''
Nadeldrucker anpassen (ich kenne keinen, bei dem es nicht ginge).
Eine Beschreibung des Files {\tt DVIprint.printers} finden Sie in dem
File selbst. Normalerweise hat Sie aber das Innenleben dieses Files
nicht zu interessieren.

Aber dies ist noch nicht alles. \DVIprint{} kann auch über die
Preference-Treiber des Betriebssystem drucken. \DVIprint{} ist also
ein multifunktionaler \TeX-Druckertreiber, der praktisch alle
an den AMIGA anschliesbaren Drucker unterstützt.

\DVIprint{} kann aber noch mehr. Es kann die \TeX-Seiten auch in ein
IFF-File ``drucken''. Da man auch noch die Auflösung vollkommen frei
wählen kann, kann man so seine \TeX-Texte in beliebiger Größe in ein
IFF-File packen.



\section{Der Aufruf von \DVIprint}

\DVIprint{} kann sowohl von Workbench als auch von CLI aus aufgerufen 
werden. Da die Tooltypes, die im Info-File angegeben werden koennen,
den Optionen, die man von CLI aus angeben kann, entsprechen, wird
zuerst der Start von CLI aus beschrieben.


\subsection{Der Aufruf vom CLI}

\DVIprint{} kennt folgende Optionen:

\staggered{\tt VOFFset \sl Zahl\tt XX }
\key{\tt HELP}		Gibt eine kurze Beschreibung aller Optionen aus.\hfill\break
			(Abkürzung: {\tt ?})
\key{\tt FONTDir \sl Dir} Gibt ein zusätzliches Directory an, in dem nach Fontlibraries
			und nach pk-Fonts gesucht werden soll.\hfill\break
			(Abkürzung: {\tt -a})
\key{\tt FONTMem \sl Zahl} Gibt an, wie groß der interne Fontspeicher sein soll,
			in dem die Fonts gespeichert werden.\hfill\break
			(Abkürzung: {\tt -b})
\key{\tt MAXBITMem \sl Zahl} Definiert eine obere Schranke, wie viel Speicher maximal
			für die Bitmap der auszudruckende Seite allociert werden darf.
			Wenn man Null angibt, so wird kein Limit gesetzt.\hfill\break
			(Abkürzung: {\tt -m})
\key{\tt PRTBUFfer \sl Zahl} Gibt an, wie groß der interne Druckerpuffer sein soll.
			Bei manchen Druckern muß dieser Wert verringert werden, sonst
			erscheint manchmal ein ``Printer Trouble'' Requester.
			Dieser hat aber keinen Einfluß auf das Druckerergebniss.\hfill\break
			(Abkürzung: {\tt -e})
\key{\tt From \sl Zahl} Von welcher Seite an soll gedruckt werden.\hfill\break
			(Abkürzung: {\tt -f})
\key{\tt To \sl Zahl} Bis zu welcher Seite soll gedruckt werden.\hfill\break
			(Abkürzung: {\tt -t})
\key{\tt ODD}		Drucke nur die ungeraden Seiten aus.\hfill\break
			(Abkürzung: {\tt -1})
\key{\tt EVEN}		Drucke nur alle geraden Seiten.\hfill\break
			(Abkürzung: {\tt -2})
\key{\tt HOFFset \sl Zahl\tt XX}  Setzt den horizontalen Offset. {\tt XX}
			ist dabei eine Einheit aus: pt Point, cm Zentimeter, 
			in Inch, pc Pica, dd Did\^ot Point, cc Cicero, bp Big Point,
			mm Millimeter, mi Milli-Inch.\hfill\break
			(Abkürzung: {\tt -h})
\key{\tt VOFFset \sl Zahl\tt XX}  Setzt den vertikalen Offset. {\tt XX}
			ist wieder eine zwei-Buchstaben Abkürzung einer Einheit.\hfill\break
			(Abkürzung: {\tt -v})
\key{\tt Printer \sl Name} Gibt an, für welchen Drucker die Ausgabe generiert werden soll.\hfill\break
			(Abkürzung: {\tt -d})
\key{\tt OPTimize}	Soll die Druckausgabe optimiert werden? Dies resultiert in den
			meisten Fällen in einer höheren Druckgeschwindigkeit, auf manchen
			Druckern wird die Geschwindigkeit allerdings auch drastisch langsamer.\hfill\break
			(Abkürzung: {\tt -o})
\key{\tt DRAft}		Mit welcher Qualität soll ausgedruckt werden?
			Für Vorab-Testausdrucke ist die Geschwindigkeit meist wichtiger
			als die Druckqualität.
\key{\tt DENsity \sl Zahl} Wenn über die Preference-Treiber ausgedruckt wird, so wird
			die Druckqualität normalerweise über die Einstellungen in den
			Preferences bestimmt. Mit dieser Option kann man die Preference
			Einstellung überschreiben.\hfill\break
			(Abkürzung: {\tt -O})
\key{\tt UNIdirect}	Soll unidirectional oder bidirectional gedruckt werden?
			Bidirectional ist meist schneller, doch ist dann auf den meisten Druckern
			die Ausgabe schlechter. Auf bidirectional schaltet man mit
			{\tt UNI=off}\hfill\break
			(Abkürzung: {\tt -u})
\key{\tt LANDscape}	Soll die Ausgabe um 90 Grad gedreht erfolgen?
			Dies funktioniert {\bf nicht} mit den Preference Treibern.
			(Abkürzung: {\tt -g})
\key{\tt IFF}		Soll die Ausgabe nicht auf den Druckern, sondern in ein IFF-File
			erfolgen? Für diese Ausgabe wird sehr viel Speicher, sowie
			die {\tt iff.library} benötigt.\hfill\break
			(Abkürzung: {\tt -i})
\key{\tt SKIPformfeed}	Soll die Ausgabe des Form-Feeds am Ende der letzten Seite
			unterdrückt werden?\hfill\break
			(Abkürzung: {\tt -x})
\key{\tt REVerse}	Druckt die Seiten in umgekehrter Reihenfolge aus.\hfill\break
			(Abkürzung: {\tt -r})
\key{\tt RESolution}	Setzt die Auflösung, mit der die Bitmap der Seite erstellt wird.
			Dies setzt {\bf nicht} die Auflösung, mit der gedruckt wird, sondern
			nur die Auflösung, mit der die Seite aufgebaut wird. Als Auflösung
			kann entweder nur eine Zahl, oder eine Zahl -- Strich -- Zahl
			angegeben werden. Im ersten Fall wird sowohl die horizontale, als
			auch die vertikale Auflösung auf die angegebene Zahl gesetzt.
			Im zweiten Fall wird die erste Zahl als horizontale Auflösung und
			die zweite Zahl als vertikale Auflösung interpretiert.
			Z.B.\ {\tt RES=120/72}\hfill\break
			(Abkürzung: {\tt -z})
\key{\tt PREload}	Wenn ausgewählt, werden alle Fonts des Dokuments gleich
			zu Beginn geladen und nicht erst dann, wenn sie wirklich
			benötigt werden.\hfill\break
			(Abkürzung: {\tt -p})
\key{\tt FAST}		Setzt unter 2.0 ein Flag im {\tt printer.device}, durch das die
			Ausgabe durch die parallele Schnittstelle erheblich beschleunigt wird.
			Unter 1.3 ist ein {\tt puffer.device} in Vorbereitung, welches
			die Ausgabe auf schnellen Druckern wie den DeskJet 500 erheblich
			beschleunigen soll. Dieses ist allerdings noch nicht fertiggestellt.\hfill\break
			(Abkürzung: {\tt -T})
\key{\tt STATistic}	Erzeugt ein ausführlicheres Logfile.\hfill\break
			(Abkürzung: {\tt -s})
\key{\tt DEBUGStat}	Schließt nach jeder Zeile das Logfile. Ist nur nützlich, wenn
			\ShowDVI{} einen GURU erzeugen sollte und man wissen möchte,
			was noch zuvor in das Logfile geschrieben wurde. Sollte
			normalerweise nicht benötigt werden.\hfill\break
			(Abkürzung: {\tt -S})
\key{\tt LOGName \sl Name} Gibt den Namen/Pfad des Logfiles an.
\key{\tt NOLog}		Unterdrückt die Erzeugung des Logfiles.\hfill\break
			(Abkürzung: {\tt -l})
\key{\tt OUTto \sl File} Lenkt die Druckausgabe in ein File um. Dies funktioniert
			nicht mit den Preference Treibern. Dort muß das Utility {\tt cmd}
			verwendet werden.\hfill\break
			(Abkürzung: {\tt ->})
\key{SHOWPrinters}	Gibt eine Liste der verfügbaren Druckertreiber aus. Wurde bereits
			ein Drucker mit der {\tt printer} Option angegeben, so wird
			die genaue Konfiguration des Druckers ausgegeben.
\endstaggered


Die Parameter der Optionen können mit oder ohne Gleichheitszeichen angegeben werden.
Folgendes ist also äquivalent ``{\tt printer generic}'' bzw.\ ``{\tt printer=generic}''.
Die Optionen dieser Liste ohne Parameter sind ``boolsche'' Optionen oder ``Flags''.
Diese gelten als ``gesetzt'', wenn sie angegeben wurden. Nun kann es aber vorkommen,
daß ein Flag bereits gesetzt ist, und man es nun zurücksetzen möchte.
Zum Beispiel ist {\tt unidirect} defaultmäßig schon gesetzt. Mittels
{\tt uni=off} kann man dieses Flag dann wieder zurücksetzen.
Dies ist auch sehr nützlich, da man ständig benötigte Optionen in der
Environmentvariable ``{\tt DVIPRINT}'' abspeichern kann. Wenn man nun meist
im ``Draft'' Modus auf den Drucker ``necp6'' ausdrucken möchte, so
setzt man am besten:

{\tt\ \ \ setenv DVIPRINT printer=necp6 draft=on}

Will man nun aber einmal nicht im ``Draft'' Modus drucken, so kann man die Angabe
im Environmentfile in der Kommandozeile überschreiten. Zum Beispiel durch:

{\tt\ \ \ DVIprint draft=off\sl file-to-print}


Standardmäßig wird der Druckertyp
``{\tt generic}'' verwendet, welcher die Preference-Treiber für den Ausdruck
verwendet. Ansonsten sind nur noch die HP Treiber ``{\tt DeskJet}'' und 
``{\tt CheapDJ}''\footnote{Druckt im Tintensparmodus}
fest in das \DVIprint{} Programm integriert.
Mit ``{\tt printer=DeskJet}'' erzeugt \DVIprint{} Ausgabe für den HP-DeskJet
Drucker.

Alle anderen Treiber werden in dem File {\tt DVIprint.printers} definiert.
Da dieses File von einem normalen Anwender nicht von Interesse sein sollte, wird
es hier auch nicht näher erläutert. Nur soviel, falls jemand einen Drucker hat, bei dem
keiner der vordefinierten Treiber funktioniert, so kann er versuchen, einen neuen,
auf seinen Drucker angepassten, Druckereintrag zu schreiben. Wie man solch 
Einträge in dem File einträgt, wird in dem File selbst erklärt.

Wenn Sie einen für Ihren Drucker passenden Treiber suchen, dann lassen Sie sich
erst einmal mit ``{\tt DVIprint showprinters}'' die Liste aller verfügbaren Treibern
ausgeben und probieren dann der Reihe nach durch, welcher mit Ihrem Drucker
am besten funktioniert. Dabei ist zu beachten, daß es zu ein und denselben Drucker
oftmals mehrere verschiedene Treiber gibt. Diese unterscheiden sich meist nur durch
die Optimierungsart. Es gibt ``GFX'', ``SPACES'' und ``POINT''. Dies sind
drei verschiedene Arten weiße Zwischenräume zu überspringen.

GFX überspringt nicht,
sondern druckt einfach weiter. Dies ist die Methode, die am meisten Druckerdaten
erzeugt, dafür aber auch bei allen Druckern funktioniert.
SPACES verläßt bei größeren Zwischenräumen den Graphicmodus und füllt die
leere Fläche mit Spaces auf. POINT schließlich verwendet ein spezielles
Druckerkommando und positioniert den Druckkopf mit einem Befehl direkt an
der nächsten, nicht weißen, Stelle. Dies ist auf manchen Druckern (z.B.\ NecP6)
das schnellste Verfahren, funktioniert aber bei vielen anderen Druckern
(z.B.\ bei vielen NecP6 Kompatiblen) überhaupt nicht zufriedenstellend.


\subsection{Start von Workbench}

Bei dem Start von Workbench werden die Parameter über das Info File
des Programms übergeben. Dort werden die ``Tool-Types'' definiert.
Die Optionen, die man über CLI angeben kann, können alle auch als
Tool-Types definiert werden. Allerdings müssen sie dort großgeschrieben werden
und dürfen auch nicht abgekürzt werden.

Man kann die Default-Parameter aber auch wie beim Start von CLI über die
Environmentvariable ``{\tt DVIPRINT}'' definieren.

Der Name des DVI-Files kann über Workbench auf zwei Arten \DVIprint{}
übergeben werden. Zum einen, in dem man erst das \DVIprint{} Icon
aktiviert und dann auf das DVI-File doppelklickt.
Zum anderen, in dem man im Info-File des DVI-Files als
``default tool'' \DVIprint{} einträgt.


\subsubsection{WINDOW Tooltype}

Da \DVIprint{} immer Ausgabe erzeugt, wird beim Start von der Workbench ein 
Fenster geöffnet, in das die Ausgabe gelenkt wird.
Damit man dieses Fenster seinen eigenen Ansprüchen anpassen kann, wird von
\DVIprint{} ein weiterer Tooltype mit dem Namen ``{\tt WINDOW}'' ausgewertet.
In diesem wird eine Consolen-Beschreibung erwartet.

Beispiele dazu:

{\tt\ \ \ WINDOW=CON:10/20/400/100/DVIprint}

oder falls man kein Fenster haben möchte (nicht unbedingt zu empfehlen):

{\tt\ \ \ WINDOW=NIL:}

unter 2.0 ist dies ganz interessant:

{\tt\ \ \ WINDOW=CON:10/20/400/100/Title/CLOSE/WAIT/SCREEN ShowDVI-PubScr}

dieses Window wird auf dem \ShowDVI{} Screen geöffnet und bleibt auch nach
Programmende solange offen, bis man entweder {\tt CTRL-\\} drückt oder
das Close-Gadget betätigt. Falls der Public-Screen ``{\tt ShowDVI-PubScr}''
nicht vorhanden ist, wird das Ausgabefenster auf dem Workbenchscreen geöffnet.

Eine Beschränkung besteht allerdings: es wird, im Gegensatz zu dem
normalen Auswerten der Optionen, nur der ``{\tt WINDOW}'' Tooltype des
Programmicons und nicht der Daten- (DVI-File) Icons ausgewertet.



\section{Verfügbare Treiber}

Das Besondere an \DVIprint{} ist. daß das Programm nicht nur auf einem bestimmten
Drucker drucken kann, sondern für viele verschiedene konfigurierbar ist.
\DVIprint{} hat intern drei verschiedene Arten von eingebauten Treibern.

Einmal der ``{\tt generic}'' Treiber. Dieser bereitet nur die zu druckende Bitmap
auf und überlaßt dem eingestellten Preference-Treiber den Druckvorgang. Mit
diesem Treiber kann man also auf jeden graphicfähigen Drucker, der von Commodore
unterstützt wird, ausdrucken. Die verwendete Auflösung wird dabei von der eingestellten
Density bestimmt. Man kann die Density aber auch über die Kommand-Line Option
``{\tt density}'' einstellen. Wenn man auch noch die ``{\tt statistic}'' Option
verwendet, wird angezeigt, welcher Auflösung die eingestellte Density 
entspricht.

Dann gibt es die HP-DeskJet Treiber ``{\tt DeskJet}'' und ``{\tt CheapDJ}''.
Letzterer verwendet den Tinten-Spar-Modus des DeskJets.

Schließlich ist noch ein frei konfigurierbarer Nadeldruckertreiber eingebaut.
Dieser wird über das File ``{\tt DVIprint.printers}'' konfiguriert. In diesem
können die verschiedensten Treiber definiert werden. Man kann sich die Liste
der verfügbaren Einstellungen/Treibern mit die ``{\tt showprinters}'' Option
ansehen.

Das File ``{\tt DVIprint.printers}'' wird hier nicht näher erklärt, da man
normalerweise nichts daran zu ändern braucht. In dem File selbst ist aber
eine Beschreibung, damit man im Ernstfall doch etwas an dem File ändern kann.





\section{Ben\"otigte Fonts}


Welche Fonts bzw.\ welche Aufl\"osungen ben\"otigen die einzelnen
Druckertreiber? Hier soll nur auf die Fontlibraries eingegangen
werden. Man kann die gleichen Fonts nat\"urlich auch einzeln
auf der Festplatte halten.

Hier werden nun natürlich auch nur ein paar wenige, vordefinierte Treiber
besprochen. In dem File ``{\tt DVIprint.printers}'' können aber noch beliebig viele
andere Druckertypen definiert werden. Welche Fonts diese benötigen hängt ganz von
deren Druckauflösung ab.

Diese Aufzählung soll nur als Anhaltspunkt dafür dienen, welche Fonts zu welchen
Grundauflösungen gehören. Die vorgestellten Auflösungen stellen die für Drucker meist
gebräuchlichen Auflösungen dar.



\subsection{F\"ur den NEC P6/P7}

 Folgende Libraries ben\"otigt der NEC-P6/P7-Treiber:
 \fonttab{
  & Draft&& 180&& 197&& 216&& 237&& 259&& 284&& 311&& 373&& 448&\cr
  \noalign{\hrule}
  & HQ&& 360&& 394&& 432&& 473&& 518&& 568&& 622&& 746&& 896&\cr
  }{NEC-P6/P7}
 Die Angaben sind alle in {\it DPI}\footnote{dots per inch}. Dabei
 bedeutet 180, da\ss{} eine Library mit dem Namen PK0180
 existieren mu\ss{}/sollte.

 Die Libraries der Vergr\"o\ss{}erungen {\it magstep 1.5} und
 {\it magstep 2.5} ben\"otigt man nicht unbedingt, aber hin und
 wieder treten auch diese Vergr\"o\ss{}erungsstufen auf.



\subsection{F\"ur den HP DeskJet}

 Diese Libraries werden f\"ur den HP-Deskjet-Treiber ben\"otigt.
 Dabei ist zu erw\"ahnen, da\ss{} f\"ur den Draft-Modus die selben
 Libraries verwendet werden, wie f\"ur den Bildschirmtreiber.
 \fonttab{
  & Draft&& 100&& 110&& 120&& 131&& 144&& 158&& 173&& 207&& 249&\cr
  \noalign{\hrule}
  & HQ&& 300&& 329&& 360&& 394&& 432&& 473&& 518&& 622&& 746&\cr
  }{HP-DeskJet}




\subsection{F\"ur den Epson FX-80}

 Die f\"ur den Epson FX 80 verwendeten Libraries haben eine
 Besonderheit: Sie sind nicht quadratisch in ihrer Aufl\"osung.
 Die kleinste Fontlibrary der Draft-Aufl\"osung hat 120dpi in
 der Horizontalen und 72dpi in der Vertikalen.
 Bei der High-Quality-Aufl\"osung ist das Verh\"altnis 240dpi
 horizontal zu 216dpi vertikal.
 \fonttab{
  & Draft&& 120&& 131&& 144&& 158&& 173&& 189&& 207&& 249&& 299&\cr
  \noalign{\hrule}
  & HQ&& 240&& 263&& 288&& 315&& 346&& 379&& 415&& 498&& 597&\cr
  }{Epson FX-80}

 Durch diese Asymmetrie und der Tatsache, da\ss{} die
 Draft-Aufl\"osung in den Bereich der Bildschirmaufl\"osung reicht,
 ergibt sich das Problem, da\ss{} es Fontlibraries gibt, die
 zwar den selben Namen haben, aber einen grundverschiedenen
 Aufbau. Dies sind zum bei einer Bildschirmaufl\"osung von 100dpi
 zum Beispiel die Libraries PK0120, PK0131, PK0144, PK0158,
 PK0173, PK0207 und PK0249. Bei einer anderen verwendeten
 Aufl\"osung f\"ur den Previewer ergeben sich nat\"urlich andere
 \"Uberschneidungen. Dieses Problem kann man mit dem
 Fontdefinitions-File recht schnell und effizient l\"osen, da es
 je eines f\"ur den Previewer und Druckertreiber gibt.
 Man kopiert die Libraries, die doppelt existieren,
 in ein beliebiges Directory und \"andert das
 Konfigurations-File entsprechend. Da Libraries, die dort definiert sind,
 erst an dem angegebenen Ort gesucht werden, werden die Previewer-
 Libraries im {\tt TeX:fontlib}-Directory nicht verwendet.
 
 Man kann dieses Problem auch l\"osen, in dem man alle Fonts umbennent und
 die horizontale und vertikale Aufl\"osung in den Font- Library-Namen
 mit aufnimmt. Dazu existieren die Modifier ``\%h'' und ``\%v'' sowie
 ``\%x'' und ``\%y''. Man kann also die Formatstrings folgenderma\ss{}en
  definieren:

 $$\vbox{
 \halign {#\quad&#\quad&#\quad&#\quad&#\qquad\hfil\cr
 flib\_str &&PK\%04hx\%04v  &&; formatstring for flib's\cr
 pk\_str  &&\%hx\%v/\%s.\%dpk  &&; formatstring for pk-files\cr
 }}$$

 Damit wird der Font {\tt cmr10} der Gr\"o\ss{}e {\tt magstep1} bei einer 
 Aufl\"osung von $240\times 216$ in der Library {\tt PK0288x0259} oder
 als PK-File mit dem Namen {\tt 288x259/cmr10.288pk} gesucht.



\section{Internas}

 Wie funktioniert das Programm? Was gibt es zu beachten
 und wie kann man die Fontverwaltung m\"oglichst effizient gestalten
 und seinen eigenen Anspr\"uchen anpassen? Diese Fragen sollen
 in diesem Kapitel beantwortet werden, wobei allerdings auf die
 Anleitung zum \ShowDVI{}-Programm verwiesen werden mu\ss{}, da
 die Fontverwaltung dort genau beschrieben wird, hier aber
 nur auf die kleinen Unterschiede zu der Verwaltung des Previewers
 eingegangen wird. Es empfiehlt sich also zuerst die \ShowDVI{}-Anleitung
 durchzulesen.



\subsection{Erzeugung nichtgefundener Fonts mittels Metafont}

Falls der Druckertreiber einen zum Drucken ben\"otigten Font nicht finden kann
und falls die Environtment Variable ``CALLMF'' gestetzt ist, so wird
der Inhalt dieser Environment Variable als Name einer ARexx Script Datei
verwendet.

Diese wird zur Erzeugung des nicht gefundenen Fonts mit folgenden Parametern aufgerufen:

\itemlist{-- }
\next dem Fontnamen des zu erzeugenden Fonts,
\next der Aufl\"osung des Fonts in DPI,
\next der horizontale Grundaufl\"osung des Druckertreibers,
\next der vertikalen Grundauflösung des Druckertreibers,
\next einer Kennung des aufrufenden Programms,
\next der Name, den der Font bekommen soll und
\next dem Directory, in das der Font kopiert werden soll.
\enditemlist

Es gibt schon zwei solcher Scripten.
Einmal {\tt MakeTeXFont}. Wenn ``CALLMF'' mit dieser Script belegt ist, so
werden alle fehlenden Fonts sofort generiert. Da dies aber manchmal recht lange
dauern kann, gibt es noch die Script {\tt MakeBatch}. Diese Erzeugt die Fonts
nicht sofort, sondern generiert nur ein Scriptfile {\tt MF:MakeTeXFont.sh}.
Mit Hilfe dieser erzeugten Script kann man später einmal alle fehlenden Fonts
erzeugen.

Mehr dazu ist in der Anleitung zu den ``CallMF'' Scripten zu finden.




\subsection{Fontverwaltung}

 Die Fontverwaltung entspricht bis auf eine Kleinigkeit der
 des \ShowDVI{}-Programms. Diese ist der Name des Font-Konfigurations-Files.
 Bei dem Previewer ist der Name {\tt showdvi.fnt}, folglich hei\ss{}t
 es bei dem Druckertreiber {\tt dviprint.fnt}.

 Da sonst keine Unterschiede existieren, wird hier nicht
 weiter darauf eingegangen. Bitte lesen Sie hierzu die
 Anleitung zum \ShowDVI{}-Programm.



\section{Ben\"otigte Soft- und Hardware}

An Software ben\"otigt man zuerst einmal ein Programm, das DVI-Files
erzeugt. Im allgemeinen hei\ss{}t dieses Programm {\tt virtex} oder einfach
{\tt tex}.

Für die Ausgabe in ein IFF-File wird die {\tt iff.library} von
Christian A.\ Weber benötigt.

Hin und wieder kann auch das Utility {\tt cmd} von Nutzen sein, mit dem
man die Ausgabe der Preference-Treiber, die sonst zum Drucker geschickt wird,
in eine Datei umlenken kann.

An Hardware ben\"otigt man vor allem einen Amiga. Die wichtigste
Erweiterung ist eine Speichererweiterung. Ein MByte an Hauptspeicher
ist das absolute Minimum. Eine Festplatte ist zwar nicht unbedingt
notwendig, m\"ochte man allerdings vern\"unftig arbeiten, so ist
auch diese ein Mu\ss{}. Je nach verwendeten Druckertreiber und
Anzahl der ben\"otigten Fonts kann man bis zu 10 Mbyte an
Plattenplatz ben\"otigen.



\section{Bekannte Fehler}

Es wird {\bf unbedingt} die Library ``{\tt mathieeedoubbas.library}''
benötigt! Der Startup-Code von SAS-C, der diese Library öffnet bringt leider
keine Fehlermeldung, falls die Library nicht geöffnet werden konnte. Das
Programm läßt sich einfach nur nicht starten.\hskip 1cm{\tt :-(}

Hin und wieder, je nach Drucker \"ofters oder gar nicht, kommt es dazu,
da\ss{} das Betriebssytem eine Requester mit ``Printer-Trouble'' anzeigt
und der Drucker keine Daten mehr bekommt. Nach dem Bet\"atigen des
RETRY Gadget druckt der Drucker ohne Probleme weiter. Falls der
Requester h\"aufiger auftritt, hilft meist ein verkleinern des Drucker
Puffers mittels der {\tt PRTBUFfer} Option, um diese St\"orungen aus der Welt
zu schaffen.

Die {\tt iff.library} hat leider manchmal mit besonders großen Seiten Probleme.
Es kann sein, daß das Programm bei Auflösungen größer als 300dpi mit einer
Fehlermeldung die Ausgabe in das IFF-File abbricht.

Sonst ist mir bisher noch kein Fehler untergekommen.
Wenn aber jemand einen findet, so m\"oge er ihn mir doch bitte
(m\"oglichst reproduzierbar, mit Log- und DVI-File)
mitteilen.
\bye
