# 1.110.1

Installation und Konfiguration von XFree86

Beschreibung: Prüfungskandidaten sollten in der Lage sein, X und einen X-Fontserver zu installieren und zu konfigurieren. Dieses Lernziel beinhaltet die Überprüfung, ob Grafikkarte und Monitor von einem X-Server unterstützt werden, und das Anpassen und Trimmen von X für Grafikkarte und Monitor. Ebenfalls enthalten ist die Installation eines X-Fontservers, die Installation von Schriftarten und das Konfigurieren von X zur Benutzung des Fontservers (möglicherweise durch manuelles Bearbeiten des Abschnitts "Files" in `/etc/X11/XF86Config`).

Die wichtigsten Dateien, Bezeichnungen und Anwendungen:

- XF86Setup
- xf86config
- xvidtune
- `/etc/X11/XF86Config`
- `.Xresources`

### Grundlagen

Das X-Window-System oder kurz X11 ist ein netzbasiertes graphisches Fenstersystem, das auf einer Client/Server Architektur beruht. Programme, die ihre Ausgaben in Fenstern machen wollen sind Clients, die den Service in Anspruch nehmen, den der Display-Server anbietet, nämlich Ausgabe auf dem Schirm zu bringen und Eingaben von der Tastatur und Mouse entgegenzunehmen.

Dabei ist wichtig, daß es möglich ist, daß Client und Server über ein Netzwerk miteinander kommunizieren können. Es ist also unerheblich, ob die Programme, die auf einem Bildschirm dargestellt werden auf dem lokalen Rechner laufen oder auf einem anderen Rechner im Netz.

Client und Server verständigen sich mittels einem Protokoll, dem sogenannten X-Protokoll. Dieses Protokoll nutzt als Transportbasis meist TCP/IP, aber auch DECNet oder der Betrieb auf reinen Unix-Sockets ist möglich. Technisch gesehen ist das X-Protokoll die eigentliche Definition des X-Window-System.

Durch die Definition eines eindeutigen Protokolls, das alle Fähigkeiten zur Übermittlung von graphischen Ausgaben beinhaltet wird X11 zur hardwareunabhängigen Graphikplattform. Das X11-System ist aufgegliedert in einen Displayserver und in Programme, die den Display-Service in Anspruch nehmen, also Clients. Ein Server kann für jede beliebige Art von Graphiksystemen geschrieben werden, über das vordefinierte X-Protokoll können beliebige Clients dann ihre Ausgaben auf dem Server machen.

Natürlich können Clients (also X11-Programme) auch lokal auf dem selben Rechner laufen, auf dem auch der Display-Server läuft, das ist sogar die Regel. Aber es können eben auch beliebige andere Rechner Programme laufen haben, deren Ausgaben dann auf unserem Server zu sehen sind.

Zusammenfassend können wir also sagen, das X11-System beruht auf drei Einzelelementen:

1. Der Display-Server, der alle Ausgaben auf den Bildschirm steuert und die Eingaben von der Tastatur und der Maus entgegennimmt. Er ist ein Programm, das lokal auf dem Rechner läuft und Kontrolle über die Grafik-Hardware hat.
2. Ein oder mehrere Clients, also Programme, die ihre Ein/Ausgabe nicht selbst erledigen sondern diese Aufgabe vom Display-Server erledigen lassen. Kurz gesagt sind alle X-Anwendungen (xterm, xsnow, xteddy, ...) Clients. Es ist unerheblich, auf welchem Rechner im Netz diese Programme laufen, solange sie mit dem Display-Server verbunden sind geht ihre Ausgabe auf den Bildschirm dieses Servers.
3. Das X-Protokoll, das die Kommunikation zwischen den Clients und dem Display-Server regelt. Dieses Protokoll ist das einzige, das X11 eigentlich ausmacht. Prinzipiell kann für jedes graphikfähige Gerät ein X-Server geschrieben werden, wenn er das X-Protokoll versteht, kann er X-Clients erlauben, ihre Ausgaben auf dem Gerät auszugeben.

Bei der hier gestellten Aufgabe geht es also um die Installation eines X-Servers, also des Programms, das anderen Programmen (den X-Clients) den Dienst anbietet, sich auf dem Bildschirm darstellen zu können und die Eingabegeräte Tastatur und Mouse zu nutzen. Beim Umgang mit X11 ist es grundsätzlich wichtig, sich dieser Client-Server-Architektur immer bewußt zu sein, um tatsächlich zu verstehen, was eigentlich vorgeht.

