Розташування шрифтів Truetype


19

Я хотів би створити невеликий сценарій, який встановлює декілька шрифтів truetype у системі користувача. На моїй машині Ubuntu шрифти Truetype розміщені за адресою /usr/share/fonts/truetype. Однак я не впевнений, чи це місце однакове на всіх машинах. Чи є спосіб дізнатися, де шрифти Truetypes зберігаються в будь-якій системі Linux?

Оновлення
Після деяких досліджень я виявив, що шлях usr/share/fonts/truetypeвказаний у файлі XML /etc/fonts/fonts.conf. Це XML-файл, тому я можу використовувати XPath, щоб отримати dir:

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

Я не знаю, однак, чи буде цей файл існувати у всіх (або більшості) систем Linux.

Відповіді:


20

Кожен шрифт, який знаходиться під будь-яким підкаталогом /usr/share/fontsта ~/.fontsсканується та додається до колекції, яку ви можете використовувати. Отже, поки ваш шрифт знаходиться в одному з цих двох каталогів, він розташований коректно, це розташування є однаковим майже для кожного головного дистрибутива Linux.

Оновлення:

До речі, я можу підтвердити, що fonts.confфайл присутній як у Fedora, так і в Ubuntu (та їх похідних: Xubuntu, Lubuntu, Linux Mint, Cinnammon, Peppermint OS, Fedora та всіх її спінах).


Тоді чому я маю шрифти Firefoxта gnome-font-viewerяких немає в цих місцях ( /usr/share/fontsі ~/.fonts)? Я використовую Fedora 28
Бухгалтер від

4

У Fedora шлях до папки є /home/{user}/.local/share/fonts

Ви можете скопіювати / вставити файли шрифтів тут.


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 Це лише моя думка ...


-1 Хак. Це не є рішенням, і це спричинить тільки горе для розробника, StackedCrooked, в цьому випадку, оскільки ми не можемо залежати від того, щоб кожен користувач знав, де знаходяться їх файли ttf. Якщо навіть розробник навіть не знає, де знаходяться файли, як ми повинні очікувати, що користувач дізнається?
Nitrodist
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.