11.3. Installation und Konfiguration von Fonts

Das Installieren zusätzlicher Fonts unter SUSE LINUX ist sehr einfach. Es genügt die Fonts in ein beliebiges Verzeichnis zu kopieren, das sich im X11 Font-Pfad (siehe Abschnitt 11.3.2, „X11 Core-Fonts“) befindet und, damit die Fonts auch über das neue Xft-Fontrendering-System benutzbar sind, auch ein Unterverzeichnis der in /etc/fonts/fonts.conf konfigurierten Verzeichnisse ist (siehe Abschnitt 11.3.1, „Xft“).

Sie können die Fontdateien manuell als root in solch ein geeignetes Verzeichnis kopieren, zum Beispiel nach /usr/X11R6/lib/X11/fonts/truetype, oder auch den KDE Fontinstaller im KDE Kontrollzentrum dazu benutzen. Das Ergebnis ist identisch.

Anstelle die Fonts tatsächlich zu kopieren, können Sie natürlich auch symbolische Links anlegen, wenn Sie zum Beispiel lizensierte Fonts auf einer gemounteten Windows Partition haben und diese nutzen möchten. Anschließend rufen Sie SuSEconfig --module fonts auf.

SuSEconfig --module fonts ruft das Skript /usr/sbin/fonts-config auf, das die Konfiguration der Fonts übernimmt. Für Details was dieses Skript tut, lesen Sie bitte die zugehörige Manualpage (man fonts-config).

Es spielt keine Rolle, welche Typen von Fonts installiert werden sollen, die Prozedur ist die gleiche für Bitmap-Fonts, TrueType/OpenType-Fonts und Type1-(PostScript)-Fonts. Alle diese Fontarten können in jedes beliebige Verzeichnis installiert werden. Lediglich CID-keyed Fonts sind ein Spezialfall, siehe Abschnitt 11.3.3, „CID-keyed Fonts“.

X.Org enthält zwei völlig verschiedene Font-Systeme, das alte X11 Core-Font-System und das völlig neu entworfene Xft/fontconfig System. Im Folgenden wird auf beide Systeme kurz eingegangen.

11.3.1. Xft

Beim Entwurf von Xft wurde von Anfang an darauf geachtet, dass es skalierbare Fonts, inklusive Antialiasing, gut unterstützt. Bei Benutzung von Xft werden die Fonts im Gegensatz zum X11 Core-Font-System von dem Programm gerendert, welches die Fonts benutzt und nicht vom X-Server. Dadurch bekommt das jeweilige Programm Zugriff auf die Fontdateien selbst und volle Kontrolle über Details, wie die Glyphen genau gerendert werden. Zum einen wird dadurch die korrekte Darstellung von Text in manchen Sprachen erst möglich, zum anderen ist der direkte Zugriff auf die Fontdateien sehr hilfreich, um Fonts zum Drucken zu einzubetten und so zu erreichen, dass der Ausdruck tatsächlich so aussieht wie die Bildschirmausgabe.

Die beiden Desktopumgebungen KDE und GNOME, Mozilla und viele andere Applikationen benutzen unter SUSE LINUX bereits standardmäßig Xft. Xft wird also bereits von erheblich mehr Applikationen benutzt als das alte X11 Core-Font-System.

Xft benutzt die Fontconfig-Bibliothek, um Fonts zu finden und um die Art und Weise, wie sie gerendert werden, zu beeinflussen. Das Verhalten von fontconfig wird durch eine systemweite Konfigurationsdatei /etc/fonts/fonts.conf und eine benutzerspezifische Konfigurationsdatei ~/.fonts.conf gesteuert. Jede dieser fontconfig Konfigurationsdateien muss mit

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>

beginnen und mit

</fontconfig>

enden. Um Verzeichnisse, in denen nach Fonts gesucht wird, hinzuzufügen, können Sie Zeilen wie die folgende

<dir>/usr/local/share/fonts/</dir>

hinzufügen. Das ist aber selten nötig. Das benutzerspezifische Verzeichnis ~/.fonts ist bereits per Default in /etc/fonts/fonts.conf eingetragen. Wenn ein Benutzer also für sich persönlich zusätzliche Fonts installieren möchte, genügt es, diese nach ~/.fonts zu kopieren.

Sie können auch Regeln einfügen, um das Aussehen der Fonts zu beeinflussen, zum Beispiel

<match target="font">
 <edit name="antialias" mode="assign">
  <bool>false</bool>
 </edit>
</match>

um das Antialiasing für alle Fonts auszuschalten, oder

<match target="font">
 <test name="family">
  <string>Luxi Mono</string>
  <string>Luxi Sans</string>
 </test>
 <edit name="antialias" mode="assign">
 <bool>false</bool>
 </edit>
