[OpenBSD]

Kantengeglättete und TrueType-Schriftarten unter OpenBSD

Inhaltsverzeichnis


Screenshot von xterm

xterm(1) mit kantigen und kantengeglätteten Schriftarten nebeneinander:
[standardmäßiger und kantengeglätteter xterm]

Screenshot vom Konqueror

Noch nicht überzeugt? Dann wirf mal einen Blick hierauf.

Der Konqueror-Webbrowser mit kantigen und kantengeglätteten Schriftarten nebeneinander:

[Standard- und kantengeglätteter Konqueror]

Wie funktioniert das?

Für die Unterstützung von kantengeglätteten Schriftarten wurde 2001 eine neue clientseitige Fontrendering-Engine in X eingeführt. Die kantenglättenden Berechnungen werden von FreeType durchgeführt, einer freien Font-Engine, die von einer Bibliothek namens Xft(3) (X FreeType Interface) benutzt wird. Die Render-Erweiterung stellt die Berechnungsfunktionen zur Verfügung, mit der Suppixel-Schriftkanten in den Anwendungshintergrund vermischt werden.

Zusätzlich verwendet X.Org die fontconfig(3)-Bibliothek, um installierte Schriftarten und deren Namen sowie Eigenschaften zu verwalten.

Was muss dafür getan werden?

Im Grunde gar nichts. OpenBSD wird mit X.org ausgeliefert, welches die X-Render-Erweiterung für alle Grafikkartentreiber mit 8 Bit pro Pixel oder höher bereits aktiviert hat.

Du kannst mit folgendem Aufruf sicherstellen, dass die Render-Erweiterung aktiviert wurde:

$ /usr/X11R6/bin/xdpyinfo | grep RENDER RENDER

Zusätzlich zur Schriftartfamilie Bitstream Vera, die mit OpenBSD ausgeliefert wird, wurde eine Sammlung von beliebten Truetype-Schriftarten zusammengestellt, die im OpenBSD-Portstree unter /usr/ports/x11/msttcorefonts zu finden ist. Sie kann wiefolgt installiert werden:

# cd /usr/ports/x11/msttcorefonts # make install

In der Portskollektion gibt es noch weitere Packages mit Truetype-Schriftarten, inbesondere die liberation-Fonts, die als Ersatz für die zuvor genannten Microsoft Webfonts dienen können und mit einer eher akzeptierbaren Lizenz zur Verfügung stehen.

Welche Applikationen können kantengeglättete Schriften nutzen?

Jede Applikation, die auf der Xft-Bibliothek aufbaut, kann kantengeglättete Schriftarten anzeigen. Dazu gehören auch QT-3.x- (KDE 3.x) und GTK+2- (Gnome 2.x) -Applikationen. Standardmäßig mitgelieferte X-Programme, die diese Schnittstelle nutzen können, sind xterm(1), xclock und ein paar andere.

xterm

xterm kann mit Argumenten aufgerufen werden, die das Xft-Rendering der Schriftarten aktivieren:
$ xterm -fa 'Mono' -fs 14
Diese Optionen sind:
Option Ressource Bedeutung ---------------------------------------------- -fa XTerm*faceName Name vom Schriftsatz -fs XTerm*faceSize Größe der Schriftart
Daneben könnten auch X-Ressourcen genutzt werden. Standardmäßig werden sie unter $HOME/.Xdefaults abgespeichert und mit dem Programm xrdb(1) verwaltet.

Einige TrueType-Schriftarten (wie zum Beispiel Arial, Georgia und Verdana) funktionieren nicht sonderlich gut mit xterm. Das liegt daran, dass xterm die maximale Breite der Zeichen im angegebenen Schriftart für die Darstellung nutzt. Bei Monospace-Schriftarten ist die Breite aller Zeichen gleich und somit funktioniert auch alles. Mit einem proportionalem Font, wie mit beispielsweise dem zuvor genannten, legt xterm jedes einzelne Zeichen in eine Zelle, die die maximal mögliche Breite hat, was unleserlich große Lücken zwischen den Zeichen erstellt.

QT-3.x/KDE-3.x-Applikationen

Applikationen, die QT 3.x verwenden, wie beispielsweise jede KDE-3.5.x-Applikation, einschließlich Konqueror, können das Xft-Rendering standardmäßig benutzen.

GTK+2-Applikationen

GTK+2-Applikationen nutzen nun auch standardmäßig Xft.

