Wie verwaltet Linux Schriftarten?


11

Als ich Windows (vor sehr langer Zeit!) Und Mac OS X verwendete, gab es immer ein zentrales "Repository" von Schriftarten, die vom Betriebssystem und allen Programmen gemeinsam genutzt wurden und auf die zugegriffen wurde (der Schriftartenordner in Windows und das Schriftbuch in Mac) OS X).

Wie werden Schriftarten unter Linux verwaltet? Gibt es auch einen zentralen Speicher für Schriftarten, den alle Programme (die Shell ohne X, mit X, Fenstermanager, andere GUI-Software) verwenden können? Oder werden Schriftarten separat verwaltet? Was kann ich tun, um meine Schriftarten unter Linux effizient und einfach zu verwalten?

Antworten:


13

Es gibt zwei Mechanismen für Schriftarten in X Land: serverseitig und clientseitig.

Die herkömmliche Methode zum Rendern von Schriftarten besteht darin, dass der Client dem Server mitteilt, dass fooan Position (x, y) in Schriftart F gerendert wird (wobei eine Schriftartspezifikation ein Gesicht, eine Größe, eine Codierung und andere Attribute enthält). Entweder der X-Server selbst oder ein spezielles Programm namens Font Server öffnet die Font-Datei, um die Beschreibung der einzelnen Glyphen zu erstellen. Die Schriftarten können Bitmap- oder Vektorschriftarten sein, die Vektorschriftarten werden jedoch vor dem Rendern in Bitmaps konvertiert.

Die meisten modernen Programme verwenden clientseitiges Font-Rendering, häufig über xft und fontconfig . Ein neuer Mechanismus wurde benötigt, da das serverseitige Rendern von Schriftarten kein Anti-Aliasing unterstützte.

Außerhalb von X (dh auf einer VGA-Konsole) gibt es VGA-Schriftarten, bei denen es sich um Bitmap-Schriftarten bestimmter Größen handelt. Im Vergleich zu X11 verwendet jedoch niemand die VGA-Konsole, sodass nicht viel Aufwand für sie aufgewendet wird.

In der Praxis möchten Sie Schriftarten auf zwei Arten konfigurieren:

  • Für Programme älteren Stils: Die Schriftartenverzeichnisse werden über FontPathAnweisungen in aufgelistet xorg.confund können xset fpvom Benutzer, der X ausführt, mit Befehlen bearbeitet werden. Wenn Sie neue Schriftarten installieren, müssen Sie diese möglicherweise ausführen mkfontdir.
  • Für neuere Programme, einschließlich aller Programme Gtk (Gnome usw.) und Qt (KDE usw.): Die Schriftarten befinden sich in den durch angegebenen Verzeichnissen <dir> Richtlinien /etc/fonts/fonts.conf, ~/.fonts.confund ein paar anderen Orten. Weitere Informationen finden Sie in der Dokumentation zu fontconfig . Wenn Sie neue Schriftarten installieren, müssen Sie diese möglicherweise ausführen fc-cache.

3

Konsolen- und X-Schriftarten sind unter Linux zwei getrennte Dinge. Verwenden Sie den Befehl setfont, um Ihre Schriftart zu ändern und showconsolefontzu sehen, wie sie aussieht. Jede Distribution hat ihre eigene Art, die Standardschriftart der Konsole festzulegen. In der setfontManpage finden Sie die Position der Konsolenschriftarten. Für mein Fedora 14-System ist es / lib / kbd / consolefonts /. Konsolenschriftarten sind ein Dateiformat, das EGA / VGA-Konsolenschriftarten definiert.

X-Schriftarten haben ein anderes Format als Konsolenschriftarten. Sie werden normalerweise von Definitionen in Ihrer X-Konfiguration (mit FontPath im Abschnitt "Dateien") oder von einem Schriftserver (xfs) verarbeitet, der auch im Abschnitt "Dateien" mit FontPath festgelegt ist. Sie können FontPaths auch durch Ausführen hinzufügen xset +fp path. Mein System verfügt über alle X-Schriftarten in / usr / share / X11 / fonts.


Bedeutet das also, dass alle GUI-Programme, die auf X ausgeführt werden, die X-Schriftarten verwenden?
hpy

1
@penyuan: Nicht unbedingt, aber in den meisten Fällen ja. Viele GUI-Programme verwenden übergeordnete Bibliotheken (wie GTK oder Qt), die die Schriftarten für Sie verwalten.
jsbillings

Beachten Sie, dass Dokumente (z. B. (La) TeX) noch einen anderen Satz von Schriftarten verwenden.
vonbrand
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.