%
% LATEX $VER: GermanDoc.ltx 1.1 (07.11.1993)
%
% BESCHREIBUNG: Diese LaTeX-Datei enthält die vollständige Beschreibung
%               und Dokumentation der Amiga-Implementierung von
%               MetaFont 2.71 für deutschsprachige Benutzer.  Eine
%               englische Übersetzung ist verfügbar.
%
% DATUM: 06.11.1993 (V1.0)
%
% AUTOR: Andreas Scherer
%        Abt-Wolf-Straße 17
%        96215 Lichtenfels
%        Germany
%
% Änderungen: 07.11.1993: Korrekturen (V1.1)
%
% URHEBERRECHT: (c) 1993 Andreas Scherer
%
% Die Anfertigung und Verteilung von unveränderten Kopien dieses
% Dokumentes ist erlaubt, sofern der Urheberrechtshinweis und dieser
% Berechtigungshinweis bei allen Kopien erhalten bleibt.
%
% Die Anfertigung und Verteilung von veränderten Versionen dieses
% Dokumentes ist erlaubt unter den Bedingungen für unveränderte Kopien,
% sofern das gesamte hiervon abgeleitete Werk unter den Bedingungen eines
% mit diesem vergleichbaren Berechtigungshinweises verteilt wird.

\documentstyle[german]{article}
% Die "german.sty" Datei von DANTE e.V. wird benötigt.
% Sie ist zum Beispiel bei PasTeX dabei.

\language=1 % Deutsch in meiner mehrsprachigen TeX-Konfiguration

\newfont{\mc}{cmr9} % Medium caps
\newfont{\smallcaps}{cmcsc10} % Caps-small-caps
\newfont{\manual}{manfnt} % METAFONT in text
\newfont{\bigmanual}{manfnt scaled \magstep3} % METAFONT in titles

\newcommand{\MetaFont}{{\manual META}\-{\manual FONT}}
\newcommand{\BigMetaFont}{{\bigmanual META}\-{\bigmanual FONT}}
\newcommand{\GFtoDVI}{{\mc GF}to{\mc DVI}}
\newcommand{\GFtoPK}{{\mc GF}to{\mc PK}}
\newcommand{\GFtype}{{\mc GF}type}
\newcommand{\MFT}{{\mc MFT}}
\newcommand{\PKtoGF}{{\mc PK}to{\mc GF}}
\newcommand{\PKtype}{{\mc PK}type}
\newcommand{\PASCAL}{{\smallcaps Pas\-cal}}
\newcommand{\IniMF}{Ini{\mc MF}}
\newcommand{\VirMF}{Vir{\mc MF}}
\newcommand{\CallMF}{Call{\mc MF}}

\title{\BigMetaFont\ f"ur den {\sl AMIGA}\\
  \medskip Dokumentation zu Version 2.71\bigskip}

\author{Andreas Scherer\\
  Abt-Wolf-Stra{\ss}e 17\\
  96215 Lichtenfels\\
  Germany\bigskip}

\begin{document}

\maketitle

\begin{abstract}
Dieser Text beschreibt eine neue Implementierung von \MetaFont\ in der
Version~2.71 f"ur den Commodore Amiga.  \MetaFont\ ist der Name eines
Systems zur Zeichensatzerzeugung von Prof.~Donald E. Knuth von der
Stanford Universit"at.  Es liest Textdateien mit \glq Programmen\grq,
die das Aussehen von Buchstaben, graphischen Symbolen oder anderen Elementen
beschreiben, die f"ur die Erstellung von qualitativ hochwertigen Dokumenten
ben"otigt werden.  Schriftsatzsysteme wie \TeX\ verwenden die Informationen
"uber die Zeichensatzabmessungen, die von \MetaFont\ erzeugt werden, und
Druckertreiber oder Bildschirmanzeiger verwenden die Pixelinformationen,
wohin die "`Tinte"' gesetzt werden soll.  Die Verwendung der zugeh"origen
Programme wird einigerma"sen genau beschrieben, es wird aber keine
Einf"uhrung in die \MetaFont-Sprache selbst gegeben.  Genaue Informationen
"uber die Programmierung mit \MetaFont\ finden sich im Literaturverzeichnis.
(Abschnitt~\ref{bibliography} dieses Textes.)
\end{abstract}

\vfill\noindent
Urheberrecht \copyright\ 1993 Andreas Scherer

\bigskip\noindent
Die Anfertigung und Verteilung von unver"anderten Kopien der elektronischen
Form dieses Dokumentes ist erlaubt, sofern der Urheberrechtshinweis und dieser
Berechtigungshinweis bei allen Kopien erhalten bleibt.

\smallskip\noindent
Die Anfertigung und Verteilung von ver"anderten Versionen dieses
Dokumentes ist erlaubt unter den Bedingungen f"ur unver"anderte Kopien,
sofern das gesamte hiervon abgeleitete Werk unter den Bedingungen eines
mit diesem vergleichbaren Berechtigungshinweises verteilt wird.

\newpage
\tableofcontents

\newpage
\section{Urheberrechtshinweise}
Das \MetaFont-Programm und die zugeh"origen Hilfsprogramme sind
urheberrechtlich gesch"utzt f"ur Donald E. Knuth \copyright~1984.  Alle
Rechte sind vorbehalten.  Der vollst"andige {\tt WEB}-Quelltext ist
ver"offentlicht als~\cite{knuth.d}.

Diese neue Implementierung von \MetaFont~2.71 f"ur den Commodore Amiga ist
zu {\mc FREEWARE} erkl"art.  Alle Rechte sind vorbehalten.  Sie d"urfen das
Paket verwenden, kopieren und weitergeben, und zwar entweder in
archivierter oder installierter Form, aber nicht mehr als eine geringe
Bearbeitungsgeb"uhr f"ur Disketten und Versand verlagen.

Obwohl betr"achtliche Arbeit investiert wurde, das \MetaFont-Programm
fehlerfrei und zuverl"assig zu machen, wird keinerlei Gew"ahrleistung
"ubernommen;  der Autor und der Implementierer weisen jede Verantwortung
f"ur eventuelle Sch"aden, die sich, direkt oder indirekt, aus der Benutzung
oder dem Verhalten dieser Programme ergeben, zur"uck.

Diese Arbeit war "`Liebesm"uhe"' und sowohl der Autor als auch der
Implementierer hoffen, da"s zuk"unftige Benutzer daran ihre Freude haben.

Bitte senden Sie Anmerkungen, Vorschl"age, Fehlermeldungen oder sonstiges
an Andreas Scherer, Abt-Wolf-Stra{\ss}e 17, 96215 Lichtenfels, Deutschland.
Ein "`Entwicklerpaket"', das den vollst"andigen Quelltext mitsamt allen
"Anderungen und Erweiterungen enth"alt, kann "uber diese Adresse bezogen
werden.  (Siehe Abschnitt~\ref{source} f"ur n"ahere Einzelheiten.)

\bigskip
\noindent\TeX\ ist ein Warenzeichen der American Mathematical Society.

\noindent\MetaFont\ ist ein Warenzeichen von Addison-Wesley Publishing Company.

\noindent Commodore ist ein eingetragenes Warenzeichen von
Commodore Electronics Limited.

\noindent Amiga, Amiga{\mc DOS}, Amiga Kickstart und Amiga Workbench sind
eingetragene Warenzeichen von Commodore-Amiga Incorporated.

\noindent {\mc SAS} und {\mc SAS/C} sind eingetragene Warenzeichen von
{\mc SAS} Institute Incorporated.