Es gibt X-Server von verschiedensten Herstellern für verschiedenste Hard- und Softwaresysteme. Der hier verwendete X-Server ist der X-Free-86 Server. Dieser Server ist freie Software und für die Verwendung auf 80x86 Systemen (und kompatiblen Prozessoren) gedacht. Aus diesen Eigenschaften bezog er seinen Namen. XF86 ist der unter Linux verbreitetste Server, andere angebotene Server sind meist kommerzielle Produkte und spielen in der Praxis kaum eine Rolle.

### Die Konfiguration des XFree86-Servers

Der Display-Server verwaltet die Hardware, deren Verwendung er anderen Clients ermöglichen soll. Er muß daher sehr genau über die installierte Graphik- und Eingabehardware Bescheid wissen. Insbesondere die folgenden Hardware-Elemente muß er verwalten:

- Graphikkarte
- Monitor
- Tastatur
- Mouse
- Andere Eingabegeräte (Joystic, Grafiktablett,...)

Die gesamten Angaben über diese Geräte und auch alle anderen Konfigurationseinstellungen befinden sich in einer einzigen Datei. Diese Datei kann manuell bearbeitet werden, es ist eine einfache Textdatei. Sie heißt `XF86Config` und befindet sich in der Regel im Verzeichnis `/etc/X11`. Die Orginalversion von XF86 hatte eigentlich andere Orte für die Konfigurationsdatei vorgesehen, aber im neuen Filesystem Hierarchy Standard ist `/etc/X11` festgelegt worden. Die meisten Distributionen halten sich heute an diesen Standard. Der Vollständigkeit halber seien hier nochmal die ursprünglichen Konfigurationsdateien genannt:

- ~/XF86Config
  Wenn der User, der den X-Server manuell startet der Systemverwalter ist, so wird zuerst in seinem Homeverzeichnis nach der Konfigurationsdatei gesucht.
- /etc/XF86Config
  Das war früher der Standard für die systemweite Konfigurationsdatei des X-Servers.
- X-Wurzel/lib/X11/XF86Config.hostname
  Falls in /etc keine Konfigurationsdatei gefunden wurde, so wurde in diesem Verzeichnis danach gesucht. X-Wurzel bezeichnet die Wurzel des X-Systems, meist `/usr/X11R6`. Damit geteilte `/usr`-Verzeichnisse benutzt werden konten, konnte für verschiedene Rechner je eine Konfigurationsdatei angelegt werden, die dann den Hostnamen des Rechners als Namenserweiterung trug, für den sie gedacht war.
- X-Wurzel/lib/X11/XF86Config
  Falls an dieser Stelle keine Datei mit dem passenden Hostnamen gefunden wurde, wurde nach einer Konfigurationsdatei ohne Hostnamenendung gesucht.

Noch heute funktionieren diese Dateien, werden aber kaum noch benutzt.

Weil heute zwei XFree86 Versionen im Umlauf sind (Version 3.x und Version 4.x) und die beiden unterschiedliche Formate ihrer Konfigurationsdatei erwarten, haben verschiedene Distributionen unterschiedliche Mechanismen entwickelt, um einen gleichzeitigen Betrieb beider Versionen zu ermöglichen. Entweder liegen beide Konfigurationsdateien in `/etc/X11`, dann trägt die Datei für die Version 4.x den Namen `XF86Config-4`, oder es wurde die Konfigurationsdatei für Version 3.x in `/etc` belassen und die von Version 4.x liegt in `/etc/X11`. Im weiteren Verlauf werden wir hier keine Unterschiede machen, sondern die Datei einfach immer `/etc/X11/XF86Config` nennen.

Früher musste die Konfigurationsdatei von Hand erstellt werden und es bestand die Gefahr, daß - bei falschen Monitor-Einstellungen - die Hardware tatsächlich beschädigt werden konnte. Die Errechnung der Bildschirmparameter war eine umständliche und schwierige Arbeit, die nicht immer das erreicht hatte, was gewünscht war. Durch die Architektur moderner Graphikkarten und Monitore ist diese Konfigurationsarbeit heute erheblich erleichtert worden. Zudem gibt es eine ganze Reihe von Hilfsmitteln, um die Konfigurationsdatei erstellen zu lassen.

xf86config
  Ein kleines textorientiertes Programm, das die ganze Abfrage aller notwendigen Hardwareinformation vornimmt, und anschließend eine XF86Config Datei daraus erstellt. Dieses Programm war die erste automatisierte Methode von XFree86 und gehört zur Standard-Ausstattung.
XF86Setup
  Auch dieses Programm wird von XFree86 selbst betreut und ausgeliefert. Im Gegensatz zu xf86config arbeitet es aber bereits in einem graphischen Modus. Das Programm startet in einem VGA16 Graphikmodus, der von praktisch jeder Graphikkarte unterstützt wird, und arbeitet mit einer Bildschirmauflösung von 640x480 Pixeln, die jeder Bildschirm darstellen können sollte. Auch dieses Programm erstellt eine XF86Config Datei aus den gemachten Angaben, ist aber dann in der Lage, die Konfiguration gleich auszuprobieren.
SAX und SAX2
  Sind Programme der SuSE-Distribution (SAX heißt SuSE Advanced X-Configuration) und stehen nur dort zur Verfügung. SAX erstellt Konfigurationsdateien für Version 3.x, Sax2 für Version 4.x. Beide Programme arbeiten wie XF86Setup bereits im graphischen Modus, versuchen jedoch bereits vor dem Start des Graphikmodus durch einen Scan des PCI-Busses herauszufinden, welche Einstellungen notwendig sind.
Xconfigurator
  ist das X11-Konfigurationsprogramm von RedHat. Es handelt sich um eine textorientierte verbesserte Version von xf86config, die auch vorher den PCI-Bus scant, um die angeschlossenen Geräte zu erkennen. Über die SLANG-Library wurde die Benutzerführung verbessert. Das Programm kann im interaktiven Modus laufen oder automatisch aus den gefundenen Informationen eine Konfigurationsdatei erstellen (kickstart).
dexconf
  ist das Programm der Debian Distribution, das aus den gemachten Angaben der Debian-Konfiguration eine entsprechende XF86Config Datei erstellt. Das Programm wird automatisch während der Installation aufgerufen, ist also kein wirkliches usergeführtes Konfigurationsprogramm für XFree86. Sollte unter Debian eine manuelle Konfiguration erwünscht sein, so wird der Befehl

        dpkg-reconfigure xserver-xfree86

  verwendet. dexconf wird dann abschließend automatisch aufgerufen.

Als distributionsunabhängige Zertifizierung genügt für LPI das Wissen um die ersten beiden Programme, alle anderen sind spezielle Lösungen der Distributionen. All diese Programme erledigen die selben Aufgaben (auf unterschiedliche Weise), die hier nochmal genauer dargestellt werden sollen. Im Wesentlichen handelt es sich um zwei Aufgaben:

1. Abfrage der Hardware und erstellen einer passenden XF86Config Datei.
2. Erstellen eines Links auf den zu verwendenden X-Server.

Beide Aufgaben werden jetzt nochmal im Einzelnen besprochen:

#### Abfrage der Hardware und erstellen einer passenden XF86Config Datei

Der X-Server steuert die Graphik- und Eingabehardware um sie dann den Clients zur Verfügung zu stellen. Er muß also sehr genau über die verwendeten Geräte Bescheid wissen und benötigt zum Teil sehr technische Informationen. Folgende Informationen werden abgefragt, müssen also bekannt sein:

Tastatur
  Diese Einstellung ist sicher die einfachste. Tastaturen sind stark standardisiert und dem Betriebssystem auch im Textmodus bekannt. Wichtige Einstellungen sind hier
  - Anzahl der Tasten (pc101, pc102, pc104)
  - Tastaturlayout (Sprache - de, en, ...)
  - Zusätzliche Optionen, wie mit Akzent-Tasten umgegangen werden soll (nodeadkeys)
  Normalerweise sollten diese Einstellungen kein Problem darstellen.
Maus
  Bei der Mouse haben wir schon wesentlich mehr Fragen zu beantworten. Dazu zählen
  - An welcher Schnittstelle ist die Mouse angeschlossen (seriell, PS/2, USB)?
  - Welches Mouse-Protokoll verwendet die Mouse (imps/2, microsoft, logitech, mmseries, ...)?
  - Wieviele Tasten hat die Mouse?
  - Soll (bei 2-Tasten Mäusen) die Emulation der mittleren Taste durch gleichzeitiges Drücken der beiden Tasten aktiviert werden (Emulate3Buttons)?
  - Soll ein eventuell vorhandenes Scroll-Rädchen aktiviert werden (ZAxisMapping)?
  Die Einstellungen können - zumindest bei den graphischen Setup-Programmen - gleich ausprobiert werden. Wichtig ist, daß zumindestens die Anschluß- und Mouseart stimmen, weil XFree86 ohne Mouse gar nicht startet.
