So installieren und verwalten Sie Schriftarten unter Linux
Schriftarten sind ein wirklich wichtiger Teil der Benutzererfahrung. Auf den am häufigsten verwendeten Linux-basierten Distributionen gibt es viele verpackte Schriftarten, die mit dem nativen Paketmanager installiert werden können. Manchmal möchten wir jedoch einige Schriftarten manuell installieren. In diesem Tutorial sehen wir, wie man einen solchen Vorgang durchführt und allgemeiner, wie Schriftarten unter Linux verwaltet werden.
In diesem Tutorial lernen Sie:
- Wie Schriftarten über die fontconfig-Bibliothek konfiguriert werden
- So generieren und aktualisieren Sie den Schriftarten-Cache
- So erhalten Sie die Liste der installierten Schriftarten mit fc-list
- So installieren Sie Schriftarten manuell
Verwendete Softwareanforderungen und Konventionen
Die fontconfig-Bibliothek
Auf Linux-basierten Betriebssystemen werden Schriften über die Bibliothek fontconfig verwaltet. Die Verzeichnisse, in denen die Schriftarten installiert werden sollen, sind in der Konfigurationsdatei /etc/fonts/font.conf deklariert:
<!-- Font directory list -->
<dir>/usr/share/fonts</dir>
<dir>/usr/share/X11/fonts/Type1</dir> <dir>/usr/share/X11/fonts/TTF</dir> <dir>/usr/local/share/fonts</dir>
<dir prefix="xdg">fonts</dir>
<!-- the following element will be removed in the future -->
<dir>~/.fonts</dir>
Wie Sie sehen können, werden Verzeichnisse, die nach Schriftartdateien durchsucht werden, mit dem Tag <dir> deklariert. Die folgenden Verzeichnisse sind standardmäßig festgelegt:
- /usr/teilen/schriftarten
- /usr/share/X11/fonts/Type1
- /usr/share/X11/fonts/TTF
- /usr/local/share/fonts
- ~/.Schriftarten
Das prefix-Attribut des Tags <dir> kann verwendet werden, um dem übergebenen Verzeichnis automatisch ein bestimmtes Präfix voranzustellen. In der folgenden Zeile hat das prefix-Attribut z. B. den Wert xdg. Das bedeutet, dass dem übergebenen Verzeichnis eine XDG_DATA_HOME Variable vorangestellt wird:
<dir prefix="xdg">fonts</dir>Das prefix-Attribut kann auch auf default oder cwd gesetzt werden: In diesen Fällen wird das aktuelle Arbeitsverzeichnis als Präfix verwendet. Wenn der Wert von prefix relativ ist, wird dem übergebenen Verzeichnis schließlich der Pfad des Verzeichnisses vorangestellt, das die Konfigurationsdatei enthält.
Diese systemweite Konfigurationsdatei sollte nicht an Ort und Stelle geändert werden, da sie durch zukünftige Systemupdates überschrieben werden könnte. Benutzerdefinierte Einstellungen sollten stattdessen in die Datei /etc/fonts/local.conf eingefügt werden, die erstellt werden sollte, falls sie nicht existiert. Es können auch Konfigurationen pro Benutzer erstellt werden:
- $XDG_CONFIG_HOME/fontconfig/fonts.conf
- ~/.fonts.conf
Schrift-Dienstprogramme
Im fontconfig-Paket sind einige Dienstprogramme enthalten, mit denen wir auf einfache Weise nützliche Operationen durchführen können, wie z.B. das erneute Generieren des Schriftarten-Cache oder das Auflisten der installierten Schriftarten. Sehen wir uns ein Beispiel für ihre Verwendung an.
Generieren und Aktualisieren des Schriftarten-Cache
Um die Verzeichnisse, in denen Schriftarten gespeichert sind, erneut zu scannen und den Schriftarten-Cache neu zu erstellen (normalerweise möchten wir dies nach der Installation einer neuen Schriftart tun), können wir das Dienstprogramm fc-cache verwenden. Wenn das Dienstprogramm ohne Argument aufgerufen wird, scannt es alle konfigurierten Verzeichnisse erneut:
fc-cacheUm stattdessen nur ein bestimmtes Verzeichnis scannen zu lassen, können wir es als Argument an den Befehl übergeben. Im folgenden Beispiel scannen wir nur das Verzeichnis /usr/share/fonts erneut. Die Option -v wird verwendet, um die Ausgabe ausführlicher zu gestalten:
fc-cache -v /usr/share/fonts
Font directories:
/usr/share/fonts
/usr/share/fonts: skipping, existing cache is valid: 0 fonts, 37 dirs
/usr/share/fonts/adobe-source-code-pro: skipping, existing cache is valid: 14 fonts, 0 dirs
/usr/share/fonts/cantarell: skipping, existing cache is valid: 11 fonts, 0 dirs
/usr/share/fonts/dejavu-sans-fonts: skipping, existing cache is valid: 9 fonts, 0 dirs
[...]
Im obigen Beispiel sehen Sie, dass die Neugenerierung übersprungen wird, wenn der vorhandene Cache als gültig betrachtet wird. Wenn wir den Prozess erzwingen wollen, können wir die Option -f an den Befehl übergeben:
fc-cache -v -f /usr/share/fonts
fc-cache /usr/share/fonts -vf
Font directories:
/usr/share/fonts
/usr/share/fonts: caching, new cache contents: 0 fonts, 37 dirs
/usr/share/fonts/adobe-source-code-pro: caching, new cache contents: 14 fonts, 0 dirs
/usr/share/fonts/cantarell: caching, new cache contents: 11 fonts, 0 dirs
/usr/share/fonts/dejavu-sans-fonts: caching, new cache contents: 9 fonts, 0 dirs
[...]
Abrufen einer Liste der verfügbaren Schriftarten mit fc-list
Um die Liste der aktuell verfügbaren Schriftarten auf unserem System von der Kommandozeile aus zu erhalten, können wir die fc-list verwenden:
fc-list
/usr/share/fonts/google-droid-sans-fonts/DroidSansTamil-Bold.ttf: Droid Sans,Droid Sans Tamil:style=Bold
/usr/share/fonts/julietaula-montserrat-fonts/Montserrat-Bold.otf: Montserrat:style=Bold
/usr/share/fonts/google-droid-sans-fonts/DroidSansArmenian.ttf: Droid Sans,Droid Sans Armenian:style=Regular
/usr/share/fonts/google-noto/NotoSans-CondensedBlack.ttf: Noto Sans,Noto Sans Condensed Black:style=Condensed Black,Regular
/usr/share/fonts/google-noto/NotoSansMono-SemiCondensedLight.ttf: Noto Sans Mono,Noto Sans Mono SemiCondensed Light:style=SemiCondensed Light,Regular
/usr/share/fonts/google-noto/NotoSansMono-CondensedMedium.ttf: Noto Sans Mono,Noto Sans Mono Condensed Medium:style=Condensed Medium,Regular
/usr/share/fonts/urw-base35/NimbusMonoPS-Italic.otf: Nimbus Mono PS:style=Italic
[...]
Wie Sie oben sehen können, gibt der Befehl für jede installierte Schriftart Folgendes zurück:
- Der Pfad der Schriftartdatei auf dem System
- Die Schriftfamilie
- Die Schriftart(en)
Weitere Informationen zu den installierten Schriftarten erhalten Sie, indem Sie das Dienstprogramm mit der Option -v aufrufen:
Pattern has 26 elts (size 32)
family: "Cantarell"(s) "Cantarell Thin"(s)
familylang: "en"(s) "en"(s)
style: "Thin"(s) "Regular"(s)
stylelang: "en"(s) "en"(s)
fullname: "Cantarell Thin"(s)
fullnamelang: "en"(s)
slant: 0(i)(s)
weight: 0(f)(s)
width: 100(f)(s)
foundry: "ABAT"(s)
file: "/usr/share/fonts/cantarell/Cantarell-Thin.otf"(s)
index: 0(i)(s)
outline: True(s)
scalable: True(s)
charset:
0000: 00000000 ffffffff ffffffff 7fffffff 00000000 ffffffff ffffffff ffffffff
0001: ffffffff fff3ffff fffffdff 7fffffff 00048000 00018003 1ffffff0 fc000cc0
0002: 0fffffff 008f3c00 02000000 00000000 00000000 de000000 3f001fc0 00000000
0003: 0806bfdf 01e243d8 00000000 04200000 ffffd770 fffffffb 00807fff 00000000
0004: ffffffff ffffffff ffffffff 003c0c0c 3fff0000 0fcfcc3f f3ff9807 03ffc3fc
0005: 3c000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
001e: 30f0f300 0cc3cc33 cc0ff3fc 0f00f3ff 408cc03f ffffffff ffffffff 03ffffff
001f: 3f3fffff ffffffff aaff3f3f 3fffffff ffffffff ffdfffff 6fcfffdf 7fdcffff
0020: 773f0fff 063d0047 00040010 03f10000 000003ff 37367ada 00000000 00000000
0021: 00480000 00004044 ffff0000 00000000 000f0200 00000000 00000000 00000000
0022: 46268064 00400800 00000100 00000037 00000000 00000000 00000000 00000000
0024: 00000000 00000008 00000000 00000000 00000000 00000000 00000000 00000000
0025: 00000000 00000000 00000000 00000000 00000000 00000000 00008c00 00000000
0027: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000300
00a7: 00000000 00000000 00000000 00000000 00001800 00000000 00000000 00000000
00fb: 00000006 00000000 00000000 00000000 00000000 00000000 00000000 00000000
(s)
lang: aa|ast|av|ay|az-az|ba|be|bg|bi|bin|br|bs|bua|ca|ce|ch|chm|co|cs|cv|cy|da|de|el|en|eo|es|et|eu|fi|fj|fo|fr|fur|fy|gd|gl|gn|gv|haw|ho|hr|hu|ia|ig|id|ie|ik|io|is|it|kaa|ki|kk|kl|ku-am|kum|kv|kw|ky|la|lb|lez|lt|lv|mg|mh|mk|mo|mt|nb|nds|nl|nn|no|nr|nso|ny|oc|om|os|pl|pt|rm|ro|ru|sah|se|sel|sh|sk|sl|sm|sma|smj|smn|so|sq|sr|ss|st|sv|sw|tg|tk|tl|tn|to|tr|ts|tt|tyv|uk|uz|vi|vo|vot|wa|wen|wo|xh|yap|zu|an|crh|csb|fil|hsb|ht|jv|kj|ku-tr|kwm|lg|li|mn-mn|ms|na|ng|nv|pap-an|pap-aw|qu|quz|rn|rw|sc|sg|sn|su|ty|za(s)
fontversion: 19726(i)(s)
capability: "otlayout:DFLT otlayout:latn"(s)
fontformat: "CFF"(s)
decorative: False(s)
postscriptname: "Cantarell-Thin"(s)
color: False(s)
symbol: False(s)
variable: False(s)
fonthashint: False(s)
order: 0(i)(s)
Wenn wir nur Informationen über ein bestimmtes Schriftmuster erhalten möchten, können wir es als Argument an den Befehl übergeben. Um beispielsweise Informationen für die Schriftarten zu erhalten, die mit "Cantarell" übereinstimmen, würden wir Folgendes ausführen:
fc-list cantarellWir würden ein Ergebnis erhalten, das dem folgenden ähnelt, wenn das Muster mit beliebigen Schriftarten übereinstimmt:
usr/share/fonts/cantarell/Cantarell-Light.otf: Cantarell,Cantarell Light:style=Light,Regular
/usr/share/fonts/cantarell/Cantarell-VF.otf: Cantarell:style=Bold
/usr/share/fonts/cantarell/Cantarell-Bold.otf: Cantarell:style=Bold
/usr/share/fonts/cantarell/Cantarell-ExtraBold.otf: Cantarell,Cantarell Extra Bold:style=Extra Bold,Regular
/usr/share/fonts/cantarell/Cantarell-VF.otf: Cantarell:style=Light
/usr/share/fonts/cantarell/Cantarell-VF.otf: Cantarell:style=Regular
/usr/share/fonts/cantarell/Cantarell-Thin.otf: Cantarell,Cantarell Thin:style=Thin,Regular
/usr/share/fonts/cantarell/Cantarell-VF.otf: Cantarell
/usr/share/fonts/cantarell/Cantarell-VF.otf: Cantarell:style=Extra Bold
/usr/share/fonts/cantarell/Cantarell-Regular.otf: Cantarell:style=Regular
/usr/share/fonts/cantarell/Cantarell-VF.otf: Cantarell:style=Thin
Eine Methode, um zu überprüfen, ob eine bestimmte Schriftart im System installiert ist, ist die Verwendung der Option -q beim Aufruf von fc-list. Wenn wir dies tun, wird die gesamte Ausgabe der Anwendung unterdrückt und 1 wird als Exit-Code zurückgegeben, wenn das übergebene Muster keine Übereinstimmungen erzeugt. Im folgenden Beispiel ist die Schriftart "foo" auf dem System nicht vorhanden. Wie Sie wahrscheinlich wissen, enthält die Variable $? den Exit-Code des letzten Befehls, der in der Shell gestartet wurde:
fc-list -q foo
echo $?
1
Installierte Schriftarten können auch auf der Basis einer bestimmten Eigenschaft gefiltert werden. Nehmen wir zum Beispiel an, wir möchten nur Informationen über Schriftarten erhalten, die den Stil "DemiLight" haben. Wir würden laufen:
fc-list :style=DemilightSobald der obige Befehl gestartet ist, wird die folgende Ausgabe auf dem von mir verwendeten System erzeugt:
/usr/share/fonts/google-noto-cjk/NotoSansCJK-DemiLight.ttc: Noto Sans CJK TC,Noto Sans CJK TC DemiLight:style=DemiLight,Regular
/usr/share/fonts/google-noto-cjk/NotoSansCJK-DemiLight.ttc: Noto Sans CJK JP,Noto Sans CJK JP DemiLight:style=DemiLight,Regular
/usr/share/fonts/google-noto-cjk/NotoSansCJK-DemiLight.ttc: Noto Sans CJK HK,Noto Sans CJK HK DemiLight:style=DemiLight,Regular
/usr/share/fonts/google-noto-cjk/NotoSansCJK-DemiLight.ttc: Noto Sans CJK KR,Noto Sans CJK KR DemiLight:style=DemiLight,Regular
/usr/share/fonts/google-noto-cjk/NotoSansCJK-DemiLight.ttc: Noto Sans CJK SC,Noto Sans CJK SC DemiLight:style=DemiLight,Regular
Auf die gleiche Weise würden wir die Eigenschaft lang verwenden, um Informationen nur für Schriftarten zu erhalten, die eine bestimmte Sprache unterstützen:
fc-list :lang=itInstallieren einer neuen Schriftart
Schriftarten mit einer kostenlosen und Open-Source-Lizenz werden in der Regel verpackt und in Linux-Distributionen enthalten, manchmal möchten wir jedoch eine bestimmte Schriftart installieren, die wir manuell aus dem Internet heruntergeladen haben. In solchen Fällen müssen wir nur die Schriftartendatei in das entsprechende Verzeichnis legen. Sehen wir uns ein Beispiel an. Angenommen, wir möchten die Google-Schriftart "JetBrains Mono" installieren. Das erste, was wir tun, ist, zur Google-Schriftartenseite zu navigieren:
Nachdem wir die heruntergeladene ZIP-Datei mit der Schriftartendatei heruntergeladen und extrahiert haben, müssen wir sie nur noch für unseren Benutzer verfügbar machen, indem wir sie in das Verzeichnis ~/.fonts oder ~/.local/share/fonts kopieren und dann den Schriftarten-Cache aktualisieren:
cp JetBrainsMono-Italic-VariableFont_wght.ttf ~/.local/share/fonts
fc-cache -vf
Schriftarten können auch mit grafischen Anwendungen wie GNOME-Schriftarten installiert werden (das Paket heißt gnome-fonts-viewer). Um eine Schriftart mit einer solchen Anwendung zu installieren, öffnen wir die Schriftartendatei mit ihr: Eine Vorschau der Schriftart wird angezeigt. Um mit der Installation fortzufahren, klicken wir einfach auf die Schaltfläche "Installieren":
Wenn KDE Plasma Desktop unsere bevorzugte Umgebung ist, heißt die native Anwendung, um die gleiche Operation durchzuführen, KFontView (leider unterstützt die Anwendung Wayland noch nicht und kann daher nur auf Xorg verwendet werden):
Schlüsse
In diesem Tutorial haben wir gesehen, wie man Schriftarten auf Linux-basierten Betriebssystemen verwaltet und installiert. Wir haben gelernt, dass Schriftarten über die Bibliothek "fontconfig" verwaltet werden, welche Konfigurationsdateien verwendet werden können und in welchen Verzeichnissen Schriftarten standardmäßig gehostet werden. Wir haben auch gesehen, wie man die verfügbaren Schriftarten auf dem System auflistet, wie man den Schriftarten-Cache neu generiert und wie man Schriftarten sowohl über die Befehlszeile als auch über grafische Anwendungen wie "GNOME Fonts " und "KFontView" installiert.