\section{Systemvoraussetzungen}
Die minimale Rechnerkonfiguration, mit der diese Implementierung von
\MetaFont\ getestet wurde, war ein Commodore Amiga~2000 mit dem
handels"ublichen 68000~Prozessor von Motorola sowie 2~{\mc MB} Chip{\mc RAM}
und 4~{\mc MB} Fast{\mc RAM}, obwohl insgesamt nur 1,5~{\mc MB} {\mc RAM}
mit den Standardeinstellungen tats"achlich benutzt wurden.  Der
Speicherbedarf kann sich erh"ohen in Abh"angigkeit vom zu generierenden
Zeichensatz und den gew"ahlten Einstellungen in der \MetaFont-Konfiguration.
(Siehe Abschnitt~\ref{memory}.)
Das Betriebssystem bestand aus Kickstart~37.175 und Workbench~38.36.  Alle
in diesem Paket enthaltenen Programme k"onnen unter Version~1.3 des
Betriebssystems ablaufen.  Nur die Bildschirmanzeige von \MetaFont\
ben"otigt Version~2, da sie erweiterte Graphikfunktionen einsetzt.  Bei
Verwendung der Version~1.3 ist diese Eigenschaft ausgeschaltet.

Es sind gesonderte Versionen der \IniMF- und \VirMF-Programme vorhanden,
die f"ur erweiterte Ger"ateausstattungen wie den Amiga~3000 oder Amiga~4000
oder Amigas mit Turbokarten gedacht sind.  Diese beiden Programme verwenden
Eigenschaften des 68020~Motorola Prozessors, die im 68000~Prozessor nicht
vorhanden sind.  Unter gleichen Bedingungen laufen diese Programmversionen
etwa zwanzig bis drei"sig Prozent schneller als die nicht-optimierten
Versionen, auf Amigas ohne Prozessor mit den 32~Bit-Erweiterungen st"urzen
sie jedoch ab!  Alle anderen Programme in diesem Paket sind so "ubersetzt,
da"s sie auf jeder handels"ublichen Amiga-Ausstattung laufen.

\MetaFont\ ist ein gro"ses System, gedacht f"ur gro"se Aufgaben.  Die
Erzeugung von {\tt cmr10} f"ur den 300~dpi DeskJet-Druckertreiber aus dem
Pas\TeX-Paket ben"otigt auf einer 50~{\mc MH}z schnellen 68030-Turbokarte
mit mathematischem Koprozessor und ausreichend viel 32~Bit-{\mc RAM} nur
49~Sekunden, auf einem Standard-Amiga mit 7~{\mc MH}z und recht langsamem
16~Bit {\mc RAM} dagegen 10~Minuten und 5~Sekunden, obwohl die Programme
auf beiden Konfigurationen laufen.

\section{Kompatibilit"at}
Dies ist \MetaFont~2.71 f"ur den Commodore Amiga.  Es stimmt v"ollig
"uberein mit der originalen Implementierung von Donald E. Knuth und hat den 
{\mc TRAP}-Test vom 25.~Januar 1992 gl"anzend bestanden.  Lediglich in
{\tt trapman.tex} als zul"assig gekennzeichnete Abweichungen traten auf.
{\tt diff}-Dateien, die den letzten Lauf des {\mc TRAP}-Testes
dokumentieren, werden auf Anfrage vom Implementierer zug"anglich
gemacht.  (Siehe Abschnitt~\ref{source} zu Einzelheiten.)

Weiter enth"alt dieses Paket die Programme \GFtoDVI\ Version~3.0 (Oktober
1989), \GFtoPK\ Version~2.3 (Juli 1990), \GFtype\ Version~3.0 (April 1989),
\MFT\ Version~2 (Oktober 1989), \PKtoGF\ Version~1.0 (Januar 1988) und
\PKtype\ Version~2.3 (November 1989).

\section{Installation}
\label{install}
\subsection{Entpacken des Archives}
Dieser "`\MetaFont-Anwenderbausatz"' ist in sich vollst"andig; alles was
Sie zur Erzeugung wundersch"oner Zeichens"atze f"ur \TeX\ ben"otigen,
finden Sie hier.  Dieser Abschnitt beschreibt die verschiedenen
Unterverzeichnisse und ihren Inhalt.  Normalerweise sollte dieses Paket in
Form eines {\tt LHA}-Archives vorliegen, das eine arbeitsf"ahige
Installation aller Programme und Skripten enth"alt.  Lediglich einige
Umgebungsvariablen m"ussen von Hand eingerichtet werden.  Leider gibt es
kein \glq Installer\grq-Skript, aber die Installation ist trotzdem sehr
einfach.  Zuerst m"ussen Sie die Dateien mit dem Kommando
\begin{verbatim}
   > LHa x MetaFont[.lha] <Installationspfad oder -Device>
\end{verbatim}
auspacken.  (Sie ben"otigen dazu das {\tt LHa}-Programm.  Sollten Sie es
noch nicht haben, holen Sie es sich von der Fish-Diskette~715 mit der
aktuellen Version.\footnote{Aber schicken Sie kein Geld an Stefan Boberg,
denn es erfolgt keine Lieferung!})  Ein Hauptverzeichnis {\tt MetaFont}
wird angelegt, das das vollst"andige Archiv in einzelnen
Unterverzeichnissen enth"alt, wie sie im folgenden beschrieben werden.
Insgesamt ben"otigen Sie weniger als 3~{\mc MB} Platz auf der Festplatte,
um das komplette \MetaFont-System zu installieren.
\begin{description}
\item{{\tt MetaFont:bases}:} Dieses Verzeichnis enth"alt die \glq
base\grq-Dateien, die \MetaFont\ zu Beginn eines Laufes sehr schnell laden
kann.  Hier finden Sie auch die Datei {\tt plain.mf} (Version~2.71) und
einige Installationsdateien f"ur die Formate \glq plain\grq\ und \glq cm\grq.
Neue base-Dateien sollten in diesem Verzeichnis angelegt werden.  Die
Umgebungsvariable {\tt MFBASES} sollte einen Eintrag enthalten, der auf
dieses Verzeichnis verweist, damit \MetaFont\ es finden kann.  (Siehe
Abschnitt~\ref{environment} zu Einzelheiten "uber die Umgebungsvariablen,
die \MetaFont\ kennt.)

\item{{\tt MetaFont:bin}:} Der wichtigste Teil dieses Paketes sind die
eigentlichen Programmdateien f"ur \MetaFont\ und die zugeh"origen
Hilfsprogramme.  Sie sollten dem Betriebssystem behilf"|lich sein, und die
{\tt PATH}-Umgebungsvaria\-ble um einen Verweis auf dieses Verzeichnis
erweitern, damit die Programme aufgerufen werden k"onnen.  Eine
ausf"uhrlichere Beschreibung, wie die Programme aufzurufen sind, wird im
n"achsten Abschnitt~\ref{running} gegeben.

\item{{\tt MetaFont:config}:} Die vorliegende Implementierung von
\MetaFont\ ist in der Lage, die Speicherbelegung beim Programmaufruf
anzupassen, falls die benutzten Einstellungen zu klein f"ur eine gestellte
Aufgabe sind.  In solch einem Fall bricht \MetaFont\ die Verarbeitung mit
der Fehlermeldung {\tt METAFONT capacity exceeded, sorry...} ab.  Die
Konfigurationsdatei {\tt mfmemory.config} enth"alt Eintr"age der Form
\begin{verbatim}
   set memmax             65530     % default 30000
   set screenheight         200     % default  1024
   set <internal size> <user value> % default <value>
