Расположение шрифтов TrueType

19

Я хотел бы создать небольшой скрипт, который устанавливает несколько шрифтов TrueType в системе пользователя. На моей машине с Ubuntu шрифты TrueType расположены по адресу /usr/share/fonts/truetype. Однако я не уверен, что это место одинаково на всех машинах. Есть ли способ узнать, где хранятся шрифты TrueType в любой системе Linux?

Обновление
После некоторых исследований я обнаружил, что путь usr/share/fonts/truetypeуказан в файле XML /etc/fonts/fonts.conf. Это файл XML, поэтому я могу использовать XPath для получения директории:

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

Однако я не знаю, будет ли этот файл существовать на всех (или на большинстве) системах Linux.

StackedCrooked
источник

Ответы:

20

Каждый шрифт, который находится в любом подкаталоге /usr/share/fontsи ~/.fontsсканируется и добавляется в коллекцию, которую вы можете использовать. Так что, пока ваш шрифт находится в одном из этих двух каталогов, он находится в правильном расположении, это местоположение одинаково почти для всех основных дистрибутивов Linux.

Обновить:

Кстати, я могу подтвердить, что этот fonts.confфайл присутствует как в Fedora, так и в Ubuntu (и их производных: Xubuntu, Lubuntu, Linux Mint, Cinnammon, Peppermint OS, Fedora и всех его спинах, если упомянуть некоторые).

arielnmz
источник
Тогда, почему у меня есть шрифты Firefoxи gnome-font-viewerкоторые не существуют в этих местах ( /usr/share/fontsа ~/.fonts)? Я использую Fedora 28
Бухгалтер م
4

В Fedora путь к папке /home/{user}/.local/share/fonts

Вы можете скопировать / вставить файлы шрифтов здесь.

AliMo
источник
0

Может быть, вы могли бы подумать о создании пакета со своими шрифтами. Это небольшая работа по созданию файлов описания пакета и правил создания. Но вы получаете возможность обновлять и удалять бесплатно. Для Ubuntu вы должны создать .deb файлы.

Дидье Троссет
источник
0

Все дистрибутивы различны, лучше установить путь по умолчанию и позволить пользователю выбирать между стандартным и пользовательским.

Редактировать:

На мой взгляд, у вас есть три решения, потому что для этого нет переменной или функции среды.

  1. Установите путь по умолчанию и позвольте пользователю выбирать между стандартным и пользовательским.
  2. Как сказал dtrosset, вы можете создавать пакеты со своими шрифтами для разных дистрибутивов.
  3. Вы можете использовать if / elif / else и test -e, чтобы определить, существуют ли разные пути сервера шрифтов. Если никого не существует, покажите путь по умолчанию и позвольте пользователю выбирать между ним и пользовательским.

Пример:

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 Это только мое мнение ...

geek1983
источник
-1 Взломать Это не решение, и в этом случае это только вызовет горе для разработчика, StackedCrooked, поскольку мы не можем зависеть от того, знает ли каждый пользователь, где находятся его файлы ttf. Если даже разработчик даже не знает, где находятся файлы, как мы можем ожидать, что пользователь узнает?
Нитродист