</match>

wenn Sie es nur für bestimmte Fonts ausschalten möchten.

Die meisten Applikationen benutzen standardmäßig die Fontnamen sans-serif (oder das äquivalente sans), serif oder monospace. Dies sind keine wirklich existierenden Fonts sondern nur Aliases, die abhängig von der eingestellten Sprache auf einen geeigneten Font aufgelöst werden.

Jeder Benutzer kann sich leicht Regeln zu seiner ~/.fonts.conf hinzufügen um zu erreichen, dass diese Aliases auf seine Lieblingsfonts aufgelöst werden:

<alias>
 <family>sans-serif</family>
 <prefer>
  <family>FreeSans</family>
 </prefer>
</alias>
<alias>
 <family>serif</family>
 <prefer>
  <family>FreeSerif</family>
 </prefer>
</alias>
<alias>
 <family>monospace</family>
 <prefer>
  <family>FreeMono</family>
 </prefer>
</alias>

Weil fast alle Applikationen diese Aliase standardmäßig verwenden, wirkt das fast für das ganze System. Sie bekommen so mit sehr geringem Aufwand Ihre Lieblingsfonts fast überall, ohne in jedem Program einzeln die Fonteinstellungen ändern zu müssen.

Um festzustellen, welche Fonts überhaupt installiert und verfügbar sind, gibt es das Kommando fc-list. fc-list "" gibt zum Beispiel eine Liste aller Fonts aus. Möchten Sie wissen, welche skalierbaren Fonts (:outline=true) verfügbar sind, die alle für Hebräisch benötigen Glyphen enthalten (:lang=he), und sich für alle diese Fonts den Fontnamen (family), den Stil (style), den Fettheitsgrad (weight) und den Dateinamen, der den Font enthält ausgeben lassen, können Sie zum Beispiel folgendes Kommando benutzen:

    fc-list ":lang=he:outline=true" family style weight file

Die Ausgabe dieses Kommandos könnte zum Beispiel so aussehen:

    
/usr/X11R6/lib/X11/fonts/truetype/FreeSansBold.ttf: FreeSans:style=Bold:weight=200
/usr/X11R6/lib/X11/fonts/truetype/FreeMonoBoldOblique.ttf: FreeMono:style=BoldOblique:weight=200
/usr/X11R6/lib/X11/fonts/truetype/FreeSerif.ttf: FreeSerif:style=Medium:weight=80
/usr/X11R6/lib/X11/fonts/truetype/FreeSerifBoldItalic.ttf: FreeSerif:style=BoldItalic:weight=200
/usr/X11R6/lib/X11/fonts/truetype/FreeSansOblique.ttf: FreeSans:style=Oblique:weight=80
/usr/X11R6/lib/X11/fonts/truetype/FreeSerifItalic.ttf: FreeSerif:style=Italic:weight=80
/usr/X11R6/lib/X11/fonts/truetype/FreeMonoOblique.ttf: FreeMono:style=Oblique:weight=80
/usr/X11R6/lib/X11/fonts/truetype/FreeMono.ttf: FreeMono:style=Medium:weight=80
/usr/X11R6/lib/X11/fonts/truetype/FreeSans.ttf: FreeSans:style=Medium:weight=80
/usr/X11R6/lib/X11/fonts/truetype/FreeSerifBold.ttf: FreeSerif:style=Bold:weight=200
/usr/X11R6/lib/X11/fonts/truetype/FreeSansBoldOblique.ttf: FreeSans:style=BoldOblique:weight=200
/usr/X11R6/lib/X11/fonts/truetype/FreeMonoBold.ttf: FreeMono:style=Bold:weight=200

Die wichtigsten Parameter, die mit fc-list abgefragt und ausgegeben werden können, sind:

Tabelle 11.3. Mögliche Parameter von fc-list

Parameter

Bedeutung und mögliche Werte

family

Der Name der Fontfamilie, zum Beispiel FreeSans

foundry

Der Fonthersteller, zum Beispiel urw

style

Der Fontstil, zum Beispiel Medium, Regular, Bold, Italic, Heavy, ...

lang

Die Sprache(n), die der Font unterstützt. Zum Beispiel de für Deutsch, ja für Japanisch, zh-TW für traditionelles Chinesisch, zh-CN für vereinfachtes Chinesisch ...

weight

Der Fettheitsgrad, zum Beispiel 80 für nicht fett, 200 für fett.

slant

Der Kursivitätsgrad, meist 0 für nicht kursiv, 100 für kursiv.

file

Der Dateiname unter dem der Font gespeichert ist.

outline

true wenn es sich um einen Outline-Font handelt, sonst false.

scalable

true wenn es sich um einen skalierbaren Font handelt, sonst false.

bitmap