\end{verbatim}
Sie k"onnen die Einstellungen in beschr"anktem Ma"se ver"andern oder
einzelne Zeilen aus dieser Datei l"oschen, so da"s dann auf interne Werte
zur"uckgegriffen wird.  (Diese sind in der \glq default\grq-Spalte
vermerkt.)  Die Umgebungsvariable {\tt MFCONFIG} sollte einen Eintrag
enthalten, der auf dieses Verzeichnis verweist.  (Siehe
Abschnitt~\ref{environment} zu Einzelheiten bez"uglich der von \MetaFont\
erkannten Umgebungsvariablen und Abschnitt~\ref{memory} zu Einzelheiten
"uber die Speicherkonfiguration.)

\item{{\tt MetaFont:doc}:} Zumindest dieses Verzeichnis kennen Sie schon,
da Sie ja diesen Text lesen.  Hier finden Sie die Dokumentation zu
\MetaFont~2.71 sowohl in deutscher als auch in englischer Sprache.  Die
\LaTeX-Quellendateien m"ussen vorhanden sein, dagegen k"onnen die {\tt
dvi}-Ausgabedateien bei unzureichendem Diskettenplatz gel"oscht sein.
Diese k"onnen Sie mit Hilfe einer lauf"|f"ahigen \TeX-Installation aber
neu erzeugen; es werden keine speziellen Makros oder ungew"ohnlichen
Zeichens"atze ben"otigt.

\item{{\tt MetaFont:inputs}:} Dieses Verzeichnis ist lediglich gedacht f"ur
\MetaFont-Programmierer und Systemadministratoren.  Es enth"alt
Textdateien, die f"ur die Erzeugung neuer oder ver"anderter base-Dateien
ben"otigt werden sowie die vollst"andige Sammlung der Computer Modern
Zeichens"atze, dem Standard f"ur die meisten \TeX-Anwender.  Hier k"onnen
Sie Ihre eigenen Zeichensatzprogramme hinzuf"ugen.  \MetaFont\ wird sie
finden, wenn die Umgebungsvariable {\tt MFINPUTS} einen Eintrag f"ur dieses
Verzeichnis enth"alt.  (Siehe Abschnitt~\ref{environment} zu Einzelheiten
"uber die von \MetaFont\ erkannten Umgebungsvariablen.)

\item{{\tt MetaFont:pool}:} \MetaFont\ (genau wie \TeX) ist ein
\PASCAL-Pro\-gramm und mu"s wegen der Einschr"ankungen dieser
Programmiersprache eine eigene Methode zur Verwaltung von Zeichenketten
anwenden.  Die \glq pool\grq-Datei {\tt mf.pool} enth"alt alle Texte und
Meldungen, die \MetaFont\ auf Ihren Bildschirm oder in die Logdatei
ausgeben will.  Sie wurde maschinell durch {\tt TANGLE} bei der
"Ubersetzung erzeugt und sollte nicht gel"oscht oder in irgendeiner Weise
ver"andert werden.

\item{{\tt MetaFont:rexx}:} Dieses Verzeichnis enth"alt das Public Domain
Paket \glq\CallMF\grq\ (Version~1.0), bestehend aus drei ARexx-Skripten von
Georg He{\ss}mann, Martin Bok\"amper, J\"org H\"ohle und Ulrich Wisser.  Es
ist sehr sinnvoll in Zusammenhang mit He{\ss}mann's Pas\TeX{}.  Sowohl der
Bildschirmanzeiger als auch der Druckertreiber versuchen \glq\CallMF\grq\
aufzurufen, falls ein Zeichensatz in einer bestimmten Auf"|l"osung nicht
vorhanden ist.  Die Arexx-Skripten erzeugen den fehlenden Zeichensatz
entweder automatisch oder in einem gesonderten Lauf.  Die Dokumentation zu
\glq\CallMF\grq~\cite{hessmann} finden Sie in einem Unterverzeichnis von
{\tt rexx}, deshalb wird an dieser Stelle nicht n"aher auf die Installation
und Verwendung von \glq\CallMF\grq\ eingegangen.
\end{description}

\subsection{Steuerung der Konfigurationsgr"o"sen}
\label{memory}
Urspr"unglich handelt es sich bei \MetaFont\ (und \TeX) um ein
\PASCAL-Pro\-gramm, das nicht in der Lage ist, seine Speicherkonfiguration
zur Laufzeit anzulegen.  Um diese zu ver"andern, m"ussen Sie normalerweise
den Quelltext von \MetaFont\ mit ge"anderten internen Vorgabewerten neu
"ubersetzen.  Doch mit dieser Implementierung m"ussen Sie nicht mehr die
Meldung "`{\tt ask a wizard to enlarge me}"' f"urchten, sondern k"onnen
stattdessen selbst \glq zaubern\grq!  Sie wurde n"amlich mit Hilfe des {\tt
Web2C}-Sprachwandlers aus der {\mc UNIX}-Verteilung durchgef"uhrt und somit
ist es m"oglich, die zus"atzliche Eigenschaft zur Kontrolle der internen
Variablen einzubauen.

\MetaFont\ verwendet einen gesonderten Pfad und die Umgebungsvariable
{\tt MFCONFIG}.  (Siehe Abschnitt~\ref{environment} zu Einzelheiten "uber
die Benutzung von Umgebungsvariablen.)  Die Programme \IniMF\ und \VirMF\
werden in den darin angegebenen Verzeichnissen nach der Datei {\tt
mfmemory.config} suchen, die in einzelnen Zeilen Anweisungen der Form
\begin{verbatim}
   set memmax       100000
   set screenheight    400
   set scalefactor       2
\end{verbatim}
enthalten sollte.  Die Beispieldatei im {\tt config}-Verzeichnis \glq
set\grq zt die in meiner gegenw"artigen Standardkonfiguration verwendeten
Werte, die etwas h"oher sind als die internen Vorgabewerte.  Nicht alle
Einstellungen m"ussen in dieser Datei angegeben werden.  Beachten Sie aber,
da"s Sie auch nicht alle Einstellungen bis zum Maximum hochdrehen k"onnen
-- dazu m"u"sten Sie "uber mehr als 8~Gigabyte an freiem Speicher
verf"ugen!\footnote{Sollten Sie soviel haben, dann glaube ich Ihnen nicht!}