Wie kann ich manuell Schriftarten hinzufügen?

Eine Truetype-Schriftart »in X« einfügen bedeutet, dass die Schriftart sowohl der fontconfig-Bibliothek als auch dem X-Server bekannt gemacht werden müssen, da beide die Schriftarten eigenständig verwalten.

Clientseitiges Fontrendering-System

Schriftarten, die als Package aus der Portskollektion installiert werden, melden sich automatisch im fontconfig-System an. Fontconfig verwendet die Datei /etc/fonts/fonts.conf für die systemweite Hauptkonfiguration. Da diese Datei jeodch bei folgenden X-Upgrades überschrieben wird, sollte /etc/fonts/local.conf stattdessen verwendet werden, um systemweite Änderungen zu verwalten. Fontconfig sucht in allen Unterverzeichnissen der in fonts.conf angegebenen Verzeichnissen nach Schriftarten. Somit besteht keine Notwendigkeit, diese Datei zu ändern, wenn Schriftarten in diesen Hierarchien hinzugefügt werden.

Nachdem das Verzeichnis hinzugefügt wurde, muss der Fontcache für das Verzeichnis generiert werden. Das folgende Kommando gibt an, dass fontconfig die Fontcaches in allen Verzeichnissen aktualisieren soll, die in der Konfigurationsdatei angegeben wurden:

# /usr/X11R6/bin/fc-cache -v
Diese Änderungen treten in schon in der aktuellen X-Sitzung in Kraft, so dass X nicht neugestartet werden muss - laufende Programme allerdings schon.

Das Kommando fc-list kann verwendet werden, um alle Schriftarten aufzulisten, die dem System bekannt sind. Beachte jedoch, dass dieses Kommando internationale Schriftartennamen UTF-8-kodiert ausgibt. Es wäre daher besser, dieses Kommando in einem UTF-8-fähigen Terminalemulator wie zum Beispiel uxterm aufzurufen.

Das serverseitige Rendering-System

Die Pfade für die Schriftarten (d. h. die Verzeichnisse, in denen die Schriftarten liegen) werden entweder direkt vom X-Server mit der Datei /etc/X11/xorg.conf oder mit einem separaten Programm wie zum Beispiel xfs(1) verwaltet. Um eine Schriftart hinzuzufügen, füge das Verzeichnis in /etc/X11/xorg.conf ein, in dem sich diese Schriftart befindet:
Section "Files" FontPath "/usr/X11R6/lib/X11/fonts/TTF/" FontPath "/usr/local/lib/X11/fonts/myfonts/" ... EndSection
Oder, falls du xfs verwendest, füge das Verzeichnis in /etc/X11/fs/config ein:
catalogue = /usr/X11R6/lib/X11/fonts/TTF/, /usr/local/lib/X11/fonts/myfonts/
Als nächstes müssen die Schriftarten dem X-Server bekanntgegeben werden, z. B. über die Datei fonts.dir. Bisher war es so, dass alle verfügbaren Größen der Schriftarten im Font-Index aufgelistet wurden, der über das Kommando mkfontdir(1) erstellt wurde. Aber da TrueType-Schriftarten auf jede beliebige Größe skaliert werden können, ist das Auflisten jeder möglichen Größe nicht mehr erforderlich. Stattdessen werden die skalierbaren Schriftarten in der Datei fonts.scale aufgelistet, die von mkfontdir berücksichtigt wird, wenn die fonts.dir-Indexe erstellt werden.

Um eine fonts.scale-Datei zu erstellen, kann das Programm mkfontscale(1) genutzt werden:

# cd /usr/local/lib/X11/fonts/myfonts # /usr/X11R6/bin/mkfontscale # /usr/X11R6/bin/mkfontdir
Zum Schluss, damit die Änderungen der aktuellen X-Sitzung bekanntgegeben werden, muss man nicht X neustarten, sondern kann folgendes Kommando verwenden, damit die aktuell registierten Schriftartpfade auf Änderungen hin untersucht werden:
$ xset fp rehash
Oder aber, falls ein neuer Schriftartpfad hinzugefügt wurde:
$ xset +fp /usr/local/lib/X11/fonts/myfonts
Wenn xfs genutzt wird, sollte stattdessen Folgendes genutzt werden:
# pkill -HUP xfs

[back] www@openbsd.org
$OpenBSD: truetype.html,v 1.9 2007/11/12 20:29:59 saad Exp $