\documentstyle[12pt,german,a4,titlepage]{article}
\germanTeX

\font\manual=manfnt at 12pt
\def\MF{{\manual META}\-{\manual FONT}}

\begin{document}
\title{Metafont 2.7\\für den Commodore Amiga}
\author{Portiert von: Stefan Becker}
\maketitle

\section{Was ist Metafont?}
\MF\ ist ein Programm, das mit Hilfe einer ausgefeilten, PASCAL-ähnlichen
Programmiersprache die Raster-Zeichensätze für das \TeX-System erstellt. Für
jeden Buchstaben eines Zeichensatz erstellt der Benutzer ein Programm in dieser
Sprache. \MF\ arbeitet jedes dieser Programme ab und erstellt dabei ein
gerastertes Abbild der Buchstaben für die Auf\-lösung des eingestellten
Ausgabegerätes. Gleichzeitig ermittelt es die für \TeX\ be\-nötigten
Zeichensatzmetriken.

Das vorliegende Programm ist eine Portierung von \MF\ 2.7 für den Commodore
Amiga Computer. Es ist voll kompatibel zu Implementationen auf anderen
Rechnern, da es den Trap-Test bestanden hat. Zusätzlich wurde noch die
Möglichkeit der Grafikausgabe während des Programmab\-laufs eingebaut. Diese
Anleitung beschreibt {\bf nur} die Bedienung von \MF\ und den dazugehörigen
Utilities auf dem Amiga. Alle weiteren Informationen, insbesondere über die
\MF-Sprache, entnehmen Sie bitte der entsprechenden Literatur, z.B.\ aus [1]
\& [2].

\section{Die Bedienung von Metafont}
\MF\ läßt sich nur über das CLI aufrufen. Ein entsprechender Aufruf sieht
folgendermaßen aus:

\begin{verbatim}
> virmf
This is METAFONT, C Version 2.7
** _
\end{verbatim}

\MF\ meldet sich mit seiner Titelzeile und erwartet nun die Eingabe des
Namens der \MF-Quelltextdatei, die bearbeitet werden soll. Diese Dateien
sind an der Endung {\em .mf\/} zu erkennen. Falls Ihr System zu wenig Speicher
hat, dann kann es passieren, daß \MF\ mit der Fehlermeldung {\tt Not enough
memory (x)!} abbricht (x ist eine Zahl). Um dies zu umgehen, können Sie die
internen Speicherfelder von \MF\ verkleinern, wie es weiter unten beschrieben
wird.

Man kann \MF\ eine Reihe von Parametern beim Aufruf mitgeben, was z.B.\ für die
Erstellung einer Batchdatei wichtig ist. Es sind folgende Parameter zulässig:

