18

Я хотел бы создать небольшой скрипт, который устанавливает несколько шрифтов 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.

4 ответа4

18

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

Обновить:

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

3

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

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

0

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

-1

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .