Как Linux управляет шрифтами?

11

Когда я использовал Windows (очень-очень давно!) И Mac OS X, всегда существовал центральный «репозиторий» шрифтов, используемых совместно и доступными для ОС и всех программ (папка шрифтов в Windows и Font Book в Mac OS X).

Как управляются шрифты в Linux? Существует ли также центральное хранилище для шрифтов, которое могут использовать все программы (оболочка без X, с X, диспетчеры окон, другое программное обеспечение с графическим интерфейсом)? Или шрифты управляются отдельно? Что я могу сделать, чтобы эффективно и легко управлять своими шрифтами в Linux?

HPY
источник

Ответы:

13

В X land есть два механизма для шрифтов: серверный и клиентский.

Традиционный способ рендеринга шрифтов заключается в том, что клиент сообщает серверу «рендеринг fooв позиции (x, y) шрифта F» (где спецификация шрифта включает в себя лицо, размер, кодировку и другие атрибуты). Либо сам X-сервер, либо специализированная программа, называемая сервером шрифтов , открывает файл шрифта для построения описания каждого глифа. Шрифты могут быть растровыми или векторными шрифтами, но векторные шрифты преобразуются в растровые изображения перед рендерингом.

Большинство современных программ используют рендеринг шрифтов на стороне клиента, часто через xft и fontconfig . Необходим новый механизм, потому что рендеринг шрифтов на стороне сервера не поддерживает сглаживание.

За пределами X (т. Е. На консоли VGA) имеются шрифты VGA, которые являются растровыми шрифтами определенных размеров. Но по сравнению с X11 никто не использует консоль VGA, поэтому на них не тратится много усилий.

На практике вы захотите настроить шрифты двумя способами:

  • Для программ более старого стиля: каталоги шрифтов перечислены в FontPathдирективах xorg.confи могут управляться xset fpкомандами пользователем, запускающим X. Если вы устанавливаете новые шрифты, вам может потребоваться запустить mkfontdir.
  • Для программ более нового стиля, включая все программы Gtk (Gnome и т. Д.) И Qt (KDE и т. Д.): Шрифты находятся в каталогах, указанных в <dir>директивах /etc/fonts/fonts.conf, ~/.fonts.confи в нескольких других местах. См. Документацию fontconfig для получения дополнительной информации. Если вы устанавливаете новые шрифты, вам может потребоваться запустить fc-cache.
Жиль "ТАК - прекрати быть злым"
источник
3

Консольные шрифты и X-шрифты - это две разные вещи в Linux. Используйте команду, setfontчтобы изменить ваш шрифт и showconsolefontпосмотреть, как он выглядит. Каждый дистрибутив имеет свой собственный способ установки шрифта консоли по умолчанию. Прочтите setfontсправочную страницу о расположении консольных шрифтов. Для моей системы Fedora 14 это / lib / kbd / consolefonts /. Консольные шрифты - это формат файла, который определяет консольные шрифты EGA / VGA.

Шрифты X отличаются от форматов консольных шрифтов. Как правило, они обрабатываются определениями в вашей конфигурации X (с FontPath в разделе «Файлы») или через сервер шрифтов (xfs), который также задается в разделе «Файлы» с помощью FontPath. Вы также можете добавить FontPaths, запустив xset +fp path. В моей системе все шрифты X находятся в / usr / share / X11 / fonts.

jsbillings
источник
Значит ли это, что все программы с графическим интерфейсом, работающие на X, будут использовать шрифты X?
HPY
1
@penyuan: Не обязательно, но в большинстве случаев да. Многие программы с графическим интерфейсом используют библиотеки более высокого уровня (например, GTK или Qt), которые управляют шрифтами для вас.
Jsbillings
Обратите внимание, что документы (например, (La) TeX) используют еще один набор шрифтов.
vonbrand