Localização das fontes truetype

19

Gostaria de criar um pequeno script que instale algumas fontes truetype no sistema do usuário. Na minha máquina Ubuntu, as fontes truetype estão localizadas em /usr/share/fonts/truetype. No entanto, não tenho certeza se esse local é o mesmo em todas as máquinas. Existe uma maneira de descobrir onde as fontes de truetypes estão armazenadas em qualquer sistema Linux?

Atualização
Após algumas pesquisas, descobri que o caminho usr/share/fonts/truetypeestá especificado no arquivo XML /etc/fonts/fonts.conf. É um arquivo XML, para que eu possa usar o XPath para obter o diretório:

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

No entanto, não sei se esse arquivo existirá em todos (ou na maioria) dos sistemas Linux.

StackedCrooked
fonte

Respostas:

20

Todas as fontes localizadas em qualquer subdiretório /usr/share/fontse ~/.fontssão verificadas e adicionadas à coleção que você pode usar. Desde que sua fonte esteja dentro de um desses dois diretórios, ela está localizada corretamente, esse local é o mesmo para quase todas as principais distribuições Linux.

Atualizar:

A propósito, posso confirmar que o fonts.confarquivo está presente no Fedora e no Ubuntu (e seus derivados: Xubuntu, Lubuntu, Linux Mint, Cinnammon, Peppermint OS, Fedora e todos os seus spins, para citar alguns).

arielnmz
fonte
Então, por que tenho fontes Firefoxe gnome-font-viewerquais não existem nesses locais ( /usr/share/fontse ~/.fonts)? Eu uso o Fedora 28
Contador #
4

No Fedora, o caminho da pasta é /home/{user}/.local/share/fonts

você pode copiar / colar arquivos de fonte aqui.

AliMo
fonte
0

Talvez você possa considerar criar um pacote com suas fontes. É um pouco trabalhoso criar os arquivos de descrição do pacote e regras de criação. Mas você ganha a capacidade de atualizar e desinstalar gratuitamente. Para o Ubuntu, você deve criar arquivos .deb.

Didier Trosset
fonte
0

Todas as distribuições são diferentes, é melhor definir um caminho padrão e deixar o usuário selecionar entre o padrão e o personalizado.

Editar:

Na minha opinião, você tem três soluções, porque não há variável ou função de ambiente para isso.

  1. Defina um caminho padrão e deixe o usuário selecionar entre o padrão e o personalizado.
  2. Como o dtrosset disse, você pode criar pacotes com suas fontes para as diferentes distribuições.
  3. Você pode usar if / elif / else e test -e para determinar se existem diferentes caminhos do servidor de fontes. Se não houver ninguém, mostre o caminho padrão e deixe o usuário selecionar entre ele e um caminho personalizado.

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 Essa é apenas a minha opinião ...

geek1983
fonte
-1 Hack. Esta não é uma solução e só causará problemas ao desenvolvedor, StackedCrooked, nesse caso, já que não podemos depender de cada usuário saber onde estão seus arquivos ttf. Se mesmo o desenvolvedor nem sabe onde estão os arquivos, como devemos esperar que um usuário saiba?
Nitrodista 5/05