Graphikkarte
  Hier wird in der Regel bei modernen Rechnern alles automatisch erkannt. Durch die Verwendung von PCI/AGP Karten ist eine automatische Konfiguration möglich. Ansonsten müssen hier - bei alten Rechnern - folgende Angaben gemacht werden:
  - Chipsatz der Graphikkarte (oder Auswahl aus einer Liste bekannter Karten).
  - Größe des Graphikspeichers.
  - Zu verwendender X-Server (Nur Version 3.x)
  - Clocks (nur bei alten Karten)
  Die Angabe der Clocks ist bei modernen Karten nicht mehr notwendig, weil sie diese Angaben auf Anfrage selbst machen. Bei sehr alten Karten, die nicht in der Kartendatenbank vorhanden waren, war diese Angabe sowohl lebenswichtig, als auch nahezu unlösbar...
Bildschirm
  Um einen Bildschirm richtig ansteuern zu können, benötigt XFree86 die folgenden Angaben, die im Handbuch des Monitors zu finden sein sollten:
  - Horizontale Synchronisation in kHz (entweder eine Liste von festen Frequenzen durch Kommas voneinander getrennt, oder - bei fast allen modernen Monitoren - ein Bereich, der durch Bindestrich verbunden ist, etwa 30-96).
  - Vertikale Synchronisation (Refreshrate) in Hz. (Wie bei der horizontalen Synchronisation entweder eine Liste oder ein Bereich).
  Diese Angaben müssen stimmen, sonst wird der Monitor falsch angesteuert. Bei modernen Monitoren kann zwar dabei nichts mehr kaputtgehen, aber es wird nichts oder die Fehlermeldung out of range ausgegeben.

  Neben der Angabe der Monitordaten werden von den Konfigurationsdateien auch noch die gewünschten Bildschirm-Auflösungen und Farbtiefen erfragt. Es können mehrere angegeben werden, die dann später im laufenden Betrieb umgeschaltet werden können.

Neben diesen Hardware-Angaben werden eventuell noch verschiedene Pfade abgefragt, die zu weiteren Informationen führen. Diese Pfade werden später noch einer genaueren Betrachtung unterworfen. Für die Konfiguration reicht hier die Übernahme der Vorgaben.

#### Erstellen eines Links auf den zu verwendenden X-Server

Der eigentliche X-Server wird später auf verschiedene Art und Weise gestartet. Gemeinsam ist allen Methoden aber, daß sie das Programm `/usr/X11R6/bin/X` aufrufen. Es wird also immer davon ausgegangen, daß der X-Server einfach nur X heißt.

In den XFree86 Versionen vor 4.0 gab es nicht nur einen, sondern sehr viele unterschiedliche X-Server. Jeder Server war für eine bestimmte Graphikkarte (oder eine Klasse von Karten) zuständig. Typische Beispiele dieser Server waren XF86_Mach64, XF86_VGA16, XF86_SVGA oder XF86_S3. Damit das jeweils verwendete Startprogramm auch den richtigen Server startet, ist das Programm `/usr/X11R6/bin/X` nur ein symbolischer Link auf den entsprechenden Server. Genauer gesagt ist X ein Link auf `/var/X11R6/bin/X` und das ist wiederum ein Link auf den entsprechenden X-Server. Der Grund für diese doppelte Verlinkung ist, daß ansonsten bei einem ReadOnly gemounteten `/usr`-Verzeichnis keine Änderungen möglich wären. Die Verlinkung bei XFree86 Version 3.x sieht also folgendermaßen aus:

      /usr/X11R6/bin/X => /var/X11R6/bin/X => /usr/X11R6/bin/XF86_Servertyp

Diese Links werden auch vom jeweils verwendeten Konfigurationsprogramm angelegt.

Ab der Version 4.0 von XFree86 hat sich diese Architektur geändert. Es war einfach zu viel Aufwand, für jede Graphikkarte einen eigenen X-Server zu schreiben. Aus diesem Grund wurde ein modularisierter X-Server erstellt, der die kartenabhängigen Informationen als Modul nachläd. Der eigentliche X-Server heißt jetzt `/usr/X11R6/bin/XFree86`. Trotzdem existiert meist immer noch der Link von `/usr/X11R6/bin/X` auf `/usr/X11R6/bin/XFree86`. Nur bei Debian ist `/usr/X11R6/bin/X` ein kleines Ladeprogramm, das dann aber auch `/usr/X11R6/bin/XFree86` läd.

### Tunen der Konfiguration

