ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

Schriftbild verbessern

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

In diesem Artikel wird erklärt wie man eine verbesserte Schriftendarstellung erreicht, die der von Mac OS X oder Microsofts "Clear Type Technology" ähnlich ist.

Was ist Hinting?

Hints (engl.: Hinweis) sind spezielle Anweisungen, die in Outline-Schriftarten gespeichert werden, um deren Darstellung auf Ausgabegeräten mit geringer Auflösung, wie z.B. TFT-Displays zu verbessern. Ziel des Hintings ist es, die Lesbarkeit der gerenderten Zeichen zu erhalten, selbst wenn durch die niedrige Auflösung des Ausgabegeräts nicht genügend Pixel zur exakten Darstellung des Zeichens vorhanden sind. Die Hints können nach Wunsch nur bei Unterschreitung eines gewissen Mindest-Schriftgrades (z.B. 8 Punkt) ausgewertet werden, da der Effekt des groben Pixelrasters bei großen Schriftgraden nicht so stark ins Gewicht fällt. Dabei wird in Kauf genommen, dass spezifische Eigenarten der Schrift (typisches Aussehen der Zeichen) bei Verwendung des Hintings eingeschränkt werden, so dass verschiedene Schriften bei sehr kleinem Schriftgrad sehr ähnlich aussehen können, auch wenn diese sich bei größeren Schriftgraden deutlich unterscheiden (z.B. gerade Anführungszeichen _"_ und typographische _”_). Das Erstellen von Hints ist ein sehr aufwändiger Vorgang, der zur Erreichung bester Darstellungsqualität manuell durchgeführt wird. Deswegen verfügen viele kostenlos erhältliche oder preisgünstigere Schriften über gar kein Hinting oder nur über ein von Schriften-Tools automatisch generiertes Hinting. Neben den in der Schriftdatei (TrueType-Font, .ttf/.otf) selbst abgelegten Hints, die bei der Darstellung ausgewertet werden, um die Buchstaben zu formen, existieren Techniken wie der Autohinter in Linux, die mit allgemeinen Heuristiken oder Regeln versuchen, den gleichen Effekt zu erzielen. Der Autohinter in der Systembibliothek FreeType wurde anfänglich entwickelt, weil das Prinzip der Hint-Einbettung in TrueType-Schriften durch die Firma Apple patentiert worden war. Inzwischen kann sich die Qualität der Darstellung aber durchaus mit den mitgelieferten Hints messen, und bietet zudem eine größere Flexibilität, da so verschiedene Hintingstärken möglich sind. Quelle: Wikipedia

./unhinted.png ./unhinted-pixels.png
./hinted.png ./hinted-pixels.png
./autohinted.png ./autohinted-pixels.png
Beispiel für Hinting: Zu erkennen ist, dass mit Hinting versucht wird, den Umriss der Buchstaben so zu verzerren, dass er auf den Unterteilungen des Pixelrasters zu liegen kommt. (oben: Ohne Hinting, Mitte: Eingebettete Hints, unten: Autohinting)

LCD Geräte und AntiAliasing (Kantenglättung)

Gegenüber der traditionellen, stark gehinteten Darstellung, die zu einem kontrastreichen aber auch pixeligen, schwarz-weißen Schriftbild führt, gibt es die Technik, Kanten mittels Antialias zu glätten (Siehe die rechte Spalte im Beispiel oben). Im Hinting wird versucht, möglichst nur ganze Pixel zu aktivieren. Im Antialiasing wird das Aussehen eines teilweise aktivierten Pixels durch einen Grauwert simuliert. Dadurch entstehen an diagonalen Linien keine Treppeneffekte mehr; allerdings geht dies nur auf Kosten der empfundenen Schärfe.

./Antialias.png
Beispiel für Antialiasing: links ohne, rechts mit

Um dem entgegenzuwirken, kann die Funktionsweise des Bildpunktrasters eines LCD-Bildschirms ausgenutzt werden. Im LCD setzt sich ein ganzer Bildpunkt als Pixel aus den Komponentenfarben zusammen, die wie Spalten als Drittelpixel angeordnet sind. Nun können statt Grauwerten bestimmte, geschickt ausgewählte Farben für fraktionale Pixel geschaltet werden. Je nachdem, ob ein Pixel rechts- oder linkseitig angeschnitten ist, wird der rechte oder linke der drei Subpixel stärker aktiviert (bei Grauwerten werden alle Subpixel gleich stark aktiviert). Diese Technik ist auf anderen Systemen als Subpixel-Antialias bzw. -Filterung, ClearType oder CoolType bekannt. Sie ist eine Sonderform des Antialiasing. Die Farbkomponenten sollen die Schrift für das Auge mit mehr Kontrast glätten, ohne übermäßig als Farbsäume zu sehen zu sein. Dies funktioniert je nach Betrachter oder Bildschirm und der mathematischen Prinzipien des Filters unterschiedlich gut. Besonders wichtig für die Qualität ist das Zusammenspiel aus Hinting und Filterung. Je stärker das Hinting, desto weniger kommt die Subpixelfilterung zum Tragen, was einerseits die Farbsäume verringert und den Kontrast erhöht, andererseits aber auch weniger getreu der eigentlichen Schriftform ist.

  • Siehe Bild:

./Subpixel_rendering.png
Beispiel für Subpixel-Rendering mit Vergrößerung. Von links nach rechts: Normale Rasterung ohne Antialiasing, Subpixel-Rendering ohne Antialiasing, normale Rasterung mit Antialiasing, Subpixel-Rendering mit Antialiasing

Opera Schriftdarstellung verbessern

Dies wird in dem Artikel Opera Optik behandelt.

Glättung der Schrift verbessern

Unter folgender Webseite {en} wurden im März 2006 zwei Patches veröffentlicht, die eine deutlich bessere Schriftenglättung zur Folge haben. Genauer betrachtet wird die Art der sogenannten "Subpixel-Glättung" verbessert. Diese wirkt sich sowohl bei LCD- als auch CRT-Monitoren aus. Der Algorithmus, der von "libxft2" und "libcairo" benutzt wird, um Text mit der Technik "Subpixel rendering" wiederzugeben, unterstützt zwar einen scharfen Kontrast, erzeugt aber in manchen Fällen hässliche Farbfehler (meistens gelb und blau für schwarzen Text auf weißem Hintergrund). Des Weiteren erzwingen beide Bibliotheken nicht die Technik "light hinting", wenn der Modus "Subpixel rendering" im Schrifteinstellungsmodus ausgewählt wurde, was dazu führt, dass stattdessen "Full hinting" als Standard ausgewählt wird. Die folgenden Patches verändern diese zwei Bibliotheken, um beide Probleme gleichzeitig zu lösen. Man sollte beachten, dass diese einen einfachen "Fir Filter" benutzen. Der Resultat ist eine dramatische Senkung dessen und eine sehr hübsch aussehende "light-hinting" Textdarstellung, die mit der auf anderen Betriebssystemen leicht mithalten kann. Der Patch für "libfreetype6" deaktiviert die erzwungene Quantisierung von vertikalen Balken in Buchstaben. Diese Quantisierung wird durch das verbesserte Filtern in Cairo und xft überflüssig, zum Beispiel sind noch bessere Buchstabenabstände zu erwarten.

./schriftwiedergabe_gnome.png

Alte Schriftdarstellung wählen

Ab Ubuntu 7.10 wurden die oben beschriebenen Änderungen nach Befragung der Nutzergemeinde offiziell integriert. Die Änderung betrifft den Algorithmus des LCD-Filters, der vormals durch Einspielen eines Patches oder eines gepatchen Paketes integriert werden musste. Diese Installationen sind nicht mehr notwendig. Zu Prüfen bleibt dem Benutzer, welche Hinting-Art am ehesten seinem Geschmack entspricht. Die Einstellung findet sich im Dialog

  • "System -> Einstellungen -> Erscheinungsbild -> Schriftarten -> Details".

Der alte Algorithmus ist immer noch vorhanden, allerdings ist er zur Zeit nicht durch einen einfachen Schalter in diesem Dialog aktivierbar. Falls die alte Darstellung erwünscht ist, muss er in der Konfigurations-Datei .fonts.conf im Homeverzeichnis eingetragen werden. (Vgl. engl. Forum {en} )

1
2
3
4
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
  <fontconfig>
    <edit name="lcdfilter" mode="assign"><const>legacy</const></edit>
  </fontconfig>

Schriftdarstellung verändern

Gnome-Benutzer stellen unter

  • "System -> Einstellungen -> Erscheinungsbild -> Schriftarten "

die zu benutzende Schriftdarstellung nach Belieben ein.

Besitzer von Flachbildschirmen können unter "Schriftwiedergabe" und unter "Details" die Schriftwiedergabe nach belieben einstellen. Empfohlen wird die Kantenglättung auf "Subpixel (LCDs)" und Hinting auf "Gering" einzustellen.

Benutzer mit einem herkömmlichen PC-Bildschirm können mit den Werten ein wenig experimentieren. Nach einem Neustart des XServers sollte die Schriftdarstellung nun erheblich besser sein. Insbesondere in Browsern wie dem Firefox oder Opera sollte man das Ergebnis besonders gut wahrnehmen können. Weiter mit dieser Anleitung im Kapitel Systemweite Schriftdarstellung wählen.

Falls es so scheint, als seien alle Schriften verwaschen und unscharf, lohnt es sich, Kantenglättung (bzw. "antialiasing") komplett auszuschalten und "hinting" auf auf "stark" (bzw. "full") zu setzen. Einige Anwendungen wie Firefox nehmen diese Einstellung allerdings nicht an, deshalb lohnt es sich, auch noch eine .fonts.conf im Homeverzeichnis mit folgendem Inhalt anzulegen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match target="font" >
<edit mode="assign" name="rgba" >
<const>rgb</const>
</edit>
</match>
<match target="font" >
<edit mode="assign" name="hinting" >
<bool>true</bool>
</edit>
</match>
<match target="font" >
<edit mode="assign" name="hintstyle" >
<const>hintfull</const>
</edit>
</match>
<match target="font" >
<edit mode="assign" name="antialias" >
<bool>false</bool>
</edit>
</match>
</fontconfig>

Kubuntu-Benutzer starten das Programm kcontrol und stellen die Schrift unter "appeareance and themes-> fonts" ein. Anbei ein Bildvergleich:

./only-autohinter1.png ./autohinter+patched-xft1.png
Vorher Nachher

Systemweite Schriftdarstellung wählen

Hinweis:

Diesen Befehl sollte nach der Installation der Microsoft-Schriftarten ausgeführt werden bis Ubuntu Intrepid Ibex 8.10 , da sonst die Schriftdarstellung erheblich verfälscht wird. Ab Ubuntu Jaunty 9.04 ist dies nicht mehr nötig.

Man öffnet ein Terminal [1] und gibt folgenden Befehl ein:

sudo dpkg-reconfigure fontconfig-config 

Es stehen die Optionen "Autohinter" oder "Nativ" zur Wahl. "Autohinter" bringt bessere Ergebnisse, wenn überwiegend True-Type-Schriftarten verwendet werden. Die Option "Nativ" sollte genutzt werden, wenn überwiegend Bitstream Vera (Standard in Debian) oder Microsoft-Schriftarten verwendet werden. Als zweite Option lässt sich "Subpixel rendering" aktivieren. Bei Flachbildschirm-Geräten ist dies die bevorzugte Wahl. Röhrenmonitor-Benutzer können dies ebenfalls aktivieren, ob es aber zu einer verbesserten Schriftdarstellung führt, ist leider unbekannt. Als dritte Option werden standardmäßig die Bitmap-Schriften verwendet, dies mit "Nein" beantworten. Jetzt noch den Befehl

sudo dpkg-reconfigure fontconfig 

ausführen und zum Abschluss den XServer neustarten.

Windows-Schriftdarstellung einstellen

Falls man die Microsoft-Schriften unter Ubuntu verwendet, wird man sich vielleicht schon mal gefragt haben, ob es möglich ist, diese Schriftarten genau wie unter Windows ohne Kantenglättung und ohne die Technik "Clear Type" darzustellen. Hier {en} im englischen Ubuntu Forum kann man dazu eine nützliche Anleitung finden.

Installation Microsoft Schriften zusammengefasst:

sudo apt-get install msttcorefonts
sudo dpkg-reconfigure fontconfig 

Mit dem zweiten Befehl wird sichergestellt, dass auch Applikationen wie Firefox wie gewünscht funktionieren. Natürlich müssen die gewünschten Systemschriftarten wie oben beschrieben gewählt werden bzw. Schriftenglättung ausgeschaltet werden wenn dies gewollt ist.

./comparison.png

Eine aktualisierte Anleitung ist hier {en} zu finden. Die Schriftdarstellung entspricht der von Windows mit deaktivierter Kantenglättung (Clear-Type). Möchte man zur Ubuntu Standard-Schriftdarstellung zurückkehren, so muss man diese zuvor verschobenen Dateien löschen. In beiden Fällen muss der XServer neu gestartet werden.

Displaymanager

Falls im Displaymanager die Schrift sehr klein und unleserlich dargestellt wird, ist die folgende Anleitung interessant.

Vorbetrachtung

Damit bei unterschiedlicher Monitorauflösung (1024x768, 800x600, 640x480 ...) ein Quadrat mit 3 cm Kantenlänge auch korrekt als Quadrat mit 3 cm Kantenlänge auf dem Bildschirm dargestellt wird, muss der X-Server über die Relation zwischen der Monitorauflösung und der physikalischen Größe des Bildschirms jeweils in x- und y-Richtung informiert sein. Diese Auflösung misst sich in dpi ("dots per inch") - eine typische Bildschirmauflösung in der PC-Welt ist 75 x 75 dpi oder 96 x 96 dpi. Um die Berechnung der korrekten Pixelgrösse zu veranschaulichen wird nun ein Notebook mit einer physikalischen Auflösung von 1400x1050 als Beispiel herangezogen.

Die Monitor-Breite beträgt 30,4 cm und die Höhe beträgt 22,8 cm (natürlich nur des sichtbaren Bereichs). Zunächst muss man wissen, in welcher Auflösung der Bildschirm betrieben wird. Unter Ubuntu findet man diese Information zum Beispiel unter

  • "System --> Einstellung--> Bildschirmauflösung"

Übliche Auflösungen sind 800x600, 1024x768, 1280x1024, 1280x960, 1600x1200. Natürlich gibt es beliebig andere. Sie sind alle als "xres x yres" angegeben, wobei "xres" die Anzahl der Bildpunkte horizontal ist und "yres" die vertikale Anzahl. Jetzt muss man noch wissen, wie breit und hoch der sichtbare Bereich des Bildschirms wirklich ist. Meist hilft ein Blick in das Handbuch. Bei TFT-Monitoren kann man alternativ die Maße mit einem flexiblen cm-Messband bestimmen.

Eine automatische Berechnung kann man hier {en} heranziehen. Manuell errechnet man den dpi-Wert so:

dpi = xres x 2,54 cm (1 Zoll ) / Breite des Bildschirms

Dann sieht die Berechnung so aus:

dpi = 1400 x 2,54 / 30,4
dpi = 3556 / 30,4
dpi ~ 116

Zur Kontrolle kann man auch noch die Höhe messen und folgende Berechnung durchführen: dpi = yres x 2,54 cm / Höhe des Monitors in cm.

Hier würde ein Wert von ~ 116 dpi herauskommen. Sollten beide Werte nicht ungefähr übereinstimmen kann man einfach den Durchschnitt nehmen. Wenn sie stark voneinander abweichen, hat man eine ungünstige Auflösung gewählt, bei der die Pixel nicht quadratisch sind (z.B. "1280 x 1024" auf einem 4:3 PC-Bildschirm).

X-Server an Monitor konfigurieren

Es ist sinnvoll, die Datei xorg.conf im Verzeichnis /etc/X11/ zu sichern [1]:

sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.bak 

Zum Anpassen kann man mit Root-Rechten die Datei /etc/X11/xorg.conf in einem Editor [2] öffnen.

In der Monitor-Sektion sind die gemessenen Maße mit der Option "DisplaySize" anzugeben:

        DisplaySize     XXX     YYY

Anhand des Beispiels des Notebooks mit der Auflösung 1400x1050 würde man die Breite und Höhe des Bildschirms in Millimetern (304 x 228) wie folgt eintragen:

Section "Monitor"
        Identifier          "Standardbildschirm"
        Option              "DPMS"
        DisplaySize          304     228     # 1400x1050
EndSection

Nach einem Neustart des XServers lässt sich überprüfen, ob der ermittelte dpi-Wert übernommen wurde [1]:

xdpyinfo | grep dimensions
xdpyinfo | grep resolution 

Am Beispiel des Notebooks wird Folgendes ausgegeben (die Werte werden vom XServer leicht aufgerundet):

dimensions: 1400x1050 pixels (307x230 millimeters)
resolution: 116x116 dots per inch

Wie man sieht, ist nun der oben ermittelte dpi-Wert korrekt dargestellt. Wird der proprietäre NVIDIA Treiber eingesetzt kann es sein, dass hier trotzdem falsche Werte angezeigt werden, hier kann es helfen in der xorg.conf im Abschnitt "Device" folgende Zeilen anzufügen.

    Option   "UseEdidDpi"   "FALSE"
    Option   "DPI"   "116x116"

Hilft auch das nicht lohnt sich ein Blick auf http://www.mozilla.org/unix/dpi.html.

Falls noch nicht eingestellt wird im GNOME-Menü unter

  • "System -> Einstellungen -> Schrift -> Details"

96 dpi eingestellt. Falls mehr als 96 dpi eingestellt sind, werden nur die Schriften größer dargestellt. Wer eine verbesserte Schrift-Schärfe erwartet hätte, wird leider enttäuscht werden.

ubuntuusers.local › WikiSchriftbild verbessern