Wenn Sie eine Standard-base-Datei mit \IniMF\ erzeugen, so ist jede weitere
"Anderung der Konfiguration {\tt mfmemory.config} zul"assig f"ur \VirMF\ in
Verbindung mit dieser speziellen base-Datei, au"ser "Anderungen am Wert
{\tt memtop}.  Dies f"uhrt zur \MetaFont-Meldung "`{\tt(Fatal base file
error; I'm stymied)}"', was anzeigt, da"s diese base-Datei von einem
\IniMF\ mit einer anderen Konfiguration stammt.

Hier ist eine vollst"andige Liste aller Parameter, die in der
Konfigurationsdatei zul"assig sind, ihre internen Vorgabewerte und einige
Regeln f"ur ihre kleinsten und gr"o"sten Werte:
\begin{center}
\begin{tabular}{|l|r|r|l|}\hline
  Bezeichnung & Vorgabe & Grenzwert & Zweck\\\hline
  {\tt memmax} & 30000 & {\tt maxhalfword} & Gr"o"se des Hauptspeichers\\
  {\tt maxinternal} & 100 & ${}\leq259774$ & Anzahl der Internas\\
  {\tt bufsize} & 500 & {\tt maxhalfword} & Eingabezeichen\\
  {\tt errorline} & 72 & {\tt maxhalfword} & L"ange der Fehlerzeile\\
  {\tt halferrorline} & 42 & {\tt<errline$-15$} & Erste Fehlerzeile\\
  {\tt maxprintline} & 79 & $\geq60$ & L"ange der Ausgabezeile\\
  {\tt screenwidth} & 768 & 4095 & Breite der Bildschirmanzeige\\
  {\tt screenheight} & 1024 & 4095 & H"ohe der Bildschirmanzeige\\
  {\tt stacksize} & 30 & 300 & Anzahl der Eingabequellen\\
  {\tt maxstrings} & 2000 & {\tt maxhalfword} & Anzahl der Zeichenketten\\
  {\tt poolsize} & 32000 & {\tt maxhalfword} & und der enthaltenen Zeichen\\
  {\tt movesize} & 5000 & 10000 & Speicher f"ur Oktantenschritte\\
  {\tt maxwiggle} & 300 & 1000 & Gerundete Punkte pro Kreis\\
  {\tt gfbufsize} & 100 & 4096 & Ausgabepuffergr"o"se\\
  {\tt pathsize} & 300 & 1000 & Knotenzahl in einem Pfad\\
  {\tt bistacksize} & 785 & 785 & Stack f"ur Teilungsalgorithmus\\
  {\tt headersize} & 25 & 100 & Worte in {\mc TFM}-K"opfen\\
  {\tt ligtablesize} & 5000 & 32510 & Ligaturen/Einr"uckungen\\
  {\tt maxkerns} & 500 & 1000 & Unterschiedliche Abst"ande\\
  {\tt maxfontdimen} & 50 & 100 & Anzahl von \glq fontdimen\grq sionen\\
  {\tt memtop} & 30000 & {\tt memmax} & H"ochste Speicherstelle\\
  {\tt scalefactor} & 1 & 10 & Anzeige \glq{\mc SF}\grq-fach verkleinert\\
  {\tt maxinopen} & 6 & 20 & Anzahl der Ausgabedateien\\
  {\tt paramsize} & 150 & 1000 & Makro-Parameter\\\hline
\end{tabular}
\end{center}
Einige dieser Werte werden vor ihrer Verwendung noch mit 4 oder~8
multipliziert, so da"s die tats"achlich ben"otigte Bytezahl f"ur eine
spezielle Einstellung nicht so einfach zu bestimmen ist.  Solange Sie
jedoch keine Probleme mit den Vorgabewerten oder dieser
Standardkonfiguration haben, empfehle ich Ihnen, sie so zu lassen.  In den
meisten F"allen von ungen"ugender Speichergr"o"se mu"s nur {\tt memmax}
erh"oht werden, und dies wurde tats"achlich bis zum f"urchterlich hohen
Wert~750.000 ausprobiert, und zwar auf meinem Amiga~2000 mit 8~{\mc MB}
32~Bit Fast{\mc RAM}.

Sie k"onnen die Gr"o"se der Bildschirmanzeige durch Ver"anderung der Werte
{\tt screenwidth}, {\tt screenheight} und {\tt scalefactor} beeinflussen.
Die Bedeutung der ersten beiden d"urfte klar sein, nur sei angemerkt, da"s
{\tt screenheight} den Wert f"ur die {\em interlaced\/} Darstellung
bezeichnet, obwohl non-interlaced Bildschirmmodi automatisch erkannt werden
und entsprechend nur halb soviele Pixelzeilen angezeigt werden.  Au"serdem
wird durch die beiden Werte nicht die Fenstergr"o"se sondern die
zugeh"origen Werte {\tt innerwidth} und {\tt innderheight} eingestellt.
Der {\tt scalefactor} ist ein Reduktionsfaktor, das hei"st die Anzeige
wird sowohl in der H"ohe als auch in der Breite um diesen Faktor
verkleinert dargestellt.  Um sinnvoll mit dieser Einstellung arbeiten
zu k"onnen, enth"alt die mitgelieferte {\tt plain.base} die internen
Vorgaben
\begin{verbatim}
   screen_rows:=4095; screen_cols:=4095; % infinity
\end{verbatim}
wie sie in meiner Druckermodusdatei festgelegt sind.  Bei der
Bildschirmanzeige verwendet \MetaFont\ den jeweils kleineren Wert von
{\tt screenheight} und {\tt screen\_rows} beziehungsweise {\tt screenwidth}
und {\tt screen\_cols}, so da"s mit diesen Maximalwerten nur die in der
Konfigurationsdatei angegebenen Werte ber"ucksichtigt werden.

\subsection{Verwendung der Umgebungsvariablen}
\label{environment}
\MetaFont\ kennt und verwendet einige Umgebungsvariablen bei der Suche nach
Dateien, f"ur den Aufruf des Systemeditors nach dem \glq{\tt
E}\grq-Kommando im Fehlerfall und zur Einstellung der Bildschirmanzeige.
Die beiden Programme \IniMF\ und \VirMF\ verwenden einen Algorithmus zur
rekursiven Suche nach base-Kommando\-dateien, der Konfigurationsdatei
{\tt mfmemory.config}, den Zeichensatzbeschreibungsprogrammen und der
Textdatei {\tt mf.pool}.  Sie k"onnen die Umgebungsvariablen entweder mit
dem Systemaufruf
\begin{verbatim}
    SetEnv <Variable> <Ersetzung>
\end{verbatim}
ver"andern, um die bei Ihnen g"ultige Konfiguration zu ber"ucksichtigen,
oder Sie k"onnen die internen Standardwerte beibehalten.  Hier ist eine
Liste der vier Suchpfad-Umgebungen, ihrer Vorgabewerte und dessen, was
\MetaFont\ in den jeweiligen Verzeichnissen zu finden hofft.

\begin{center}
\begin{tabular}{|l|l|l|}\hline
  Umgebungsvariable & Vorgabewert & Dateien\\\hline
  {\tt MFBASES}  & \verb/",MF:bases"/  & {\tt *.base} Kommandodateien\\
  {\tt MFCONFIG} & \verb/",MF:config"/ & {\tt mfmemory.config}\\
  {\tt MFINPUTS} & \verb/",MF:inputs"/ & {\tt *.mf} Programmdateien\\
  {\tt MFPOOL}   & \verb/",MF:pool"/   & {\tt mf.pool} Textverzeichnis\\\hline
\end{tabular}
\end{center}

Das Komma in den Vorgabewerten zeigt an, da"s das aktuelle Verzeichnis in
allen vier F"allen stets zuerst durchsucht wird.  Wollen Sie stattdessen
zuerst in \glq{\tt RAM:}\grq\ suchen lassen, so k"onnten sie den Eintrag
\verb/"RAM:,,MF:inputs"/ verwenden und damit das aktuelle Verzeichnis an
die zweite Stelle im Suchpfad verweisen.  Falls die Umgebungsvariablen
nicht durch das \glq SetEnv\grq-Kommando gesetzt werden, bleiben die
internen Standardwerte aktiv und das aktuelle Verzeichnis wird stets zuerst
durchsucht.  Vielleicht kommt Ihnen dies ja gelegen.

Tritt bei der Verarbeitung ein Fehler auf oder unterbrechen Sie \MetaFont\
bei seiner Arbeit, so meldet sich \MetaFont\ mit dem Fragezeichen als
Eingabemarke.  Geben Sie in solch einem Fall \glq{\tt e}\grq\ (oder \glq{\tt
E}\grq) ein, so wird dadurch Ihr Texteditor aufgerufen.  Welcher das in
Ihrem Fall ist, wird durch die Umgebungsvariable {\tt MFEDIT} gesteuert,
die ein Aufrufmuster enth"alt, um Ihren bevorzugten Systemeditor in der
gerade bearbeiteten Datei an der fehlerhaften Stelle zu positionieren.  Dies
ist nicht notwendigerweise die Datei, mit der Sie \MetaFont\ aufgerufen haben.
Geben Sie als Wert von {\tt MFEDIT} einen beliebigen Programmaufruf oder
ein beliebiges Skript an, der/das Ihren Editor in der Datei
\glq\verb/%s/\grq\ und der Zeile \glq\verb/%d/\grq\ positioniert.  Die
Standardeinstellung lautet folgenderma"sen und startet den mit dem
Betriebssystem gelieferten Editor {\tt MEmacs} auf:
\begin{verbatim}
   EDITOR "MEmacs goto %d %s"
\end{verbatim}
Im {\tt rexx}-Verzeichnis finden Sie einige ARexx-Skripten zur Verwendung
des Cygnus Ed Professional Editors.  Wenn Sie diese verwenden wollen,
m"ussen Sie einfach der Umgebungsvariablen {\tt MFEDIT} die Zeichenkette
\begin{verbatim}
   "rx MF:rexx/MFEdit.rexx %s %d"
\end{verbatim}
zuweisen.  Das zweite Skript {\tt NameStruc} m"ussen Sie in das {\tt
REXX:}-Verzeichnis kopieren, da es direkt aus {\tt MFEdit.rexx} aufgerufen
wird.

Au"serdem gibt es die M"oglichkeit, Generierungsl"aufe am Bildschirm
mitzuverfolgen, so wie es im \glq\MetaFont book\grq\ von Don
Knuth~\cite{knuth.c} beschrieben ist.  Da dies aber einige erweiterte
Bibliotheksroutinen verwendet, die in "alteren Versionen des
Betriebssystems nicht vorhanden sind, funktioniert dies nur ab Amiga{\mc
DOS}~2.0 und h"oher (tut mir leid).  Um die Bildschirmanzeige zu
aktivieren, m"ussen Sie die Umgebungsvariable {\tt MFWTERM} auf den Wert
{\tt AMITERM} setzen.  Anschlie"send wird jeder Lauf f"ur die virtuellen
Ger"atetreiber proof und smoke seine Ergebnisse auf Ihrem Bildschirm
anzeigen.

\section{Verwendung der Programme}
\label{running}
\subsection{Erzeugung neuer base-Dateien mit IniMF}
Obwohl Sie eine betriebsfertige {\tt plain.base}-Datei in diesem Paket
finden, kann es sein, da"s Sie zus"atzliche base-Dateien erzeugen wollen,
die andere \MetaFont-Kommandos als die Standardeinstellung aus dem
\glq\MetaFont book\grq~\cite{knuth.c} enthalten.  Zu diesem Zweck gibt es
das Programm \IniMF, das in der Lage ist, solche neuen bin"aren
base-Dateien zu erzeugen, die dann sehr schnell nachgeladen werden k"onnen.
Wenn Sie \IniMF\ vom {\mc CLI} (command line input, die Shell) ohne
Argumente aufrufen, meldet es sich mit zwei Sternchen, die anzeigen, da"s
"`\MetaFont\ begierig darauf ist, Gro"ses zu leisten"' und Sie "`bitte einen
Datei\-namen eingeben"' sollen.
\begin{verbatim}
   > IniMF
   This is METAFONT, C Version 2.71 (INIMF)
   **
