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


11

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

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

Ответы:


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.


Значит ли это, что все программы с графическим интерфейсом, работающие на X, будут использовать шрифты X?
HPY

1
@penyuan: Не обязательно, но в большинстве случаев да. Многие программы с графическим интерфейсом используют библиотеки более высокого уровня (например, GTK или Qt), которые управляют шрифтами для вас.
Jsbillings

Обратите внимание, что документы (например, (La) TeX) используют еще один набор шрифтов.
vonbrand
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.