Nach abgeschlossener Konfiguration kann der X-Server gestartet werden. Im einfachsten Fall wird das durch die Eingabe des Befehls startx erfolgen. (Andere Startmethoden werden im Abschnitt 1.110.2 - Einrichten eines Display Managers beschrieben.)

Falls die Bildschirmeinstellungen nicht zufriedenstellend sind, gibt es zwei Möglichkeiten, daran noch etwas zu verändern. Entweder der Monitor wird mittels seiner Hardwarekonfiguration (Monitormenü oder Drehknöpfe) an die Konfiguration angepasst, oder die Konfiguration wird im Nachhinein noch verändert. Dazu steht uns das Programm xvidtune zur Verfügung.

Mit Hilfe dieses Programms können die Bildschirmeinstellungen ähnlich verändert werden, wie mit dem Menü des Monitors selbst. Im Unterschied dazu wird xvidtune aber die Einstellungen in der XF86Config Datei verändern, statt sie hardwareseitig einzustellen.

Mögliche Einstellungen sind:

- Left, Right, Up, Down
  Verändert den Video-Modus dahingehend, daß sich das sichtbare Bild in die angegebene Richtung verschiebt.
- Wider, Narrower, Shorter, Taller
  Verändert den Video-Modus dahingehend, daß das Bild breiter, schmäler, flacher oder höher wird.

Die beste Methode ist es, die Bildschirmeinstellungen mit xvidtune soweit wie möglich einzustellen, und dann anschließend das Feintuning mit der Monitoreinstellung vorzunehmen.

### Struktur der Datei XF86Config

Alle Konfigurationseinstellungen des X-Servers werden in der Datei `/etc/X11/XF86Config` abgelegt. Diese Datei kann manuell mit einem Texteditor verändert werden. Ihr Format unterscheidet sich zwischen den Versionen 3.x und 4.x erheblich.

Wichtige Einstellungen für die LPI101 Prüfung beziehen sich nur auf einen Abschnitt, den Abschnitt Files. Dieser Abschnitt ist in beiden Versionen vorhanden.

Die weiteren Abschnitte bezeichnen die jeweiligen Konfigurationen der verschiedenen Hardware und Bildschirmauflösungen. Der Vollständigkeit halber seien sie hier kurz aufgezählt:

- Section "Module"
  Angabe über ladbare Module.
- Section "Files"
  Pfadangaben zu Schriften, Farbinformationen und Modulen
- Section "ServerFlags"
  Angaben zu bestimmten Grundeinstellungen des X-Servers
- Section "InputDevice"
  Angaben zu allen denkbaren Eingabegeräten (Tastatur, Mouse, ...) Erst ab Version 4.0
- Section "Keyboard"
  Angaben zur Tastatur. Nur bei Versionen bis 3.x
- Section "Pointer"
  Angaben zur Mouse. Nur bei Versionen bis 3.x
- Section "Monitor"
  Angaben zum Monitor.
- Section "Device"
  Angaben zur Graphikkarte
- Section "Screen"
  Angaben zur Bildschirmauflösung und Farbtiefe

Optional können noch weitere Abschnitte enthalten sein, die sich auf Extras wie 3D-Beschleuniger (DRI) oder ähnliches beziehen.

#### Die Sektion "Files"

In diesem Abschnitt werden dem X-Server die Pfade zu drei verschiedenen Informationen übermittelt. Die Pfade zu den Verzeichnissen, in denen die Schriften liegen (FontPath), der Pfad zu der Datei, die die Farbbeschreibungen enthält (RgbPath) und optional der Pfad zu dem Verzeichniss, das die Module für den Server enthält (ModulePath). Diese Angabe muß nur gemacht werden, wenn der Pfad vom Standard abweicht.

Nachdem sowohl der ModulPath, als auch der RgpPath sehr statisch sind, werden wir an diesen beiden Einstellungen eigentlich niemals Veränderungen vornehmen müssen. Die einzigen Einstellungen, die wir tatsächlich verwalten und verändern müssen sind die Pfade zu den Schriftverzeichnissen.

Auf einem X-Server sind normalerweise mehrere Verzeichnisse mit Schriften installiert. Wir können diese Verzeichnisse entweder in einem Eintrag durch Kommas getrennt hintereinanderhängen, oder - was sicherlich zu einer besseren lesbarkeit führt - für jedes Verzeichnis einen eigenen Eintrag vornehmen. Also entweder

      FontPath="/usr/X11R6/lib/X11/fonts/local/","/usr/X11R6/lib/X11/fonts/misc/"