\end{verbatim}
Wenn Sie dem hier gegebenen Vorschlag folgen, ist es ganz einfach,
den n"achsten Schritt zu tun.  Beantworten Sie die
\MetaFont-Eingabeauf"|forderung mit dem Namen eines
"`Initialisierungsprogrammes"' wie zum Beispiel des mitgelieferten {\tt
plain.inimf} oder {\tt cm.inimf} und der Rest wird v"ollig automatisch
ausgef"uhrt, so da"s schnell eine neue base-Datei {\tt plain.base} oder
{\tt cm.base} entsteht. Oder Sie geben eine Folge von {\tt input}-Kommandos
ein, um mehrere Dateien in die base einzubinden.  Das letzte Kommando sollte
{\tt dump} lauten; dies weist \IniMF\ an, die verdichtete Kommandodatei zu
erzeugen und seinen Bearbeitungslauf zu beenden.

Alternativ k"onnen Sie auch folgenden Einzeiler eingeben
\begin{verbatim}
   > IniMF plain.inimf
\end{verbatim}
was zum gleichen Ergebnis wie oben f"uhrt.

\subsection{Erzeugung neuer Zeichensatzgr"o"sen mit VirMF}
\label{examples}
Die Produktionsversion von \MetaFont\ hei"st \glq\VirMF\grq\ und
unterscheidet sich in einigen Punkten von \IniMF{}.  Es ist dazu gedacht,
in hoher Geschwindigkeit Zeichens"atze zu erzeugen und kann deshalb keine
base-Dateien schreiben, diese aber zu Beginn eines Laufes schnell einlesen.
Genau wie \IniMF\ k"onnen Sie \VirMF\ auf zweierlei Weise aufrufen.  Geben
Sie lediglich seinen Namen ein (und gesetzt, das Betriebssystem wei"s, wo
es das Programm zu suchen hat), so meldet sich \MetaFont\ f"ur einen
interaktiven Dialog.
\begin{verbatim}
   > VirMF
   This is METAFONT, C Version 2.71
   **
\end{verbatim}
Sie k"onnen diese Auf"|forderung mit jedem g"ultigen Kommando beantworten und
dabei die \glq plain\grq\ base als gegeben voraussetzen, wie sie im
\glq\MetaFont book\grq~\cite{knuth.c} beschrieben wird.

Als leichten Einstieg versuchen Sie doch einfach folgendes.  (Zitiert von
Seite~31 des \glq\MetaFont book\grq~\cite{knuth.c}).  Geben Sie
\glq\verb/\relax/\grq\ ein---also R"uckstrich, {\tt r}, {\tt e}, {\tt l},
{\tt a}, {\tt x}---und dr"ucken Sie $\langle$return$\rangle$ (oder was auch
immer auf Ihrer Tastatur f"ur "`Zeilenende"' steht).  \MetaFont\ ist ganz
begierig darauf loszulegen, bereit einen gro"sen Zeichensatz zu erzeugen;
Sie aber sagen ihm, es erst einmal ruhig anzugehen, denn dies wird ein ganz
vergn"uglicher Spaziergang.  Der R"uckstrich bedeutet, da"s \MetaFont\
nicht eine Datei einlesen soll, sondern direkt Anweisungen von der Tastatur
entgegen zu nehmen; der Befehl \glq{\tt relax}\grq\ bedeutet "`tue nichts"'.

Die Maschine wird jetzt mit einem einzelnen Sternchen antworten: \glq{\tt
*}\grq.  Dies bedeutet, da"s sie jetzt bereit ist, Befehle (und nicht den
Namen einer Datei) entgegen zu nehmen.  Nur so zum Spa"s geben Sie jetzt
folgendes ein:
\begin{verbatim}
   drawdot (35,70); showit;
\end{verbatim}
und $\langle$return$\rangle$---nicht vergessen, die Strichpunkte mit dem
anderen Zeug einzugeben.  Ein mehr oder weniger runder Klecks sollte jetzt
auf Ihrem Bildschirm erscheinen!  Und Sie sollten ein weiteres Sternchen
als Eingabeauf"|forderung sehen.  Tippen Sie jetzt
\begin{verbatim}
   drawdot (65,70); showit;
\end{verbatim}
und $\langle$return$\rangle$, um einen zweiten Klecks zu erhalten.  (Im
folgenden werden wir die Notwendigkeit, nach jeder Eingabezeile
$\langle$return$\rangle$ zu dr"ucken, nicht mehr erw"ahnen.)  Zum Abschlu"s
tippen Sie
\begin{verbatim}
   draw (20,40)..(50,25)..(80,40); showit;
   shipit; end.
