%Hallo,
%Ich habe einmal die mir bekannten GDOS-Druckertreiber zusammengestellt.
%Hier die TeX-Version:
%
%****************************** schnippel ************************************
%format latexg   % deutsches latex
% Bitte 3 mal durchnudeln, sonst stimmt das Inhaltsverzeichnis nicht.

\documentstyle[german]{article} \pagestyle{headings}
%\documentstyle[11pt,german]{article} %fuer TTY-Version


% Absatzformat:
\parskip1ex           %vertikaler Abstand
\parindent0em         %nicht einr\"ucken

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% din_a4.sty:
\textheight 23cm \textwidth 16cm
%\textheight 23cm \textwidth 15cm  %TTY-Version
\oddsidemargin 0pt \evensidemargin 0pt

% Nette logos
\font\logo=logo10
\def\MetaFont{{\logo METAFONT}}

\newcommand{\VERSION}{2}
\newcommand{\SUBVERSION}{8}

%%% Das folgende Kommando wird genommen, wenn das File NICHT fuer html
%%% bestimmt ist:
\newcommand{\htmladdnormallink}[2]{#1}

\author{Gerd Castan}

\title{More Joy of GDOS\thanks{{Deutsche Version gepostet in
       de.comp.sys.st und maus.gui.gem;
       englische Version in comp.sys.atari.st}} \\
       Version \VERSION.\SUBVERSION}
\date{09.01.1996}

\begin{document}

%\tt \sloppy% TTY-Version

\maketitle
\newpage
\tableofcontents

\newcommand{\atari}{Atari}
\newcommand{\fontgdos}{FontGDOS}
\newcommand{\langDisk}{Language\ }
\newcommand{\mono}{s/w}
\newcommand{\no}{no$|$Software\ }
\def\ka{{\sc Kandinsk\kern-.125emY}}
\newcommand{\file}[1]{#1}

% Die folgenden Beiden Zeilen stammen von mir (Unter Zuhilfenahme von
% UMLAUT.TEX von Ch. Strunk)
% Sie funktionieren und ich weiss nicht, warum 8-)
\catcode`<=\active \def<{"<}
\catcode`>=\active \def>{">}

\section{Technisches}
\label{tech}
Meine Mailadresse wird sich in absehbarer
Zeit mehrmals "andern. Ich habe deshalb einen Alias, der die Mail dorthin
weiterleitet, wo ich mich gerade aufhalte - und wenn es im Mausnet ist: \\
G.Castan@physik\discretionary{.}{}{.}uni-stuttgart.de

Damit dieses Dokument auf Servern und Mailboxen leichter zu finden ist,
bitte ich, einen einheitlichen Namen zu verwenden und sowohl die ascii-
als auch die \TeX-Version zu speichern: \\
FILENAME = gdosi\VERSION\SUBVERSION\ (deutsche Version) \\
FILENAME = gdosi\VERSION\SUBVERSION e (englische Version) \\
Auch wenn UNIX-Fileserver verwendet werden, sollte CR+LF und nicht nur LF
verwendet werden.

Im WWW ist die deutsche Version (hoffentlich) immer unter\\
\htmladdnormallink{http://www.uni-stuttgart.de/UNIuser/thphys/gerd/gdosi/gdosi.html}%
{http://www.uni-stuttgart.de/UNIuser/thphys/gerd/gdosi/gdosi.html}.
Diese Version ist nicht kopierbar, da sie absolute URLs enth"alt.
Da Tabellen in GIFs umgewandelt werden, belegen die Files ausserdem 
"uber 2 MB.


\section{Einleitung}
\label{introduction}

Ich schreibe gerade an einem Programm, das seine Druckausgaben
"uber GDOS macht. Auf der Suche nach Druckertreibern bin ich auf das
Problem gesto"sen, da"s den Treibern oft keinerlei Dokumentation beiliegt.

Au"serdem kommt es vor, da"s es verschiedene Treiber mit gleichem Namen gibt.
Aber worin unterscheiden sie sich?

Ich habe hier meine Erfahrungen zu GDOS knapp zusammengefa"st.

Diese Zusammenfassung soll nicht allgemein darauf eingehen,
wie man als Programmierer Druckertreiber benutzt (Ausnahme sind
vielleicht Probleme, die in der angegeben Literatur zu kurz kommen).
Genausowenig wird hier das Konzept oder die Installation von
Druckertreibern besprochen. Hier sei auf die Literatur am Ende verwiesen.

Vielmehr soll auf die einzelnen Treiber eingegangen werden:
\begin{itemize}
  \item Wo bekommt man die Treiber, Programme und GDOS her?
  \item Wie unterscheidet man die verschiedenen Versionen?
  \item Welche Probleme gibt es damit?
  \item Welche Treiber kann man f"ur bestimmte Drucker verwenden?
\end{itemize}

Wer zu einzelnen Treibern mehr Erfahrungen oder Fragen hat, der kann mir
schreiben. Ich werde mir die M"uhe machen, diese Zusammenfassung zu
vervollst"andigen.

Mein Dank f"ur sachdienliche Hinweise gilt folgenden Personen:
Kay Prisille (MIGRAPH-Produkte, Calligrapher lite);
Julian Reschke (IMG-0???);
Volker Ritzhaupt;
J"urgen Voorgang (Working Title - Produkte);
Herwig Schelauske (Installation von GDOS, Namenskonventionen);
Normen Kowalewski (Font\-GDOS);
Erik Dick (SpeedoGDOS);
Patrick Dubbrow;
Ulrich Ro"sgoderer (WYSIWYG);
Stefan Hintz (CHARLY IMAGE);
Ulli "`Huhu"' Ramps (Speedo 4.2);
Laurenz Pr"u"sner (SLM\_HS);
Marcel Boom (1. Postkarte);
J"org Tochtenhagen (misc);
Ralf Heckmann (Lektorat 8-);
Andreas M. K"opfer (EASE, That's write, MagiC!);
Wilfried Behne (misc);
Ulrich Kaiser (ABC-GDOS);
G"otz Hoffart (Noch ein Lektor);
Thomas K"unneth (G+Plus);
Chris Ridd (G+Plus)

Gerd Castan.

\section{Motivation}
Es hat mich mit GDOS etwa zwei Stunden Programmierarbeit gekostet, die
Bildschirmausgabe in meinem Programm in maximaler Qualit"at auf den
Drucker zu bekommen. Und praktisch ohne zus"atzlichen Aufwand erhalte ich
Ausgaben auf Druckern, die ich "uberhaupt nicht kenne. Nat"urlich
habe ich inzwischen deutlich mehr Zeit damit verbracht (unter anderem um
dieses FAQ zu schreiben). Trotzdem sprechen viele Gr"unde f"ur GDOS:

Wer vorhat, ein Programm mit Druckausgabe zu schreiben, tut gut daran,
sich um die eigentlichen Aufgaben seines Programms zu k"ummern.

Niemand ist bereit, f"ur Druckertreiber mitzubezahlen, wenn es ein
Konkurenzprogramm gibt, dessen Programmierer keinen Aufwand mit
Druckertreibern haben und das Programm damit einfach billiger
(und wahrscheinlich besser) ist.

Der Anwender hat neben dem Preisvorteil noch einen weiteren: Wenn er
mehrere Programme hat, nehmen die Druckertreiber und Fonts nur einmal
Platz auf der Platte weg.

Der (qualifizierte) Feedback zu meinem FAQ ist im Vergleich zu
Herbst '92, als ich damit begonnen habe, deutlich gestiegen.
Durch Speedo scheint das Interesse der Programmierer an GDOS stark
zugenommen zu haben.


\section{"Anderungen}
Neue Kapitel/Infos sind mit + gekennzeichnet, ge"anderte mit *. Kleinere
"Anderungen sind nicht aufgef"uhrt.
\begin{itemize}
  \item[+] \ref{TOS50}: Programmierer zur Weiterentwicklung des TOS gesucht.
  \item[+] \ref{standards} Das Kapitel Standards mit Informationen
           "uber das International Color Consortium Profile Format
           (\ref{icc}) und das damit verbundene TIFF-Format (\ref{TIFF}).
  \item[+] \ref{charsets}: Character Sets: "Uber UNICODE etc. 
  \item[*] \ref{nvdi_driver} und \ref{comments}: 
           Farbf"ahigkeit der NVDI-Treiber
  \item[*] \ref{was_fehlt}: der BJC-600 wird von NVDI 3.02 unterst"utzt.
  \item[*] \ref{NVDI30}: Einige Bugs seit NVDI 3.02 behoben.
  \item[*] \ref{bt_speedo}: SWA-Schnitte
  \item[*] \ref{address}: Neue Adresse von COMPO Deutschland
  \item[*] \ref{XUFSL}: HuGo
  \item[+] \ref{fontsel_etc}: Weitere Fontselektoren
  \item[+] \ref{programs} Programme: GPCLIENT f"ur GNUPLOT, Calamus, TEXEL
  \item[+] \ref{tech}: Dieses FAQ gibt es auch im WWW.
  \item[*] \ref{the_quick}: Ersatz f"ur The quick brown fox...
  \item[+] \ref{NVDI40} NVDI 4.0
  \item[*] \ref{p6plus} NEC P6+
  \item[+] \cite{chindogu} The Art of Chindogu
  \item[*] \ref{G+Plus} G+Plus
  \item[+] \ref{G+Flair} G+Flair
  \item[*] \ref{multiple_master} Multiple Master (MM) Fonts
\end{itemize}

Die letzten Versionen: \\
2.4: 09.01.95 \\
2.5: 21.02.95 \\
2.6: 29.05.95 \\
2.7: 17.08.95 \\
2.8: 09.01.96

\section{Briefe an die Leser}
\label{leserbriefe}

Es hat sich als nicht sehr effektiv herausgestellt, mitten im Text
auf Probleme aufmerksam zu machen. Ich m"ochte deshalb hier die Probleme
zusammenfassen.

\subsection{Programme}
Die wenigsten der in \ref{programs} vorgestellten Programme besitze ich 
selbst. Ich kann auch nicht jedes Programm kennen, das irgendwo auf der 
Welt in eine Mailbox gelegt wird oder eine neue Versionsnummer hat. 
Die Programmierer sind also aufgefordert, Eigenwerbung zu treiben,
und mir zu schreiben. Auch Anwendern n"utzt es, mir zu schreiben:
wenn das Programm (durch die Erw"ahnung im FAQ) von mehr Personen
benutzt wird, ist es wahrscheinlicher, da"s es weiterentwickelt wird.

\subsection{Drucker}
Ich kann mir vorstellen, da"s eine vollst"andige Tabelle in \ref{drucker}
sehr hilfreich bei der Suche nach einem Treiber f"ur einen exotischen
Drucker sein kann. Ich habe dazu aber bisher nur 2 konstruktive 
Mails bekommen. Und so wie die Tabelle zur Zeit aussieht, ist sie 
"uberfl"ussig. Soll ich sie rauswerfen?

\subsection{Bitmap-Fonts}
Ich habe eine Mail mit einer sehr ausf"uhrlichen Beschreibung des
GDOS Bitmapfontformates erhalten. Die Ver"offentlichung im FAQ habe ich
aber abgelehnt, weil das auf der ganzen Welt nur von den ca. 3 Autoren
von Fonteditoren und Fontkonvertern gebraucht wird. Wer anderer Meinung
ist, soll mich vom Gegenteil "uberzeugen. Es sind ca 13 kB.

\subsection{ISO-Modula-2}
\label{ISOM2}
Ich wurde gebeten, folgende Anfrage zu ver"offentlichen:

Gesucht: Portierung eines 100 \% ISO-Modula-Compilers (mit 
Oberon-Erweiterung) eines englischen Herstellers (bisher portiert f"ur
UNIX, Mac, Windows, Amiga).

Profil: Informatiker mit Interesse an Compiler(bau).\\
Erfahrung mit ANSI-C erforderlich, da der Quelltext in ANSI-C vorliegt.\\
Englische Sprachkenntnisse (f"ur email und doku).\\
Internet-Zugang (f"ur email und ftp)

Die Portierung l"auft wahrscheinlich ohne kommerziellen Hintergrund
(aber non-disclosure agreement) ab. Sie sollte den ATARIanern als Shareware
zur Verf"ugung gestellt werden.

Kontakt: Gerd Castan (G.Castan@physik.uni-stuttgart.de)

\subsection{TOS 5.0}
\label{TOS50}
Wer Lust hat gegen Bezahlung - und auch die n"otige Ahnung hat - 
am TOS 4.9x mitzuarbeiten, der melde sich bei:

C-Lab Digital Media GmbH
Postfach 700 303
22003 Hamburg

Tel-Nr.: 040-69 44 000


\section{VDI-Treiber}

Hier werden zu jedem Treiber Vertrieb, Fehler und zugeh"orige Fonts
aufgelistet.

Die Treiber f"ur NVDI 3 sind separat in \ref{nvdi_driver} aufgestellt.

\subsection{Tintenstrahldrucker mit 150, 300 \dots\ dpi}

\begin{center}
\begin{tabular}{|l|l|l|l|c|c|c|l|l|}\hline
  Name       & Datum    & L\"ange & Vertrieb & \multicolumn{2}{l|}{Fehler} & Sonst. & Fonts \\
             &          &       &             & 1 & 2 &        &         \\ \hline
  HP\_LJET   & 22.02.89 & 45512 & BELA        &   &   & n.g.   & LS      \\
  HP\_LASER  & 25.09.89 & 36928 & \atari,I    &   &   &        & LS      \\
  LASERJET   & 06.03.91 & 54517 & \atari      &   &   &        & LS      \\
  LASERJET   & 27.01.92 & 60194 & \fontgdos,I &   & n &        & LS, OTL \\
  LASERJET   & 28.01.93 & 61907 & SGDOS 4.0   &   & n &        & LS, SPD \\
  LASERJET   & 02.07.93 & 64408 & SGDOS 4.2   &   & n &        & LS,SPD,TT,T1 \\
  HPL150     & 12.04.86 & 51541 & wt          &   &   & 150dpi & LL      \\
  HPL300     & 24.04.86 & 51541 & CL,wt       &   &   &        & LS      \\
  DESKJET    & 13.05.92 & 45637 & BELA        &   &   & g.     & LS?     \\
  DESKJET    & 14.05.91 & 46040 & CL,WT       &   &   & g.     & 300x600 \\
  DESKJET    & 06.03.91 & 54285 & \atari,I    &   &   &        & LS?     \\
  DESKJET    & ?        & 45618 & ?           &   &   & g.     & LS      \\
  DESKJET    & ?        & 45285 & ?           &   &   & g.     & LS      \\
  DESKJET5   & 14.05.91 & 46040 & CL,WT       &   &   & delta  & LS      \\
  DJ5        & 27.01.92 & 60600 & \fontgdos,I &   & n &        & OTL     \\
  DJ5        & ?        & 60538 & ?           &   &   &        &         \\
  DJ5        & 28.01.93 & 62251 & SGDOS 4.0   &   & n &        & SPD     \\
  DJ5        & 02.07.93 & 64319 & SGDOS 4.2   &   & n &        & SPD,TT,T1 \\
  DJ550C     & 11.10.93 & 68870 & SGDOS 5.0   &   & n &        & LS,SPD,TT,T1 \\
  DJ550C     & 11.10.93 & 68870 & T.R.        &   & n &        & LS,SPD,TT,T1 \\
  DJ\_550C2  & 14.04.94 & 68746 & SGDOS 5.0   &   & n &        & LS,SPD,TT,T1 \\
  DJ\_500C   & 14.04.94 & 68761 & SGDOS 5.0   &   & n &        & LS,SPD,TT,T1 \\
  DJ\_510    & 17.05.94 & 61921 & SGDOS 5.0   &   & n &        & LS,SPD,TT,T1 \\
  DJ\_510T   & 17.05.94 & 61925 & SGDOS 5.0   &   & n &        & LS,SPD,TT,T1 \\ \hline
\end{tabular}
\end{center}
Anmerkung: Die Treiber HP\_LJET und DESKJET k"onnen sowohl f"ur
(HP-kompatible) Tintenstrahl- als auch Laserdrucker verwendet werden.
Der Unterschied besteht darin, da"s die Daten gepackt (g.) oder
nicht gepackt (n.g.) an den Drucker geschickt werden. delta bedeutet,
da"s die Daten delta-komprimiert werden.

\subsection{Tintenstrahldrucker mit 180, 360 \dots\ dpi}

\begin{center}
\begin{tabular}{|l|l|l|l|c|c|c|l|l|}\hline
  Name       & Datum    & L\"ange & Vertrieb & \multicolumn{2}{l|}{Fehler} & Sonst. & Fonts \\
             &          &       &             & 1 & 2 &        &         \\ \hline
  BJ10E      & 20.11.90 & 45917 & WT          &   &   &        & NC      \\
  BJ10       & 20.11.85 & 45919 & CL          &   &   &        & NC      \\
  BJ10       & 28.08.91 & 45660 & BELA        &   &   &        & NC      \\
  BJ10       & 27.01.92 & 59715 & \fontgdos,I &   & n &        & NC, OTL \\
  BJ10       & 28.01.93 & 61428 & SGDOS 4.0   &   & n &        & NC, SPD \\
  BJ10       & 02.07.93 & 63496 & SGDOS 4.2   &   & n &        & NC,SPD,TT,T1 \\
  STYLUS     & 25.04.94 & 60848 & SGDOS 5.0   &   & n &        & NC,SPD,TT,T1 \\
  MT90       & 21.12.90 & 44881 & BELA        &   &   & 180dpi & SP      \\
  PAINTJET   & 27.01.92 & 60005 & \fontgdos   &   & n &        & SP, OTL \\ 
  PAINTJET   & ?        & 60173 &             &   &   &        & SP      \\ 
  PAINTJET   & 28.01.93 & 61648 & SGDOS 4.0   &   & n &        & SP, SPD \\ 
  PAINTJET   & 02.07.93 & 63642 & SGDOS 4.2   &   & n &        & SP,SPD,TT,T1 \\ 
  PAINTJET   & 14.08.92 & 60173 & I           &   &   &        & SP, OTL \\
  PAINTJET   & 13.10.91 & 45934 & WT          &   &   &        & SP     \\ \hline
\end{tabular}
\end{center}

Anmerkung:
PAINTJET: 180x180: 2 bis 8 Farben, 90x90: 16 Farben.

MT90 ist von Patrick Dubbrow.

Bei Tintenstrahldruckern tritt ein Problem mit Bitmap-Fonts auf.
Bei 300 dpi ist alles in Ordnung. 360 dpi - Fonts sind aber so optimiert,
da"s sie auf Nadeldruckern mit dicken Nadeln optimal aussehen.
Auf Tintenstrahldruckern sehen diese Fonts viel zu d"unn aus.

Also entweder 300 (600, 1200 :-)) dpi-Drucker oder ausschlie"slich
Vektorfonts verwenden.

\subsection{9-Nadeldrucker}

\begin{center}
\begin{tabular}{|l|l|l|l|c|c|c|l|l|}\hline
  Name       & Datum    & L\"ange & Vertrieb & \multicolumn{2}{l|}{Fehler} & Sonst. & Fonts \\
             &          &       &             & 1 & 2 &       &         \\ \hline
  FX240DPI   & 22.12.89 & 45396 & BELA        & j &   &       & SR      \\
  FX80       & 22.12.89 & 45396 & BELA,wt     & n &   &       & EP      \\
  FX80\_2    & 12.06.91 & 45396 & I           &   &   &       & EP      \\
  FX80       & 24.09.91 & 45525 & CL          &   &   &       & EP      \\
  FX80       & 16.12.87 & 45396 & \atari      & n &   &       & EP      \\
  FX80       & 27.01.92 & 59236 & \fontgdos,I & n & n & FF    & EP, OTL \\
  FX80       & 28.01.93 & 61111 & SGDOS 4.0   &   & n &       & EP, SPD \\
  FX80       & 02.07.93 & 63177 & SGDOS 4.2   &   & n &       & EP,SPD,TT,T1 \\
  FX80HIGH   & 22.01.89 & 44730 & \atari,I    & n &   &       & SR      \\
  FX80\_QD   & 24.09.91 & 45525 & WT          &   &   &       & EP      \\
  NX1000     & 27.01.92 & 58719 & \fontgdos   & n & n &       & EP, OTL \\
  NX1000     & 28.01.93 & 60723 & SGDOS 4.0   &   & n &       & EP, SPD \\
  NX1000     & 02.07.93 & 62717 & SGDOS 4.2   &   & n &       & EP,SPD,TT,T1 \\
  NX1000     & 14.08.92 & 58887 & I           &   &   &       & EP, OTL \\
  OKI20      & 27.01.92 & 58491 & \fontgdos   & n & n &       & EP, OTL \\
  OKI20      & 28.01.93 & 60495 & SGDOS 4.0   &   & n &       & EP, SPD \\
  OKI20      & 17.03.93 & 60511 & SGDOS 4.2   &   & n &       & EP,SPD,TT,T1 \\
  OKI20      & 14.08.92 & 58659 & I           &   &   &       & EP, OTL \\
  SMM804     & 16.12.87 & 44801 & \atari      &   &   &       & LB      \\
  SMM804\_2  & 16.06.91 & 44801 & I           &   &   &       & LB      \\
  SMM804     & 27.01.92 & 59201 & \fontgdos,I &   & n &       & LB, OTL \\ 
  SMM804     & 28.01.93 & 61076 & SGDOS 4.0   &   & n &       & LB, SPD \\ 
  SMM804     & 02.07.93 & 63142 & SGDOS 4.2   &   & n &       & LB,SPD,TT,T1 \\ \hline
\end{tabular}
\end{center}
Anmerkung: FX80HIGH druckt normalen Text doppelt, FX240DPI nur einfach,
FX80\_QD druckt in vierfacher Dichte.

NX1000 und OKI20 sind Farbtreiber mit 8 Farben.

\subsection{24-Nadeldrucker}

\begin{center}
\begin{tabular}{|l|l|l|l|c|c|c|l|l|}\hline
  Name       & Datum    & L\"ange & Vertrieb & \multicolumn{2}{l|}{Fehler} & Sonst. & Fonts \\
             &          &       &             & 1 & 2 &       &  \\ \hline
  EPSON360   & 04.04.90 & 45619 & BELA        & j &   &       & NC \\
  EPSON360   & 16.09.92 & 45547 & WT          &   &   & 180x360 & \\
  EPSLQPAR   & 14.02.91 & 44939 & I           &   &   &       & \\
  LQ\_500    & 15.11.93 & 68068 & T.R.        &   & n &       & SP,SPD,TT,T1 \\
  LQ570      & 28.01.93 & 62051 & SGDOS 4.0   &   & n &       & SPD \\
  LQ570      & 02.07.93 & 64228 & SGDOS 4.2   &   & n &       & SPD,TT,T1 \\
  LQ\_800    & 15.11.93 & 68068 & T.R.        &   & n &       & SP,SPD,TT,T1 \\
  LQ\_850    & 15.11.93 & 68068 & SGDOS 5.0   &   & n &       & SP,SPD,TT,T1 \\
  LQ\_850    & 15.11.93 & 68068 & T.R.        &   & n &       & SP,SPD,TT,T1 \\
  LQ\_1000   & 15.11.93 & 68068 & T.R.        &   & n &       & SP,SPD,TT,T1 \\
  LQ\_1050   & 15.11.93 & 68068 & T.R.        &   & n &       & SP,SPD,TT,T1 \\
  LX800      & 14.11.93 & 67989 & T.R.        &   & n &       & SP,SPD,TT,T1 \\
  NB15       & 22.12.89 & 44881 & BELA,wt     & n &   &       & SP \\
  NB15       & 16.12.87 & 44881 & \atari,CL   & n &   &       & SP \\
  NB15\_2    & 12.06.91 & 44881 & I           &   &   &       & SP \\
  NB15       & 27.01.92 & 59121 & \fontgdos,I & n & n &       & SP, OTL \\
  NB15       & 28.01.93 & 60989 & SGDOS 4.0   & n & n &       & SP, SPD \\
  NB15       & 02.07.93 & 63055 & SGDOS 4.2   & n & n &       & SP,SPD,TT,T1 \\
  NECP6      & 12.04.80 & 45199 & wt          &   &   &       & NC \\
  NECP6      & 10.04.91 & 45619 & BELA        & j &   &       & NC \\
  NECP6      & 06.02.86 & 44906 & \atari,I    & j &   &       & NC \\
  NECP6\_2   & 28.06.91 & 46557 & I           &   &   &       & NC \\
  NECP       & 27.01.92 & 59516 & \fontgdos   & j & n &       & NC, OTL \\
  NECP       & 28.01.93 & 61229 & SGDOS 4.0   &   & n &       & NC, SPD \\
  NECP       & 02.07.93 & 63297 & SGDOS 4.2   &   & n &       & NC,SPD,TT,T1 \\
  NEC\_P     & 14.08.92 & 59516 & I           &   &   &       & NC, OTL \\
  P24M       & 08.04.89 & 47104 & I           &   &   &       & \\
  P24ML      & 08.04.89 & 47104 & I           &   &   &       & \\
  P24MWID    & 08.04.89 & 47104 & I           &   &   &       & \\
  P24MWIDL   & 08.04.89 & 47104 & I           &   &   &       & \\ \hline
\end{tabular}
\end{center}


\subsection{Laserdrucker}

\begin{center}
\begin{tabular}{|l|l|l|l|c|c|c|l|l|}\hline
  Name       & Datum    & L\"ange & Vertrieb & \multicolumn{2}{l|}{Fehler} & Sonst. & Fonts \\
             &          &       &             & 1 & 2 &       &  \\ \hline
  RICOH12    & 23.06.92 & 45438 & WT          &   &   & 400dpi& \\
  HP\_LJET   & 22.02.89 & 45512 & BELA        &   &   & n.g.  & LS \\
  HP\_LASER  & 25.09.89 & 36928 & \atari,I    &   &   &       & LS \\
  LASERJET   & 06.03.91 & 54517 & \atari      &   &   &       & LS \\
  LASERJET   & 27.01.92 & 60194 & \fontgdos,I &   & n &       & LS, OTL \\
  LASERJET   & 28.01.93 & 61907 & SGDOS 4.0   &   & n &       & LS, SPD \\
  LASERJET   & 02.07.93 & 64408 & SGDOS 4.2   &   & n &       & LS,SPD,TT,T1 \\
  HPL150     & 12.04.86 & 51541 & wt          &   &   & 150dpi& LL \\
  HPL300     & 24.04.86 & 51541 & CL,wt       &   &   &       & LS \\
  LJ4\_300   & 12.01.94 & 61910 & SGDOS 5.0   &   & n &       & LS,SPD,TT,T1 \\
  LJ4\_600   & 12.01.94 & 61910 & SGDOS 5.0   &   & n &       & SPD,TT,T1 \\
  DESKJET    & 13.05.92 & 45637 & BELA        &   &   & g.    & LS \\
  DESKJET    & 14.05.91 & 46040 & CL          &   &   &       & LS      \\
  DESKJET    & 06.03.91 & 54285 & \atari,I    &   &   &       & LS \\
  CANONLBP   & 26.09.89 & 36980 & \atari,I    &   &   &       & LS \\
  LBP        & 13.01.92 & 45453 & WT          &   &   &       & LS \\ \hline
\end{tabular}
\end{center}

\subsection{Atari - Laserdrucker}

\begin{center}
\begin{tabular}{|l|l|l|l|c|c|c|l|l|}\hline
  Name       & Datum    & L\"ange & Vertrieb & \multicolumn{2}{l|}{Fehler} & Sonst. & Fonts \\
             &          &       &             & 1 & 2 &       &  \\ \hline
  SLM804     & 12.04.91 & 47496 & BELA        &   & n &       & LS \\
  SLM804     & 16.12.87 & 45788 & \atari,I,CL,wt& & j &       & LS \\
  SLM        & 12.12.90 & 48399 & \langDisk   &   &   &       & LS \\
  SLM        & 27.01.92 & 60036 & \fontgdos,I &   & n &       & LS, OTL \\ 
  SLM        & 28.01.93 & 61911 & SGDOS 4.0   &   & n &       & LS, SPD \\ 
  SLM        & 02.07.93 & 63987 & SGDOS 4.2   &   & n &       & LS,SPD,TT,T1 \\ 
  SLM\_HS    & 17.01.94 & 63663 & ROM         &   & n &       & LS, SPD \\ \hline
\end{tabular}
\end{center}
SLM\_HS ist ein SLM-Treiber f"ur den Falcon.

\subsection{Bildschirmtreiber}
Der Bildschirm wird (falls man die VDI-Funktionen benutzt) genauso als
Ausgabeger"at angesehen wie Drucker, Plotter etc. Daher k"onnen in der
ASSIGN.SYS Fonts f"ur den Bildschirm angemeldet werden wie f"ur Drucker.

Normalerweise merkt man davon nichts, da sich die Treiber im ROM befinden.
Diese k"onnen aber wie die Druckertreiber ersetzt werden (NVDI, WARP 9).

Anmerkung: Als Systemfont kann man bisher nur Fonts anmelden, die (wie die
Originale) nicht proportional sind und eine Gr"o"se von 8*8 bzw.
8*16 Bits haben. Das ist keine Einschr"ankung des VDI, sondern der AES.

Mit neueren AES (ab 4.0?) ist es inzwischen kein Problem mehr, hier Fonts
beliebiger Gr"o"se anzumelden (Variablen AE\_FONTID und AE\_FONTSIZE in
der Datei GEM.CNF, siehe \cite{multitos}). Programmierer sollten darauf
achten, da"s ihre Programme damit zurechtkommen (ebenso wie mit beliebig
breiten Scrollbalken).

Bitmap-Fonts, die f"ur den Bildschirmtreiber 1 nicht angemeldet sind,
stehen auch f"ur die anderen Bildschirmtreiber nicht zur Verf"ugung.

\subsubsection{LineA}
Die sogenannten LineA-Routinen sind Unterprogramme der Bildschirmtreiber
der ST-Serie, die als undokumentiert zu betrachten sind. Es handelt sich
dabei um den hardwareabh"angigen Teil dieser Treiber.

Der aufmerksame Leser ahnt es: tauscht man die Bildschirmtreiber aus, gibt es
auch die LineA-Routinen nicht mehr.
Dies ist beispielsweise bei den TTs der Fall.

Also niemals verwenden!

Auf die LineA-Variablen darf {\em lesend} zugegriffen werden. Ich sehe
darin aber wenig Sinn.

\subsubsection{Setscreen und Getscreen}
Diese XBIOS-Funktionen (vor allem Setscreen) sollten eigentlich nicht
verwendet werden.

Aber was rede ich. F"ur die, die's trotzdem tun oder darunter zu leiden
haben, da"s es jemand getan hat:

Die Videohardware des 1040~STE und Mega~STE hat einen Hardwarefehler.
Wird mit Setscreen eine neue physBase angegeben (und wenn es dieselbe
ist, die man mit Getscreen bekommen hat), kann es vorkommen, da"s der
Bildschirm gefaltet wird. Ursache daf"ur ist, da"s damit zu einem
beliebigen Zeitpunkt ein Register beschrieben wird, welches nur w"ahrend
bestimmter Phasen des Bildschirmaufbaus beschrieben werden darf.

Was ist zu tun?

Anwender: Die Programme NVDI und FALT\_OFF fangen diesen Fehler ab.
Es hilft auch dem Programmierer dieses FAQ unter die Nase halten.

Programmierer: Setscreen erst gar nicht verwenden. Wer es trotzdem
tut: falls physBase nicht ver"andert wird, darf nicht der Wert genommen
werden, der mit Getscreen geholt wurde, sondern es ist der Wert -1
als physBase zu "ubergeben.

\subsubsection{NVDI und WARP 9}

Es gibt zwei verbreitete Programme, die die ROM-Treiber ersetzen:
NVDI und WARP 9 (vormals QuickST).
TurboST wurde fr"uher von BELA vertrieben und wird nicht mehr
weiterentwickelt.

Hat man sich erst einmal daran gew"ohnt, will man nie wieder ohne leben:
die Benutzeroberfl"ache kommt einem sonst z"ah wie Honig vor.
Ich will nie wieder ohne NVDI an einem Atari arbeiten. Andere behaupten
dasselbe von WARP 9.

Bei NVDI werden die Treiber f"ur die ST- und TT- und Falcon-Auf"|l"osungen
durch stark optimierte Treiber ersetzt. Welche Treiber WARP 9 ersetzt, wei"s 
ich leider nicht.

NVDI gibt es bei Behne\&Behne und enth"alt neben den Treibern auch ein 
GDOS und ein Handbuch, das alle VDI-Aufrufe genau beschreibt. Seit Version
3.0 sind die VDI-Aufrufe nicht mehr im Handbuch enthalten.

WARP 9 gibt es bei CodeHead.

NVDI ist vor allem in Deutschland verbreitet, WARP 9 vor allem in den USA.

Im Gegensatz zu NVDI beschleunigt WARP 9 nur die Textausgabe. Graphik
bleibt mit WARP 9 also fast so z"ah wie vorher. WARP 9 arbeitet inzwischen
auch mit MultiTOS zusammen. Es l"auft auch auf dem Falcon, ich wei"s aber
nicht, ob es dabei auch alle Auf\/l"osungen unterst"utzt.

\subsection{Sonstige Treiber}
\label{meta_drivers}

\begin{center}
\begin{tabular}{|l|l|l|l|c|c|c|l|l|}\hline
  Name       & Datum    & L\"ange & Vertrieb & \multicolumn{2}{l|}{Fehler} & Sonst. & Fonts \\
             &          &       &           & 1 & 2 &       &  \\ \hline
  META       & 11.04.89 & 5644  & I         &   &   &       & MF \\
  META       & 08.10.88 & 9325  & BELA      &   &   &       & MF \\
  META       & 16.12.87 & 9325  & \atari    &   &   &       & MF \\
  META\_2    & 14.06.91 & 9325  & I         &   &   &       & MF \\
  META       & 27.01.92 & 9718  & \fontgdos &   & n &       & MF, OTL \\
  META       & 28.01.93 & 9733  & SGDOS 4.0 &   & n &       & MF, SPD \\
  META       & 02.07.93 & 11174 & SGDOS 4.2 &   & n &       & MF,SPD,TT,T1 \\
  MEMORY     & 27.01.92 & 58397 & \fontgdos &   & n &       & LS, OTL \\
  MEMORY     & 28.01.93 & 60265 & SGDOS 4.0 &   & n &       & LS, SPD \\
  MEMORY     & 02.07.93 & 62331 & SGDOS 4.2 &   & n &       & LS,SPD,TT,T1 \\
  MEMORY\_2  & 10.10.94 & 67274 & T.R.      &   & n &       & LS,SPD,TT,T1 \\
  CYPRESS    &          &       &           &   &   &MEMORY &  \\
  PSCRIPT    & 14.10.92 & 33016 & WT        &   &   &       & \\
  HPGL       & 08.07.91 & 48885 & ST458     &   &   &V 1.4r2& \\
  ZEBRA      & 07.12.91 & 45746 & WT        &   &   &       & \\
  T\_OFFICE  &          &       & wt        &   &   & 98/196dpi & \\
  T\_OFFICE  &          &       & wt        &   &   & 98/196dpi & SPD \\
  IMG-0300   &          &       & Reschke,wt& n &   &       & LS \\ \hline
\end{tabular}
\end{center}
IMG-0300 kann (nicht kommerziell) frei kopiert werden.
Die anderen IMG-0???-Treiber sind von SciLab.
ZEBRA ist f"ur den Zebra Labelprinter.

\subsubsection{Memory-Treiber}
Ein Memory-Treiber macht nichts anderes als ein
Bildschirmtreiber (siehe auch \cite{summertime} und \cite{memory}).
Nur landet das Ergebnis nicht im Bildschirmspeicher, sondern in einem
anderen Speicher und kann von dort weiterverarbeitet werden.

Das "ubliche v\_openwk Binding hat nicht alle n"otigen Parameter, um
diesen Treiber zu "offnen. Falls nicht mit der Programmiersprache
mitgeliefert, mu"s man dieses Binding selbst schreiben. Ein Listing
dazu findet sich in \cite{summertime}.

Die oben aufgef"uhrten Memory-Treiber k"onnen nur schwarz/wei"s ausgeben
und haben eine logische Auf\-l"osung von 300 dpi.
Die von mir getesteten (Matrix-) Treiber verkraften es problemlos, wenn
man Fonts anmeldet, die eigentlich f"ur andere Treiber sind. Der
Memory-Treiber
sollte deshalb trotz der logischen Auf"|l"osung von 300 dpi auch mit
Bildschirm-Fonts zurechtkommen.

Problematisch ist aber, da"s die Aspect-Ration (das Verh"altnis von
Pixelbreite zu Pixelh"ohe) im allgemeinen nicht mit der
Bildschirmauf"|l"osung "ubereinstimmt. Das hat zur Folge, da"s
beispielsweise
Kreise als Ellipsen dargestellt werden.

Mit NVDI ab Version 2.5 kann man die Ausgaben auch auf offscreen-Bitmaps
machen. Man kann dort beliebige GDOS-Ausgaben machen und das Ergebnis dann
gegebenenfalls in die Fenster des Bildschirms kopieren.

\subsubsection{Plottertreiber}
Mit dem Programm DATA scheint ein HPGL-Treiber vertrieben zu werden.
Auch auf der PD-Diskette ST 458 befindet ein solcher Treiber.
Wenn ich genaueres wei"s, folgt an dieser Stelle mehr.

\subsubsection{Druckertreiber f"ur NVDI 3.0}
\label{nvdi_driver}
NVDI 3.0 hat ein eigenes Treiberkonzept. Zu NVDI geh"oren sehr wenige 
Treiber, die aber sehr schnell, sehr klein und sehr flexibel sind.

Die Treiber im einzelnen:\\
\begin{tabular}{|l|l|}\hline
  Treiber        & Datum     \\ \hline
  PINPRN.SYS     & 19.10.94  \\
  PAGEPRN.SYS    & 19.10.94  \\
  IMG.SYS        & 30.10.94  \\
  MEMORY.SYS     & 18.10.94  \\
  META.SYS       & 18.10.94  \\
  ATARILS.SYS    & 18.10.94  \\
\hline\end{tabular}

Zu jedem Treiber geh"ort ein .INF-File im GEMSYS-Ordner.

Je nach Farbf"ahigkeit des Druckers (einstellbar in MAKEPRN.APP)
sollen die Druckertreiber andere Offsreen-Treiber zum Aufbau der
Graphik verwenden (solche Kleinigkeiten stehen nat"urlich nicht
im Handbuch).

Die Offscreen-Treiber:\\
\begin{tabular}{|l|l|l|}\hline
  Treiber         & Datum     & Farben\\ \hline
  OFF002.NOD      & 06.11.94  & 2     \\
  OFF004IP.NOD    & 06.11.94  & 4     \\
  OFF016IP.NOD    & 06.11.94  & 16    \\
  OFF256IP.NOD    & 06.11.94  & 256   \\
  OFF32KFL.NOD    & 06.11.94  & 32768 \\
\hline\end{tabular}

Sehr lobenswert ist die Flexibilit"at beim Anpassen an neue Drucker.
Bei SpeedoGDOS braucht man einen Gewerbeschein und viel Geld, um sich als
Entwickler eintragen zu lassen, um dann mit hohem Aufwand in C einen
Treiber zu programmieren. Bei NVDI braucht man dagegen nur mit MAKEPRN.APP
die Steuercodes f"ur seinen Drucker einzugeben. Es ist also lediglich
ein intensives Studium des Druckerhandbuchs notwendig, keine
Programmierf"ahigkeiten.

Diese Steuercodes werden in den .INF-Dateien der jeweiligen Treiber
gespeichert. Ein Wermutstropfen: man kann die Druckeranpassungen nicht
einfach austauschen, da weder das Format der .INF-Dateien dokumentiert ist, 
noch ein Programm existiert, mit dem man die Anpassungen extrahieren oder
hinzuf"ugen kann. Lediglich ein kompletter Austausch der .INF-Dateien
ist m"oglich. Einzige L"osung zur Zeit: die komplette .INF-Datei an 2B
schicken.

Ein weiteres Problem, das im Handbuch nicht einmal erw"ahnt ist, besteht
beim Anmelden von Bitmap-Fonts in der ASSIGN.SYS. Nehmen wir an, es seien
f"ur den PINPRN.SYS 180 dpi-Fonts angemeldet. Jetzt kann man leicht
mit Hilfe des CPX auf 360 dpi schalten. Der Ausdruck wird dann aber
katastrof"urchterlich.

Des R"atsels L"osung: Es ist die Datei PINPRN.SYS ein zweites Mal unter
anderem Namen (z.B. PINPRN2.SYS) in dem GEMSYS-Ordner zu kopieren.
Dieser Treiber kann dann auch in der ASSIGN.SYS angemeldet werden,
diesmal aber mit Fonts anderer Auf"|l"osung.

Fazit: Die Treiber sind konzeptionell wesentlich besser als die von
SpeedoGDOS 5.0.

\subsection{Was fehlt}
\label{was_fehlt}
Sind alle wunschlos gl"ucklich?

\section{Fehler}

Mir bekannte Fehler der Druckertreiber sind:
\begin{itemize}
  \item[1] Diese Treiber stellen auch Fonts mit dem Attribut {\em hell}
           ausgef"ullt dar.
  \item[2] Nicht auf dem TT lauff"ahig.
  \item[3] Die EXTENDED ENQUIRE FUNCTION (VDI 102, vq\_extnd) liefert
           teilweise nicht die Werte zur"uck, wie sie beispielsweise
           im Profibuch dokumentiert sind.
  \item[4] Bei der Kombination der Attribute {\em kursiv} und {\em
           outlined} werden die Buchstaben von Bitmap-Fonts rechts
           abgeschnitten. Dieser Fehler ist unabh"angig davon, welche
           Attribute sonst noch gesetzt werden.\\
           Er war in den Libraries der Treiber-Sourcen von Atari und
           ist damit wahrscheinlich in allen Treibern bis auf NVDI und
           SpeedoGDOS enthalten.
\end{itemize}
Steht in der Tabelle nichts "uber einen Fehler, so ist mir nicht bekannt,
ob der Fehler auftritt, oder nicht.

Es scheint kein Zufall zu sein, da"s Xact nur die Attribute fett, kursiv
und unterstrichen unterst"utzt. (Siehe auch \cite{speedo1})

Ein weiterer Grund, der gegen die Verwendung der Attributs outlined
spricht, ist folgender: Wenn man einen Treiber dazu zwingt, einen outlined-
Font aus einem normalen Font zu berechnen, wird er grob gesagt um zwei
Pixel breiter. Da ein Pixel (im Gegensatz zu einem angepa"sten Font)
eine auf"|l"osungsabh"angige Breite hat, ist ein Text in jeder Auf"|l"osung
unterschiedlich breit. Es ist aber v"ollig unerw"unscht, wenn ein Text
auf unterschiedlichen Druckern eine unterschiedliche Breite hat.
Die einzige Methode, dem entgegenzuwirken, w"are Letterspacing. Das aber
ist typographischer Pfusch.


\section{Fonts}
\label{fonts}

\subsection{Die Begriffe "`Font"' und "`Schnitt"'}
\label{font_face}
Zun"achst: was ist der Unterschied zwischen einem Font und einem
Schnitt (englisch: face)?

Ruft man einen Fontselektor auf, sieht man beispielsweise 
Dutch 801 Roman, Dutch 801 Italic, Dutch 801 Bold, Dutch 801 Bold Italic.
In diesem Fall haben wir 4 Schnitte, die zusammen einen Font bilden.

Bei Bitmap-Fonts ist die Trennung nicht ganz so einfach, weil die ganzen
Attribute aus einer Datei berechnet werden. (Diese Berechnung ist im
Prinzip auch bei Vektorfonts m"oglich, aber meiner bescheidenen Meinung
nach Unsinn. Deshalb ist mir auch nicht selbst aufgefallen, da"s diese
Berechnung der Attribute bei einigen SpeedoGDOS-Versionen fehlerhaft ist,
siehe auch \ref{attr_error}.)

Bei Vektorformaten verwischt sich die Grenze mit den Multiple Master Fonts
(siehe \ref{multiple_master}) und den TrueType GX Fonts (siehe
\ref{GX}) ebenfalls.

Auch ich halte die Trennung zwischen Font und Schnitt in diesem FAQ nicht
ganz sauber durch. Das gilt insbesondere in diesem Kapitel "uber
Fontformate (den Ausdruck Schnittformat gibt es nicht, und es h"ort sich
seltsam an, wenn man sagt "`Diese Schnitte sind in jenem Fontformat
gespeichert."').

\subsection{Die Begriffe "`Format"' und "`Darstellung"'}
\label{format_representation}
Der Begriff "`Format"' wird im Zusammenhang mit Fonts doppelt verwendet,
was doch etwas zu Konfusionen f"uhrt.

Einerseits unterscheidet man beispielsweise das TrueType-Format vom
Type 1-Format (und anderen). Gleichzeitig unterscheidet man bei beiden 
noch einmal zwischen dem Macintosh-Format und dem Win\-dows-For\-mat 
(und anderen).

Um diese Verwirrung aufzul"osen, definiere ich fuer dieses FAQ:
\begin{itemize}
  \item Um zwischen TrueType, Type 1, Speedo\dots\ zu unterscheiden,
        verwenden wir weiterhin den Begriff {\em Format}
  \item Um zwischen den Dateiformaten zu unterscheiden, verwenden wir
        den Begriff {\em Darstellung} (engl: {\em Representation}).
        Dieser Begriff wird in Mathematik und Physik verwendet, wenn
        Gruppen zwar unterschiedlich aussehen, sich aber trotzdem
        samt Struktur bijektiv aufeinander abbilden lassen.
\end{itemize}
Dann l"a"st sich auch der etwas verwirrende Umstand, da"s es
das TrueType 1.0-Format (f"ur Macintoshs) und das TrueType f"ur 
Windows-Format sowohl in der Macintosh- als auch in der 
Windows-Darstellung gibt:\\
Macintosh TrueType-Format in der Macintosh-Darstellung,\\
Macintosh TrueType-Format in der Windows-Darstellung,\\
TrueType f"ur Windows-Format in der Macintosh-Darstellung,\\
TrueType f"ur Windows-Format in der Windows-Darstellung.

Es l"a"st sich dann auch einfacher ausdr"ucken, da"s SpeedoGDOS 5.0 und
NVDI 3.0 die Win\-dows-Dar\-stel\-lung brauchen, unabh"angig davon, 
ob es das Windows- oder Macintosh-Format ist.


\section{Bitmap-Fonts}
Die verwendeten Fonts sind Bitmap-Fonts im DR-Standardformat.
Die Fonts m"ussen in der Intel-Darstellung gespeichert sein. 
Die Motorola-Darstellung
wird von keinem GDOS unterst"utzt (siehe auch \cite{wheeler} und Anhang).

\label{bitmapwidth}
Bei den GDOS-Bitmap-Fonts sind die Breiteninformationen sowohl im
Bildschirmzeichensatz als auch in den Druckerzeichens"atzen definiert.
Leider waren die Fontdesigner etwas "ubereifrig und haben die Breite
der Bildschirmzeichen vieler Fonts so angepa"st, da"s sie besonders
sch"on aussehen. Damit sind sie zwar sch"on, stimmen aber nicht mit
den Druckerzeichens"atzen "uberein und erlauben kein WYSIWYG.

Im Internet kursieren jede Menge Fonts, die nur f"ur den Bildschirm und
vielleicht noch f"ur einen Drucker geeignet sind. Jeder, der diese
Fonts verwendet, mu"s sich dar"uber im klaren sein, da"s er Dokumente
mit diesen Fonts niemals sauber "uber GDOS ausdrucken k"onnen wird.

Dagegen werden im \atari - und im BELA-Paket die jeweiligen Fonts f"ur alle
Druckertreiber des jeweiligen Pakets mitgeliefert (Im \atari -Paket fehlen
die 360x360dpi-Fonts). Man kann dann - ein geeignetes Programm
vorausgesetzt - jedes Dokument mit jedem Druckertreiber ausdrucken.

\section{Vektorfonts}
\label{vfonts}
Vektorfonts enthalten keine einzelnen Pixel, sondern Algorithmen,
die mit Hilfe von Umrissen und Hints das Aussehen von Zeichen
beschreiben. Weil es sich um Algorithmen handelt (besonders sch"on
bei \MetaFont\ zu beobachten), sind die Fonts
im Gegensatz zu Bitmapfonts wie normale Programme durch Copyrights
gesch"utzt. Vergleiche dazu auch \cite{font-faq}.

Im folgenden kommt einiges an Hintergrundwissen "uber Vektorformate. Weshalb sollte
sich aber der geneigte Leser die M"uhe machen, das zu
verinnerlichen? Schlie"slich kaufen wir f"ur ein paar Mark eine Font-CD,
w"ahlen die 17 interessantesten Fonts f"ur unser erstes Plakat aus
und drucken das Ergebnis dann aus.

Die Probleme sind: Ich habe ein und denselben Schnitt in mehreren Formaten.
Welchen soll ich nehmen? Manchmal habe ich nur beim Drucken, manchmal
nur auf dem Bildschirm und manchmal nur bei bestimmten Gr"o"sen Probleme.
Warum?

Wer allerdings 17 Garamond-Schnitte von 17 Herstellern hat, sollte eher
Zeitschriften wie die Page lesen, um zu wissen, welche er nehmen soll.

\subsection{FSM-GDOS-Fonts}
Die Vektorfonts im alten FSM-GDOS-Format der QMS/Imagen Corp. werden hier 
mit OTL bezeichnet.

Diese Fonts und Treiber sollten nicht mehr benutzt werden und sind hier
nur der Vollst"andigkeit halber aufgef"uhrt.

\subsection{Bitstream Fontware-Fonts}
\label{Fontware}
Um eine Konfusion zu vermeiden sei erw"ahnt, da"s es von Bitstream
noch das Fontware-Format gibt, das beispielsweise keine Hints beherrscht.

Dieses Format hat nichts mit den hier besprochenen GDOS-Fontformaten
zu tun. 

\subsection{Bitstream Speedo-Fonts}
\label{bt_speedo}
Die Vektorfonts im Speedo-Format der Firma Bitstream werden hier mit SPD 
bezeichnet.

Sie werden von allen SpeedoGDOS-Versionen und von NVDI ab Version 3.0
unterst"utzt.

Manche Schnitte von Bitstream haben "`BT"' im Namen, andere "`SWA"'. 
BT steht f"ur "`Bitstream Type"', "`SWA"' f"ur "`Set Width Adjusted"'. 
Die SWA-Schnitte unterscheiden sich im Design der Zeichen {\em nicht}
von den korresponierenden Schnitten ohne SWA. Lediglich der Zeichenabstand
ist ver"andert, damit die Bildschirmdarstellung mit den eingebauten
Schnitten spezieller Drucker "ubereinstimmt. Es ist also sinnvoll,
die SWA-Schnitte nur dann zu verwenden, wenn man tats"achlich einen
solchen Drucker hat und wei\"s, da\"s der Schnitt von dem Drucker
mit dem druckereigenen Zeichensatz gedruckt wird. Das ist unter GDOS
aber nie der Fall. 


\subsection{Type~1-Fonts}
\label{t1_fonts}
Type~1-Fonts gibt es in Macintosh- und MS-DOS/WINDOWS-Darstellung. 
Die Versionen unterscheiden sich nur in der internen Darstellung, 
nicht in der Information.

Mindestens eines dieser Formate wird von SpeedoGDOS ab Version 5.0a
unterst"utzt. Ich habe allerdings schon Schnitte gefunden, die von
SpeedoGDOS 5.0a nicht dargestellt werden k"onnen.

Eine Anmerkung am Rande:\\
Es ist ein Irrtum anzunehmen, PS-Interpreter w"urden Type 1-Fonts
verwenden, nur weil der Original PS-Interpreter von Adobe dies tut.
Ein PS-Interpreter verwendet das Fontformat, das der Hersteller des
Interpreters will. Nur auf eines kann man sich ziemlich sicher
verlassen: ein PS-Dokument sieht auf dem Bildschirm anders aus als auf
dem Drucker.

\subsubsection{Multiple Master (MM) Fonts}
\label{multiple_master}

ATM (Adobe Type Manager) 3.01 f"ur Windows beherrscht jetzt zus"atzlich 
Multiple Master Fonts, eine Erweiterung des Type 1-Formats.
Mit dieser Technologie lassen sich nicht nur H"ohe, Breite, Neigungswinkel
und Rotation bei der Ausgabe angeben, man hat zus"atzliche
{\em kontinuierliche} Parameter, mit denen man aus verschiedenen
Designachsen ausw"ahlt. Eine Designachse k"onnte von leicht nach fett gehen,
eine weitere von serif nach sans-serif.
Dies ist nicht ein einfacher Algorithmus,
wie sonst bei GDOS, sondern der Fontdesigner bestimmt, wie und wo 
sich ein Schnitt ver"andert, wenn er fetter oder leichter wird.
Der Fontdesigner bestimmt auch, welche Designachsen es gibt.

Dieser Abschnitt dient nur zur Bildung. SpeedoGDOS 5.0 beherrscht nur
normale Type 1-Fonts und NVDI 3.0 gar keine.

Wenn man sich in \cite{tt_cd} die URW PrintWorks-CD anschaut, merkt man,
da"s URW intern eine solche Technologie auch besitzt. 
Vergl. auch \cite{karow1}. Dieses hochinteressante Buch ist auch von URW.

{\em Diese MM-Fonts sind doch eine Erweiterung des Type 1-Formats?}\\
Genau. \\
{\em Unter Windows kann ich jetzt MM Fonts verwenden, aber was mache ich mit
meinem alten Postscipt-Drucker?} \\
Kein Problem, der kann das trotzdem. \\
{\em Wie das?} \\
Ich habe doch schon erw"ahnt, da"s Vektorfonts eigentlich Algorithmen
darstellen. Adobe hat einfach einen neuen Operator definiert. \\
{\em Den beherrscht mein alter Postscript-Drucker doch nicht.} \\
Richtig. Man kann die Definition des Operators aber auch im Font selbst
mitliefern. So wird das zur Zeit auch gemacht. Deshalb k"onnen das auch
die alten Postscript-Drucker. \\
{\em Dann kann das aber auch der Scaler meines SpeedoGDOS, oder?} \\
Eben. Man m"u"ste nur die Programmierschnittstelle anpassen. Aus diesem
Grund gibt es auch f"ur Windows eine neue ATM-Version. \\
{\em Super! Dann br"auchte ich auch nicht mehr 50 Schnitte pro Font kaufen.} \\
Und f"ur ein Eis reicht dein Geld dann auch noch ;-)

Die MM-Technologie ist insofern nicht der Weisheit letzter Schu\"s, als
nur ein linearer "Ubergang zwischen extremschnitten m"oglich ist.
Ein nichtlinearer "Ubergang w"are noch interessanter.

Der erste MM-Font "uberhaupt ist die Groteskschrift Myriad von 
Carol Twombly und Robert Slimbach.

\subsubsection{Type 1-GX-Fonts}
\label{t1_gx_fonts}

Diese Fonts haben die selben F"ahigkeiten wie TrueType-GX-Fonts.
Warum das so ist, steht in \ref{GX}


\subsection{TrueType-Fonts}
\label{TrueType_Fonts}
Auch dieses Format gibt es in Macintosh- und MS-DOS/WINDOWS-Darstellung.

SpeedoGDOS ab Version 5.0a und NVDI ab Version 3.0 verarbeiten dieses 
Format unabh"angig davon, ob es f"ur Macintosh oder MS-DOS/WINDOWS ist.
Das Microsoft-Format ist ein Superset des Apple-Formats. 

Apple hat dieses Fontformat so definiert, da"s es aus verschiedenen 
Tabellen besteht (etwa wie die Chunks im IFF-Format). Diese Tabellen 
haben im Header einen Namen und eine L"ange eingetragen, so da"s 
Programme und Scaler unbekannte Tabellen einfach "uberspringen k"onnen. 
Wer neue Tabellen definiert, mu"s diese bei Apple anmelden.
Apple hat definiert, welche Tabellen im TrueType-Format vorhanden sein 
m"ussen und welche zus"atzlich vorhanden sein k"onnen.

F"ur Macintoshs haben die TrueType-Dateien die Endung .suit. Die 
eigentlichen Daten stehen dabei im Resource-Fork.

Mir ist weder f"ur SpeedoGDOS 5.0 ff noch f"ur NVDI 3.0 ff eine offizielle
Dokumentation bekannt, die beschreibt, welche Tabellen verwendet werden
und welche zwingend notwendig sind.

\subsubsection{TrueType f"ur Windows 3.0}
Microsoft hat von der M"oglichkeit Gebrauch gemacht, neue Tabellentypen
bei Apple anzumelden und einige davon als zwingend f"ur Windows zu
erkl"aren. 

Der Unterschied zwischen dem Apple-Format und dem Microsoft-Format ist
also lediglich, da"s Microsoft mehr Tabellen als zwingend notwendig
erkl"art hat. Au"serdem ist beim Vorhandensein bestimmter Flags die
Reihenfolge der Glyphen fest vorgeschrieben. Eine Definition des 
Microsoft-Formats findet sich in \cite{tt_def}.



\subsubsection{TrueType GX-Fonts bzw. TrueType 2.0}
\label{GX}
Apple hat das TrueType - Format f"ur beliebige Designachsen erweitert.
Damit haben wir hier eine Technologie, die den Multiple Master Fonts
(siehe \ref{multiple_master}) entspricht. 

Zus"atzliche Features:
\begin{itemize}
  \item Sie k"onnen Type 1 - Daten enthalten
  \item Automatische Substitution von Ligaturen
  \item Mehrere Baselines (z.B f"ur Mathematische Formeln)
  \item Track-Kerning-Informationen (werden ab NVDI 3.02 benutzt)
\end{itemize}
Diese Features werden auf dem Mac vom Line Layout Manager (LLM) zur 
Verf"ugung gestellt und sind unabh"angig vom darunterliegenden Scaler. 
Damit stehen diese F"ahigkeiten (zumindest auf dem Mac) f"ur alle 
Fonttechnologien zur Verf"ugung.

Informationen gibt es von der APDA, der Apple developer support 
organization \\
(EMail: apda@applelink.apple.com). Dort gibt es das
TrueType Book, das TrueType 1.0 beschreibt, und das QuickDraw GX Font 
Formats book, das die GX - Erweiterungen enth"alt.

Da TrueType 2.0 neue Tabellen enth"alt, m"ussen (im Gegensatz zu
Multiple Master Fonts) die Scaler umgeschrieben werden, um diese
Technologie zu verwenden.

\subsubsection{TrueType f"ur Windows NT}

Statt die GX-Fontdefinition zu verwenden hat Microsoft f"ur Windows NT
noch ein neues Fontformat definiert, das insbesondere gegen"uber
TrueType 1.0 ca doppelt soviele Zeichen zwingend enth"alt.


\subsection{Calamus-Fonts}
Wo kann man n"aheres "uber dieses Format erfahren?


\subsection{Vergleich der Vektorformate}

Es gibt auf keiner Plattform nichtkommerzielle Programme, die ein
Fontformat in ein anderes umwandeln k"onnen. Viele Fonts gibt es auch
nur in einem Format.

Was aber macht eine Umwandlung so schwierig? Anders gefragt: Welche
Informationen werden wie gespeichert?

\subsubsection{Kurven}
Zun"achst sollten die Umrisse der Zeichen gespeichert werden. Hier gibt
es aber viele Verfahren (vergl. \cite{karow1}): Type~1 verwendet kubische 
B\'{e}zier-Kurven, TrueType verwendet quadratische B\'{e}zier-Kurven, Speedo 
verwendet kubische B\'{e}\-zier-Kurven.

Damit alle Fontformate f"ur eine Applikation gleich aussehen, wandelt
SpeedoGDOS auch TrueType-Zeichen f"ur v\_getoutline in kubische
B\'{e}zier-Kurven. Mir w"are es lieber, in diesem Fall optional quadratische
B\'{e}zier-Kurven zur"uckzubekommen, die v\_bez\_fill dann auch verarbeiten 
sollte.

Quadratische B\'{e}zier-Kurven sind zwar deutlich schneller als kubische
B\'{e}zier-Kurven, es werden aber ca. 4 mal soviele Punkte ben"otigt.

\subsubsection{Hints, instructions, switches}
\label{hints}
Das n"achste Problem ist die Darstellung bei geringer Auf"|l"osung des
Mediums. Als unvoreingenommener Beobachter stellt man fest, da"s die
Speedo-Fonts auch auf dem Bildschirm immer recht ordentlich aussehen
(davon abgesehen, da"s einige Fonts von Hause aus nicht befriedigend sind).

Dagegen habe ich TrueType-Fonts gefunden, die auf dem Bildschirm an
H"a"slichkeit kaum zu "uberbieten sind. Das dr"uckt sich beispielsweise
darin aus, da"s die beiden senkrechten Striche eines n unterschiedliche
Dicken haben, einmal 1 Pixel und einmal 2 Pixel.

Die Methode zur Vermeidung solcher Rundungsfehler sind Hints. Hints
haben je nach Hersteller unterschiedliche Namen: Hints bei Adobe,
instructions bei Apple oder switches bei URW.

Dieses Verfahren wird von Speedo, Type~1 und TrueType beherrscht (nicht aber
von Type 3 und CFN). Wenn Hints vom Format her m"oglich sind, hei"st das
noch lange nicht, da"s sie auch verwendet werden (deshalb haben andere
auch umgekehrte Erfahrungen mit den Formaten gemacht wie ich).

Also: Speedo-, Type~1- und TrueType-Fonts k"onnen auf dem Bildschirm
sehr gut aussehen, w"ahrend das bei Type 3 und CFN nicht m"oglich ist.

Bis jetzt ist angedeutet, was Hints machen und in welchen Formaten
sie vorkommen. Aber wie machen sie das?
Bestimmte Teile von Schriftzeichen haben eine {\em Bedeutung}, wie
Serife, Bogen etc. Diese Bedeutung wird neben den Umrissen der Zeichen
mitgespeichert. Mit dieser Information kann dann der Scaler daf"ur sorgen,
da"s beispielsweise alle senkrechten Striche im 'n' auf dem Bildschirm
gleich dick sind. N"aheres siehe \cite{karow1}.

Type 1 zeichnet sich gegen"uber anderen Formaten dadurch aus, da"s es
besonders wenig verschiedene Hints beherrscht. Durch die neue
Multiple Master-Technologie (\ref{multiple_master}) hat Type 1 aber
wieder deutliche Vorteile.

Anmerkung: v\_getoutline liefert die Umrisse in der Gr"o"se, die f"ur
die Workstation aktuell eingestellt ist. Es ist darauf zu achten, da"s
je nach Gr"o"se die Hints zuschlagen oder auch nicht. Es ist geplant,
v\_getoutline von der aktuellen Fontgr"o"se unabh"angig zu machen.


\subsubsection{Interne Auf"|l"osung}
\label{int_resolution}
Nach dem Problem der geringen Auf"|l"osung kommen wir nun zum Problem
der zu hohen Auf"|l"osung, auch wenn man auf den ersten Blick kaum
glauben mag, da"s es hier ein Problem gibt. Siehe auch \cite{karow2}.

Zur Darstellung eines Fonts in einem Vektorformat mu"s zun"achst ein
internes Koordinatensystem gew"ahlt werden. Dazu wird das Geviert 
(engl: em-Space; ein Quadrat, in das alle Buchstaben einer Schrift passen)
unterteilt. Bei CFN geht dieses Geviert von 0 bis 16000, bei Type~1 
(das entwickelt wurde, als es noch keine hochauf"|l"osenden Drucker gab) 
von 0 bis 1000. Das f"uhrt dazu, da"s man mit Type~1-Fonts bei gro"sen 
Buchstaben oder hoher Auf"|l"osung (also im Profibereich) Ecken sieht, wo 
keine hingeh"oren (Laut \cite{karow1} kann die interne Auf"|l"osung allerdings
durch den DIV-Operator verbessert werden. Der Fonteditor mu"s 
das allerdings unterst"utzen. Wird dies regelm"a"sig gemacht?
Und wird der Scaler dadurch viel langsamer?). CFN spielt hier seine 
Qualit"at voll aus.

Bei TrueType kann der Fontdesigner die Auf"|l"osung bis zu 16768 frei 
w"ahlen, wobei Potenzen von zwei aufgrund der h"oheren Geschwindigkeit
bevorzugt werden.

%Bei Speedo geht das Geviert von 0 bis 4000 (nur ganze Zahlen?).
(Welche interne Auf"|l"osung hat OTL? Ist das Bitstream-Format,
das in \cite{karow1} erw"ahnt wird, identisch mit dem Speedo-Format?)

\subsubsection{Lineare und optische Skalierung}
\label{linear_opt}
Haben wir nun mit der Beschreibung des Umrisses, einer hohen internen
Auf"|l"osung und den Hints einen beliebig skalierbaren Font? Ganz klar: Nein!

Ein Font, der f"ur 16pt designt ist, sieht ganz anders aus, als ein um
das 2-fache vergr"o"serter 8pt-Font (Siehe z.B in Knuth: The \MetaFont\ Book;
Kopka: \LaTeX\, \cite{karow1} etc.). 
Ein gut designter Font ist nicht linear skalierbar.

Bei gro"sen Fonts sind die senkrechten Striche im Vergleich zu den
Zwischenr"aumen viel breiter als bei kleinen Fonts. Diese Information
zur optischen Skalierung kann man aber auch in einem Font speichern.

Deshalb sollte auch ein Font, der auf dem Bildschirm 20 Pixel hoch ist, 
anders aussehen als einer, der auf einem Laserdrucker 20 Pixel hoch ist.

Den Rest dieses Abschnittes haben schon zu viele mi"sverstanden.
Ich bin "uberhaupt der einzige mir bekannte, der hier ein Problem sieht.
Das kann mindestens 3 Ursachen haben:
\begin{itemize}
  \item Ich kann mich nicht ausdr"ucken.
  \item Ich habe ziemlich wirre Gedanken.
  \item Das Problem ist zu kompliziert, als da"s hier "uberhaupt jemand
        ein Problem sieht.
\end{itemize}
Ich will es also noch einmal ganz neu formulieren.

Vektorfontformate geben dem Fontdesigner die M"oglichkeit zu entscheiden,
da"s ein Schnitt unterhalb einer bestimmten Gr"o"se in Punkten oder
in Pixeln anders aussieht. Es ist beispielsweise sinnvoll, einen Schnitt
bei kleiner Gr"o"se in Punkten breiter werden zu lassen \cite{karow1},
und zwar unabh"angig davon, wie gut der Drucker ist.

Stellen wir also einen kleinen Text in einem Fenster dar, sagen wir mit
einer Gr"o"se von 8pt. Und der Fontdesigner hat entschieden, da"s der
verwendete Schnitt bei 8pt oder kleiner etwas breiter wird.

Ein zweites Fenster verwenden wir nun als Lupe, um den selben Text 
um den Faktor 2 vergr"o"sert darzustellen. 
Fast jede Textverarbeitung hat eine solche Lupenfunktion.

Dieser zweite Text im Lupenfenster m"u"ste jetzt eigentlich immer noch
automatisch wie eine 8pt-Schrift verbreitert werden, ohne da"s der
Programmierer der Textverarbeitung etwas davon merkt.

Leider mu"s aber der Programmierer im Lupenfenster die Schrift in 16pt
ausgeben, was dazu f"uhrt, da"s die Entscheidung des Fontdesigners,
diese 8pt-Schrift breiter darzustellen, ignoriert wird!

zur L"osung dieses Problems gibt es mehrere Wege:
\begin{enumerate}
  \item Man gibt (als Programmierer) bei der Gr"o"senangabe zwei Werte an,
        die lineare Gr"o"se (hier 16 pt) und die optische Gr"o"se.
        An diese Methode m"u"sten sowohl die Fontengine als auch die
        die Bindings angepa"st werden. Dies ist ein Vorschlag von
        mir, keine Realit"at.
  \item Die einzig zur Zeit machbare Methode sind die Offscreen-Bitmaps,
        die NVDI beherrscht, sofern das EdDI-Cookie existiert.
%       Diese Offscreen-Bitmap-Treiber gibt es auch separat als PD-Software.
        Beim "Offnen dieser Workstations ist die logische Pixelgr"o"se
        anzugeben. Da man die logische Pixelgr"o"se nicht nachtr"aglich
        "andern kann, kostet jede einzelne optisch skalierte Fontgr"o"se
        pro Dokument viel Speicherplatz. Insbesondere beim Ausdruck mu"s
        dann jede nicht standardm"a"sig optisch skalierte Schrift als
        Bitmap zwischengespeichert werden (egal ob vom Treiber oder vom
        Programm; ob Bitmaps vom Treiber gespeichert werden h"angt von
        der GDOS-Version ab). Diese Methode kann leicht mehr Speicher
        kosten, als ein Normalanwender hat.
  \item Eine weitere (noch nicht existierende) M"oglichkeit w"are, wenn
        man mit v\_getbitmap\_info sowohl die lineare als auch die
        optische Skalierung frei w"ahlen k"onnte.
  \item Das einfachste Verfahren, das keinen Zwischenspeicher f"ur
        Bitmaps erfordert, w"are die nachtr"agliche Einstellung der
        logischen Pixelgr"o"se f"ur alle logischen und physikalischen
        Workstations. Da die Scaler sowieso mit verschiedenen
        Pixelgr"o"sen umgehen k"onnen, sch"atze ich, da"s diese
        Methode am einfachsten in NVDI und SpeedoGDOS einzubauen w"are.
\end{enumerate}
Das Problem des Lupenfensters w"are ganz einfach dadurch zu l"osen,
da"s wir f"ur das Lupenfenster eine andere virtuelle Workstation
verwenden, f"ur die wir die logische Pixelgr"o"se halbieren.
Dann k"onnten wir die Schrift in beiden Fenstern als 8pt-Schrift 
ausgeben, beide Texte w"urden -- wie vom Fontdesigner gew"unscht 
-- breiter dargestellt, und trotzdem w"are die Schrift im 
Lupenfenster doppelt so gro"s.

Sollen dagegen vierschiedene optische Skalierungen in einem Dokument
auftauchen, mu"s nachtr"aglich die logische Pixelgr"o"se ge"andert
werden, oder man mu"s bei der Fontgr"o"se die lineare und die optische
Skalierung angeben.

Siehe auch Kapitel \ref{font_pixel}.

Hat das irgend jemand verstanden?



\subsection{Konversion zwischen den Vektorfontformaten}
\label{conversion}
Ich hoffe, da"s der geneigte Leser nach den obigen Ausf"uhrungen versteht, 
da"s die Konversion zwischen zwei Vektorfontformaten etwa so einfach ist
wie das automatische Umwandeln eines hochoptimierten Programmes von
einer Programmiersprache zur anderen.

Im einzelnen:
\begin{itemize}
  \item Es gibt auf Ataris kein Programm, das zwischen den oben genannten 
        Formaten konvertiert (man korrigiere mich bitte).
  \item Es gibt kein Programm auf irgendeiner Plattform, das vor den
        Augen der comp.fonts - Gemeinde besteht (laut comp.fonts FAQ).
        Es ist immer eine Nachbearbeitung von Hand notwendig.
  \item F"ur jedes Programm, das diese Aufgabe auch nur einigerma"sen
        beherrscht, ist (mal richtig) Geld zu bezahlen. Die Suche nach
        brauchbaren PD- oder Sharewareprogrammen (auf irgendeiner
        Plattform) ist zwecklos.
\end{itemize}

\section{Drucker}
\label{drucker}
\begin{center}
\begin{tabular}{|l|l|l|}\hline
Hersteller       & Drucker  & Passende Treiber \\ \hline
NEC              & P6+, P7+, & NECP\dots \\
                 & P60, P70  & NB15 (FX\dots, NX1000) \\ \hline
HP               & LaserJet II & HP\_LJET \\ \hline
HP               & DeskJet, LaserJet III, IV & DESKJET (HP\_LJET) \\ \hline
CANON            & BJ10E    & BJ10 \\ \hline
CANON            & LBP 4/8  & CANONLBP, LBP \\ \hline
Mannesmann-Tally & MT 90    & MT90 \\ \hline
Epson            & Stylus 800 & STYLUS \\ \hline
\end{tabular}
\end{center}
Treiber in Klammern funktionieren, nutzen aber die F"ahigkeiten des Druckers
nicht optimal aus.
Bei 24-Nadeldruckern bedeutet das, da"s die Drucker im 9-Nadel-Modus
betrieben werden.
Bei HP-kompatiblen Laser- und Tintenstrahldruckern bedeutet das, da"s
die Daten nicht komprimiert werden, obwohl die Drucker das unterst"utzen.

Mit manchen DeskJet-Treibern soll es Probleme geben. Versuchen Sie es in
diesem Fall mit einem LaserJet-Treiber. Der Ausdruck dauert dann aufgrund
des gr"o"seren Datenvolumens etwas l"anger, die Probleme sollten aber
behoben sein.

Die BJ10-Treiber bauen auf die Proprinter-Emulation auf. Der Drucker darf
mit diesen Treibern nicht im Epson-Modus betrieben werden.

Beim Stylus sollte kein Treiber f"ur 24-Nadler verwendet werden. Die
einzelnen Nadeln der 24-Nadel-Drucker "uberlappen (im Gegensatz zum Stylus),
weshalb die Treiber manche Punkte herausoptimieren und gar nicht erst 
drucken.

Was kompatibel hei"st, bestimmen normalerweise nur die Hersteller der
kompatiblen Drucker.

Anmerkungen:
\begin{itemize}
  \item Wer seinen Drucker nicht in der Liste findet und einen passenden
        Druckertreiber dazu kennt, der schreibe mir.
  \item Auch wenn man schon einen passenden Druckertreiber f"ur seinen
        Drucker gefunden hat, ist es durchaus sinnvoll, noch einige
        andere Druckertreiber auszuprobieren.
  \item Nat"urlich haben die \fontgdos -Druckertreiber ernsthafte
        Speicherplatzprobleme.
        Was aber den Ausdruck von Bitmap-Fonts anbelangt, so sind diese
        Treiber den anderen hier aufgef"uhrten GDOS-Treibern in der
        Geschwindigkeit "uberlegen (Speedo-Treiber sind hier nicht
        ber"ucksichtigt).
\end{itemize}

\section{Programme}
\label{programs}
Es ist inzwischen selbstverst"andlich (wenn auch nicht "ublich), da"s alle
Programme GDOS unterst"utzen.

Die folgende Aufstellung beschr"ankt sich auf Programme, die auch "uber
GDOS ausdrucken.

\begin{center}
\begin{tabular}{|l|l|l|l|}\hline
Programmart           & Programm               & Vertrieb        & Speedo \\ \hline
Chart/Me"swertanalyse & Xact                   & SciLab          & ja \\
                      & MM-Graph               & Overscan        &    \\
                      & Off-Axis               & ByTech          & Ja \\
                      & DATA Professional 4    & Ralf Wirtz      &    \\
                      & MessPlot               & Michael Siek (Shareware) & (ja) \\
                      & DPE                    & MAXON Sonderdisk &   \\
                      & GRAPH                  & Hans-C Ostendorf (Shareware) & ja \\
                      & rho-Analyse            & rhotron GmbH    & ja \\ \hline
Graphik               & Xact Draw              & SciLab          & ja \\
                      & \ka                    & U. Ro"sgoderer (Shareware) & ja \\
                      & TRIPLE\_D              & U. Ro"sgoderer (Postcard) & ja* \\
                      & Chagall                & Trade-iT        & ja* \\
                      & Easydraw               & MIGRAPH         &    \\
                      & TouchUp                & MIGRAPH         &    \\
                      & GEM-View               & D. Fiebelkorn (Shareware) & ja* \\
                      & CHARLY IMAGE           & Wilhelm Mikroel.& ja*\\ 
                      & STELLA                 & Thomas K"unneth & ja \\ 
                      & GPCLIENT f"ur GNUPLOT  &                 & ja \\
                      & Tarkus                 & Eickmann Computer& ja \\ \hline
Tabellenkalkulation   & LDW Power Calc 2       & COMPO           &    \\
                      & K\_Spread\_4           & Omikron         &    \\
                      & Graal Calc 3           & Editions Profil &    \\
                      & Atari Works            & Atari Corp.     & ja \\
                      & OPUS                   & Doug Harrison (PD)& nein \\
                      & BASiChart              & Dr. Ackermann   & ja \\ 
                      & TEXEL                  & ASH             & ja \\ \hline
\end{tabular}
\end{center}

\begin{center}
\begin{tabular}{|l|l|l|l|}\hline
Programmart           & Programm               & Vertrieb        & Speedo \\ \hline
Text/DTP              & Calligrapher           & Working Title   &    \\
                      & Wordflair II           & H3              &    \\
                      & Timeworks Publisher    & GST/H3          &    \\
                      & G\&D Text II           & Hard \& Soft    &    \\
                      & Cypress                &(Gregor Duchalski)&    \\
                      & papyrus (Gold) S       & R.O.M.          & ja \\
                      & Infinity               & ByTech GbR      &    \\
                      & Atari Works            & Atari Corp.     & ja \\
                      & 7Up                    &                 & ja \\
                      & 1st Word Plus 4        & GST/ICP         & ja \\
                      & Tempus Word            & CCD             & ja \\ 
                      & Gut'nberg              & BlowUp          & ja \\
                      & JAnE                   & DeltaLabs       & ja \\ 
                      & QED                    & Quellenberg/Felsch (PD) & ja \\
                      & Signum!4               & ASH             & ja \\
                      & TWIST 3 Office         & MAXON           & ja \\ 
                      & Calamus                &                 &    \\ \hline
Fax                   & Junior Office          & TKR             & ja \\
                      & Tele Office            & TKR             & ja \\
                      & CoMa                   & SoftB"ar GbR    & ja \\ 
                      & Straight Fax!          & Toad Computer   & ja \\ \hline
Simulation dyn. Syst. & Dynasys                & Digital Systems \& Consulting &  \\ \hline
Text/Listendruck      & IdeaList               & Chr. Bartholme (Sharew) & ja \\
                      & ProList                & Richstein \& Dick & ja \\ \hline
Chem. Darstellung     & Monoklin 2.0           & MAXON Sonderdisk &   \\
                      & Chemograph Plus        & DigiLab         &    \\\hline
Platinenlayout        & Route iT! \& Circu iT! & Think!          & ja \\
                      & Platon                 & VHS             & ja* \\ \hline
Vektorisierung        & Convector Zwei         & ZYN / TEAM      &    \\ \hline
Hardcopy              & rhocopy                & rhotron         &    \\ \hline
Disk-Inhaltsverzeich. & TreeView 2.4           & Stephan Gerle   &    \\ \hline
Fraktale              & Fractals V             & Harald+Martin Hansen &    \\ \hline
PS-Interpreter        & Postman                & SILICON Technology & \\ \hline
Konkordanz            & Concordance            & SPIRIT WARE     &    \\ \hline
Packershell f. MTOS   & MARC 4.0               & Think!          & ja \\ \hline
Logikanalysator       & CLA v2r1               & Craig Graham (Shareware) & ja \\ \hline
Adre"sverwaltung      & Pegasus                & Pergamon Software & ja \\ \hline
Symbolische Mathematik& Riemann II             & Begemann \& Niemeyer& \\
                      & Solutions              & Elan Software   &    \\ \hline
Datenbank             & Atari Works            & Atari Corp.     & ja \\ 
                      & TWIST 3 Office         & MAXON           & ja \\ \hline
Notendruck            & MIDI File Printer      & ST 677 (PD)     &    \\ \hline
CASE (Nassi-Shneider.)& UpToCase               & Michael Nolte   & ja \\ \hline
Fakturierung          & Kundendirektor Plus    & % Autor: Michael Kammerlander 
                                                 DeltaLabs       & ja \\ \hline
Desktop               & EASE ab V.3.1          & ASH             &   \\ \hline
Othello (Spiel)       & Stello                 & Claus J. Pedersen & ja \\ \hline
\end{tabular}
\end{center}

Die Aufstellung stellt keine Wertung dar. Ich nehme alle Programme auf,
die mir bekannt werden.

Anmerkungen:
\begin{itemize}
  \item Programme, die in der Speedo-Spalte mit ja* gekennzeichnet sind,
        unterst"utzen zwar SpeedoGDOS, machen davon aber keinen Gebrauch,
        geben also keine Texte aus.
  \item Xact kann auch ohne SpeedoGDOS Speedo-Fonts ausdrucken.
  \item Mit Wordflair II wird FSM-GDOS ausgeliefert. (Stimmt das noch?)
  \item Platon gibt lediglich Metafiles "uber GDOS aus.
  \item Ich habe es allerdings nicht geschafft, mit OPUS "uber GDOS auszudrucken.

        Inzwischen habe ich erfahren, da"s OPUS nicht die Fonts ausw"ahlt,
        mit denen es zurechtkommt, sondern das Drucken verweigert, sobald
        auch nur ein solcher Font installiert ist. Siehe auch \ref{bitmapwidth}.
  \item Programme, die nur auf Ger"atenummer 21 drucken, sind out. (Opus und CLA)
        Siehe auch \ref{treiberauswahl}.
  \item 7Up ben"otigt Proportionalfonts (m"u"ste das nicht nichtproportionale
        Fonts hei"sen?).
  \item Das Programm Tempus Word unterst"utzt nur Speedo-
        Fonts, druckt aber "uber eigene Treiber aus. Dieses ist anscheinend
        notwendig, da ja gleichzeitig auch Calamus-Fonts und das eigene 
        Font-Format in einem Text verwendet werden k"onnen!
  \item Wie WordPlus 4 kann nat"urlich auch der `gro"se' Bruder 
        That's Write 3 Speedo-Fonts ohne Speedo nutzen. Ab Version 4 wird 
        TW sogar auch TrueType und Type 1 Fonts ohne installiertes 
        SpeedoGDOS nutzen k"onnen (ist ja auch von den selben Leuten, die
        SpeedoGDOS 5.0 an TrueType und Type 1 angepa"st haben).
  \item LDW-PowerCalc: MAXON hat die Kundendatei vernichtet. F\"ur Updates
        bitte bei COMPO melden.
  \item Tarkus druckt Etiketten, Formulare, Postkarten, Visitenkarten.
  \item Programme, die nur unter ABC-GDOS laufen, sind unter \ref{ABC-GDOS}
        aufgef"uhrt.
  \item Signum!4 scheint nur mit NVDI 3.0x zu laufen, nicht aber mit
        SpeedoGDOS 5.x.
\end{itemize}

\ka\ Version 1.73 ist zu finden in \\
\htmladdnormallink{ftp://ftp.cs.tu-berlin.de/pub/atari/Graphic/kand173}%
{ftp://ftp.cs.tu-berlin.de/pub/atari/Graphic/kand173}

Apropos TEXEL: Nimmt man zu jedem Buchstaben des Namen MUCH den 
Folgebuchstaben, so kommt NVDI raus ;-))))) (genau wie HAL zu IBM und
VMS zu WNT wird)


\section{Hilfsprogramme}
\subsection{fontfix}
Problemstellung: Bei manchen Bitmap-Fonts ist die Fonth"ohe falsch
eingetragen. Das wird durch dieses Programm erkannt und korrigiert.

Das Programm fontfix ist im Internet an folgenden Orten zu finden:\\
\htmladdnormallink{ftp://ftp.uni-muenster.de/pub/atari/Applications/Dtp/Fonts/Gdos}%
{ftp://ftp.uni-muenster.de/pub/atari/Applications/Dtp/Fonts/Gdos} \\
\htmladdnormallink{ftp://ftp.cs.tu-berlin.de /pub/atari/utils}%
{ftp://ftp.cs.tu-berlin.de /pub/atari/utils}

\subsection{Outline Fonts}
Outline Fonts Accessory by CJG

Zweck: Bearbeitung der EXTEND.SYS-Datei f"ur SpeedoGDOS. Die Datei enth"alt
eine Beschreibung der Gr"o"sen der Speedo-Caches, der Fonts und der
voreingestellten Fontgr"o"sen.
Au"serdem k"onnen die Caches auf Platte gespeichert und wieder geladen
werden. Ein durchaus gelungenes Programm bis auf die Tatsache, da"s die
vorgeschlagenen Cachegr"o"sen auf FSM-GDOS und nicht auf SpeedoGDOS
abgestimmt sind.

Dateiname: OUTLINE.PRG alias OUTLINE.ACC, 67644 Bytes \\
SpeedoGDOS 5.0: 49254 Bytes

Wird bei SpeedoGDOS mitgeliefert.

Warum schafft es Atari eigentlich nicht, die Programme mit einer
Versionsnummer auszustatten?

\subsection{Druckertreiber}
\label{driver_prg}
GDOS Devices Accessory by CJG

Zweck: Bearbeiten der ASSIGN.SYS.

Dateiname: DRIVERS.PRG alias DRIVERS.ACC, 64878 Bytes\\
SpeedoGDOS 5.0: DRIVER.PRG, 41592 Bytes

Bevor man dieses Programm startet, sollte eine Sicherheitskopie der
ASSIGN.SYS angelegt werden! Daf"ur gibt es (mindestens) zwei Gr"unde.
Erstens werden die Informationen "uber die Bitmap-Fonts kommentarlos
hinausgeworfen und zweitens wird - falls man unter Benutzereigen den
Knopf Hinzuf"ugen dr"uckt - die ASSIGN.SYS "uberschrieben, ohne da"s man
das mit Abbruch im Hauptmenu wieder r"uckg"angig machen kann.
An alle Programmierer: macht so etwas blo"s nicht nach.

Sollte das Programm einmal keine Treiber anzeigen, ohne aber eine
Fehlermeldung zu bringen, hilft es, ASSIGN.PRG laufen zu lassen.

Von meinen vielen Treibern zeigt dieses Programm nur die Speedo-Treiber an.
Wei"s jemand, wie das Programm das macht?
Au"serdem zeigt das Programm nicht den Filenamen an, sondern einen Namen,
der als String im Treiber hinterlegt ist. Wie kommt man da dran?

\subsection{ASSIGN}
ASSIGN 1.0a ist von Dirk Sabiwalsky (PD).

Assign testet drei Dinge:
\begin{itemize}
  \item Besitzen mehrere Zeichens"atze die gleiche ID und haben unterschiedliche
    Namen (Typefaces)?
  \item Besitzen mehrere Zeichens"atze die gleiche ID und die gleiche Pixelh"ohe?
  \item Besitzen mehrere Zeichens"atze den gleichen Namen (Typeface) und 
    unterschiedliche IDs?
\end{itemize}

\subsection{FONTCHK}
Zweck: Testet GDOS-Fonts auf m"ogliche Fehler.

Das Programm wird beispielsweise bei ProList mitgeliefert.

\subsection{FONTCNV}
Zweck: Konvertiert GDOS-Fonts von der Motorola- in die Inteldarstellung

Das Programm wird beispielsweise mit ProList mitgeliefert.

\subsection{GEMFont}
Fonteditor, der auch Signum- und PK (\TeX)- Fonts lesen kann.\\
\htmladdnormallink{ftp://ftp.tu-clausthal.de/pub/atari/systools/gdos/gemfo120.lzh}%
{ftp://ftp.tu-clausthal.de/pub/atari/systools/gdos/gemfo120.lzh} \\
Bei dieser Gelegenheit gleich ein neueres unlzh oder lhxarc besorgen.

\subsection{FontMonger}
Konverter und Editor f"ur verschiedene Vektorfontformate, auch Speedo.
L"auft leider nur auf DOSen und MACs.

\subsection{Font-ID}
Font-ID ist ein kleines Freeware-Programm von Frank Schneider. Es zeigt die
mit SpeedoGDOS oder GDOS installierten Fonts samt Font-ID in verschiedenen
Punktgr"o"sen in einem Fenster an.

Man kann sich also einen "Uberblick verschaffen, wenn man gerade kein
Programm mit Fontselektor zur Hand hat oder dieses die Font-ID nicht anzeigt.

\subsection{X4U}
\label{X4U}
Speedo-Fonts enthalten wesentlich mehr Zeichen, als in einen
Ascii-Zeichensatz abgebildet werden k"onnen. Mit diesem Programm von
Peter Hellinger kann bestimmt werden, welches Zeichen bei einem gegebenen
Ascii-Code erscheint. Vertrieben wird es von R.O.M.

Eigentlich wollte R.O.M. dieses Programm gratis auf die SpeedoGDOS 
4.2-Disketten packen. Das ging aber nicht, weil Helli die MagicLib 
verwendet hat und das Programm deshalb zu gro"s wurde. R.O.M. hat es 
daher separat f"ur 25 DM verkauft, was Helli, obwohl er von R.O.M. f"ur 
die Auftragsarbeit bezahlt wurde, zu rechtlichen Schritten veranlasste.
Ulli Ramps von R.O.M. wurde das zu bunt, und er erkl"arte X4U zu einem
PD-Programm, was Helli wiederum zu rechtlichen Schritten veranlasste.
(Fortsetzung im n"achsten Abschnitt)

\subsection{Charmap}
\label{charmap}
Charmap hei"st das Originalprogramm von Atari, das dasselbe macht, wie
X4U, aber nicht freigegeben wurde.

Charmap hei"st aber auch Peter Hellingers Weiterentwicklung von X4U,
die in der Version 0.9 als Freeware frei kopiert werden darf.
(To be continued)

\subsection{GDOS-Font}
\label{GDOS-Font}
Filename: GFONT112.LZH.
Utility allgemein, Shareware-Eingeschr"ankt.\\
GDOS-Font 1.12 (22.08.94) von Holger Weets @ OL.\\
Zeigt und bearbeitet GDOS-Fonts und meldet sie in der ASSIGN.SYS an
oder ab! => Nie mehr von Hand die ASSIGN.SYS "andern, das erledigt
alles GDOSFONT.

\subsection{REFONT}
\label{REFONT}
Dieses Programm konvertiert Type 1-Fonts zwischen der Mac-, Unix- und
Windows-Darstellung und TrueType-Fonts zwischen der Mac- und 
Windows-Darstellung. Zwischen T1 und TT kann es allerdings nicht 
konvertieren.

Dieses Programm gibt es (mindestens) f"ur MS-DOS, Windows, OS/2 und 
UNIX.

\subsection{Arkus}
\label{arkus}
Arkus 1.16 ist ein Fontmanager von Pergamon Software.



\section{Fontselektoren}
\label{fontselectors}
Bei Fileselektoren hat man sich daran gew"ohnt: Das Betriebssystem bietet
nicht nur einen Fileselektor, sondern auch eine Schnittstelle, "uber
die man systemweit alternative Fileselektoren anmelden kann.

Eine normierte Schnittstelle fehlt bei Fontselektoren, sie bieten ihre
Dienste "ublicherweise "uber Cookies an. Selbst der Aufwand, mehrere
Fontselektoren "uber Cookies zu unterst"utzen, ist aber wesentlich geringer,
als selbst einen solchen zu schreiben. W"are da nicht\dots aber schauen
wir uns zun"achst die Kandidaten an.

Bei den Fontselektoren gab es in den letzten Monaten eine rasante 
Entwicklung, die sich noch nicht im FAQ niedergeschlagen hat. Die
Beschreibung der einzelnen Selektoren ist also nicht mehr aktuell
und es gibt neue Selektoren, die hier noch nicht aufgef�hrt sind.


\subsection{The quick brown fox\dots}
\label{the_quick}
Sicherlich ist der eine oder andere genervt, weil in Fontselektoren
(fast) immer dieser Satz "`The quick brown fox jumps over the lazy dog"'
als Schriftbeispiel dargestellt wird. Warum wird gerade dieser Satz
immer wieder verwendet? Die Antwort ist ganz einfach:
Dieser kurze Satz enth�lt alle Buchstaben des Alphabets.

In einem Buch von Martin Gardner (falls mich die Erinnerung nicht tr"ugt)
habe ich eine ganze Reihe von deutschen und englischen S"atzen mit dieser
Eigenschaft gefunden. Leider wei\"s ich nicht mehr, in welchem meiner
18 B"ucher von Martin Gardner das war. F"ur Hinweise auf diese S"atze
in allen Sprachen bin ich dankbar.

Hier einige Beispiele aus der PAGE 1/96:\\
The quick brown fox jumps over the lazy dog\\
I pack my box with five dozen liquor jugs\\
Wolves exit quickly as fanges zoo chimps jabber\\
Victors flank gyp who mixed job quiz\\
Six big devils from Japan quickly forgot how to waltz\\
Oozing quivering jelly fish expectorated by mad hawk

Fixquark vom weibtyp geschlejnzt\\
Oh, welch Zynismus, quiekte Xavers jadegr"une Bratpfanne

"Ahnliche Aufgaben hat das Wort "`OHamburgefons"'. Dieses Wort enth"alt
zwar nicht alle Buchstaben, aber alle wesentlichen Designelemente, aus
denen die Buchstaben eines Alphabets zusammengesetzt sind. Beim Design
einer neuen Schrift wird oft in der Reihenfolge der Buchstaben dieses
Wortes vorgegangen.


\subsection{UFSL}
UFSL von Michael Th"anitz ist Freeware und darf jedem Programm beigelegt 
werden.
Die letzte Version ist 0.97 vom 30. April 1994.

Fonts und Gr"o"se lassen sich angenehm ausw"ahlen. Nach freier Eingabe
wird der Font nach einem Doppelklick auf die freie Eingabe angezeigt.
Intuitiver f"ande ich einen Doppelklick auf das Beispiel.

Es fehlen die Attribute, und der Selektor steht nur als modaler Dialog
zur Verf"ugung.

UFSL wird leider nicht weiterentwickelt.

\subsection{XUFSL, HuGo}
\label{XUFSL}
XUFSL 1.05 von Stefan Rogel ist der umfangreichste der hier besprochenen
Fontselektoren. Insbesondere arbeitet er mit SpeedoGDOS 5.0 zusammen. 

Dieser Fontselektor gef"allt mir ganz ausgezeichnet. Die gro"se
Informationsvielfalt wird durch einen gut aufgeteilten Karteikartendialog
sehr "ubersichtlich dargestellt. Auch da"s die Schnitte in einem Popup
ausgew"ahlt werden, st"ort nicht mehr wie die vielen Popups in der Version 
1.03.

Der Fontselektor zeigt alle wissenswerten Informationen zum ausgew"ahlten
Schnitt an; ebenso zeigt er den kompletten Ascii-Zeichensatz an.
(Wenn man den jetzt auch noch ausdrucken k"onnte und auch noch der
komplette 16 Bit-Zeichensatz zug"anglich w"are\dots; aber so etwas
wage ich von den anderen Fontselektoren noch gar nicht zu w"unschen.)

XUFSL ist inzwischen von HuGo abgel"ost.

\subsection{Magic von Helli}
Dieser Fontselektor ist Bestandteil von Magic 4.00 von Peter Hellinger
et al. und nicht separat erh"altlich. Magic selbst - nicht zu verwechseln
mit dem Betriebssystem Mag!C - ist frei kopierbar. Nur f"ur die
Information, wie man damit umgeht, verlangt der Autor eine Geb"uhr.

Angenehm an diesem Selektor ist, da"s er nichtmodal in einem Fenster
zur Verf"ugung steht, wahlweise auch als FlyDial oder normaler Dialog.

Der Fontselektor l"a"st sich nur verwenden, wenn man die Eventverwaltung
komplett Magic "uberl"a"st, was dem Programmierer eine feste
Programmstruktur aufzwingt (funktionierendes mu"s neugeschrieben werden,
anderes geht gar nicht mehr) und weitere Fehler nach sich zieht.

\subsection{FontSel}
FontSel von Holger Weets ist f"ur die Programme voll kompatibel zu UFSL.
Sehr sch"on ist, da"s das Programm sehr kurz ist und auch die Fontattribute
ausw"ahlen l"a"st.

Version 1.00 vom 11.5.94 zeigt mit Speedo 5.0a leider nur den Systemfont an.

\subsection{Weitere Fontselektoren}
\label{fontsel_etc}
Weiter arbeiten Hayo Schmidt, Christian Grunenberg und Wilfried Behne
an (jeweils) einem Fontselektor. Die kenne ich aber alle nicht.

\subsection{Minimalanforderungen}
Ein Fontselektor mu"s mit allen Betriebssystemversionen zusammenarbeiten
(TOS, MiNT, MultiTOS, MagiC!, Geneva). Er mu"s mit jeder Videohardware
klarkommen, die VDI unterst"utzt und mit jeder GDOS-Version jeden
verf"ugbaren Font anzeigen.

Jeder der oben genannten Fontselektoren scheitert an mindestens einer
dieser Forderungen.

\subsection{W"unschenswerte Eigenschaften}
\subsubsection{Attribute und Auswahl}

Es ist furchtbar umst"andlich, weitere Eigenschaften eines Fonts in einem
weiteren Dialog einstellen zu m"ussen. Deshalb sollten mindestens die
"ublichen Fontattribute (fett, outlined etc) einstellbar sein.
"Uber diesen Wunsch kann man sich treff"|lich streiten. Aber f"ur Vektorfonts
w"ahlt man die Attribute (in Form von Schnitten) aus, und es w"are
inkonsistent, dies dann f"ur Bitmapfonts nicht zuzulassen.
Wenn diese Attribute vom Programm nicht verarbeitet werden, sollten sie
unsichtbar gemacht werden k"onnen.

Ebensolches gilt f"ur den Skew-Winkel.

Nicht jedes Programm kann mit jedem Font etwas anfangen. Deshalb sollte
jedes Programm bestimmen k"onnen, welche Schnitte gar nicht angezeigt
oder disabled angezeigt werden. Einige Programme k"onnen beispielsweise
nur mit nichtproportionalen Schriften etwas anfangen. Zus"atzlich (aber
wegen BASIC nicht ausschlie"slich) sollte dem Fontselektor eine
Prozedurvariable "ubergeben werden k"onnen, die f"ur jeden einzelnen
Schnitt aufgerufen zur"uckmeldet, ob und wie er angezeigt werden soll.

\subsubsection{Fenster und Eventverwaltung}
Sch"on w"are es, wenn das aufrufende Programm bestimmen kann, ob ein
Fontselektor als Dialog oder im Fenster erscheint. Das l"a"st sich auch
viel einfacher und flexibler als bei Magic bewerkstelligen: \\
Der Fontselektor "offnet im Namen der Applikation ein Fenster und gibt
das Fensterhandle an die Applikation zur"uck. Die Applikation verwaltet
weiter die Events und wenn eines davon das Fenster des Fontselektors
betrifft, wird die Information durch einen Prozeduraufruf an den
Fontselektor weitergegeben. Durch diesen sehr einfachen Mechanismus
k"onnen sogar mehrere (systemweite) Fontselektoren, Colorpicker etc.
verschiedener Hersteller gleichzeitig in Fenstern auf dem Bildschirm sein.

Dieses Nebeneinander ist nur m"oglich, wenn die einzelnen 
Selektoren (optional) auf eine eigene evnt\_multi-Schleife verzichten.

Praktisch alle Autoren von Utilities wollen dies umgekehrt machen
(und tun dies auch). Deshalb will ich detailliert ausmalen, was passiert,
wenn Utilities den evnt\_multi-Aufruf selbst machen und nicht bearbeitete
Events an die Applikation weitergeben:

In diesem Fall gibt es f"ur eine Applikation mehrere Utilities, die
alle darauf bestehen, den evnt\_multi-Aufruf selbst zu machen. Irgendeines
dieser Utilities f"uhrt diesen Aufruf durch, kann ihn nicht bearbeiten
und gibt den Event an die Applikation weiter.
Und nun? Was soll die Applikation machen? Sie kann den Event nicht mehr
an andere Utilities weitergeben, obwohl eines davon f"ur den Event 
zust"andig ist. Aber alle weigern sich, Events von der Applikation 
entgegenzunehmen.

Bei Zuwiderhandlung der Autoren der Utilities kann eine Applikation maximal 
ein (Fenster-)Utility verwenden. Wenn eine Applikation Hellis Magic 
verwendet, kann sie sogar gar kein Utility mehr verwenden.

\subsubsection{Verschiedenes}
Zuletzt sollte ein Programm auch sagen k"onnen, da"s es irrelevant ist,
ob ein Schnitt proportional ist oder nicht (dem Anwender kann das auf
seinen expliziten Wunsch trotzdem angezeigt werden). Beim Verzicht auf
diese Information kann das Laden der Fonts in einem Bruchteil der Zeit 
stattfinden.

Der Fontselektor, der mir derzeit am besten gef"allt, ist der von papyrus.
Leider gibt es ihn nur in papyrus eingebaut.

\subsection{"Uber Dialoge}
\label{my_progem}
Was ich hier schreibe, hat eigentlich gar nichts mit dem Thema des FAQs
zu tun. Aber es pa"st hierher. Seht es als meine pers"onliche Anmerkung
zu Tim Oren \cite{progem}.

Ich habe mich schwer dar"uber gewundert, warum mir der Fontselektor in
papyrus soviel besser gef"allt als XUFSL 1.03. Dabei enth"alt doch XUFSL 
allen Schnickschnack, den die neuen Libraries so bieten. Und vor allem 
verst"o"st XUFSL 1.03 gegen keine Designrichtlinie, die ich explizit gelesen 
habe. Das jetzt folgende gilt f"ur Dialoge im Allgemeinen und nicht
speziell f"ur XUFSL 1.03.

Ich versuche also, bewu"st zu machen, was mich unbewu"st st"ort. Andere
m"ogen zu anderen Ergebnissen kommen. 

Mich st"oren an solchen Dialogen am meisten die Popups 
(insbesondere mit Slidern)!

Zeitgem"a"se Benutzeroberfl"achen zeichnen sich dadurch aus, da"s man
ausw"ahlt statt einzugeben (wie bei diesen uns"aglichen MS-DOS-Programmen).
Zu dieser Auswahl geh"ort es, nachsehen zu k"onnen, was es alles gibt.

Und genau das fehlt bei Popups. Vor allem, wenn mehrere in einem Dialog
auftreten: man kann nicht bei der Eingabe mal kurz nachsehen (oder noch
besser: sehen statt nachsehen), was es sonst noch gibt. Zu allem
"Uberflu"s verlangt ein Popup auch noch einem Mausklick, bevor man etwas
anderes machen kann. 

F"ur die Theoretiker: damit hat man einen modalen Teil in einem 
nichtmodalen Dialog oder schlimmer noch in einem sowieso 
schon modalen Dialog. Und modale Dialoge werden als st"orend empfunden.

Diese Verwendung von Popups  verst"o"st also gegen die grundlegenden Ideen
hinter einer intuitiven Benutzeroberfl"ache. Ich wei"s, Ihr seid alle
stolz, Popups - sogar solche mit Slidern - zu beherrschen. La"st es
m"oglichst trotzdem bleiben.

\section{Vertrieb}
\subsection{\atari}
Die mit \atari\ gekennzeichneten Druckertreiber waren bei Atari  
erh"altlich.

Dieses Paket gibt es auch bei den Fachh"andlern.

Es gibt keine Doku, aber f"ur den Preis lohnt es sich allemal.

\subsection{BELA}
Die mit BELA gekennzeichneten Treiber gab es bei BELA.

Es gab zwei Disketten mit gepackten Druckertreibern und Fonts
f"ur die Treiber.

Die Fonts haben zwar den gleichen Filenamen und Font-IDs wie die
entsprechenden Atari-Fonts, unterscheiden sich aber im internen
Fontnamen. Daher werden diese Fonts korrekterweise von einigen
Programmen zur"uckgewiesen, wenn sie zusammen mit den original
Atari Fonts verwendet werden.

Dokumentation gibt es praktisch nicht. Nicht einmal einen Hinweis,
wer das Copyright der einzelnen Treiber hat, oder wer die Autoren sind.

BELA gibt es nicht mehr.

\subsection{\langDisk}
Der mit \langDisk bezeichnete Treiber wird auf der Language-Disk des
Mega STE mitgeliefert.

\subsection{Internet}
Die mit I gekennzeichneten Druckertreiber sind im Internet zu finden \\
(z.B. \htmladdnormallink{ftp://ftp.cs.tu-berlin.de/pub/atari}%
{ftp://ftp.cs.tu-berlin.de/pub/atari}).

\subsection{Working Title}
Die mit WT und wt bezeichneten Treiber werden mit Calligrapher ausgeliefert.
Die WT-Treiber sind \copyright Working Title, die wt-Treiber sind von
Working Title lizensiert.

Auf der Calligrapher-Demodisk werden keine Druckertreiber mitgeliefert.
Die Druckertreiber, die mit Calligrapher-Lite (15 DM) ausgeliefert werden,
sind in den Tabellen mit CL gekennzeichnet.

Auf beiden Disketten sind Bildschirmfonts enthalten.


\subsection{X Window System}
F"ur das X Window System gibt es PD-Speedo-Fonts von Bitstream. Diese k"onnen mit
SpeedoGDOS 4.2 verwendet werden. Bei mir funktioniert das wunderpr"achtig
und auch die Umlaute machen keine Probleme.

Im Internet Archie (Siehe \ref{archie}) wie folgt suchen lassen: \\
set search sub\\
prog speedo-

Die Fonts: \\
font0648.spd -bitstream-charter-medium-r-normal--0-0-0-0-p-0-iso8859-1 \\
font0649.spd -bitstream-charter-medium-i-normal--0-0-0-0-p-0-iso8859-1 \\
font0709.spd -bitstream-charter-bold-r-normal--0-0-0-0-p-0-iso8859-1   \\
font0710.spd -bitstream-charter-bold-i-normal--0-0-0-0-p-0-iso8859-1   \\
font0419.spd -bitstream-courier-medium-r-normal--0-0-0-0-m-0-iso8859-1 \\
font0582.spd -bitstream-courier-medium-i-normal--0-0-0-0-m-0-iso8859-1 \\
font0583.spd -bitstream-courier-bold-r-normal--0-0-0-0-m-0-iso8859-1   \\
font0611.spd -bitstream-courier-bold-i-normal--0-0-0-0-m-0-iso8859-1

\subsection{COMPO}
Bei Compo gibt es zwei Pakete mit jeweils 100 Fontschnitten im
Bitstream Speedo-Format f"ur je 99.- DM (ohne Gew"ahr):

Inzwischen bietet COMPO ein CD-ROM mit TrueType und Type1 Schriften an, das
wohl dieselben Schriften enth"alt, wie das StarType CD-ROM. Aber eben beide
Arten auf einem CD-ROM. Preis: 99.-DM

\subsection{IMG-0300}
\htmladdnormallink{ftp://ftp.uni-muenster.de/pub/atari/Gdos}%
{ftp://ftp.uni-muenster.de/pub/atari/Gdos}

\subsection{FTP}
Viele Studenten haben das Gl"uck, sich "uberall auf der Welt mit FTP
Dateien holen zu k"onnen. Es ist allgemein bekannt, da"s die Unis nur
Pauschalen f"ur die Standleitungen zahlen. Weitgehend unbekannt ist aber,
da"s Verbindungen zwischen Europa und Amerika von den Unis volumenabh"angig
bezahlt werden m"ussen.

Versuchen Sie also, Verbindungen "uber den gro"sen Teich strikt zu vermeiden
und auch sonst m"oglichst kurze Wege zu w"ahlen.
Au"serdem sollte die "Ubertragung auf Zeiten au"serhalb der Arbeitszeiten
am Ort der Server gelegt werden.

Wo sich Files mit bekanntem Dateinamen befinden, kann mit Archie \label{archie}
herausgefunden werden. In Deutschland: \\
telnet archie.th-darmstadt.de \\
login: archie \\
help \\
In den USA z.B.: archie.ans.net

Archie zeigt dann automatisch weitere Archie-Rechner an. Verwenden Sie
den in Ihrer N"ahe.

Die Archie-Datenbanken fragen etwa einmal im Monat nacheinander die
bekannten FTP-Server nach den "offentlich zug"anglichen Files ab.

Noch ein kleiner Tip: atari.archive.umich.edu ist immer dicht.
Nicht einmal das Spiegeln auf andere Server funktioniert.
Man sucht daher besser auf amiga.archive.umich.edu und tippt dort cd atari.
Dieser Rechner hat die gleiche Platte gemountet.
Aber: Bitte zuerst in der eigenen Umgebung suchen!

\subsection{SciLab}
Die GDOS-Treiber von SciLab sind nicht in den Treibertabellen aufgef"uhrt,
auch wenn insbesondere die Treiber f"ur Farbdrucker sehr begehrt sind.

Diese Treiber k"onnen nicht (mehr) einzeln bei SciLab bezogen werden.
Das liegt daran, da"s viele Programme die Farbtreiber falsch ansprechen
und SciLab dann den "Arger hat.

Man kann an diese Treiber nur herankommen, wenn man ein entsprechendes
Programm bei SciLab kauft, oder wenn man den Softwarevertrieb der eigenen
Programme bittet, diese Treiber zu lizensieren. SciLab hat daf"ur immer
ein offenes Ohr.
Insbesondere sind dies speedof"ahige Treiber f"ur HP 600 dpi und
HP 500C/550C. Diese sind aber inzwischen bei SpeedoGDOS 5.0 dabei.

\subsection{Star Division}
Von Star Division gibt es CD-ROMs (StarType) mit 500 TrueType bzw. 
Type1 Fonts. Dieses sind meist komplette Pakete der einzelnen
Fonts. Zum Beispiel sind von der 'Zapf Humanist 601' folgende Schnitte
vorhanden: roman, italic, bold, bold italic, demi, demi italic, ultra,
ultra italic.

Viele Schriften von Bitstream sind auf dieser CD enthalten (eben auch die 
Zapf Humanist 601)
Au"serdem sind zwei ITC-Schnitte enthalten.
Zu bekommen sind diese CD-ROMs und ein Booklet mit einer "Ubersicht zumindest
bei Vobis (Preis: 69.-DM)

\subsection{Thierry Rodolfo}
\label{Rodolfo}
Die mit T.R. bezeichneten Treiber sind von Thierry Rodolfo. Sie finden sich
in der BBS BRASIL und in \\
\htmladdnormallink{ftp://hensa.micro.ac.uk/atari/tos/n/n196/}%
{ftp://hensa.micro.ac.uk/atari/tos/n/n196/}\\
Ausnahme: MEMORY\_2 befindet sich in \\
\htmladdnormallink{ftp://ftp.cs.tu-berlin.de/pub/atari/GDOS/}%
{ftp://ftp.cs.tu-berlin.de/pub/atari/GDOS/}


\subsection{Sonstige}
Ich treffe keine Auswahl an Treibern. Das Kriterium ist Vollst"andigkeit.

Die Programmautoren (und Anwender) der Programme sind hiermit aufgefordert,
mir zu schreiben, welche GDOS-Treiber bei den einzelnen Programmen
mitgeliefert werden (mit den Angaben Codel"ange, Datum und evtl. bekannte
Fehler).

Ein Vergleich verschiedener TrueType-CDs findet sich in \cite{tt_cd}.

Wer ansonsten diese billig-CDs verwendet (jeweils 500 TT-Schnitte f"ur
15 DM), sollte nicht auf Umlaute, Kerning oder ein ausgewogenes
Schriftbild bestehen. Dann macht es auch nichts mehr aus, 20 Fonts 
auf einem Plakat zu verwenden. (Seufz!)

\section{GDOS-Versionen}

\subsection{Die Fossile}
Atari-GDOS, AMCGDOS, ABC-GDOS, NVDI bis 2.51 und wahrscheinlich 
G+Plus verwenden die selben Treiber.

\subsubsection{Atari-GDOS 1.X und AMCGDOS}
Das Atari-GDOS ist der Urahn aller GDOSe. GDOS 1.0 wurde von Digital
Research f"ur Atari entwi"ckelt. Besondere Eigenschaften sind
die vielen Fehler und die unertr"agliche Langsamkeit. Aber das ist
Geschichte.

AMCGDOS ist schneller und hat weniger Fehler. Es hat aber im Wesentlichen
den gleichen Funktionsumfang und wurde zusammen mit dem AtariGDOS
vertrieben.

\subsubsection{ABC-GDOS}
\label{ABC-GDOS}
ABC-GDOS ist in ABCs GEMVDI.PRG enthalten. Wird dieses GDOS verwendet,
so ist f"ur ASSIGN.SYS eine erweiterte Syntax zu verwenden:

<driver number> <driver's file name>; <technical info>; <icon text>

Durch das erste Semikolon wird die Zusatzinformation von anderen GDOSen
als Kommentar interpretiert. <technical info> ist der Klarname des Treibers,
wie er ab SpeedoGDOS 4.2 und NVDI 3.0 mit vqt\_devinfo in ptsout 
geliefert wird.

Es l"auft nur auf 68000ern, weil wahrscheinlich der Interupt-Level
manipuliert wird.

ABC-GDOS kommt aus Holland und hat praktisch 
keinerlei Verbreitung gefunden. 

ABC hat einige Programme, die von Digital Research geschrieben
wurden, auf Ataris portiert. Leider weigern sich diese Programme mit
anderen Versionen als GEM 2.2 (ABC-GDOS) zusammenzuarbeiten.
Deshalb sind die Programme nur hier aufgef"uhrt:

WordChart, Graph, Paint und Draw

\subsubsection{G+Plus}
\label{G+Plus}
G+Plus wurde John Eidsvoog und Charles F. Johnson
und ist (c) 1988, 1989 CodeHead Software. G+Plus kann ohne ASSIGN.SYS
gebootet werden, daf"r k"onnen nachtr"aglich beliebige verschiedene 
ASSIGN.SYS nachgeladen werden. Ebenso existieren Schnittstellen
f"ur Applikationen, so da\"s diese nachtr"aglich und ohne Neustart
Fonts und Treiber nachladen k"onnen.

\subsubsection{G+Flair}
\label{G+Flair}
G+Flair lag Wordflair 1 bei und war -- bis auf die Tatsache, da\"s es
nur ein ASSIGN.SYS laden konnte -- identisch mit G+Plus.

\subsection{Ein Schritt nach vorne}
Auch wenn es mit NVDI schon ein sehr gutes GDOS gab, hat Atari die
Klagen der Anwender und vor allem der Programmierer erh"ort und
die Funktionalit"at des GDOS zu verbessern versucht.

\subsubsection{FontGDOS 2.0}
Hierbei handelt es sich um ein GDOS, das weiterhin nur Bitmap-Fonts
verwendet.

Die Treiber aus diesem Paket sind wirklich drastisch schneller als
die bisherigen (vergleichen kann man nat\"urlich nur den Ausdruck von
Bitmap-Fonts und Graphik).

Ich habe keine Probleme gehabt, diese Treiber mit anderen GDOS-Versionen
zu kombinieren. Man mu"s sich aber auf die alten Fonts beschr"anken.

FontGDOS ist der Nachfolger des Atari GDOS. Es unterscheidet sich im
Wesentlichen durch die B\'{e}zierfunktion und schnellere und farbf"ahige
Treiber. Es hat nichts mit FSM-GDOS oder SpeedoGDOS zu tun.

FontGDOS ist bei einigen Firmen erh"altlich, die es f"ur eigene Programme
nutzen.

\subsubsection{FSMGDOS 3.0}
Gleichzeitig mit FontGDOS hat Atari ein GDOS entwickelt, das mit
Vektorfonts arbeiten kann (in diesem FAQ als OTL bezeichnet).
FSMGDOS ist also kein Nachfolger von FontGDOS, sondern wurde parallel
dazu entwickelt. FSMGDOS war praktisch schon zum Vertrieb freigegeben,
als es im letzten Moment aufgrund massiver Proteste der Entwickler
gestoppt wurde. FSMGDOS wurde (au"ser im Bundle) niemals offiziell
vertrieben.

Es wurde das Imagen Outline-Font-Format der QMS/Imagen Corp verwendet.

\subsection{Aktuelle Entwicklungen}

\subsubsection{SpeedoGDOS 4.0 und 4.1}

Siehe auch \cite{speedo1}.

Ob es sich bei einem Font um einen Speedo- oder Bitmap-Font handelt,
steht im 33. Byte des Fontnamens (vqt\_name, INQUIRE FACE NAME AND INDEX,
VDI 130). Ist es 0, handelt es sich um einen Bitmap-Font, bei 1 um einen
FSM- oder Speedo-Font.

Auf einige Probleme ist dringend hinzuweisen:

Als Programmierer kann man nicht herausfinden, ob ein Treiber Speedo-Fonts
vertr"agt oder nicht
(vergleiche aber letzte Frage in Kapitel \ref{driver_prg}).

Einige Font-IDs werden leider sowohl von Bitmap- als auch von Speedo-Fonts
verwendet, obwohl verschiedene Fonts mit gleicher ID niemals gleichzeitig
installiert sein d"urfen.

Zuwiderhandlung gegen die genannten Punkte werden mit Bomben bestraft.

Es liegt also am {\em Anwender}, da"s die richtigen Treiber und Fonts
installiert sind. Der Programmierer hat keine Chance, hier helfend
einzugreifen und Fehler abzufangen.

Am besten installiert man nur Bitmapfonts mit den entprechenden Treibern
oder verwendet ein reines Speedo-System.

Der mitgelieferte Monospace-Font der Version 4.0 enth"alt keine Umlaute.

Entgegen den Aussagen in \cite{summertime} wird SpeedoGDOS zur Zeit
weiterentwickelt.

Zur Installation und Programmierung empfehle ich dringend \cite{speedo2},
\cite{speedo3} und \cite{speedo4}.
Es ist darauf zu achten, da"s NVDI vor SpeedoGDOS im Autoordner steht.

Wer SpeedoGDOS einzeln gekauft hat, hat Version 4.0 bekommen, den Falcons
lag 4.1 bei.


\subsubsection{SpeedoGDOS 4.2}
\label{speedoGDOS42}
Lassen wir Ulli Ramps zu Wort kommen:

Huhu!

Im Folgenden finden Sie eine Liste der "Anderungen, die in die SpeedoGDOS
Version 4.2 Eingang gefunden haben:

Line-A: Aufgrund h"aufiger Entwickler-Anfragen (:-)) wurde Speedo GDOS vom
LINE-A-Betriebssystem\-teil unabh"angig gemacht. S"amtliche Ausgaben laufen
nunmehr "uber VDI Aufrufe.
Dies macht Speedo GDOS kompatibel zu vielen Graphik-Karten und bewirkt
mehr Multi-Tasking-"`Freundlichkeit"'. Auch k"onnen jetzt verschiedene
VDI-Ersatzprogramme wie bspw. NVDI besser mit Speedo GDOS eingesetzt
werden.
Ein weiterer Vorteil der Line-A-Unabh"angigkeit ist, da"s der sog. "`Scratch
Puffer"' f"ur algorithmisch errechnete Spezialeffekte keine Sorgen mehr
bereitet. Spezialeffekte sind jetzt "uber die Treiber (wie MEMORY.SYS und
die Druckertreiber) implementiert, soda"s der Benutzer bzw. das
eingesetzte Programm sich nicht mehr um Speicher-Anforderungen k"ummern
mu"s, um beliebige Punktgr"o"sen zur Verf"ugung zu stellen. Zu beachten ist
hierbei, da"s die Treiber auf dem neuesten Stand sein m"ussen; verwenden Sie
also keinesfalls mit Speedo GDOS 4.2 "`"altere"' *.SYS-Treiber! F"ur Programme
ohne Textfunktionen k"onnen Sie allerdings "altere Treiber benutzen (sprich:
f"ur reine Grafik).

Spezialeffekte wie "`fett"' oder "`kursiv"' sind jetzt auch in gedrehten
Texten einsetzbar; ebenso "`hell"'; "`fett"' und "`hell"' zusammen gehen nur in
90 Grad Schritten.

F"ur Programme, die die Font ID-Nummern lesen, ist wichtig, da"s Speedo 4.2
den Wert 5000 zu den Font ID-Nummern addiert, um Konflikte mit den
ID-Nummern von GDOS Pixelfonts zu vermeiden.

Aus Druckertreibern wird von SpeedoGDOS 4.2 die Info f"ur den '\_FSM\_HDR'
cookie gepr"uft. Wenn dieser cookie nicht gefunden wird, wird das Laden von
Fonts unterbunden und dieser (offensichtlich "altere) Treiber kann nur f"ur
nicht-Text-Ausgaben genutzt werden.
Treiber-Header m"ussen f"ur diese und zuk"unftige Versionen immer an einer
Word Grenze beginnen.

Vst\_load\_fonts() ist in zwei Punkten optimiert worden: 1. wird beim
load\_font call nachgesehen, ob das "`EXTEND.SYS"' modifiziert wurde und
f"uhrt nur noch dann ein Neuladen der Fonts durch. Durch Wegfall des
scratch Puffers besteht keine Notwendigkeit mehr f"ur ein st"andiges
Neuladen.
Weiter wird die globale Fontliste nicht jedesmal deallociert, was
Programmstarts enorm beschleunigt. Als Nebeneffekt wird allerdings das
miscellaneous cache bzgl. der Font Header Infos erst beim n"achsten Booten
gel"oscht.

MEMORY.SYS "offnet nicht mehr irrt"umlich einen Druckerhandle.

Der vst\_height() wird jetzt nicht mehr bis zu einer maximalen Punktgr"o"se
gr"o"ser und dann irrt"umlich wieder kleiner.

Die Postscript-Tabelle ist jetzt nutzbar.

vrt\_copyfm() in den Treibern ist repariert.

9) When in 'bicsmode', character 0 was not passed through to the font
engine. ???
[Anmerkung GC: Speedo kann pro Font mit zwei verschiedenen Charactersets
arbeiten, einmal sortiert wie bei einem normalen Atari-Font und einmal
wie ein Bitstream-Font. Im Bitstream-Modus ist character 0 ein Leerzeichen.
Deshalb ist es auch unsinn, wenn in \cite{compendium} vorgeschlagen wird,
auch 16-bit-Zeichen nullterminiert zu "ubergeben.]

Die Behandlung negativer Punktgr"o"sen wurde konsistent zum originalen
Handling im alten FSM gemacht.

Die Treiber behandeln jetzt auch gebrochene Zahlen f"ur Schriftweiten
korrekt.

Das v\_ftext() der Treiber kann nun die offsets benutzen, die an das ptsin
array gegeben wurden.

Bildschirm-Treiber k"onnen nun korrekt als device 10 geladen werden.

Der memory Treiber kann nun auch resident geladen werden.

vqt\_devinfo() - vqt\_devinfo() geben nun eine R"uckmeldung, je nachdem, ob
die device ge"offnet ist oder nicht.
Weiterhin wird der Treibername der device, zu finden im driver header, in
das ptsout array abgelegt, der Name ist 26 bytes lang.
Achtung: Wenn der Treiber nicht SpeedoGDOS-kompatibel ist, wird ein Null
String zur"uckgegeben; bei einem Fehler gibt es eine -1 in ptsout[1].

Neuer Aufruf vst\_width(): Dieser call ist identisch mit vst\_height(), nur
da"s er die Weite setzt. Die Einbindung ist identisch, nur der opcode ist
231.
Achtung: Wie bei vst\_arbpt() und vst\_setsize() mu"s erst der generelle
Aufruf vst\_arbpt() oder vst\_height() get"atigt werden, bevor man die
Weiten-Aufrufe vst\_setsize() und vst\_width() nutzen kann. Die generellen
Aufrufe setzen immer die Weiten zur"uck!


Nun ich wieder: \\
Das Installationsprogramm zu Speedo 4.2 hatte bisher einen kleinen Fehler.
Wenn ein NEC P - Drucker ausgew"ahlt wird, schreibt es NEC\_P.SYS in die
ASSIGN.SYS, obwohl der mitgelieferte Druckertreiber NECP.SYS hei"st.
R.O.M. hat das inzwischen verbessert.

\subsubsection{SpeedoGDOS 5.0}
SpeedoGDOS 5.0 wird von \no unter Verwendung der Sourcen von Atari 
(weiter-)entwickelt und von COMPO vertrieben. Es beherrscht zus"atzlich 
TrueType und Type 1 (Vergl. \ref{vfonts}). Kosten: 129.- DM (ohne Gew"ahr).

Es werden nur 9 Druckertreiber mitgeliefert, und zwar die neuen.
Da es sich um ein Upgrade handelt, ist man ja im Besitz der alten Treiber.
Aber: welches sind die alten Treiber? Die Treiber vor 4.1 funktionieren
laut Handbuch nicht (und 4.1 hat nur, wer sich des Besitzes eines Falcon 030
erfreut; wer Speedo in der Anfangszeit "uber COMPO gekauft hat, hat
Speedo 4.0)

Also habe ich gleich mit Speedo 5.0, NECP.SYS (Speedo 4.2) und ProList
einen Text ausgedruckt. Und siehe da: es funktioniert. Und das,
obwohl ProList (und mein eigenes Programm) mit genau diesem Treiber
und Speedo 4.2 Probleme hatte.

Der Ausdruck mit den Treibern von Speedo 4.0 d"urfte schon deshalb
nicht funktionieren, weil sich seit 4.2 die Aufgabenverteilung zwischen
SpeedoGDOS selbst und den Treibern grundlegend ver"andert hat.
(K"onnte mal jemand die 4.1- Treiber mit SpeedoGDOS 5.0 testen?
Ich kann es noch nicht so recht glauben, da"s das tut.)

Ich stelle mir ein Upgrade jetzt so vor (Achtung, Satire):

\begin{description}
  \item[Kunde:] Sehr geehrter Herr Compo, [...] aber meine Treiber von Speedo 4.0

       funktionieren nicht mehr.
  \item[Compo:] ...gratulieren Ihnen zu Ihrer Entscheidung...\\
       Aber: Speedo 4.2 ist keine offizielle Version. Sie ist speziell
       f"ur Papyrus gemacht und mit anderen Programmen nicht sinnvoll.
       Andererseits...dennoch...so betrachtet...eigentlich...vielleicht
       eventuell...Jedenfalls brauchen Sie die Treiber von Speedo 4.2.
       Diese vertreiben wir aber prinzipiell nicht. Sie k"onnen sich aber
       an R.O.M. wenden.
  \item[Kunde:] Sehr geehrter Herr R.O.M.,
       ... m"ochte ich ein Downgrade, und zwar umsonst.
  \item[R.O.M.:] ... geht nicht...Selbstkostenpreis...laber...s"ulz...nehmen Sie
       doch lieber auf NVDI 3.0.
  \item[Kunde:] \verb|"]$&"]$/(!]&!^#|
\end{description}

Jedenfalls bin ich gespannt, von COMPO zu erfahren, wie Kunden, die bisher
SpeedoGDOS 4.0 hatten, in Zukunft drucken sollen.

Bisherige Versionen:
Speedo 5.0a vom 3.8.94 \\
Erste vertriebene Version.

Speedo 5.0b vom 8.8.94 \\
Ab dieser Version funktioniert das Laden von T1- und TT-Fonts schneller.

Bekannter Bug: Nach dem Aufruf von vqt\_headerinfo() werden die Files
nicht mehr geschlossen. Bei Programmen, die diese Funktion f"ur alle Fonts
aufrufen, kann das dazu f"uhren, da"s die Filehandles ausgehen, von denen
je nach TOS-Version unterschiedlich viele zur Verf"ugung stehen.

\label{attr_error}
Seit SpeedoGDOS 4.2 funktioniert das Attribut Outline nur unter gewissen
Umst"anden. Ob es funktioniert h"angt ab vom verwendeten Font, der 
SpeedoGDOS-Version, der Punktgr"o"se und davon, welche Formeln man bei
Vollmond murmelt.

Speedo 5.0c vom ??.8.94 \\
Ab dieser Version funktioniert LOWMEM=0 wie im Handbuch beschrieben.



\subsubsection{NVDI bis Version 2.51}
NVDI bis 2.51 bestand aus sehr schnellen Bildschirmtreibern und einem
sehr schnellen GDOS. Im Vergleich zum Atari-GDOS hatte es praktisch
keine Fehler. Allerdings war der Funktionsumfang kaum gr"o"ser.

Diese Version zu verwenden ist im Zusammenhang mit SpeedoGDOS 5.0 
immer noch sehr sinnvoll.


\subsubsection{NVDI 3.0}
\label{NVDI30}
NVDI kann ab der Version 3.0 auch Vektorfonts im Speedo- und 
TrueType-Format verarbeiten. Im Gegensatz zu SpeedoGDOS fehlt hier
das Type 1-Format. Die Behnes sagen (zu Recht!), da"s dieses Format
von den dreien am wenigsten kann und NVDI nur aufbl"ahen w"urde.
Dennoch werden viele Spezialfonts nur im Type 1-Format angeboten
und auch ich k"onnte einige davon brauchen. Seit es aber 
Multiple Master fonts gibt (siehe \ref{multiple_master}), "uberzeugt 
mich diese Entscheidung nicht mehr so sehr.

Eine Konversion der Formate ist zwar (im Prinzip sogar in sehr guter
Qualit"at) m"oglich. Aber das ist {\em sehr} schwierig (vergl.
Kapitel \ref{conversion}) und auf Ataris gibt es "uberhaupt noch kein 
solches Programm. Diese Entscheidung der Behnes hat also Vor- und 
Nachteile.

Die Druckertreiber sind in \ref{nvdi_driver} aufgef"uhrt.

(Mir) bekannte Fehler und Probleme:
\begin{itemize}
  \item NVDI-Versionen bis 3.01 ber"ucksichtigen nicht das
        Pixelgr"o"senverh"altnis (Aspect Ratio) bei der Ausgabe von 
        Kreisen und Ellipsen. Ist mit 3.02 behoben.
  \item v\_clswrk nach vqt\_devinfo auf eine physikalische Workstation 
        f"uhrt  zu einer Privileg-Violation unter MultiTos.
        Dieser Fehler wird mit Version 3.02 behoben werden.
  \item Das Charakter-Mapping ist inkompatibel zu SpeedoGdos 5.0
  \item Wenn bei der Installation die Platte voll ist, gibt es keine
        Fehlermeldung. Dieser Fehler ist seit November '94
        behoben.
  \item Das Cache-CPX verursacht unter MTOS eine vemory violation.
        Dieser Fehler ist mit Version 3.02 behoben.
  \item Die gedrehte Textausgabe funktioniert bei manchen Zeichens"atzen 
        (z.B. MONACO08.FNT) nicht, die Zeichen werden immer im 
        0-Grad-Winkel ausgegeben und 
        Bitmap-Fonts werden bei einer Gr"o"se von 8 und weniger Punkten 
        nicht hell dargestellt, obwohl das Attribut eingeschaltet ist.
        Der Fehler trat im monochromen Treiber in der 
        8pt-Systemfontausgabe auf; mit anderen
        Bitmap-Fonts (und in anderen Bittiefen) nicht.
        Diese Fehler sind seit 10.11.94 behoben.
  \item Die Funktion vqt\_fontheader liefert bis 3.01 keinen korrekten 
        TDF-Pfad zur"uck. Mit 3.02 behoben.
  \item Die Position von Vektorzeichen wird nicht korrekt ermittelt, 
        wenn ein Skew-Winkel eingestellt ist.
        Sobald ein Skew-Winkel eingeschaltet ist, wird der Text 
        je nach Vorzeichen des Winkels nach rechts oder links 
        verschoben, was bei SpeedoGDOS nicht der Fall ist. 
        Dieser Fehler ist mit Version 3.02 behoben.
  \item Unter MiNT ist der Speicherbereich, auf den das NVDI-Cookie
        von NVDI 3.0x zeigt, schreib- und vor allem lesegesch\"utzt.
        (Behaupten einige wenige Programmierer, ist aber laut Wilfried 
        Behne falsch. Ich selbst kann das mangels MMU nicht pr"ufen.)
  \item NVDI 3.02 f\"ullt beim Aufruf von vqt\_info (VDI 229) die
        Variable "`style"' nur bei manchen Schnitten.
\end{itemize}

Doku f"ur Programmierer: \cite{nvdiguid}.

\subsubsection{NVDI 4.0}
\label{NVDI40}
Auf der ProTOS im Herbst '95 wurde NVDI 4.0 verkauft. Als Upgrade ist
es zur Zeit aber weder von 2B noch von ASH erh"altlich.

Neu ist die Unterst"utzung von Type 1-Schriften als separates Modul, so
da� es keinen Speicher ben"otigt, wenn es nicht gebraucht wird 
(vergl. \ref{t1_fonts}).

Ebenfalls neu ist die Unterst"utzung von UNICODE (vergl. \ref{UNICODE}).

Mehr dazu, wenn ich es selbst habe.


\subsection{Kommentare}
\label{comments}
Mit der Geschwindigkeit der Entwicklung kann man als Anwender und
Programmierer eigentlich zufrieden sein. Auch die Vielzahl von
Fontformaten, die den Programmen gleichzeitig zur Verf"ugung stehen,
sucht (als Teil des Betriebssystems) auf anderen Plattformen 
seinesgleichen.

Die Geschwindigkeit, mit der SpeedoGDOS 5.0a bis 5.0c offensichtlich
ohne gro"se Betatestphase herausgekommen sind, ist zwar "argerlich.
Es ist aber andererseits sch"on zu sehen, wie die Konkurrenz durch
NVDI 3.0 den Programmierern Beine macht.

SpeedoGDOS 5.0 macht einigen Programmen, die mit SpeedoGDOS 4.x
noch einwandfrei zusammengearbeitet haben, Probleme. Vieles liegt wohl 
daran, da"s SpeedoGDOS 5.0 f"ur die neuen Formate negative Handles liefert.
Eigentlich sollte man mit Handles nicht rechnen, aber einige Programme
machen es wohl trotzdem.
Das Problem soll dadurch umgangen werden, da\"s die Handles in Zukunft
als unsigned integer (SHORTCARD) interpretiert werden sollen.

Die mitgelieferten Handb"ucher zu SpeedoGDOS 5.0 und NVDI 3.0 sind
f"ur Programmierer nur ein schlechter Witz. Aber auch mit ganz normalen
Anwenderfragen wird man sitzengelassen. Beispiel: Es werden TrueType-
(und bei SpeedoGDOS auch Type 1-) Fonts verarbeitet. Nun sind die Fonts
aber jeweils wieder in plattformspezifischen Darstellungen gespeichert.
Welche werden denn nun verarbeitet und welche Files mit welchen Extentions
werden ben"otigt? Ohne diese Information kann man mit beiden Programmen
ziemlich wenig anfangen.

Die vorl"aufige Funktionsbeschreibung zu NVDI 3 \cite{nvdiguid} ist
Public Domain und in FTP-Servern und Mailboxen erh"altlich.
COMPO hat f"ur SpeedoGDOS dasselbe versprochen.

Beim Update auf SpeedoGDOS 5.0 konnte jeder auf Anfrage eine provisorische
Programmierdoku gratis bekommen. Man mu"ste nur wissen, da"s man danach
fragen kann. Sorry, da"s das so sp"at im FAQ stand, ich wu"ste es auch 
nicht.
Auch jetzt bekommt man sie noch (in Deutschland gegen einen mit 3DM
frankierten A4-Umschlag). Sie ist in 90\% englisch und 10\% deutsch 
geschrieben. So wird sie auch in englischsprachigen L"andern verschickt.

Hier noch einige Unterschiede zwischen NVDI 3.0 und SpeedoGDOS.
Der Leser mag selbst seine Schl"usse daraus ziehen.
\begin{itemize}
  \item Das Treiberkonzept. Ein klares Plus f"ur NVDI 3.0. Die Treiber
  sind klein, schnell und vom Anwender leicht an neue Drucker anzupassen.
  Allerdings lassen sich die Anpassungen nicht von Anwender zu Anwender 
  kopieren (es steht alles in einem File).
  \item Drucken in Dateien. Die NVDI-Treiber k"onnen (im Gegensatz zu den
  SpeedoGDOS-Treibern) in eine Datei drucken, ohne da"s das Programm es 
  merkt.
  \item Der Speicherbedarf. NVDI 3.0 ben"otigt bei gleicher Cachegr"o"se
  praktisch genausoviel Speicher wie SpeedoGDOS 5.0 und NVDI 2.5 zusammen. 
  \item Installation. F"ur den Anf"anger ist die Installation von
  NVDI 3.0 etwas einfacher als die von SpeedoGDOS 5.0.
  Das gro"se Aber: NVDI 3.0 "uberschreibt gnadenlos und ohne zu fragen
  alles, was genauso hei"st, wie die Files von NVDI 3.0: META.SYS
  und die Bildschirmtreiber des alten NVDI 2.5.
  Damit ist es extrem schwierig, zu Testzwecken verschiedene
  GDOS-Versionen auf Platte zu halten. Das betrifft vor allem
  Programmierer, und denen kann man folgende Abhilfe zumuten:
  Einfach vor der Installation den AUTO- und den GEMSYS-Ordner umbenennen.
  Danach kann man damit machen, was man will.
  \item bis November '94
  weist das NVDI-Installationsprogramm nicht darauf hin, wenn die
  Installation mangels Plattenplatz unvollst"andig war.
  \item Geschwindigkeit des VDI. NVDI 3.0 ist leicht schneller als
  SpeedoGDOS 5.0 + NVDI 2.5, und das ist wiederum deutlich schneller
  als SpeedoGDOS 5.0 alleine. Mit SpeedoGDOS 5.0 + NVDI 2.5 l"a"st es
  sich schon angenehm arbeiten. Wenn die verwendeten Fonts in die 
  Caches passen, ist diese Kombination subjektiv etwa gleich schnell 
  wie mit NVDI 3.0.
  \item Geschwindigkeit des Fontscalers: Entgegen der Aussage im 
  (deutschen) FAQ 2.4
  haben die Behnes die 4in1-Sourcen von Bitstream direkt "ubernommen
  (und das letzte Update von Bitstream in 2 Stunden eingebaut).
  Die Ursache f"ur die Langsamkeit von SpeedoGDOS ist also nicht beim
  Scaler zu suchen.
  \item Bugs. Hier "andert sich der Status laufend. Ich wei"s nicht,
  wer zur Zeit mehr Fehler ausliefert.
  \item Zahl der Formate. Beide beherrschen Speedo und TrueType.
  SpeedoGDOS 5.0 beherrscht zus"atzlich Type 1. Einzelne Schnitte in
  diesem Format sind zwar oft sehr teuer, es handelt sich dann aber
  meist um Spezialfonts, die anders nicht zu bekommen sind.
  \item NVDI meldet sich ("uber cookie) an, als sei es SpeedoGDOS 5.0 -
  kompatibel, ist es aber nicht. Allerdings ist SpeedoGDOS 5.0 
  genausowenig SpeedoGDOS 5.0 - kompatibel, d.h. es gibt mehrere
  Versionen davon (mit unterschiedlichem Funktionsumfang bzw.
  Opcodes) und keine davon ist dokumentiert. Schlimmer noch:
  Einige SpeedoGDOS 5.0-Versionen haben einige Funktionen experimentell
  implementiert und man darf sie nicht verwenden. Und das obwohl bisher
  immer dokumentiert war, da"s man VDI-Funktionen einfach aufrufen darf,
  um zu testen, ob sie da sind.
\end{itemize}


\section{Source}
Als Entwickler kann man einen fast fertigen Druckertreiber im Objectcode
bekommen. Dieser mu"s dann nur noch an den speziellen Drucker angepa"st
werden.

Dieses Paket gibt es sowohl f"ur GDOS als auch f"ur SpeedoGDOS.

\section{Tips und Tricks f"ur Anwender}
\subsection{Pixelm"ull beim Drucken}
Beim Ausdruck von Graphiken mit hohem Schw"arzungsgrad in einer Zeile
auf dem NEC P6+ (vielleicht auch auf anderen Druckern) ist es mir
"ofters passiert, da"s eine Druckzeile "ubersprungen wurde
(SpeedoGDOS-Treiber NB15, NECP) beziehungsweise, da"s zweimal versetzt 
"uber die Druckzeile gedruckt wurde (SpeedoGDOS-Treiber FX80, NX1000).

Das passiert sowohl bei direkter Ausgabe als auch mittels CENSPEED.
Durch Verwendung des Spoolers VARSPOOL tritt dieser Effekt nicht mehr auf.

VARSPOOL befindet sich auf der Treiberdiskette der NEC-Drucker.

\subsection{NEC P6+}
\label{p6plus}
Irgendwann f"angt ein NEC P6+ an zu rattern. Wenn man die vordere Klappe
aufmacht, sieht man eine etwas "uber einen Zentimeter dicke runde
F"uhrungsstange. Auf diese ist etwa einmal im Jahr zwei Tropfen
N"ahmaschinen"ol zu applizieren. Sp"ater wird dies auch f"ur die
U-F"ormige F"uhrungsstange notwendig.

N"ahmaschinen"ol gibt's bei Muttern.

\subsection{HP DeskJet 550C, 560C und DeskWriter 510, 520}
\label{hp_fehler}
Bei Ger"aten, die zwischen Juni 93 und M"arz 94 produziert wurden,
verweigern die Andruckrollen zeitweise den Dienst. Registrierte Nutzer
erhalten die Ersatzteile zugeschickt.


\subsection{"Uberschriebene Speedo-Schnitte}
Es passiert manchmal, da"s SpeedoGDOS in Schnittdateien schreibt, was
die wunderlichsten Effekte zur Folge hat. Ich habe f"ur diesen Fall au"ser
GEMSYS noch einen zweiten Ordner mit den Speedoschnitten auf Platte.
Wenn dann mal wieder unerkl"arliche Effekte auftreten, kopiere ich diese
Schnitte in den GEMSYS-Ordner. Das hilft in fast allen F"allen.

Diesen Effekt habe ich seit SpeedoGDOS 5.0 nicht mehr reproduzieren k"onnen.


\section{Tips und Tricks f"ur Programmierer}
\subsection{Fontgr"o"se und Pixelgr"o"se}
\label{font_pixel}
Hier geht es um meine Erfahrungen mit GDOS und WYSIWYG. Mein Dank gilt
Ulrich Ro"sgoderer, der diese best"atigt hat.

Es geht im Folgenden um die Ausgabe von Vektorgraphik und Text auf
Bildschirm und Drucker.

Die Gr"o"senangabe des Textes geschieht in der Einheit Punkt und ist
unabh"angig von der Auf"|l"osung des Ausgabeger"ates immer gleich.

Die Vektorgraphik dagegen ist vor der Ausgabe in Pixel umzurechnen.
Das ist an sich kein Problem, denn beim "Offnen der virtuellen/physikalischen
Workstation erh"alt man die Pixelgr"o"se in Mikrometern
in devParm[3] und devParm[4] zur"uck.

Nehmen wir an, die Vektorgraphik sei intern in Mikrometern abgespeichert,
dann sind bei der Ausgabe die St"utzpunkte einfach durch devParm[3]
bzw. devParm[4] zu teilen, um die Position in Pixeln zu erhalten.
Bei der Ausgabe in Fenstern ist noch ein Offset hinzuzuaddieren, was
hier aber nicht relevant ist.

Soweit die Theorie, die bisher ganz einfach ist (siehe auch \cite{vdi}).
Nun zur Praxis.

Mit dieser Methode geben wir nun einen Text und einen Rahmen,
der intern als Vektorgraphik gespeichert ist, aus.
Es ist dabei irrelevant, ob der Text mit SpeedoGDOS oder als Bitmap-Font
ausgegeben wird.
Um besser vergleichen zu k"onnen, soll der Rahmen den Text exakt
umschlie"sen.

Ich habe nun folgende Erfahrungen gemacht. Der Text, der auf dem Bildschirm
(ST-high) den Rahmen genau ausf"ullt, ist beim Ausdruck im Vergleich
zum Rahmen viel zu klein.

Ein Fehler bei der Umrechnung der Pixelgr"o"se ist auszuschlie"sen, denn
ich habe den Ausdruck mit den Treibern NB15, NECP, FX80 und NX1000
gemacht, und die Ausdrucke decken sich.

Einzig m"ogliche Erkl"arung, die mir einf"allt, ist, da"s der
Bildschirmtreiber f"ur die Pixelgr"o"se eine andere Auf"|l"osung annimmt,
als f"ur die Fontgr"o"se.

Zwei L"osungen des Problems sind hier anwendbar:

Erstens kann man auf dem Bildschirm eine andere Pixelgr"o"se annehmen,
als vom Betriebssystem geliefert wird. Ich habe nach dem "Offnen
der virtuellen (und nur dieser!) Workstation \\
devParm[3] := 282; \\
devParm[4] := 282; \\
berechnet und mit diesem Wert die Umrechnung der Vektorgraphik von
Mikrometer in Pixel vorgenommen. Jetzt stimmt das Verh"altnis von
Graphik zu Text auf dem Bildschirm exakt mit dem Ausdruck "uber die
verschiedenen Druckertreiber "uberein. Problematisch ist nur, da"s eine
A4-Seite in der Breite nicht mehr auf den Bildschirm pa"st.
Die Zahlenwerte sind experimentell bestimmt und k"onnen eventuell
noch verbessert werden.

Zweitens kann man f"ur den Bildschirm (und nur dort) einfach eine kleinere
Fontgr"o"se verwenden.
Mit Speedofonts ist das ganz einfach, da man ja die G"o"se in Punkten
mit fast beliebig vielen Nachkommastellen angeben kann. \\
Mit Bitmapfonts kann das aber nicht klappen, da man nicht f"ur jeden
Druckerzeichensatz einen in der 72/96 (72/91?) -fachen Gr"o"se f"ur 
den Bildschirm hat.

Diese Methode ist sicher f"ur ST-mid und evtl. noch bei anderen
Auf"|l"osungen zu modifizieren.

Laut Wilfried Behne werden die Werte devParm[3] und devParm[4] der
Bildschirmtreiber vom aktuellen SpeedoGDOS schlicht ignoriert.
Die Werte von physikalischen Workstations werden aber "ubernommen.

Siehe auch Kapitel \ref{linear_opt}.


\subsection{Treiberauswahl}
\label{treiberauswahl}
Meine Tests verschiedener GDOS-Programme haben ergeben, da"s doch einige
Programmierer mit Folgendem Probleme haben:

Die Anwender k"onnen in der ASSIGN.SYS beliebige Treiber anmelden.
Beispielsweise k"onnte dort \\
23 FX80.SYS \\
27 NECP.SYS \\
28 NB15.SYS \\
31 META.SYS \\
61 MEMORY.SYS \\
stehen. Wie bekommt man als Programmierer sicher heraus, welche Treiber
angemeldet (und auch bereit) sind? Und das, obwohl im Beispiel kein
Drucker 21 angemeldet ist?
Ganz einfach: Unterst"utzt das Programm Drucker,
so sind alle Treiber mit Nummer 21 bis 30 zu "offnen und gleich wieder
zu schlie"sen. Ob ein Druckertreiber angemeldet ist, sieht man daran,
da"s beim "Offnen ein Devicehandle$>$0 zur"uckgegeben wird. Nur bei
ge"offnetem Treiber liefert v\_f\_devinfo sinnvolle Werte zur"uck.

Werden MEMORY-Treiber unterst"utzt, ist mit den Treibernummern 61 bis 70
analog zu verfahren.

Die obige ASSIGN.SYS ist im "ubrigen sehr sinnvoll, da die NEC P irgendwas
all diese Treiber unterst"utzen und dann in unterschiedlicher Auf"|l"osung
drucken.

\subsection{Das Metafile-Format}
\label{meta_format}
Ich wurde gebeten, einmal aufzuz"ahlen, was ich "uber Metafiles so alles
nicht wei"s 8-))).

Das Metafile-Format ist von der Idee her ganz einfach. Es enth"alt die
Aufzeichnung der VDI-Aufrufe samt Parameter, die ein Programm macht.

Ein Programm, das sowieso seine Ausgaben "uber GDOS macht, "offnet statt
eines Druckertreibers einen Metafile-Treiber (siehe \ref{meta_drivers}),
und macht seine Ausgaben wie auf einen Drucker.

Das Programm, das das Metafile liest, vollzieht diese Aufzeichnungen
dann nach.

Diese Einfachheit ist auch eines der Hauptprobleme dieses Formats. Es
gibt n"amlich verschiedene GDOS-Versionen und auch verschiedene Treiber
mit unterschiedlichen F"ahigkeiten. Ein Programm macht also Ausgaben, die
das GDOS, unter dem es gerade l"auft, versteht. Dieses File wird von
einem Programm gelesen, das zuf"allig unter einem anderen GDOS mit
geringeren oder anderen F"ahigkeiten l"auft. Wie soll die Aufzeichnung
dann nachvollzogen werden?

Konkrete Beispiele f"ur dieses Problem: Die L"ange der ptsin- und intin-
Felder ist normalerweise (f"ur verschiedene Treiber unterschiedlich)
begrenzt. Dies kann der Metafile-Treiber anders handhaben. Betroffen
sind unter anderem Textausgabe, Polyline, Polymarker, Filled area etc.

N"achstes Problem: es wird ein bestimmter Schnitt verwendet, der dann auf 
einem anderen System nicht vorhanden ist. Wie soll das Ausgabeprogramm 
sagen: wenn der Schnitt schon nicht vorhanden ist, nimm wenigstens einen
anderen halbfetten mit Serifen.

Der Programmierer sollte wenigstens (wenn m\"oglich) den Schnitt durch
den Namen und nicht durch die ID ausw\"ahlen, weil NVDI 3.0x und
SpeedoGDOS f\"ur Vektorfonts unterschiedliche IDs verwenden.
Wird mit SpeedoGDOS 5.0 oder neuer ein Schnitt durch die ID ausgew\"ahlt,
so schreibt der META-Treiber den Namen automatisch mit ins File.

Bei den bisherigen Problemen kann man sich auf den Standpunkt stellen,
da"s das ein Problem der Graphikprogramm-Programmierer ist, und die werden
schon wissen, was sie tun.

Beim Schreiben des Metafile-Headers mu"s man allerdings wissen, was man
tut. Ich wei"s es nicht. Aber ich versuch's trotzdem mal.\\
Eine Applikation kann selbst entscheiden, mit welcher Auf"|l"osung
(also mit wieviel dpi) sie in ein Metafile schreibt. Tut sie das nicht,
werden 300 dpi angenommen, was einer Pixelbreite von 85 mikrometern 
entspricht.\\
Die Bildschirmtreiber beherrschen nur Rasterkoordinaten. Da zur Ausgabe
"uber Metafile "ublicherweise dieselben Routinen verwendet werden,
beschr"anken wir uns im Folgenden auf Rasterkoordinaten 
(Auch wenn Metafiles auch NDCs beherrschen). Rasterkoordinaten gehen 
von links oben nach rechts unten.

Um ein Koordinatensystem zu definieren, wird bei Metafiles wie folgt 
vorgegangen:
\begin{itemize}
  \item mit vm\_pagesize werden Breite (W) ind H"ohe (H) der Seite in
        zehntel Millimeter angegeben. Dies ist die (positive) Differenz
        zwischen dem Punkt rechts unten und dem Punkt links oben
        (der nicht im Ursprung liegen mu"s).
  \item mit vm\_coords das Rechteck (xmin, ymin, xmax und ymax) in Pixeln
        angegeben. Wie man dieses Rechteck berechnet, steht weiter unten.
  \item in dem so definierten Koordinatensystem wird mit v\_meta\_extents 
        ein Rechteck in Pixeln angegeben. Dieses Rechteck hat mit der
        Definition des Koordinatensystems nichts zut tun. Vielmehr ist es 
        eine Angabe, wie die Applikation, die das Metafile liest, clippen 
        {\em kann}, aber nicht mu"s.\\
        Anmerkung: papyrus clipt nicht. \ka clipt, verschiebt aber
        vorher die Graphik etwas nach rechts unten, so da"s auf dem
        Bildschirm ein Teil der Graphik fehlt. Es k"onnte deshalb sinnvoll 
        sein, das Rechteck f"ur v\_meta\_extents etwas gr"o"ser zu w"ahlen,
        als das Rechteck f"ur vm\_coords.  
\end{itemize}
Damit ist das Koordinatensystem und die Auf"|l"osung (Breite und H"ohe eines
Pixels) eindeutig bestimmt. 

Aber die angegebenen Variablen sind nicht die, mit denen eine Applikation
"ublicherweise rechnet. Es folgt ein Beispiel, wie zu verfahren ist, wenn
die Applikation die gew"unschte Auf"|l"osung in dpi kennt, die Position des
linken oberen Punktes (X1,Y1) in zehntel Millimetern (oder einem Vielfachen
davon) und die Position des rechten unteren Punktes (X2,Y2) in zehntel
Millimetern (oder einem Vielfachen davon).

So berechnet man aus der Auf"|l"osung die H"ohe und Breite eines Pixels:\\
(Pixelh"ohe in zehntel Millimeter) = 25400 / (vertikale Auf"|l"osung in dpi) \\
(Pixelbreite in zehntel Millimeter) = 25400 / (horizontale Auf"|l"osung in dpi)

F"ur vm\_pagesize werden Breite und H�he in zehntel Millimetern ben"otigt:\\
W = (X2 - X1 + 1) * (Pixelbreite in zehntel Millimeter) \\
H = (Y2 - Y1 + 1) * (Pixelh"ohe in zehntel Millimeter)

F"ur vm\_coords werden xmin, ymin, xmax und ymax in Pixeln gebracht: \\
xmin = X1 / (Pixelbreite in zehntel Millimeter) \\
ymin = Y1 / (Pixelh"ohe in zehntel Millimeter) \\
xmax = X2 / (Pixelbreite in zehntel Millimeter) \\
ymax = Y2 / (Pixelh"ohe in zehntel Millimeter)

F"ur v\_meta\_extents wird vorgegangen, wie bei vm\_coords. Zus"atzlich
k"onnen xmin und ymin etwas verkleinert und xmax und ymax etwas
vergr"o"sert werden, damit \ka alles anzeigt.

Selbstverst"andlich mu"s das Koordinatensystem definiert werden, {\em
bevor} weitere Ausgaben in das Metafile gemacht werden.

(Mir ist in letzter Zeit mehrfach aufgefallen, da"s ich etwas so gut
erkl"art habe, da"s ich es {\em danach} sogar selbst verstanden habe 8-)

Weitere Informationen (die aber bei den oben 
genannten Problemen nicht helfen) stehen im Profibuch 
\cite{profi}, im Atari Compendium \cite{compendium} und im Standardwerk 
"uber Fileformate \cite{formate}. Ansonsten hilft noch jede Literatur, in 
der die VDI-Befehle beschrieben sind.



\section{Erweiterte Sub-Opcodes f"ur Metafiles}
Eine wichtige Eigenschaft von Metafiles besteht darin, da"s das lesende
Programm unbekannte Anweisungen zu ignorieren hat. Gleichzeitig darf
ein Programm beliebige Sub-Opcodes verwenden, die mit v\_write\_meta ins 
Metafile geschrieben werden k"onnen.

Das jetzt folgende war einmal als Standard gedacht, ist aber eingeschlafen.
Vielleicht war damals die Zeit nur noch nicht reif daf"ur (es gab noch
kein SpeedoGDOS) und es fehlte das entsprechende Medium, um ihn
publik zu machen.

Die nun folgende Definition sollte zumindest dahingehend unterst"utzt 
werden, als die Sub-Opcodes nicht f"ur andere Zwecke gebraucht werden 
sollten. Wenn Programme diese Definition unterst"utzen, bitte ich um
eine Meldung.

Ab hier folgt ein Auszug aus dem \ka-Handbuch:

Wie schon "ofters erw"ahnt, l"adt und speichert \ka{} Zeichnungen im
\file{*.GEM}-Standardformat (ist gleichbedeutend mit Metafile-Format).

Dieses Format kann durch benutzer-definierte Sub-Opcodes nahezu beliebig
erweitert werden, ohne da"s Inkompatibilit"aten entstehen.

\ka{} verwendet einige spezielle Sub-Opcodes, um z.B. die fein
abgestuften Graut"one, Fensterpositionen etc. abzuspeichern und wieder zu
laden. Daneben werden die mir bekannten standardisierten Sub-Opcodes
unterst"utzt.

Die Speicherroutinen von \ka{} sind dabei so programmiert, da"s ein
Programm, das eine Zeichnung aus \ka{} importieren will, diese Sub-
Opcodes nicht unbedingt verstehen mu"s. In der Darstellung selber sollte
daher kein Unterschied zu erkennen sein. Probleme kann es dann geben,
wenn ein Programm einen Sub-Opcode falsch interpretiert, weil es zu 
Wert"="Uberschneidungen kommt.

Sollten daher Sie, verehrter Leser, auch eigene Sub-Opcodes benutzen, w"are
es doch nicht schlecht, wenn Sie mir diese mit einer kurzen Beschreibung
mitteilen w"urden. Denn die Verwendung dieser Erweiterung ist nur sinnvoll,
wenn Sub-Opcodes mit gleichem Wert von allen Programmen, die Metafiles
verarbeiten, gleich interpretiert werden. Mir schwebt dabei eine Liste
vor, in der alle verwendeten Sub-Opcodes mit ihrer Bedeutung beschrieben
sind ("ahnlich der XBRA-Liste).

Zur Verwendung der Sub-Opcodes siehe auch im ST-Profibuch im Kapitel "uber
die VDI-Betriebssystem\-rou\-tinen. Besonders zu beachten ist hier der Befehl
\file{v\_write\_meta}, mit dem die Sub-Opcodes in ein Metafile geschrieben
werden k"onnen.

\subsection{Die unterst"utzten Sub-Opcodes}

Hier zun"achst eine Kurz"ubersicht "uber die unterst"utzten Sub-Opcodes. In
der Tabelle \ref{tabsubcode} sind dabei die vorgeschlagenen Namen, ihre
verbindlichen Werte und die Wirkung in K"urze beschrieben.

\begin{table}[ht]
\begin{center}
\begin{tabular}{|l|r|l|}
\hline
Name & Wert & Kurzbeschreibung \\
\hline
\hline
\file{GEM\_START\_GROUP} & 10 & Beginn einer Gruppe \\
\file{GEM\_END\_GROUP} & 11 & Ende einer Gruppe \\
\hline
\file{GEM\_NO\_LINE\_STYLE} & 49 & Jeglichen Linienstil ausschalten \\
\hline
\file{GEM\_START\_SHADOW} & 50 & Beginn eines Objektschattens \\
\file{GEM\_END\_SHADOW} & 51 & Ende des Schattens \\
\hline
\file{GEM\_START\_FILL} & 80 & Beginn einer F"ullfl"ache \\
\file{GEM\_END\_FILL} & 81 & Ende derselbigen \\
\hline
\file{GEM\_START\_BGIF} & 170 & Beginn von BGI-Vektortext \\
\file{GEM\_END\_BGIF} & 171 & Ende des Vektortextes \\
\hline
\file{GEM\_WIND} & 190 & Fensterposition, Zoomstufe usw. \\
\file{GEM\_GRID} & 191 & Rastereinstellungen \\
\file{GEM\_ALIGN} & 192 & Informationen "uber Bezugsobjekt \\
\hline
\file{GEM\_START\_GREY} & 193 & Beginn eines Grautons \\
\file{GEM\_END\_GREY} & 194 & Ende desselbigen \\
\hline
\file{GEM\_START\_BEZIER} & 195 & Beginn eines B\'{z}ier-Zuges \\
\file{GEM\_END\_BEZIER} & 196 & Ende des Zuges \\
\hline
\file{GEM\_START\_JOIN} & 197 & Die folgenden Bl"ocke geh"oren zusammen \\
\file{GEM\_END\_JOIN} & 198 & ...ab hier nicht mehr \\
\hline
\end{tabular}
\end{center}
\caption{\label{tabsubcode}Sub-Opcode "Ubersicht}
\end{table}

\subsection{Die Gruppeninformation}

Mit \file{GEM\_START\_GROUP} wird der Beginn einer Gruppe markiert. Eine
Gruppe ist dabei eine Menge zusammengeh"orender Objekte. Das Ende dieser
Gruppe wird durch \file{GEM\_END\_GROUP} markiert. 
%Zum Gruppenbegriff siehe auch Kapitel \ref{chpgroup}.

\subsection{Der Objektschatten}

Mit \file{GEM\_START\_SHADOW} wird mitgeteilt, da"s die bis
\file{GEM\_END\_SHADOW} folgenden VDI-Befehle dazu benutzt werden, um f"ur
das erste Objekt nach \file{GEM\_END\_SHADOW} einen Schatten zu zeichnen.

\subsection{Die F"ullfl"ache}

Da die Umrandung bei den VDI-Fl"achen nicht immer korrekt gezeichnet
wird, gibt es die Codes \\
\file{GEM\_START\_FILL} und \file{GEM\_END\_FILL}.
Alle zwischen ihnen liegende VDI-Befehle werden dazu benutzt, um eine
ausgef"ullte Fl"ache mit oder ohne Umrandung zu zeichnen.

Beispielhaft soll hier das schrittweise Zeichnen einer Polygonfl"ache mit
Schatten und Umrandung gezeigt werden.

\begin{itemize}

\item \file{GEM\_START\_FILL}
\item \file{GEM\_START\_SHADOW}
\item Setzen der F"ullattribute f"ur den Schatten
\item \file{v\_fillarea(...)} versetzt um \file{dx} und \file{dy}
\item \file{GEM\_END\_SHADOW}
\item Setzen der F"ullattribute der eigentlichen Fl"ache
\item \file{v\_fillarea(...)}
\item Setzen der Linienattribute f"ur die Umrandung
\item \file{v\_pline(...)}
\item \file{GEM\_END\_FILL}

\end{itemize}

\subsection{Der Vektortext}

Mit \file{GEM\_START\_BGIF} wird eine Textausgabe mit BGI-
Vektorzeichensatz eingel"autet. Die VDI-Arrays sind dabei wie folgt belegt:

\begin{center}
\begin{tabular}{|ll|}
\hline
\file{intin$[0]$} & \file{GEM\_START\_BGIF} \\
\file{intin$[1]$} & 0: nicht proportional \\
\file{intin$[2..10]$} & Name, z.B. EURO: \file{intin$[2]$ = 69} ... \\
\file{intin$[11..]$} & Der Text mit abschlie"sender Null \\
\hline
\file{ptsin$[0]$} & x-Koordinate des Textes (in $\frac{1}{10}$mm) \\
\file{ptsin$[1]$} & y-Koordinate des Textes (in $\frac{1}{10}$mm) \\
\file{ptsin$[2]$} & Buchstabenbreite in $\frac{1}{10}$mm \\
\file{ptsin$[3]$} & Buchstabenh"ohe in $\frac{1}{10}$mm \\
\file{ptsin$[4]$} & Rotation in $\frac{1}{10}^\circ$ \\
\hline
\end{tabular}
\end{center}

Bis \file{GEM\_END\_BGIF} folgen die \file{v\_pline(...)}-Befehle, die zur
Darstellung des Textes notwendig sind, falls ein Programm diese Sub-%
Opcodes nicht interpretieren kann.


\subsection{Die Fenstereinstellungen}
\label{Fenstereinstellungen}

\subsubsection{Fensterposition}

Mit \file{GEM\_WIND} werden Position, Zoomstufe und Format des Fensters
festgelegt.

\begin{center}
\begin{tabular}{|ll|}
\hline
\file{intin$[0]$} & \file{GEM\_WIND} \\
\file{intin$[1]$} & x-Position des Fensters in Pixel\\
\file{intin$[2]$} & y-Position des Fensters in Pixel\\
\file{intin$[3]$} & Fensterbreite in Pixel\\
\file{intin$[4]$} & Fensterh"ohe in Pixel\\
\file{intin$[5]$} & x-Position des Sliders in Pixel\\
\file{intin$[6]$} & y-Position des Sliders in Pixel\\
\file{intin$[7]$} & Zoomstufe in Prozent\\
\file{intin$[8]$} & 0: Hochformat, 1: Querformat\\
\hline
\file{ptsin$[...]$} & keine Eintr"age \\
\hline
\end{tabular}
\end{center}

\subsubsection{Rastereinstellungen}

Die Rastereinstellungen eines Fensters werden mit \file{GEM\_GRID}
dauerhaft gesichert.

\begin{center}
\begin{tabular}{|ll|}
\hline
\file{intin$[0]$} & \file{GEM\_GRID} \\
\file{intin$[1]$} & 0: Raster inaktiv \\
\file{intin$[2]$} & 0: Raster nicht zeichnen \\
\file{intin$[3]$} & Rasterbreite in $\frac{1}{10}$mm \\
\file{intin$[4]$} & Rasterh"ohe in $\frac{1}{10}$mm \\
\file{intin$[5]$} & Hilfslinienabstand horizontal in $\frac{1}{10}$mm \\
\file{intin$[6]$} & Hilfslinienabstand vertikal in $\frac{1}{10}$mm \\
\file{intin$[7]$} & 0: Hilfslinien, ansonsten: Hilfspunkte \\
\hline
\file{ptsin$[...]$} & keine Eintr"age \\
\hline
\end{tabular}
\end{center}

\subsubsection{Bezugsobjekt}

Durch den Sub-Opcode \file{GEM\_ALIGN} wird das Bezugsobjekt beschrieben.

\begin{center}
\begin{tabular}{|ll|}
\hline
\file{intin$[0]$} & \file{GEM\_ALIGN} \\
\file{intin$[1]$} & 0: Bezugsobjekt nicht zeichnen \\
\file{intin$[2]$} & x-Koordinate des Bezugsobjekts in $\frac{1}{10}$mm \\
\file{intin$[3]$} & y-Koordinate des Bezugsobjekts in $\frac{1}{10}$mm \\
\file{intin$[4]$} & Breite des Bezugsobjekts in $\frac{1}{10}$mm \\
\file{intin$[5]$} & H"ohe des Bezugsobjekts in $\frac{1}{10}$mm \\
\hline
\file{ptsin$[...]$} & keine Eintr"age \\
\hline
\end{tabular}
\end{center}

\subsection{Die Graut"one}

Mit \file{GEM\_START\_GREY} legt man einen Grauton als F"ullfl"ache fest.
Abstufungen im Bereich von 0---255 (wei"s---schwarz) sind m"oglich.

\begin{center}
\begin{tabular}{|ll|}
\hline
\file{intin$[0]$} & \file{GEM\_START\_GREY} \\
\file{intin$[1]$} & Graustufe, 0---255 \\
\hline
\file{ptsin$[...]$} & keine Eintr"age \\
\hline
\end{tabular}
\end{center}

Die bis \file{GEM\_END\_GREY} folgenden Befehle setzen ein
benutzerdefiniertes Muster mit dem entsprechenden Grauton. Sie dienen
wiederum nur f"ur Programme, die mit diesen Sub-Opcodes nichts anfangen
k"onnen.


\subsection{B\'{e}zier-Z"uge}

Mit \file{GEM\_START\_BEZIER} definiert man einen B\'{e}zier-Zug. S"amtliche
Information "uber denselbigen ist in den \file{intin}- und \file{ptsin}-
Feldern zu finden.

\begin{center}
\begin{tabular}{|ll|}
\hline
\file{intin$[0]$} & \file{GEM\_START\_BEZIER} \\
\file{intin$[1]$} & Rekursionstiefe, kleiner als f"unf!! \\
\file{intin$[2..2n+2-1]$} & Attribute der Ankerpunkte \\
& Ecke: Bit 0 gesetzt \\
& Verschiebt: Bit 1 gesetzt \\
& Sichtbar: Bit 2 gesetzt \\
& Linie statt B\'{e}zier: Bit 3 gesetzt\\
\hline
\file{ptsin$[0..4n-1]$} & Koordinaten der n B�ziersegmente, jedes besteht\\
& aus vier Punkten \\
\hline
\end{tabular}
\end{center}

Bis \file{GEM\_END\_BEZIER} folgen dann \file{v\_pline}-Aufrufe, die einen
"aquivalenten Polygonzug zeichnen, f"ur Programme, die den Sub-Opcode nicht
unterst"utzen.

\subsection{Zusammenfassen mehrerer VDI-Bl"ocke}

Mit \file{GEM\_START\_JOIN} ist es m"oglich, mehr Koordinaten
abzuspeichern, als der Metafile-Treiber erlaubt. Findet \ka{} n"amlich
diesen Sub-Opcode, so werden die \file{ptsin}-Felder der bis
\file{GEM\_END\_JOIN} folgenden VDI-Bl"ocke zu einem gro"sen Feld
zusammengefa"st.

\begin{center}
\begin{tabular}{|ll|}
\hline
\file{intin$[0]$} & \file{GEM\_START\_JOIN} \\
\file{intin$[1]$} & Anzahl der gesamten Koordinatenpaare \\
\hline
\file{ptsin$[...]$} & keine Eintr"age \\
\hline
\end{tabular}
\end{center}

Diese Definition ist bisher neben \file{v\_pline}, \file{v\_fillarea} und
\file{v\_pmarker} auch f"ur \file{v\_gtext}, \file{v\_justified},
und \file{v\_ftext} g"ultig. Auch mehrzeiliger Text ist "uber diese Umgebung
speicherbar. Dann gilt folgende Definition:

\begin{center}
\begin{tabular}{|ll|}
\hline
\file{intin$[0]$} & \file{GEM\_START\_JOIN} \\
\file{intin$[1]$} & Anzahl der folgenden \file{v\_gtext}-Aufrufe\\
& (pro Zeile einer) \\
\hline
\file{ptsin$[...]$} & keine Eintr"age \\
\hline
\end{tabular}
\end{center}

Erkannt wird die unterschiedliche Definition von \file{intin$[1]$} durch
den ersten VDI-Ausgabebefehl, der auf \file{GEM\_START\_JOIN} folgt.

Hier endet der Auszug aus dem \ka -Handbuch.


\section{Standards}
\label{standards}
Hier werden einige Standards aufgelistet, die etwas mit Fonts, Druckern
etc. zu tun haben. Dabei soll ber"ucksichtigt werden, was etwas mit
GDOS zu tun hat, zu tun haben wird oder zu tun haben sollte.

Auch Fontformate sind Standards, wurden aber in den vohergehenden
Abschnitten eingehend besprochen.

\subsection{International Color Consortium Profile Format}
\label{icc}

Am 15. Februar 1995 haben sich die Firmen 
Adobe Systems Inc., 
Agfa-Gevaert N.V.,
Apple Computer, Inc.,
Eastman Kodak Company,
FOGRA (Honorary),
Microsoft Corporation,
Silicon Graphics, Inc.,
Sun Microsystems Inc.
Taligent, Inc
auf das International Color Consortium Profile Format version 3.0a
geeinigt. Es handelt sich um ein plattformunabh"angiges Format, das
die farbtreue Konvertierung zwischen verschiedenen Farbr"aumen
erm"oglicht. Die Idee ist, da\"s ein Druckerhersteller (oder 
Monitorhersteller) f"ur alle Plattformen nur noch ein solches Profile
erstellt und damit gew"ahrleistet ist, da� trotz unterschiedlicher
Drucktechnologien und Farbr"aumen bei gleichem Ausgangsfile auch dieselbe
Farbe herauskommt. Die oben genannten Hersteller haben sich verpflichtet,
diesen Standard bei allen ihren Plattformen und ihren Applikationen
zu unterst"utzen.

Ich behaupte nicht, da"s dies auch bei NVDI, SpeedoGDOS oder anderen
GDOSen ber"ucksichtigt wird. 

Siehe 
\htmladdnormallink{http://www.sgi.com/Technology/icc\_top.html}%
{http://www.sgi.com/Technology/icc\_top.html}.


\subsection{TIFF}
\label{TIFF}
Das International Color Consortium Profile Format ist so gestaltet,
da\"s es in PICT, TIFF und EPS-Files eingebaut werden kann.
Dabei ist TIFF das einzige nicht propriet"are Format.

Die Spezifikation von TIFF 6.0, fr"uheren TIFF-Versionen und anderen
Graphikformaten findet sich in 
\htmladdnormallink{ftp://ftp.funet.fi/pub/csc/graphics/format/tiff*}%
{ftp://ftp.funet.fi/pub/csc/graphics/format/tiff*}.

\subsection{Character Sets}
\label{charsets}
Einer meiner Leser hat mich so lange motiviert, etwas "uber UNICODE
zu schreiben, da\"s ich es auch tats\"achlich mache. Es ist allerdings
sinnfrei, isoliert \"uber UNICODE oder sonst etwas hier in diesem Kapitel 
zu schreiben. Wesentlich sind auch die Auswirkungen auf GDOS, ihre
Verwendung in den verschiedenen Fontformaten und wie sie in der Praxis
in den verschiedenen Formaten und bei Verwendung verschiedener GDOSe
aufeinander abgebildet werden. Viele Informationen k\"onnen daher
nicht nur einer "Uberschrift zugeordnet werden und \"uber die 
Strukturierung der Information kann gestritten werden. Als Literatur
empfehle ich \cite{tt_def}. \"Uber Hinweise zu weiterer Literatur w"are 
ich dankbar.


\subsubsection{Glyphen und Ligaturen}
\label{glyphs}
Glyphen enthalten die Beschreibung von Objekten innerhalb eines Fonts,
die dargestellt werden k"onnen. Das sind beispielsweise Buchstaben und
Sonderzeichen, aber auch Ligaturen wie "`fi"', die in einem Zeichensatz
wie ascii eigentlich nichts zu suchen haben. Wird ein String ausgegeben,
das die Zeichen "`fi"' enth"alt, gibt es Betriebssysteme, die dann 
automatisch den Glyphen "`fi"' ausgeben und nicht nacheinander "`f"' 
und "`i"'. Das beherrscht aber meines Wissens kein GDOS.



\subsubsection{ascii, ISO 646}
Es mag sein, da"s einmal definiert war, was ascii ist (American Standard
Code for Information Interchange), in der Praxis kann man sich aber
bis auf A-Z. a-z und einige ganz wenige Sonderzeichen auf nichts verlassen.

ISO 646 definiert einen Zeichensatz, der nur 7 Bits verwendet und daher
in der Praxis kaum Bedeutung hat.



\subsubsection{ISO 8859}
ISO 8859 definiert einige 8-Bit-Zeichens�tze, beispielsweise ISO 8859-1
(=Latin 1) f"ur mitteleurop"aische Sprachen. 

Weitere Beispiele:

8859-1	Europe, Latin America\\
8859-2  Eastern Europe\\
8859-3  SE Europe \\
8859-4  Scandinavia (mostly covered by 8859-1 also)\\
8859-5  Cyrillic\\
8859-6  Arabic\\
8859-7  Greek\\
8859-8  Hebrew\\
8859-9  Latin5, same as 8859-1 except for Turkish instead of Icelandic\\
8859-10 Latin6, for Eskimo/Scandinavian languages

Die ersten 256 Zeichen von UNICODE entsprechen ISO 8859-1.

\subsubsection{UNICODE / ISO 10646}
\label{UNICODE}
UNICODE ist die Beschreibung eines Zeichensatzes und nicht von Glyphen,
was zur Folge hat, da\"s es beispielsweise keine Ligaturen enth"alt
(vergl. \ref{glyphs}).

\LaTeX\ macht aus den beiden Zeichen fl ein einziges Zeichen im Zeichensatz.
Wenn ein GDOS UNICODE unterst"utzt, kann das Anwendungsprogramm keine
Ligaturen mehr als ein einzelnes Zeichen ausgeben. Es ist also Aufgabe 
eines GDOS, aus bestimmten Zeichenfolgen wieder einzelne Ligaturen zu 
machen.

Auf der anderen Seite mu"s die Ligaturbildung explizit verhindert werden
k"onnen