\begin{description}
 \item[name]{Name einer \MF-Quelltextdatei.}
 \item[\&name]{Name einer {\em .base} Datei, die oft benötigte Prozeduren in
              vorbearbeiteter Form enthält (s.u.).}
 \item[``$\backslash\ldots$'']{Kommandos aus der \MF-Sprache, getrennt durch
                               `;', z.B.:
  \begin{description}
   \item[batchmode]{Ausgaben von \MF\ auf dem Bildschirm sollen unterbunden
                    werden.}
   \item[input name]{Die \MF-Quelltextdatei {\em name.mf} soll bearbeitet
                     werden.}
   \item[mag:=größe]{Gibt die gewünschte Größe des Zeichensatzes an.}
   \item[mode:=name]{Stellt das Ausgabegerät {\em name\/} ein.}
   \item[screenchars]{Fertige Buchstaben sollen in der Grafikausgabe
                      dargestellt werden.}
   \item[screenstrokes]{Es sollen alle Zwischenstufen des Buchstabens in
                        der Grafikausgabe dargestellt werden.}
  \end{description}}
\end{description}

\MF\ kann für beliebige Ausgabegeräte Zeichensätze erzeugen. Für jedes Gerät
muß vom Benutzer eine sogenannte {\em Mode Definition\/} erstellt werden. Den
Namen dieser Definition gibt man dann hinter dem {\em mode\/} Befehl an. Die
mitgelieferte Datei {\em mydevices.mf\/} enthält ein paar Beispiele. Näheres
über {\em Mode Definitions\/} und über die Größenangabe bei Zeichensätzen
entnehmen Sie bitte aus [1].

Es gibt zwei fiktive Ausgabegeräte, mit denen man sich die Zeichensätze in
starker Vergößerung erzeugen lassen kann. Diese haben die Namen {\em proof\/}
und {\em smoke}. Wird einer dieser beiden Modi angewählt, so wird automatisch
der Befehl {\em screenchars\/} ausgeführt. Es öffnet sich die Grafikausgabe,
ein Fenster der Größe $500*400$ (oder $250*200$, s.u.), in dem nun alle
Buchstaben bildschirmgroß ausgegeben werden. Falls das Fenster nicht geöffnet
werden kann, wird {\em keine\/} Fehlermeldung ausgegeben, aber \MF\ setzt seine
Arbeit fort.

Wenn \MF\ einen Zeichensatz erstellt, dann zeigt es die Nummer des gerade
erzeugten Buchstabens an. Sollte ein Fehler auftreten, so meldet sich \MF\ mit
einer umfangreichen, teilweise leider auch sehr kryptischen Fehlermeldung und
einem Prompt. \MF\ befindet sich nun im Fehlermodus und Sie haben die
Möglichkeit den Fehler interaktiv zu beheben. Wenn Sie ein `?' eingeben,
erhalten Sie eine Übersicht über alle zugänglichen Befehle. Mit `X' koennen Sie
das Programm beenden und mit {\em RETURN\/} setzt \MF\ seine Arbeit fort. Sie
können während der Programmlaufs jederzeit durch Drücken von {\em CTRL-C\/} in
den Fehlermodus gelangen.

Sollten Sie sich mal in einem Dateinamen vertippt haben, so fordert \MF\ einen
neuen Namen an. Wollen Sie an dieser Stelle das Programm abbrechen, so müssen
Sie {\em CTRL-$\backslash$} drücken.

Zum Schluß noch ein Beispiellauf. Es soll der Zeichensatz {\em cmb10\/} in der
Größenstufe {\em magstep 4\/} für den Bildschirmtreiber (Modename {\em
previewer}) erzeugt werden. Die entsprechende Kommandozeile und der
dazugehörige \MF-Lauf sieht dann (gekürzt) folgendermaßen aus:

\begin{verbatim}
> virmf "\mode:=previewer; mag:=magstep(4); input cmb10"
This is METAFONT, C Version 2.7
(mf:mfinputs/cmb10.mf (mf:mfinputs/roman.mf
(mf:mfinputs/romanu.mf [65] [66] [67] [68] [69] [70]
[......]
[34] [45] [92] [123] [124]) ) )
Font metrics written on cmb10.tfm.
Output written on cmb10.207gf (128 characters, 9620 bytes).
Transcript written on cmb10.log.
> _
\end{verbatim}

\section{Metafont Utilities}
Zu \MF\ gehören ein paar Zusatzprogramme, die im Folgenden beschrieben werden.

\subsection{gftopk}

AUFRUF:\quad{\tt gftopk}\quad{\em GF Dateiname\/}\quad{\em PK Dateiname}

Dieses Programm dient dazu, die Zeichensätze aus \MF's allgemeinem {\em GF\/}
Format in das komprimierte {\em PK\/} Format umzuwandeln. Dieses Format wird
von den meisten Druckertreibern benutzt.

\subsection{gftodvi}

AUFRUF:\quad{\tt gftodvi}

Mit diesem Programm können Zeichensätze die mit dem {\em proof\/} oder {\em
smoke\/} Modus erstellt worden sind, in eine ausdruckbare {\em .dvi} Datei
umgewandelt werden. Jedes einzelne Zeichen ist in dieser Datei auf einer Seite
blattgroß vorhanden, was zur Überprüfung der einzelnen Zeichen verwendet werden
kann. Das Programm und der Ausdruck benötigt die speziellen Zeichensätze {\em
black\/} und {\em gray}, die im wesentlichen verschiedene Grauraster enthalten.
Wie man diese erstellt, steht im Anhang von [1].

\subsection{gftype}

AUFRUF:\quad{\tt gftype}\quad[--m] [--i]\quad{\em GF Dateiname}

Dieses Programm gibt den Inhalt einer Zeichensatzdatei, die im {\em GF\/}
Format vorliegt, als Klartext aus. Mit den beiden Optionen --m und --i können
Sie auswählen, wieviel Information aus der Datei angezeigt wird.

\subsection{mft}

AUFRUF:\quad{\tt mft}\quad{\em MF Dateiname}\quad[--s]\quad[{\em Stil-Datei\/}]

Falls Sie ihre \MF-Quelltextdateien in leserlicher Form ausdrucken wollen, dann
können Sie mit diesem Programm die {\em .mf\/} Dateien in {\em .tex\/} Dateien
umwandeln. Diese Dateien können dann mit \TeX weiterverarbeitet werden. Die
Stil-Datei gibt dabei die Parameter für die Umwandlung an. In diesem Paket ist
die Stil-Datei {\em plain.mft\/} und für die Bearbeitung mit \TeX die
Makrodatei {\em mftmac.tex\/} enthalten.

\section{Die Konfiguration von Metafont}
Die Pfade, in denen \MF\ und seine Utilities nach Dateien suchen, lassen sich
durch Umgebungsvariablen einstellen. Diese werden durch den AmigaDOS Befehl
{\tt setenv} gesetzt. Dabei werden die einzelnen Pfade durch `,' getrennt. Es
werden folgende Variablen benutzt (in Klammern stehen die Voreinstellungen, `.'
bezeichnet das aktuelle Verzeichnis):

\begin{description}
 \item[mfinputs (.,mf:inputs)]{Hier sucht \MF\ die {\em .mf\/} Dateien.}
 \item[mfbases (.,mf:bases)]{Hier sucht \MF\ die {\em .base\/} Datei (s.u.).}
 \item[mfpool (.,mf:bases)]{Hier sucht {\tt inimf} die Datei {\em mf.pool\/}
                            (s.u.).}
 \item[texfonts (.,tex:fonts)]{Hier werden die {\em .tfm\/} Dateien abgelegt.}
 \item[dviconfig (.,mf:config)]{Hier sucht \MF die Datei {\em MF.mem\/}
                                (s.u.).}
\end{description}

Die Größen der internen Speicherfelder von \MF\ lassen sich mit Hilfe der
Konfigurationsdatei {\em MF.mem} einstellen. Diese Textdatei enthält mehrere
Zeilen, in denen jeweils eine Zahl steht. {\bf ACHTUNG:} Die Reihenfolge und
Anzahl der Zahlen ist wichtig! In der mitgelieferten Beispieldatei steht am
Ende jeder Zeile ein Kommentar, der die jeweilige Zahl beschreibt. Es werden
hier nur die wichtigsten Werte erklärt, da die meisten anderen nur eine interne
Bedeutung haben:

\begin{description}
 \item[memmax]{Größe des \MF-Hauptspeichers in Speicherworten. Ein Speicherwort
               ist 4 Bytes groß.}
 \item[memtop]{Höchste nutzbare Speicherzelle.
               Dabei {\bf muß} gelten: $memtop \le memmax$}
 \item[scalefactor]{Größe der \MF-Grafikausgabe:
            \begin{description}
              \item[1]{Großes Fenster, Buchstaben in Normalgröße}
              \item[2]{Kleines Fenster, Buchstaben um den Faktor 2 verkleinert}
            \end{description}}
\end{description}

Falls man die Konfiguration geändert hat, so muß man eine neue {\em .base\/}
Datei erstellen, die diesen neuen Werten entspricht. Diese Datei wird mit einer
speziellen \MF-Version, genannt {\tt inimf}, erzeugt. Diese Version "`compiliert"'
häufig benötigte Teile, wie z.B.\ {\em plain.mf}, {\em cmbase.mf}, die
Fehlermeldungen und die eigenen {\em Mode Definitions}, in die .base Datei, die
von der normalen \MF-Version {\tt virmf} nur noch in den Speicher geladen wird.
Die Fehlermeldungen stehen in der Datei {\em mf.pool}. Es folgt der Mitschnitt
einer Beispielsitzung mit {\tt inimf}:

\begin{verbatim}
> inimf
This is METAFONT, C Version 2.7 (INIMF)
**plain
(plain.mf
Preloading the plain base, version 2.0: preliminaries,
 basic constants and mathematical macros,
 macros for converting from device-independent units to pixels,
 macros and tables for various modes of operation,
 macros for drawing and filling,
 macros for proof labels and rules,
 macros for character and font administration,
and a few last-minute items.)
*\input mydevices
(mf:inputs/mydevices.mf)
*\input cmbase
(mf:inputs/cmbase.mf)
*\dump
Beginning to dump on file plain.base
 (base=plain 90.9.24)
1622 strings of total length 24962
15588 memory locations dumped; current usage is 3789&11746
743 symbolic tokens
> _
\end{verbatim}

Die so enstandene Datei {\em plain.base\/} muß dann in dem entsprechenden
Verzeichnis abgelegt werden, auf das die Umgebungsvariable {\em mfbases\/}
zeigt. Die in dem Beispiel erstellte Datei enthält alle Prozeduren, um die {\em
Computer Modern Roman\/} Zeichensätze zu erstellen, die Standardzeichensätze
für \TeX. Weitere Einzelheiten kann man [1] \& [2] entnehmen.

\section{Diverses}

LITERATUR:
\begin{description}
 \item[1]{{\em The Metafont Book\/} von Donald E.\ Knuth, dem Erfinder von
          \MF.}
 \item[2]{{\em Computer Modern Typefaces\/} von Donald E.\ Knuth, eine genaue
          Beschreibung der CMR Zeichensätze.}
\end{description}

\end{document}