\end{verbatim}
Dies malt eine Kurve durch drei gegebene Punkte, zeigt das Gesamtergebnis
an, schreibt es gleichzeitig in eine Ausgabedatei und beendet das Programm.
\MetaFont\ sollte noch mit \glq\verb/[0]/\grq\ antworten, was soviel
bedeutet, da"s es einen Buchstaben mit der Nummer Null in dem gerade
verarbeiteten "`Zeichensatz"' geschrieben hat; und es sollte Ihnen mitteilen,
da"s es eine Ausgabedatei mit dem Namen {\tt mfput.2602gf} erzeugt hat.

Alternativ k"onnen Sie auch ein oder mehrere Argumente beim Aufruf von
\VirMF\ angeben.  Das erste Argument kann der Name einer abweichenden
base-Datei sein, was durch ein vorangestelltes \verb/&/-Zeichen (wie bei
\verb/&plain/) festgelegt wird, und es d"urfen mehrere Kommandos in Form
einer Zeichenkette folgen, die nach dem Einlesen der base-Datei ausgef"uhrt
werden.  Zum Beispiel geben Sie folgendes ein, wenn Sie einen Zeichensatz
in einer bestimmten Auf"|l"osung erzeugen wollen:
\begin{verbatim}
   > VirMF &plain "\mode:=previewer; mag:=magstep2; input cmr10"
\end{verbatim}
Sie m"ussen die Anf"uhrungszeichen in dieser Form eingeben, denn die
Strichpunkte haben eine besondere Bedeutung f"ur das Betriebssystem des
Amiga.  Dieses Kommando wird den normalen Textzeichensatz {\tt cmr10}
passend f"ur den Bildschirmanzeiger der Auf"|l"osung 100~dpi in zweifacher
Vergr"o"serung erzeugen, so da"s der Zeichensatz die Bezeichnung {\tt
cmr10.144gf} erhalten wird und \MetaFont\ folgenden Text auf Ihren
Bildschirm (und in die Logdatei) schreiben wird.
\begin{verbatim}
   This is METAFONT, C Version 2.71
   (...cmr10.mf (...cmbase.mf) (...roman.mf (...romanu.mf
   [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75]
   [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86]
   [87] [88] [89] [90]) (...romanl.mf [97] [98] [99] [100]
   [101] [102] [103] [104] [105] [106] [107] [108] [109]
   [110] [111] [112] [113] [114] [115] [116] [117] [118]
   [119] [120] [121] [122]) (...greeku.mf [0] [1] [2] [3]
   [4] [5] [6] [7] [8] [9] [10]) (...romand.mf [48] [49]
   [50] [51] [52] [53] [54] [55] [56] [57]) (...romanp.mf
   [36] [38] [63] [62]) (.,.romspl.mf [16] [17] [25] [26]
   [27] [28]) (...romspu.mf [29] [30] [31]) (...punct.mf
   [33] [60] [35] [37] [39] [40] [41] [42] [43] [44] [46]
   [47] [58] [59] [61] [64] [91] [93] [96]) (...accent.mf
   [18] [19] [20] [21] [22] [23] [24] [32] [94] [95] [125]
   [126] [127]) (...romlig.mf [11] [12] [13] [14] [15])
   (...comlig.mf [34] [45] [92] [123] [124]) ) )
   Font metrics written on cmr10.tfm.
   Output written on cmr10.144gf (128 characters, 7276 bytes).
   Transcript written on cmr10.log.
\end{verbatim}

Wenn Sie sich schon etwas mit der \MetaFont-Sprache auskennen, wissen Sie
sicher, was an dieser Stelle noch m"oglich ist; falls nicht, rate ich
Ihnen, sich das \glq\MetaFont book\grq~\cite{knuth.c} oder den zweiten Band
von Kopka~\cite{kopka.erw} zu kaufen.

\subsection{Umwandlung zwischen den {\tt gf}- und {\tt pk}-Formaten}
\MetaFont\ (und \TeX) ist ein h"ochst portables Programmiersystem, das es
f"ur eine Vielzahl von Rechnern gibt, angefangen bei kleinen Systemen wie
dem Amiga bis hin zu echten"`Zahlenfressern"'.  Auch seine bin"are Ausgabe
ist unabh"angig von einer speziellen technischen Ausstattung.  Wie in dem
Beispiellauf aus Abschnitt~\ref{examples} gezeigt, erzeugt \MetaFont\
normalerweise drei verschiedene Ausgabedateien.

Schriftsatzsysteme wie \TeX\ k"ummern sich nicht darum, wo am Ende die
Tinte hinkommt.  Sie wollen lediglich Informationen dar"uber, wie gro"s die
einzelnen Buchstaben sind und wo in einem bestimmten Zeichensatz sie sich
befinden.  Diese Informationen werden in ein \glq{\tt tfm}\grq-Datei
geschrieben (im Beispiel war das {\tt cmr10.tfm}) und enthalten die
"`(\TeX) font metric"' Information.

Druckertreiber und Bildschirmanzeiger, die "`device independent files"'
verarbeiten, wie sie von \TeX\ oder anderen Programmen erzeugt werden,
brauchen dagegen Informationen "uber das tats"achliche Aussehen der
Buchstaben, die sie anzeigen sollen.  \MetaFont\ schreibt diese
Pixelinformation f"ur jeden Buchstaben in einem Zeichensatz im sogenannten
"`generic font"' Format, das hei"st es schreibt eine \glq{\tt
.gf}\grq-Datei ({\tt cmr10.144gf} in obigem Beispiel).  Die Dateiendung
bezeichnet dabei die spezifische Auf"|l"osung des erzeugten Zeichensatzes in
"`Punkten pro Zoll"', so da"s Sie zwischen Zeichens"atzen f"ur den
Bildschirmanzeiger und den Druckertreiber unterscheiden k"onnen.
Das "`generic font"' Format ist an dieser Stelle sehr gut geeignet und
einige Ger"atetreiber k"onnen es sogar direkt verarbeiten.

In den meisten F"allen aber wird Ihr \TeX-System mit etwas ganz anderem
arbeiten, der sogenannten \glq{\tt pk}\grq-Darstellung der Pixelinformation.
\glq{\tt pk}\grq-Dateien enthalten die gleiche Information wie die
zugeh"origen \glq{\tt gf}\grq-Dateien, nur ist diese stark komprimiert, so
da"s \glq{\tt pk}\grq-Dateien viel kleiner sind.  Die Umwandlung zwischen
diesen beiden Formaten der Pixelinformation geschieht mit Hilfe der beiden
Programme \GFtoPK\ und \PKtoGF.  Diese werden folgenderma"sen aufgerufen
\begin{verbatim}
   > GFtoPK [-v] gffile [pkfile]
   > PKtoGF [-v] pkfile [gffile]
\end{verbatim}
Die \glq{\tt -v}\grq-Option sagt den Programmen, etwas wortreicher zu sein,
ansonsten w"urden Sie "uberhaupt keine Ausgabe am Bildschirm sehen.  Das
erste Argument bezeichnet die Eingabedatei (dabei ist die Endung wichtig)
im jeweiligen Ausgangsformat.  Das optionale zweite Argument bezeichnet die
Ausgabedatei im jeweils anderen Format.  Geben Sie dieses zweite Argument
nicht an, so wird die Endung der Eingabedatei auf standardisierte Weise in
die Endung der Ausgabedatei umgewandelt.  Der Aufruf
\begin{verbatim}
   > GFtoPK cmr10.144gf