oder

      FontPath   "/usr/X11R6/lib/X11/fonts/local/"
      FontPath   "/usr/X11R6/lib/X11/fonts/misc/"

In modernen Versionen wird nur noch die zweite Variante benutzt. Jede der Pfadangaben bezieht sich auf ein Verzeichnis, das Schriftdateien enthält. Die Reihenfolge dieser Angaben ist nicht unwichtig, weil der Server auf der Suche nach einer Schrift immer die Pfade in der angegebenen Reihenfolge durchsucht. Die erste gefundene Schrift, die den Anforderungen der Suche entspricht, wird verwendet. Wenn beispielsweise sowohl TrueType, als auch klassische X11-Schriften installiert sind, und es dabei zu einer Namensüberschneidung kommt (beispielsweise Times und Helvetica), dann kommt es darauf an, ob das Verzeichnis mit den TrueType Schriften vor oder nach dem mit den klassischen Schriften hier angegeben wurde.

Eine Veränderung der Datei XF86Config wird erst wirksam, wenn der X-Server neu gestartet wird. Es gibt aber zumindestens für FontPath-Änderungen auch die Möglichkeit, die neuen Einträge manuell zu aktivieren oder zu deaktivieren. Dazu wird das Programm xset benutzt:

      xset +fp neuer_Pfad
      xset fp+neuer_Pfad

fügen einen angegebenen neuen Pfad zum FontPath hinzu,

      xset -fp Pfad
      xset fp-Pfad

entfernen den angegebenen Pfad aus dem FontPath.

### Das Prinzip der Schriftnamen von X11

Schriften können bei X11, wie bei fast jeder anderen graphischen Oberfläche auch, beliebig hinzugefügt oder entfernt werden. Dabei existieren mehrere mögliche Formate, so daß es also möglich ist, daß ein und dieselbe Schrift in einer Installation mehrfach vorhanden ist.

Schriftnamen haben eine etwas gewöhnungsbedürftige Form, hier einmal ein Beispiel, an dem die einzelnen Elemente des Namens erklärt sind.

     Hersteller   Gewicht Breite     Pixels  XAufl Sp     Zeichensatz
        |           |        |         |      |     |        |
      -b&h-lucida-medium-r-normal-sans-18-180-75-75-p-106-iso8859-1
             |           |          |      |     |     |          |
         Schriftart    Neigung    Stil   Punkte YAufl Durchschn. Optionen des
                                                      Zeichen-   Zeichensatzes
                                                      breite

Dabei bedeuten im Einzelnen:

Hersteller
  Meist die Herstellerfirma der Schriftart, z.B. adobe, dec, sony, manchmal aber auch nur eine weitere Schublade wie misc oder bitstream.
Schriftart
  Die "Schriftfamilie" also etwa Times, Symbol, Utopia,...
Gewicht
  Das "Gewicht" der Schwärze wie black, bold, demibold oder medium.
Neigung
  Die Schräge der Schrift. i steht für italic (kursiv), r für roman (aufrecht).
Breite
  Die Breite einer Schrift wie normal, narrow oder semicondensed.
Stil
  Zusätzliche Stilangaben
Pixels
  Das Höhenmaß der Schrift in Pixel (in einer bestimmten Punktgröße und Auflösung)
Punkte
  Die Größe der Schrift in typographischen Punkten (1/72 Zoll) angegeben in Zehntel-Punkten
X-Auflösung
  Horizontale Auflösung in Dots per Inch (DPI) in der die Schrift ursprünglich erstellt wurde.
Y-Auflösung
  Vertikale Auflösung in Dots per Inch (DPI) in der die Schrift ursprünglich erstellt wurde.
Spacing
  Die Beschreibung der Raumaufteilung einer Schriftart. Hier geht es darum, ob eine Schriftart proportional aufgebaut ist, also für ein i einen kleineren Platz als z.B. für ein o benötigt, oder nicht. Mögliche Werte sind hier p für proportional, m für monospaced also nicht proportional und c für charactercell, einer Technik, in der allen Zeichen ein gleichgroßer Rahmen gegeben wird, was sie auch wieder zur nicht-proportionalen Schrift macht.
Durchschnittsbreite
  Die durchschnittliche Breite eines Zeichens dieser Schrift.
Zeichensatz
  Die ISO-Standard, die diese Schrift enthält.
  Die Nummer der ausgewählten Zeichensatzseite des Standards.

Oft werden statt einzelner Angaben auch ein Sternchen angegeben, dann wird die erste passende Einstellung genommen. So wird ein * bei der Angabe der Neigung automatisch zu einem i.

