% ASCREEN-3.2-HANDBUCH --- Anhang C (Das FLIB-Format)
% Copyright (C) 1992 by Anselm Lingnau
%
\chapter{Das FLIB-Format} \label{a:flib}

\ASCREEN\ kann Zeichensatzbibliotheken im FLIB-Format von Eberhard Mattes
lesen.
Leider gibt es f�r den Atari~ST im Moment noch kein komfortables Programm
zum Erstellen und Verwalten solcher Bibliotheken.
Darum soll hier zumindest das Format dokumentiert werden,
vielleicht schreibt ja mal jemand ein sch�nes Programm daf�r.

\section{Der Aufbau einer FLIB-Datei}

FLIB-Dateien bestehen aus einem Kopf, gefolgt von einem Kommentar
und einem Inhaltsverzeichnis.
Das Inhaltsverzeichnis enth�lt Informationen
�ber die verschiedenen Vergr��erungsstufen von Zeichens�tzen in der Bibliothek
und pro Vergr��erungsstufe dann �ber die Zeichens�tze selber.
Nach dem Inhaltsverzeichnis kommen die eigentlichen Daten:
\begin{verse}
\<Kopf>\\
\<Kommentar>\\
\<Gr��en> \dots\\
\quad\<Zeichens�tze> \dots\\
\<Daten> \dots
\end{verse}
Hier ist das Format des Dateikopfes.
Die Zahlen links sind der Abstand vom Dateianfang in Bytes,
die Indizes geben die L�nge des jeweiligen Wertes in Bytes an.
\begin{center}
\begin{tabular}{rll}
0	&{\tt FLIB}	& magisches Langwort\\
4	& 2 0		& Versionsnummer (2 Bytes)\\
6	& $l_2$		& L�nge des Verzeichnis in Bytes\\
8	& $s_2$		& Anzahl der Gr��en\\
10	& $f_2$		& Anzahl der Zeichens�tze\\
12	& $c_2$		& L�nge des Kommentars\\
	&		& (0: kein Kommentar)
\end{tabular}
\end{center}
Freundlicherweise sind die Datenw�rter alle im {\em big-endian\/}
oder auch Motorola-""Format: das h�herwertige Byte steht an erster Stelle.
Hier der Aufbau eines Gr��eneintrags mit den entsprechenden Offsets:
\begin{center}
\begin{tabular}{lll}
0	& $m_2$		& L�nge des Gr��eneintrags (ohne Kopf)\\
2	& $t_2$		& Anzahl der Zeichens�tze in dieser Gr��e\\
4	& $dpi_4$	& Auf"|l�sung (Festpunkt, 16.16 Bits)\\
8	&		& Zeichens�tze
\end{tabular}
\end{center}
Eberhard Mattes besteht tats�chlich auf einer Angabe der Auf"|l�sung
bis hin zu $1/65536$ dpi! Hierzu gleich mehr.
Der Eintrag f�r einen Zeichensatz hat das Format
\begin{center}
\begin{tabular}{lll}
0	& $fl_4$	& L�nge des Zeichensatzes\\
4	& $a_4$		& relative Byteadresse des Zeichensatzes\\
8	& $n_1$		& L�nge des Zeichensatznamens\\
9+	& Name
\end{tabular}
\end{center}

\section{FLIB-Tips}

Ein Problem mit den {\tt FLIB}-Dateien
ist die eben schon angesprochene Tatsache,
da� die Gr��enklassen von Zeichens�tzen in der Datei
mit einer Genauigkeit von $1/65536$ dpi angegeben werden mu�.
Im wirklichen Leben ist es kaum m�glich,
im Treiber so genau zu rechnen.
Ein Zeichensatz mit 101\,dpi
bei der Vergr��erung {\tt magstephalf}, also $1095/1000$,
h�tte zum Beispiel eine Auf"|l�sung von 110.595 dpi,
also $110\;38993.92/65536$ dpi.
Nicht ganz exakt darstellbar, wie Sie sehen.
\ASCREEN\ hilft sich in dieser Lage,
indem die "`Gleichheit"' zweier Vergr��erungsstufen
nicht ganz so pingelig betrachtet wird.
Beim Vergleich zweier Auf"|l�sungen in einer {\tt FLIB}-Datei
toleriert \ASCREEN\ Abweichungen von bis zu 32 Einheiten
oder $1/2048$ dpi,
was das Problem vermeidet,
aber nicht zu sichtbaren Abweichungen f�hren sollte.

\begin{chapterquote}
OK? C'est facile quand vous avez le hang.
\author MILES KINGTON, {\sl Let's Parler Franglais One More Temps\/} (1982)
\end{chapterquote}
