[[Vorlage(Getestet, general)]] {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] optional [:Editor: Einen Editor öffnen] optional }}} [[Inhaltsverzeichnis(1)]] In diesem Artikel wird erklärt, wie man eine verbesserte Darstellung von [:Schriften:] erreicht, die der von Mac OS X oder Microsofts "Clear Type Technology" ähnlich ist. Dabei spielen neben der verwendeten [:Schriftarten:Schriftart] drei Begriffe eine zentrale Rolle: [wikipedia:Hinting:], [wikipedia:Antialiasing:] (Kantenglättung) und Subpixel Rendering bei TFT-Displays. = Hinting = Hints (engl.: Hinweise) sind spezielle Anweisungen, die in Schriftarten gespeichert sind, um deren Darstellung auf Ausgabegeräten mit geringer Auflösung 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. Das Erstellen von Hints ist ein sehr aufwendiger Vorgang, der für beste Darstellungsqualität manuell durchgeführt wird. Deswegen haben viele kostenlos erhältliche oder preisgünstigere Schriften gar kein Hinting oder nur ein automatisch generiertes. Neben den in der Schriftdatei ('''.ttf'''/'''.otf''') abgelegten Hints existieren Techniken wie der ''Autohinter'' in Linux, die mit allgemeinen Heuristiken oder Regeln versuchen, den gleichen Effekt zu erzielen. Der ''Autohinter'' in der Systembibliothek [wikipedia: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 Hinting-Stärken möglich sind. {{{#!vorlage Tabelle <:>[[Bild(./unhinted.png, x250)]] <:>[[Bild(./unhinted-pixels.png x250)]] +++ <:>Ohne Hinting <:>Pixeldarstellung +++ <:>[[Bild(./hinted.png, x250)]] <:>[[Bild(./hinted-pixels.png, x250)]] +++ <:>Eingebettete Hints <:>Pixeldarstellung +++ <:>[[Bild(./autohinted.png, x250)]] <:>[[Bild(./autohinted-pixels.png, x250)]] +++ <:>Autohinting <:>Pixeldarstellung }}} Beispiele für Hinting: Zu erkennen ist, dass mit Hinting versucht wird, den Umriss der Buchstaben so zu verzerren, dass dieser auf den Unterteilungen des Pixelrasters zu liegen kommt. Gleichzeitig ist in der jeweils rechten Abbildung das im nächsten Abschnitt beschriebene Antialiasing zu sehen. [[Vorlage(Bildunterschrift, ./Antialias.png, 250, "Antialiasing: links ohne, rechts mit", right)]] = Antialiasing = Gegenüber der traditionellen, stark gehinteten Darstellung, die zu einem kontrastreichen, aber auch pixeligen schwarz-weißen Schriftbild führt, gibt das Verfahren, Kanten mittels Antialiasing zu glätten (die rechte Spalte in den Beispielen 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. 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). [[Vorlage(Bildunterschrift, ./Subpixel_rendering.png, 250, "Subpixel-Rendering", right)]] 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. Die Abbildung rechts zeigt Beispiele 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. = Schriftdarstellung verändern = Inzwischen sorgen Voreinstellungen dafür, dass die früher notwendigen Anpassungen von Systembibliotheken überflüssig sind ([#Alte-Schriftdarstellung-waehlen siehe unten]). Zu prüfen bleibt dem Benutzer, welche Hinting-Art am ehesten seinem Geschmack entspricht. Insbesondere in Browsern wie [:Firefox:] sollte man das Ergebnis gut wahrnehmen können. Für Besitzer von Flachbildschirmen wird eine aktive Kantenglättung, ''"RGB"'' als Subpixel Rendering und die Hinting-Einstellung ''"Gering"'' empfohlen. Je nach persönlichem Geschmack kann aber auch ''"Mittel"'' oder ''"Stark"'' besser geeignet sein. Benutzer mit einem herkömmlichen Röhren-Monitor müssen experimentieren, welche Konfiguration ihnen am besten zusagt. Damit Änderungen übernommen werden, ist ein Neustart des [:XServer:XServers] erforderlich (ab- und neu anmelden)! == Unity == Hier ist keine grafische Einstellmöglichkeit durch den Benutzer vorgesehen. Möchte man dennoch Änderungen vornehmen, benötigt man den [:dconf-editor:] und bearbeitet den Schlüssel ''"org.gnome.settings-daemon.plugins.xsettings"''. [[Bild(GNOME_Tweaks/gtt-schriften-dunkel.png, 200, align=right)]] == GNOME 3 == Nutzer der GNOME Shell und von Unity können mit Hilfe von [:GNOME_Tweaks:] im Reiter ''"Schriften"'' das Schriftbild verbessern. Man kann beim Hinting zwischen den Optionen ''"Slight"'', ''"None"'', ''"Medium"'' oder ''"Full"'' wählen. Bei der Kantenglättung besteht die Wahl zwischen ''"Rgba"'', ''"None"'' und ''"Grayscale"''. Außerdem existiert noch die Möglichkeit, das gesamte Schriftbild mit einem Faktor von 0,5 bis 3,0 zu skalieren. == KDE == Kubuntu-Benutzer finden in den ''"[:KDE-Systemeinstellungen:Systemeinstellungen]"'' unter dem Menüpunkt ''"Schriftarten"'' die Möglichkeit, das Schriftbild anzupassen. === QT5 === Das moderne KDE (Stand 02/2020) arbeitet inzwischen mit QT in Version 5. Benutzt man andere graphische Oberflächen, müssen die Schriften für sämtliche QT5-Anwendungen extra angepasst werden. Um sich dafür nicht einen Großteil des KDE installieren zu müssen, reicht __eine Anwendung__ namens `qt5ct`, die man am einfachsten mit `sudo apt install qt5ct` installiert. Im Menü taucht ein neuer Punkt unter ''"Einstellungen"'' auf: ''"QT5-Einstellungen"''. Aber die Einstellungen werden hier noch nicht wirksam, es gibt eine Fehlermeldung, dass die Umgebungsvariable `QT_QPA_PLATFORMTHEME` nicht gesetzt ist. Das lässt sich einfach verändern: Man schreibt in die '''.xinitrc''' oder '''.xprofile''' folgende Zeile: {{{ export QT_QPA_PLATFORMTHEME=qt5ct }}} und logt sich neu aus und wieder ein. Im ''"QT5-Konfigurationswerkzeug"'' lassen sich jetzt unter dem Reiter ''"Schriften"'' die ''"allgemeinen"'' und die ''"mit fester Breite"'' einstellen. Unter dem Schalter ''"fonts.conf erstellen"'' kann man sich mit wenigen Klicks das Rendern einstellen. * Beim ''"Hinting-Stil"'' am besten ''"gering"'' wählen, sonst sehen die Schriften vermanscht aus. * Als Einstellung bei ''"Teilbildpunkt-Geometrie"'' am besten ''"bgr"''. * Unter ''"LCD-Filter"'' auch angeben, ob man einen LCD-Monitor hat (Einstellung ''"lcddefault"''). * Bei ''"Schriftauflösung"'' die Einstellung auf ''"102 dpi"'' belassen, KDE rendert anders als GTK. Die Einstellungen werden in die Datei '''fonts.conf''' im Home-Verzeichnis des Users geschrieben, die man jederzeit wieder löschen oder händisch editieren kann. Die Einstellungen hier sind für alle __QT5-Anwendungen__ wirksam! == Xfce == Bei [:Xfce:] und damit auch bei Xubuntu findet man den entsprechenden Dialog im [:Xfce-Einstellungen:Einstellungsmanager] unter ''"Erscheinungsbild -> Schriften"''. Subpixel Rendering nennt sich hier ''"Farbreihenfolge innerhalb eines Pixels"''. == LXDE == Bei [:Lubuntu:] ist der Konfigurationsdialog im {l} Startmenü über ''"Einstellungen -> Erscheinungsbild anpassen -> Schriften"'' zu finden, während das bei LXDE genutzte Programm [:Openbox#ObConf:ObConf] keine Einstellungsmöglichkeit bietet. Hier sei auf die manuelle Konfiguration über die Datei '''~/.config/fontconfig/fonts.conf''' verwiesen (siehe [#Firefox unten]). [[Anker(SystemSchrift)]] = Systemweite Schriftdarstellung wählen = {{{#!vorlage Hinweis Ab [:Trusty:Ubuntu 14.04] steht der nachfolgend beschriebene Befehl nicht mehr zur Verfügung. }}} Man öffnet ein Terminal [1] und gibt folgenden Befehl ein: {{{#!vorlage Befehl 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 {{{#!vorlage Befehl sudo dpkg-reconfigure fontconfig }}} ausführen und zum Abschluss den [:XServer:] oder den Rechner neu starten. == Windows-Schriftdarstellung einstellen == Falls man die [:Schriftarten#Windowsschriftarten:Microsoft-Schriften] von Windows XP unter Ubuntu verwendet, wird man sich vielleicht schon einmal gefragt haben, ob es möglich ist, diese Schriftarten genau wie unter Windows ohne Kantenglättung und ohne die Technik "Clear Type" darzustellen. In einer älteren [http://www.ubuntuforums.org/showthread.php?t=208396 Diskussion] {en} im englischen Ubuntu-Forum kann man dazu eine nützliche Anleitung finden. Auch hier hilft der oben beschriebene Befehl weiter: {{{#!vorlage Befehl sudo dpkg-reconfigure fontconfig }}} So wird sichergestellt, dass auch Applikationen wie Firefox wie gewünscht funktionieren. Natürlich müssen die gewünschten Systemschriftarten wie oben beschrieben gewählt bzw. die Schriftenglättung abgeschaltet werden, wenn dies gewollt ist. [[Bild(./comparison.png, , zentral)]] = Problembehebung = [[Anker(Glaettung)]] == Alte Schriftdarstellung wählen == Im März 2006 wurden 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, erzeugte 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. Diese Patches passten diese zwei Bibliotheken an, 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`" deaktivierte 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. {{{#!vorlage Tabelle <:>[[Bild(./only-autohinter1.png, x250)]] <:>[[Bild(./autohinter+patched-xft1.png, x250)]] +++ <:>vorher (nur Autohinter) <:>nachher (angepasste Bibliotheken) }}} Ab Ubuntu 7.10 wurden die eben 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. Eine Anpassung der Systembibliotheken ist seitdem nicht mehr notwendig. Der alte Algorithmus ist aber immer noch vorhanden, allerdings ist er nicht mehr grafisch aktivierbar. Falls die alte Darstellung erwünscht ist, muss er in der Konfigurations-Datei '''~/.config/fontconfig/fonts.conf''' im [:Homeverzeichnis:] (oder für eine systemweite Berücksichtigung in '''/etc/fonts/local.conf'''; Root-Rechte erforderlich) eingetragen werden: {{{#!code xml legacy }}} == Firefox == Einige Anwendungen wie beispielsweise [:Firefox:] berücksichtigen die Einstellungen der jeweiligen Desktop-Umgebung leider nur unzureichend. Falls es so scheint, als seien alle Schriften verwaschen, unscharf oder zu fett, kann es sich lohnen, mit den Werten für Hinting und Antialiasing zu experimentieren. Dies erfolgt über die Datei '''~/.config/fontconfig/fonts.conf''' im [:Homeverzeichnis:]. Ein Beispiel ohne Antialiasing (Firefox muss nach jeder Änderung neu gestartet werden): {{{#!code xml rgb true hintfull false }}} Für "`hintstyle`" stehen folgende Varianten zur Auswahl: `hintnone`, `hintslight`, `hintmedium` und `hintfull`. Dieses Beispiel kann auch verwendet werden, wenn die Schrift in Firefox zu fett erscheint. Der einzige Unterschied: In diesem Fall schaltet man Antialiasing mit "`true`" ein. Die folgenden Abbildungen dienen der Verdeutlichung des Unterschieds: {{{#!vorlage Tabelle <:>[[Bild(./ff_default.png, x250)]] <:>[[Bild(./ff_noantialias.png, x250)]] <:>[[Bild(./ff_antialias.png, x250)]] +++ <:>Standardeinstellung <:>Ohne Antialiasing <:>Mit Antialiasing }}} Das nächste Beispiel zeigt, wie man die Darstellung einer bestimmten Schriftart beeinflussen kann: {{{#!code xml DejaVu Sans Mono 7.5 false }}} == LibreOffice == Bei der Verwendung von aktuellen Microsoft-Schriftarten (Calibri, Cambria, etc.) können je nach Schriftgröße Darstellungsprobleme auftauchen. Folgende '''fonts.conf''' schafft Abhilfe: {{{#!code xml false }}} Quelle: [askubuntu:181135/problems-with-ttf-font-rendering-under-libreoffice:Problems with ttf font rendering under LibreOffice] {en} == Java == Um das Schriftbild in [:Java:]-Anwendungen anzupassen, bearbeitet man die Datei '''~/.bashrc''' mit einem Editor und fügt folgende Zeile hinzu: {{{ export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=lcd' }}} Falls man eine [:GTK:]-basierte Desktop-Umgebung verwendet, kann optional auch folgende Zeile verwendet werden: {{{ export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=lcd -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel' }}} Damit diese Einstellungen wirksam werden, muss man sich ab- und wieder neu anmelden. Falls eine Java-Anwendung die Auswahl einer Schriftart ermöglicht, sollte bevorzugt ein TTF-Zeichensatz ausgewählt werden. Weitere Informationen enthält der Beitrag [archwiki:Java_Runtime_Environment_Fonts:Java Runtime Environment Fonts] {en} im Arch-Wiki. == Displaymanager == Falls im [:Displaymanager:] die Schrift sehr klein und unleserlich dargestellt wird, ist die folgende Anleitung interessant. === Vorbetrachtung === Damit bei unterschiedlicher [:Bildschirmauflösung:Monitorauflösung] ein Quadrat mit 3 cm Kantenlänge auch korrekt (mit identischer Größe) 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 man 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öße 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. Übliche Auflösungen sind 800x600, 1024x768, 1280x1024, 1280x960 oder 1600x1200. Daneben gibt es noch weitere. 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. Manchmal hilft ein Blick in das Monitorhandbuch. Bei TFT-Monitoren kann man alternativ die Maße mit einem flexiblen Maßband bestimmen. Manuell errechnet man den dpi-Wert so: {{{dpi = xres x 2,54 cm (1 Zoll ) / Breite des Bildschirms in cm}}} 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 ca. 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 Computer-Bildschirm). === X-Server konfigurieren === Es ist sinnvoll, zuerst eine evtl. vorhandene Datei [:xorg.conf:/etc/X11/xorg.conf] zu sichern. Zum Anpassen kann man diese Datei in einem Editor [2] mit Root-Rechten ö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: {{{#!vorlage Befehl 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-Grafikkarten: Nvidia]-Treiber eingesetzt, kann es sein, dass trotzdem falsche Werte angezeigt werden. Hier kann es helfen, in der Datei `xorg.conf` im Abschnitt "Device" folgende Zeilen anzufügen. {{{ Option "UseEdidDpi" "FALSE" Option "DPI" "116x116" }}} Eine weitere Möglichkeit ist, eine feste Einstellung auf 96 dpi vorzunehmen. Falls mehr als 96 dpi eingestellt sind, werden nur die Schriften größer dargestellt. Wer eine verbesserte Schrift-Schärfe erwartet hatte, wird leider enttäuscht werden. = Links = * [wikipedia:Hinting:Was ist Hinting?] * [wikipedia:Antialiasing: Was ist und bewirkt Antialiasing bei Schriften?] * [wikipedia:Subpixel: Was ist das Subpixel Rendering?] * [archwiki:Font_Configuration:Font Configuration] - Schriftkonfiguration im Arch-Wiki * [ubuntu:Fonts:] {en} im Ubuntu-Wiki * [http://www.webupd8.org/2013/06/better-font-rendering-in-linux-with.html Better Font Rendering In Linux With Infinality] {en} - Blogbeitrag, 06/2013 * [:Bildschirmauflösung:] # tag: Grafik, System, Schriften, Fonts, XServer