### Verwaltung von Schriften unter X11

Wenn neue Schriften installiert werden sollen, dann werden ein paar Einstellungen nötig, damit sie benutzbar werden.

Verzeichnisse, die Schriften für X11 enthalten, enthalten neben den eigentlichen Schriftdateien (Endungen .bdf .snf .pcf .spd .fb .ps .ttf) noch die folgenden Dateien:

fonts.dir
  Diese Datei enthält die Angaben, welche Schrift in welcher Datei zu finden ist. Am Anfang der Datei steht eine Nummer, die Anzahl der im Verzeichnis enthaltenen Schriften. Die weiteren Zeilen der Datei enthalten paarweise die Dateinamen mit zugehörigem Schriftnamen, also etwa

        courBO10.snf  -adobe-courier-bold-o-normal--10-100-75-75-m-60-iso8859-1

  Damit diese Datei immer auf dem neuesten Stand ist, muß nach jeder Neuinstallation von Schriftdateien in einem Verzeichnis in diesem Verzeichnis das Programm mkfontdir aufgerufen werden. Alternativ kann auch der Name des Verzeichnisses dessen fonts.dir Datei neu erstellt werden soll, als Parameter von mkfontdir angegeben werden.
fonts.scale
  Neben den Bitmap Fonts existieren auch noch skalierbare Schriften. In den Verzeichnissen mit solchen skalierbaren Schriften (z.B. speedo) existiert neben der fonts.dir auch die Datei fonts.scale. Sie enthält je einen Eintrag pro skalierbarer Schrift, mit den Größenangaben jeweils auf 0 gesetzt.
fonts.alias
  Diese Datei enthält beliebige Alias-Namen, mit den dazugehörigen Schriftnamen. So kann etwa mit der Zeile

        school15 -adobe-new century schoolbook-bold-r-normal-*-15-150-75-*-*-105-iso8859-1

  die Schrift -adobe-new ... schlicht mit school15 angesprochen werden. Dieser Mechanismus hat aber Vor- und Nachteile. Es ist zwar so für einen User einfacher, eine Schrift auszuwählen, es kann aber bei einer Anwendung, die auf verschiedenen Rechnern läuft fatal sein, wenn es die Schrift bzw. eben das Alibi auf einem anderen Rechner nicht gibt.

Wenn ein neues Verzeichnis mit Schriften also hinzugefügt wird, indem es beispielsweise neu erstellt und mit Schriftdateien aus dem Internet gefüllt wird, so sind folgende Schritte nötig, damit die Schriften benutzbar werden.

- Ausführen des Programmes mkfontdir Verzeichnis
- Verzeichnis in den FontPath aufnehmen (indem ein Eintrag in `/etc/X11/XF86Config` vorgenommen wird - siehe oben)
- Neustart des X-Servers oder manuelle Aufnahme des Verzeichnisses mit xset +fp Verzeichnis.

Ab diesem Zeitpunkt sind die Schriften auf dem X-Server verfügbar.

### Installation eines FontServers

Das Schriftenmodell unter X11 erfordert relativ viel Speicherplatz, weil bei den meisten installierten Schriftarten jede Schrift eine eigene Schriftdatei benutzt. Aus diesem Grund gibt es die Möglichkeit, einen Fontserver zu installieren, der beliebig vielen X-Servern im Netz Schriften zur Verfügung stellt. So müssen die Schriftdateien nur auf einem Rechner vorhanden sein und stehen trotzdem allen X-Servern im Netz zur Verfügung.

Ein weiterer Vorteil dieser Technik ist es, daß ein Unternehmen bestimmte Schriften für seine Präsentationen benutzen kann und zentral festlegen kann, daß alle X-Server die selben Schriften benutzen.

Für die Ansprüche der LPI101 Prüfung muß sowohl ein Fontserver eingerichtet werden können, als auch ein X-Server an einen Fontserver angebunden werden, so daß er die vom Server angebotenen Schriften nutzen kann.

#### Konfiguration eines Fontservers

Der Fontserver für X11 heißt xfs und ist ein eigenständiger Daemon. Er wird in der Regel über ein init-Script gestartet und bietet dann seine Dienste an.

Wie so oft bei Linux/Unix-Servern besitzt xfs eine einzige Konfigurationsdatei, in der die gesamte Konfiguration des Servers erledigt wird. Diese Konfigurationsdatei liegt standardmäßig unter `/usr/X11R6/lib/X11/fs/config`. Da diese Plazierung dem neuen Dateisystem-Standard widerspricht, kann alternativ dazu dem xfs per Kommandozeilenoption eine andere Datei mitgeteilt werden, die er als Konfigurationsdatei nutzt. In modernen Versionen von Linux wird meist `/etc/X11/xfs.conf` oder `/etc/X11/fs/config` benutzt.

