Установить пользовательский шрифт в Linux (Windows AddFontResource эквивалент)

0

Как установить пользовательский шрифт в Linux, либо непосредственно из C++, либо с помощью системной команды?
Я имею в виду какой-то способ, как AddFontResource в окнах.

  • 0
    Вы хотите установить шрифт для консоли или X?
  • 0
    Просто для X, чтобы можно было использовать, например, в zenity .
Теги:

1 ответ

2
Лучший ответ

Ответ зависит от рабочего процесса для распространения и запуска вашей программы. Если это программный пакет, который установлен системным администратором, то шрифт следует поместить в каталог системных шрифтов (обычно это каталог под /usr/share/fonts/, например /usr/share/fonts/ttf/), когда пакет устанавливается. Если программа устанавливается непривилегированным пользователем, файл шрифта должен перейти в $HOME/.fonts/.

Если шрифт установлен в общесистемной системе, он появляется [автоматически] в системе (у типичного дистрибутива Linux уже есть соответствующие перехваты в подсистеме управления пакетами для восстановления кешей шрифтов). Если шрифт установлен "вручную" (например, пользователь просто копирует файл в свой файл $HOME/.fonts/), тогда может потребоваться вызов fc-cache --force.

Более подробное объяснение: шрифты в современной установке Linux управляются подсистемой под названием fontconfig. Эта подсистема имеет общесистемную конфигурацию (по умолчанию находится в /etc/fonts/fonts.conf и /etc/fonts/conf.d/) и конфигурации для каждого пользователя (проверяются различные местоположения). Fontconfig поддерживает кеш всех шрифтов, зарегистрированных в системе. Когда кто-то хочет зарегистрировать другой шрифт, он или она помещает файл шрифта в один из каталогов, известных как fontconfig и инициирует fc-cache утилиты кэша w/fc-cache. Если шрифт установлен в системном масштабе, тогда система упаковки обычно имеет соответствующие перехватчики, которые автоматически вызывают fc-cache при создании или удалении файла в "хорошо известном каталоге шрифтов".

Ещё вопросы

Сообщество Overcoder
Наверх
Меню