Linux-Arbeitskreis Hamburg

X-Fontserver

Die unter X zur Verfügung stehenden Schriften sind normalerweise lokal abgelegt. Sie befinden sich dort normalerweise unterhalb von /usr/X11R6/lib/X11/fonts/. Wenn man in gemischten Umgebungen arbeitet, z.B. mit normalen Linux-Rechnern als Clients und Thin-Clients, dann entstehen leicht Unterschiede in der Bildschirmdarstellung, durch eine unterschiedliche Ausrüstung mit Fonts. Besonders deutlich wird dies, wenn man Schriften nachträglich installiert. Eine Möglichkeit Schriften nachträglich zu installieren besteht z.B. in der Nutzung des Scriptes

/usr/X11R6/bin/fetchmsttfonts

Dieses Script lädt True-Type Schriften vom Microsoft-Server und installiert sie so, dass sie anschließend allen X-Anwendungen zur Verfügung stehen.

Hinweis: Neuerdings bietet Microsoft die Fonts nicht mehr zum Download an. Das Online-Update von YaST entfernt auch das oben genannte Script und ersetzt es durch einen entsprechenden Hinweis. Wenn Sie noch einen Server mit installierten Microsoft-Fonts zur Verfügung haben, dann können Sie diese auch auf ein neues System übertragen. Sichern Sie zuerst das Truetype-Verzeichnis /usr/X11R6/lib/X11/fonts/truetype mit z.B.
cp  -a  /usr/X11R6/lib/X11/fonts/truetype  /tmp
dann übertagen Sie als root die Dateien vom anderen Rechner:
scp  anderer.rechner:/usr/X11R6/lib/X11/fonts/truetype/* /usr/X11R6/lib/X11/fonts/truetype/
dann kopiert man die gesichrten Dateien zurück, die Fonts könnten ja verändert sein:
cp  -a  /tmp/truetype/*   /usr/X11R6/lib/X11/fonts/truetype/
den Rest erledigt SuSEconfig:
/sbin/SuSEconfig  --module fonts
Danach sollten die Microsoft-Schriften auch auf dem neuen Rechner zur Verfügung stehen. Ob das Verfahren rechtlich zulässig ist können wir nicht beurteilen, es ist aber technisch möglich.

Will man eine Vereinheitlichung der Ausstattung mit Schriften erreichen und trotzdem die Fonts nicht auf jedem Client einzeln installieren, so bietet sich die Nutzung eines Fontservers an.

Ohne die Nutzung eines Font-Servers ließ sich z.B. auf manchen Igel-Clients der Windowmanager Icewm nicht starten, da ihm Standardschriften fehlen. Da die Programme auf dem Server laufen ist es auch nur konsequent die Schriften von dort zu beziehen.

Installation auf dem Server

Auf dem Server muss das Paket xfs (X-Font-Server) installiert sein. Dieses Paket ist in der Regel nicht aktiviert, selbst wenn es bereits installiert ist. Bevor man es starten kann muss man die Konfigurationsdatei verändern, damit der Font-Server auch Anfragen per TCP/IP beantwortet.
Dazu muss man die Datei /etc/X11/fs/config bearbeiten:

...

# if you omit "no-listen = tcp" you can use xfs over the network
# if you add entries like
#     FontPath   "tcp/hostname:7100"
# into /etc/X11/XF86config. Increases the security risk!

#no-listen = tcp
port = 7100
client-limit = 10
clone-self = on
use-syslog = on
deferglyphs = 16

catalogue = /usr/X11R6/lib/X11/fonts/misc:unscaled,
...

Die hervorgehobene Zeile muss durch das Voranstellen eines #-Zeichens deaktiviert werden. Nutzer von SuSE-Linux müssen dann noch in der Konfigurationsdatei:

START_XFS="yes"

setzen. Danach kann man dann den Fontserver mit

rcxfs start

starten. Bei einer SuSE-Konfiguration loggt der Fontserver seine Fehlermeldungen in der Datei /var/log/fs-errors. Die meisten der Zeilen dort kann man getrost ignorieren:

/usr/X11R6/bin/xfs notice: listening on port 7100
/usr/X11R6/bin/xfs notice: ignoring font path element /usr/X11R6/lib/X11/fonts/100dpi:unscaled (unreadable)
/usr/X11R6/bin/xfs notice: ignoring font path element /usr/X11R6/lib/X11/fonts/japanese:unscaled (unreadable)
/usr/X11R6/bin/xfs notice: ignoring font path element /usr/X11R6/lib/X11/fonts/baekmuk:unscaled (unreadable)
/usr/X11R6/bin/xfs notice: ignoring font path element /usr/X11R6/lib/X11/fonts/PEX (unreadable)
/usr/X11R6/bin/xfs notice: ignoring font path element /usr/X11R6/lib/X11/fonts/cyrillic (unreadable)
/usr/X11R6/bin/xfs notice: ignoring font path element /usr/X11R6/lib/X11/fonts/latin2/misc (unreadable)
/usr/X11R6/bin/xfs notice: ignoring font path element /usr/X11R6/lib/X11/fonts/latin2/75dpi (unreadable)
/usr/X11R6/bin/xfs notice: ignoring font path element /usr/X11R6/lib/X11/fonts/latin2/100dpi (unreadable)
/usr/X11R6/bin/xfs notice: ignoring font path element /usr/X11R6/lib/X11/fonts/latin2/Type1 (unreadable)
/usr/X11R6/bin/xfs notice: ignoring font path element /usr/X11R6/lib/X11/fonts/latin7/75dpi (unreadable)
/usr/X11R6/bin/xfs notice: ignoring font path element /usr/X11R6/lib/X11/fonts/kwintv (unreadable)
/usr/X11R6/bin/xfs notice: ignoring font path element /usr/X11R6/lib/X11/fonts/ucs/misc (unreadable)
/usr/X11R6/bin/xfs notice: ignoring font path element /usr/X11R6/lib/X11/fonts/ucs/75dpi (unreadable)
/usr/X11R6/bin/xfs notice: ignoring font path element /usr/X11R6/lib/X11/fonts/ucs/100dpi (unreadable)
/usr/X11R6/bin/xfs notice: ignoring font path element /usr/X11R6/lib/X11/fonts/hellas/misc (unreadable)
/usr/X11R6/bin/xfs notice: ignoring font path element /usr/X11R6/lib/X11/fonts/hellas/75dpi (unreadable)
/usr/X11R6/bin/xfs notice: ignoring font path element /usr/X11R6/lib/X11/fonts/hellas/100dpi (unreadable)
/usr/X11R6/bin/xfs notice: ignoring font path element /usr/X11R6/lib/X11/fonts/hellas/Type1 (unreadable)

Wichtig ist nur die erste Zeile, die zeigt, dass der Fontserver läuft und auf Port 7100 lauert. Die restlichen Zeilen sind Fehlerhinweise, die damit zusammenhängen, dass die Konfigurationsdatei sehr großzügig mit Verzeichnisangaben ausgerüstet ist. Manche dieser Verzeichnisse existieren nicht, weil die zugehörigen Schriften nicht installiert sind.

Installation auf dem Client

Von einem beliebigen Client aus kann man nun testen, ob der Fonstserver erreichbar ist. Dazu gibt man ein:

fslsfonts  -server boss:7100

Es sollte jetzt eine (sehr lange) Liste mit den verfügbaren Fonts erscheinen. Auf manchen Systemen kann es notwendig sein noch das Protokoll mit anzugeben:

fslsfonts  -server tcp/boss:7100

Wenn die Fonts verfügbar sind, dann kann man an die eigentliche Konfiguration des lokalen Systems gehen. Dazu muss man die Konfigurationsdatei /etc/X11/XF86Config bearbeiten.

#--------#
# »» SaX generated XFree86 config file ««
# Created on: 2001-07-02.
#
# Version: 4.3
# Contact: Marcus Schaefer <sax@suse.de>, 2001
#
# Automatically generated by SaX2 (4.3)
# PLEASE DO NOT EDIT THIS FILE!
#

Section "Files"
  FontPath    "tcp/192.168.1.1:7100"
  FontPath     "/usr/X11R6/lib/X11/fonts/misc:unscaled"
  FontPath     "/usr/X11R6/lib/X11/fonts/local"
  FontPath     "/usr/X11R6/lib/X11/fonts/misc:unscaled"

Die Datei beginnt üblicherweise mit der Section Files. Hier stehen unter anderem alle Verweise auf Verzeichnisse mit Schriften. Die Reihenfolge spielt hier eine wichtige Rolle, da die Liste in der angegebenen Reihenfolge abgearbeitet wird. Hier muss man nur die hervorgehobene Ziele ergänzen. Wenn die Zeile am Anfang der Liste steht, dann wird der Fontserver immer zuerst befragt. Man kann dann die restliche FontPath Zeilen auch löschen. Wenn man die Zeile ans Ende der Liste hängt, dann wird der Fontserver nur für Schriften befragt, die nicht lokal vorliegen.

Einheitlicher wird das Bild auf alle Fälle, wenn immer der Fontserver befragt wird.


Kritik, Anregungen und Ergänzungen willkommen. Zusammengestellt von Uwe Debacher und Bernd Burre, letzte Änderung am 27.01.2006
Impressum