Der Fontserver muß die Schriftdateien in Verzeichnissen ablegen, die exakt den oben genannten Ansprüchen der Schriftverzeichnisse eines normalen X-Servers entsprechen. Er kann jetzt diese Verzeichnisse an andere X-Server weitergeben, ohne daß dabei zusätzlicher Verwaltungsaufwand entsteht.

Eine einfache Konfigurationsdatei eines Fontservers könnte folgendermaßen aussehen:

      # Erlaubt maximal 10 Clients, die sich mit diesem Fontserver verbinden
      client-limit = 10

      #
      # Wenn ein Fontserver die maximale Anzahl Clients erreicht hat,
      # startet er einen neuen um weitere Clients bedienen zu können
      clone-self = on

      #
      # Angabe der Schriftverzeichnisse
      #
      catalogue = /usr/local/fonts/tr_misc/,
     	      /usr/local/fonts/tr_75dpi/,
    	      /usr/local/fonts/freefont/,
      	      /usr/local/fonts/sharefont/,
      	      /usr/local/fonts/Adobe/,
    	      /usr/X11R6/lib/X11/fonts/misc:unscaled,
    	      /usr/X11R6/lib/X11/fonts/75dpi:unscaled,
    	      /usr/X11R6/lib/X11/fonts/100dpi:unscaled,
    	      /usr/X11R6/lib/X11/fonts/Type1,
    	      /usr/X11R6/lib/X11/fonts/Speedo,
    	      /usr/X11R6/lib/X11/fonts/misc,
      	      /usr/X11R6/lib/X11/fonts/75dpi

      # Voreingestellte Schriftgröße ist 12 Punkte (120 Dezipunkte)
      default-point-size = 120

      # 100 x 100 und 75 x 75 Auflösung
      default-resolutions = 100,100,75,75

      # Keine Meldungen an den Syslogdaemon
      use-syslog = off

Die Kommentare in der Datei erklären die jeweiligen Zeilen ausreichend. Wenn diese Datei jetzt als `/etc/X11/fs/config` abgespeichert wird, dann lautet der Aufruf des XFontServers:

      xfs -config /etc/X11/fs/config -daemon

Diese Zeile sollte jetzt aus einem init-Script heraus aufgerufen werden. Nachdem sie ausgeführt wurde, ist der Fontserver aktiv und hört auf den TCP-Port 7100.

Soll einem laufenden Fontserver ein neues Schriftverzeichnis hinzugefügt werden, so muß es in die Konfigurationsdatei eingefügt werden und danach dem xfs-Prozeß ein HUP-Signal geschickt werden. Das zwingt ihn, seine Konfigurationsdatei neu einzulesen und sich entsprechend zu verhalten.

#### Anbindung eines X-Servers an einen Fontserver

Damit ein beliebiger X-Server jetzt den Fontserver benutzen kann, reicht es, in der Datei XF86Config in der Section "Files" einen FontPath Eintrag in der Art

Transportprotokoll/Fontservername:Portnummer

zu machen. Wenn unser Font-Server auf dem Rechner marvin auf dem Standard-TCP-Port 7100 läuft, so kann jeder X-Server im Netz den Eintrag

      FontPath   "TCP/marvin:7100"

in die Section "Files" aufnehmen und nach einem Neustart des X-Servers (nicht des Rechners) stehen die Schriften des Font-Servers zur Verfügung. Auch hier spielt die Reihenfolge der Angaben eine Rolle. Der FontPath wird von vorne nach hinten (oben nach unten) durchgearbeitet und die erste passende Schrift wird gewählt. Steht also der Font-Server Eintrag am Anfang des FontPath, so werden wahrscheinlich niemals lokale Schriften benutzt (es sei denn es gibt lokale Schriften, die der FontServer nicht anbietet), steht er am Ende, werden immer lokale Schriften verwendet, außer es gibt eine bestimmte Schrift nicht lokal, dann wird der Font-Server herangezogen.

### Verwendung von Schriften

Die in den Prüfungszielen angesprochene Datei `.Xresources` kann benutzt werden, um bestimmte Schriften für bestimmte Anwendungen fest einzustellen. Diese Technik wird im Abschnitt 1.110.4 - Installation und Anpassung einer Window Manager Umgebung genau besprochen.