\end{verbatim}
wird {\tt cmr10.144gf} nach {\tt cmr10.144pk} umwandeln.  Sie k"onnen f"ur
das zweite Argument einen vollst"andigen Pfadnamen eingeben, so da"s dann
die Ausgabedatei gleich in das richtige Verzeichnis gestellt wird.

\subsection{Probedrucke der Zeichens"atze mit GFtoDVI}
Diese Installation von \MetaFont\ kennt zwei spezielle Modi genannt \glq
proof\grq\ und \glq smoke\grq, die zwei virtuellen Ger"atetreibern
entsprechen mit einer Auf"|l"osung von 2602~dpi.  Das Programm \GFtoDVI\ kann 
formatierte Ausdrucke dieser Zeichens"atze erzeugen.  Geben Sie einfach ein
\begin{verbatim}
   > GFtoDVI
\end{verbatim}
und \GFtoDVI\ wird Sie nach einem {\tt gf}-Dateinamen fragen.  Sie k"onnen
einige interne Einstellungen f"ur diesen Lauf "andern, indem Sie einen
Schr"agstrich an den Dateinamen anh"angen.  Dann wird Sie \GFtoDVI\ zur
Ersetzung spezieller Zeichens"atze auf"|fordern, das hei"st zur Einstellung
eines ger"ateabh"angigen \glq gray\grq\ oder \glq black\grq\ Zeichensatzes.
(Siehe hierzu das \glq\MetaFont book\grq~\cite{knuth.c}.)  Wie die meisten
anderen Programme, kann auch \GFtoDVI\ Aufrufargumente direkt aus der
Kommandozeile "ubernehmen, so da"s Sie auch einfach
\begin{verbatim}
   > GFtoDVI cmr10.2602gf/
\end{verbatim}
eingeben k"onnen und anschlie"send weitere Eingaben angefordert werden.

\subsection{Ausdruck von Zeichensatzprogrammen mit MFT}
Eine andere Besonderheit dieser Implementierung ist das Programm \MFT, das
gew"ohnliche \MetaFont\ Programmquellen in \TeX\ Eingabedateien umwandelt,
um sie anschlie"send formatiert ausdrucken zu k"onnen.  Das einzige
Aufrufargument ist der Name einer \glq{\tt mf}\grq-Datei, die Teile eines
\MetaFont-Programmes enth"alt.  Sie k"onnen die Arbeitsweise von \MFT\
beeinflussen durch die Angabe eines anderen Formates als {\tt plain.mft}.
Es macht sicher Spa"s, mit den Einstellungen und Optionen herumzuspielen.
\begin{verbatim}
   > MFT file[.mf] [-cs] [change[.ch]] [style[.mft]]
\end{verbatim}

\subsection{Analyse von {\tt gf}- und {\tt pk}-Dateien}
Die beiden letzten Programme in dieser Verteilung dienen zu Testzwecken.
Sie liefern genaue Informationen "uber den Inhalt der Pixeldateien im \glq
generischen\grq\ und im \glq komprimierten\grq\ Format in Textform.
\begin{verbatim}
   > GFtype [-m] [-i] gffile
   > PKtype pkfile
\end{verbatim}
Die beiden Optionen f"ur \GFtype\ bedeuten "`Mnemonische Ausgabe"' und
"` pIxel Ausgabe"'.  Ihre Angabe wird weitere Informationen zur Textausgabe
hinzuf"ugen, besonders die Darstellung der einzelnen Buchstaben in der Form
von {\mc ASCII} \glq Bildern\grq\ f"ur die eingehende Kontrolle dessen, was
\MetaFont\ produziert.

\section{Empfohlene Lekt"ure}
\label{bibliography}
Hier ist eine kurze Liste mit B"uchern zu \MetaFont\ und seinen Kollegen.
Sie sollten diese B"ucher zu Rate ziehen, wenn Sie eingehende Informationen
"uber die Programmierung mit der \MetaFont-Sprache suchen.  Au"serdem
finden Sie darin interessante Sachen "uber die Geschichte von \TeX\ und
\MetaFont\ seit 1978, Schriftsatz mit Computern im allgemeinen sowie "uber
das literarische Programmieren, das bei der Entwicklung von "`Computers \&
Typesetting"' verwendet wurde.

\begin{thebibliography}{99}
\bibitem{hessmann} Georg He{\ss}mann u.~a.,
  ARexx Unterst"utzung f"ur \MetaFont, Dokumentation zur Version 1.0,
  Beschreibung des \glq\CallMF\grq-Paketes von Georg He"smann, Martin
  Bok"amper, J"org H"ohle und Ulrich Wisser zur Verwendung mit dem
  Pas\TeX-System, enthalten in dieser Amiga-Implementation.
\bibitem{knuth.a} Donald E. Knuth, Computers \& Typesetting~A:
  The \TeX book, Addison-Wesley Publishing Company, 19.~Auf"|lage, Juni
  1990.  {\em Das\/} Referenzhandbuch f"ur alle Benutzer des \TeX-Systems.
  Es beschreibt die \TeX-Sprache auf vielschichtige Weise.
\bibitem{knuth.b} Donald E. Knuth, Computers \& Typesetting~B:
  \TeX: The Program, Addison-Wesley Publishing Company, 4.~Auf"|lage,
  Februar 1991.  Dieser 600~Seiten-Schm"oker enth"alt den ausf"uhrlich
  dokumentierten Quelltext f"ur das \TeX-Programm, geschrieben in {\tt WEB}.
\bibitem{knuth.c} Donald E. Knuth, Computers \& Typesetting~C:
  The \MetaFont book, Addison-Wesley Publishing Company, 4.~Auf"|lage,
  Juni 1990.  {\em Das\/} Referenzhandbuch f"ur alle Benutzer des
  \MetaFont-Systems.  Es beschreibt die \MetaFont-Sprache auf
  vielschichtige Weise.
\bibitem{knuth.d} Donald E. Knuth, Computers \& Typesetting~D:
  \MetaFont: The Program, Addison-Wesley Publishing Company, 4.~Auf"|lage,
  Februar 1992.  Dieser 566~Seiten-Schm"oker enth"alt den ausf"uhrlich
  dokumentierten Quelltext f"ur das \MetaFont-Programm,
  geschrieben in {\tt WEB}.
\bibitem{knuth.e} Donald E. Knuth, Computers \& Typesetting~E:
  Computer Modern Typefaces, Addison-Wesley Publishing Company, 1.~Auf"|lage,
  Mai 1986.  Dieses Buch enth"alt Beispiele f"ur alle Buchstaben und Zeichen
  der Computer Modern Zeichensatzfamilie, die eng verbunden ist mit dem
  Erscheinungsbild aller \TeX nischen Schriftst"ucke.
\bibitem{knuth.lit} Donald E. Knuth, Literate Programming, Center for the
  Study of Language and Information, 1.~Auf"|lage, 1992.  Dies ist eine
  Zusammenstellung von Knuthschen Texten im Zusamenhang mit dem
  "`literarischen Programmieren"', wie es in h"ochster Vollendung bei
  den \TeX- und \MetaFont-Programmen angewandt wurde.  Au"serdem enth"alt
  es eine Liste aller Fehler von \TeX~82 (bis einschlie"slich den
  20.~September 1991).
\bibitem{kopka.ein} Helmut Kopka,
  \LaTeX--Eine Einf"uhrung, Addison-Wesley Publishing Company, 4.~Auf"|lage,
  1992.  Dies ist der erste von zwei B"anden f"ur deutschsprachige
  \LaTeX-Benutzer.  Offenbar ist es beliebter als das Referenzhandbuch
  von Leslie Lamport.
\bibitem{kopka.erw} Helmut Kopka,
  \LaTeX--Erweiterungsm"oglichkeiten mit einer Einf"uhrung in \MetaFont,
  Addison-Wesley Publishing Company, 3.~Auf"|lage, 1992.  Dies ist der
  zweite Band f"ur deutschsprachige \LaTeX-Benutzer.  Er enth"alt eine
  Einf"uhrung in die Programmierung mit \MetaFont\ und das literarische
  Programmieren mit {\tt WEB} und {\tt CWEB}.
\end{thebibliography}

\section{Geschichte}
Diese Amiga-Umsetzung von \MetaFont~2.71 basiert zu einem gro"sen Teil auf
dem vollst"andigen \TeX- und \MetaFont-System von Edmund Mergl, wie es auf
den Fish-Disketten 611--616 ver"offentlicht wurde.  Ausgehend von
\MetaFont~2.7 aus dieser Implementierung, habe ich viele "Anderungen
und Erweiterungen vorgenommen.

Der gr"o"ste Unterschied zwischen der Version von Edmund Mergl und meiner
eigenen ist, da"s nun \MetaFont\ f"ur sich allein stehend konzipiert ist,
mit v"ollig selbst"andigem Quelltext und Hilfsmitteln.  (Siehe
Abschnitt~\ref{source}.)

Von Beginn an habe ich auf dem Amiga mit dem {\mc SAS/C}-Entwicklungssystem
gearbeitet.  Die neueste Version~6.3 dieses gro"sartigen Compilers ist
v"ollig kompatibel mit dem {\mc ANSI}-Standard und hat eine ganze Reihe
von Auslassungen bez"uglich Stil und Sprache festgestellt, als ich
versuchte, den Quelltext neu zu "ubersetzen.  Eine gro"se Aufr"aumaktion
f"ur die Zusatzquellen in {\mc C}, insbesondere die Einf"uhrung der
vollst"andigen Prototypen und die Korrektur einiger fehlender Casts, war
deshalb notwendig.

Sobald die selbsterzeugte Version~2.7 sauber lief, wurde sie mit der
bekannten Amiga-Umsetzung von Stefan Becker von der Fish-Diskette~486
verglichen und erwies sich als derart langsamer, da"s einige Verbesserungen
notwendig waren, um mit diesem System zu wetteifern.  Der kritische Kern der
"`inneren Schleife"' von \MetaFont\ wurde in Assembler f"ur den Motorola~68020
umgeschrieben.  Dies ergab eine Beschleunigung des Laufzeitverhaltens um etwa
zwanzig bis drei"sig Prozent im Vergleich zur nichtoptimierten Version und um
etwa f"unf bis acht Prozent im Vergleich zur optimierten Version von Stefan
Becker.

Der gl"anzend bestandene {\mc TRAP}-Test bewies die Korrektheit der
gemachten "Anderungen dieser Implementierung, so da"s der schwierigere Teil
schnell erledigt war.  Die Testroutine von Donald Knuth war tats"achlich
geeignet, den letzten b"osen Fehler in meiner eigenen Umsetzung zu finden
(der ausgerechnet etwas mit einer Variablen \glq\verb/be_careful/\grq\ zu
tun hatte).  Jedoch zeigte der Augenschein, da"s sowohl mein eigenes
\MetaFont\ als auch das von Stefan Becker Probleme mit der
Bildschirmanzeige hatten.  Weder die Implementierung von Stefan Becker noch
die von Edmund Mergl arbeiteten so, wie im \glq\MetaFont
book\grq~\cite{knuth.c} beschrieben.  Besonders die Testroutine {\tt
6test.mf} f"ur die Computer Modern Zeichens"atze machte ein "Uberdenken
notwendig.  (Ein Beispiel f"ur diesen Test findet man auf Seite~192
von~\cite{knuth.c}.)  Schlie"slich lief jedoch die ge"anderte Version von
{\tt amiga.c}, die gleichzeitig einige fortgeschrittene Funktionen f"ur die
Bildschirmanzeige verwendet und deshalb auch die Version~2 des Amiga
Betriebssystems ben"otigt.

Unter Anwendung einiger Ideen von David Crooke aus seiner Amiga-Umset\-zung
von \TeX~3.141, baute ich eine ge"anderte Pfadsuche sowie die M"oglichkeit
der Speicherkonfiguration in \MetaFont\ ein.  (Siehe Abschnitt~\ref{memory}
zu Einzelheiten "uber die verf"ugbaren M"oglichkeiten.)  Sie m"ussen nicht
mehr die Abbruchmeldung {\tt METAFONT capacity exceeded, sorry...} f"urchten.
Stattdessen k"onnen Sie jetzt selbst \glq zaubern\grq!
(Siehe Abschnitt~\ref{memory}.)

Im September~1993 wurde dann der erste Schritt in Richtung Version~2.71
getan mit Hilfe der Fehlerbeschreibungen des Addison-Wesley-Verlages.
Alle "Anderungen, die die neue Version betrafen, wurden in die
Change-Datei eingebaut.

Schlie"slich erhielt ich im Oktober~1993 die offizielle Version~2.71, die
das alte System vollst"andig ersetzt.  Sie enth"alt ein neues {\tt plain.mf}
base-Programm und einen v"ollig neuen {\mc TRAP}-Test.  Die letzte gro"se
"Anderung dieser Implementation war die Bereitstellung einer wirklich {\mc
GRO"sEN} Version von \MetaFont\ (und von \TeX~3.1415 nebenbei gesagt),
indem {\tt max\_quarterword} auf 32.767 (32~Kilo Viertelworte) und {\tt
max\_halfword} auf 1.073.741.823 (1~Giga Halbworte) erweitert wurde, so
da"s nun wirklich niemand mehr an die maximal m"ogliche Einstellung sto"sen
wird (Sie br"auchten schon mehr als 8~Giga Byte freien Speicher!).  Dabei
scheint jeder zu glauben, da"s \glq262.142\grq\ als maximaler Wert von {\tt
memmax} festgelegt sei, nur weil es so in~\cite{knuth.b} und~\cite{knuth.d}
angegeben ist.  Dieser Wert gilt jedoch nur f"ur 36~Bit Worte.  Die
vorliegende {\mc C}-Implementation arbeitet aber auf der Basis von "`64~Bit
Worten"', das hei"st ein Halbwort ist als {\bf long int} definiert, so da"s
die viel gr"o"seren Werte verwendet werden k"onnen.

\section{Quelltext}
\label{source}
Bei diesem Paket handelt es sich um den "`\MetaFont\ Benutzerbausatz"', der
keinerlei Quelltext f"ur die eigentlichen Programme enth"alt (es gibt aber
ein ganzes Verzeichnis f"ur die Computer Modern Zeichensatzbibliothek, doch
das ist eine andere Art von Quelltext).  Auf Anfrage ist beim Implementierer
ein "`Entwicklerbausatz"' erh"altlich.  Wenn Sie den haben wollen, brauchen
Sie nur einen an sich selbst adressierten Briefumschlag mit 10~Deutschen
Mark (oder 10~US~Dollar) an die Adresse zu schicken, die auf der ersten
Seite dieser Dokumentation angegeben ist, und Sie werden die neueste
Version mit allen notwendigen Hilfsmitteln f"ur die Neu"ubersetzung und
alle zuk"unftigen Fehlerbeseitigungen auf einer Diskette erhalten.
Au"serdem k"onnen Sie eine Liste mit \TeX-Makros und
\MetaFont-Zeichens"atzen f"ur die verschiedensten Verwendungszwecke, wie
Schach- und Go-Spiele, altdeutschen und asiatischen Schriften, und vieles
mehr, erhalten.

\end{document}
