Lokalizacja czcionek typu truetype

19

Chciałbym stworzyć mały skrypt, który instaluje kilka czcionek typu truetype w systemie użytkownika. Na moim komputerze Ubuntu czcionki Truetype znajdują się pod adresem /usr/share/fonts/truetype. Nie jestem jednak pewien, czy ta lokalizacja jest taka sama na wszystkich komputerach. Czy istnieje sposób, aby dowiedzieć się, gdzie są przechowywane czcionki truetypes w dowolnym systemie Linux?

Aktualizacja
Po kilku badaniach odkryłem, że ścieżka usr/share/fonts/truetypejest określona w pliku XML /etc/fonts/fonts.conf. Jest to plik XML, więc mogę użyć XPath, aby uzyskać katalog:

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

Nie wiem jednak, czy ten plik będzie istniał na wszystkich (lub większości) systemach Linux.

StackedCrooked
źródło
Zobacz także fc-cache(1)stronę man , która pozwala dodawać nowe czcionki do systemu.
jww

Odpowiedzi:

20

Każda czcionka, która znajduje się pod każdym podkatalogu /usr/share/fontsi ~/.fontsjest skanowany i dodawane do kolekcji jesteś w stanie wykorzystać. Tak długo, jak twoja czcionka znajduje się w jednym z tych dwóch katalogów, jest poprawnie zlokalizowana, ta lokalizacja jest taka sama dla prawie każdej większej dystrybucji Linuksa.

Aktualizacja:

Przy okazji mogę potwierdzić, że fonts.confplik jest obecny zarówno w Fedorze, jak i Ubuntu (i ich pochodnych: Xubuntu, Lubuntu, Linux Mint, Cinnammon, Peppermint OS, Fedora i wszystkich jego spinach, aby wymienić niektóre).

arielnmz
źródło
1
Dlaczego mam czcionki Firefoxi gnome-font-viewerktóre nie istnieją w tych lokalizacjach ( /usr/share/fontsi ~/.fonts)? Korzystam z Fedory 28
księgowego م
Możesz także FONTCONFIG_PATHnajpierw sprawdzić . FONTCONFIG_PATHsłuży do zastąpienia domyślnego katalogu konfiguracji.
jww
4

W Fedorze ścieżka do folderu to /home/{user}/.local/share/fonts

tutaj możesz skopiować / wkleić pliki czcionek.

AliMo
źródło
1

Wszystkie dystrybucje są różne, lepiej ustawić domyślną ścieżkę i pozwolić użytkownikowi wybrać między domyślną a niestandardową.

Edytować:

Moim zdaniem masz trzy rozwiązania, ponieważ nie ma do tego zmiennej środowiskowej ani funkcji.

  1. Ustaw domyślną ścieżkę i pozwól użytkownikowi wybrać między domyślną a niestandardową.
  2. Jak powiedział dtrosset, możesz tworzyć paczki z czcionkami dla różnych dystrybucji.
  3. Możesz użyć if / elif / else i przetestować -e, aby ustalić, czy istnieją różne ścieżki serwera czcionek. Jeśli nikogo nie ma, pokaż domyślną ścieżkę i pozwól użytkownikowi wybrać między nią a ścieżką niestandardową.

Dawny:

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 To tylko MOJA opinia ...

geek1983
źródło
-1 Hack. To nie jest rozwiązanie i spowoduje tylko nieszczęście dla programisty, StackedCrooked, w tym przypadku, ponieważ nie możemy polegać na tym, że każdy użytkownik wie, gdzie znajdują się jego pliki ttf. Jeśli nawet programista nawet nie wie, gdzie są pliki, to jak mamy oczekiwać, że użytkownik się dowie?
Nitrodist,
Możesz także FONTCONFIG_PATHnajpierw sprawdzić . FONTCONFIG_PATHsłuży do zastąpienia domyślnego katalogu konfiguracji.
jww
0

Może warto rozważyć utworzenie pakietu z czcionkami. Trochę pracy zajmuje tworzenie plików opisu pakietu i reguł tworzenia. Ale zyskujesz możliwość aktualizacji i odinstalowywania za darmo. W systemie Ubuntu należy utworzyć pliki .deb.

Didier Trosset
źródło