true wenn es sich um einen Bitmap-Font handelt, sonst false.

pixelsize

Die Größe des Fonts in Pixel. Im Zusammenhang mit fc-list nur sinnvoll für Bitmap-Fonts.

11.3.2. X11 Core-Fonts

Heutzutage unterstützt auch das X11 Core-Font-System nicht nur Bitmap-Fonts, sondern auch skalierbare Fonts wie Type1-Fonts, TrueType/OpenType-Fonts und auch CID-keyed Fonts. Auch Unicode-Fonts werden bereits seit längerer Zeit unterstützt.

Ursprünglich wurde wurde das X11 Core-Font-System 1987 für X11R1 entwickelt um monochrome Bitmap-Fonts zu verarbeiten und man merkt bis heute, dass alle oben erwähnten Erweiterungen nachträglich hinzugefügt wurden.

Zum Beispiel werden skalierbare Fonts nur ohne Antialiasing und Subpixel-Rendering unterstützt und das Laden großer, skalierbarer Fonts mit Glyphen für viele Sprachen kann sehr langsam sein. Auch die Benutzung von Unicode-Fonts kann langsam sein und benötigt mehr Speicher.

Es gibt einige grundlegende Schwächen des X11 Core-Font-Systems. Man kann sagen, dass es veraltet und nicht mehr sinnvoll erweiterbar ist. Es muss aus Gründen der Rückwärtskompatibilität verfügbar bleiben, aber soweit wie möglich sollte man das modernere Xft/fontconfig System verwenden.

Der X-Server muss wissen, welche Fonts an welcher Stelle im System verfügbar sind. Diese Zuordnung wird mit Hilfe der Variable der Variable FontPath vorgenommen. Diese Variable enthält die Pfadangabe zu allen gültigen Font-Verzeichnissen. In jedem dieser Verzeichnisse liegt eine Datei fonts.dir, die alle im Verzeichnis verfügbaren Fonts enthält. Der X-Server generiert FontPath beim Start. Er sucht eine gültige fonts.dir Datei in jedem der FontPath-Einträge in der Konfigurationsdatei /etc/X11/xorg.conf. Die FontPath-Einträge sind in der Files Section zu finden. Um den aktuellen Wert von FontPath auszugeben, verwenden Sie den Befehl xset q. Die Pfadangabe kann mit xset zur Laufzeit des X-Servers geändert werden. xset +fp <Pfad> fügt einen Pfad hinzu, xset -fp <Pfad> löscht einen nicht benötigten Pfad.

Wenn der X-Server bereits läuft, können neu installierte Fonts in bereits eingebundenen Verzeichnisse mit dem Kommando xset fp rehash zur Verfügung gestellt werden. Dieses Kommando wird von SuSEconfig --module fonts bereits aufgerufen. Da das Kommando xset Zugriff auf den laufenden X-Server benötigt, kann das allerdings nur funktionieren, wenn SuSEconfig --module fonts aus einer Shell gestartet wurde, die Zugriff auf den laufenden X-Server hat. Am einfachsten erreichen Sie dies, indem Sie sich durch Eingeben des Kommandos su und anschließende Eingabe des Root-Passwortes in einem Terminal zu root machen, su übergibt die Zugriffsrechte des Benutzers, der den X-Server gestartet hat, an die Rootshell.

Zum Testen, ob die Fonts richtig installiert wurden und tatsächlich über das X11 Core-Font-System verfügbar sind, können Sie das Kommando xlsfonts verwenden, das alle verfügbaren Fonts auflistet.

SUSE LINUX verwendet standardmäßig UTF-8 Locales, daher sollten Sie in der Regel Unicode-Fonts verwenden, die Sie daran erkennen, dass der von xlsfonts gelistete Fontname mit iso10646-1 endet. Alle verfügbaren Unicode-Fonts können Sie sich also mit xlsfonts | grep iso10646-1 anzeigen lassen.

Fast alle unter SUSE LINUX verfügbaren Unicode-Fonts enthalten mindestens alle nötigen Glyphen für die europäischen Sprachen, für die früher die Encodings iso-8859-* verwendet wurden.

11.3.3. CID-keyed Fonts

Im Gegensatz zu den anderen Fonttypen ist es bei CID-keyed Fonts nicht egal, in welches Verzeichnis sie installiert werden. Sie sollten auf jeden Fall nach /usr/share/ghostscript/Resource/CIDFont installiert werden. Für Xft/fontconfig spielt das zwar keine Rolle, aber Ghostscript und das X11 Core-Font-System erfordern dies.

[Tip]Tipp

Weitere Informationen zum Thema Fonts unter X11 erhalten Sie unter http://www.xfree86.org/current/fonts.html.


SUSE LINUX Administrationshandbuch 9.3