Speicherort der TrueType-Schriftarten

19

Ich möchte ein kleines Skript erstellen, das einige TrueType-Schriftarten auf dem System des Benutzers installiert. Auf meinem Ubuntu-Rechner befinden sich die TrueType-Schriften unter /usr/share/fonts/truetype. Ich bin mir jedoch nicht sicher, ob dieser Speicherort auf allen Computern identisch ist. Gibt es eine Möglichkeit herauszufinden, wo TrueType-Schriftarten auf einem Linux-System gespeichert sind?

Update
Nach einigen Recherchen habe ich festgestellt, dass der Pfad usr/share/fonts/truetypein der XML-Datei angegeben ist /etc/fonts/fonts.conf. Es ist eine XML-Datei, daher kann ich XPath verwenden, um das Verzeichnis abzurufen:

xpath -q -e 'fontconfig/dir[1]/text()[1]' /etc/fonts/fonts.conf

Ich weiß jedoch nicht, ob diese Datei auf allen (oder den meisten) Linux-Systemen vorhanden sein wird.

StackedCrooked
quelle

Antworten:

20

Jede Schriftart, die sich in einem beliebigen Unterverzeichnis von befindet /usr/share/fontsund ~/.fontsgescannt und der Sammlung hinzugefügt wird, die Sie verwenden können. Solange sich Ihre Schriftart in einem dieser beiden Verzeichnisse befindet, ist diese Position für fast alle wichtigen Linux-Distributionen gleich.

Aktualisieren:

Übrigens kann ich bestätigen, dass die fonts.confDatei sowohl auf Fedora als auch auf Ubuntu vorhanden ist (und ihre Derivate: Xubuntu, Lubuntu, Linux Mint, Cinnammon, Peppermint OS, Fedora und all seine Drehungen, um nur einige zu nennen).

arielnmz
quelle
Warum habe ich dann Schriftarten in Firefoxund gnome-font-viewerwelche sind an diesen Orten ( /usr/share/fontsund ~/.fonts) nicht vorhanden ? Ich benutze Fedora 28
Accountant م
4

In Fedora lautet der Ordnerpfad /home/{user}/.local/share/fonts

Hier können Sie Schriftdateien kopieren / einfügen.

AliMo
quelle
0

Vielleicht können Sie ein Paket mit Ihren Schriften erstellen. Es ist ein bisschen Arbeit, die Paketbeschreibungsdateien und Erstellungsregeln zu erstellen. Sie erhalten jedoch die Möglichkeit, Updates und Deinstallationen kostenlos durchzuführen. Für Ubuntu sollten Sie .deb-Dateien erstellen.

Didier Trosset
quelle
0

Bei allen Distributionen handelt es sich um Unterschiede. Sie sollten einen Standardpfad festlegen und den Benutzer zwischen einem Standardpfad und einem benutzerdefinierten Pfad wählen lassen.

Bearbeiten:

Meiner Meinung nach haben Sie drei Lösungen, da es dafür keine Umgebungsvariable oder -funktion gibt.

  1. Legen Sie einen Standardpfad fest und lassen Sie den Benutzer zwischen dem Standardpfad und einem benutzerdefinierten Pfad wählen.
  2. Wie dtrosset bereits sagte, können Sie mit Ihren Schriften Pakete für die verschiedenen Distributionen erstellen.
  3. Sie können if / elif / else und test -e verwenden, um festzustellen, ob die verschiedenen Schriftserverpfade vorhanden sind. Wenn es keinen gibt, zeigen Sie den Standardpfad an und lassen Sie den Benutzer zwischen diesem und einem benutzerdefinierten Pfad wählen.

Ex:

DEFAULT="$home/.fonts/"
UBUNTU_XFSTT="/usr/share/fonts/truetype/"
RHL52_XFS="/usr/X11R6/lib/X11/fonts/ttfonts/"
RHL6_XFSTT="/usr/X11R6/lib/X11/fonts/"
DEBIAN_XFSTT="/usr/share/fonts/truetype/"

#Test if directory exist
if test -e ${UBUNTU_XFSTT} ; then
    echo ${UBUNTU_XFSTT}
elif test -e ${RHL52_XFS} ; then
    echo ${RHL52_XFS}
elif test -e ${RHL6_XFSTT} ; then
    echo ${RHL6_XFSTT}
elif test -e ${DEBIAN_XFSTT} ; then
    echo ${DEBIAN_XFSTT}
else
    echo ${DEFAULT}
fi

PS Das ist nur MEINE Meinung ...

geek1983
quelle
-1 Hack. Dies ist keine Lösung und wird in diesem Fall nur dem Entwickler StackedCrooked zu schaffen machen, da wir uns nicht darauf verlassen können, dass jeder Benutzer weiß, wo sich seine ttf-Dateien befinden. Wenn selbst der Entwickler nicht einmal weiß, wo sich die Dateien befinden, wie soll dann von einem Benutzer erwartet werden, dass er es weiß?
Nitrodist