Библиотека сайта rus-linux.net
Шрифты в дистрибутивах ALT Linux
Алексей Новодворский
Протокол X11 и шрифты
Протокол X11, разработанный в середине 80-х годов, определяет взаимодействие между приложением и системой отображения графики. Приложения называется клиентом X11, а система отображения — сервером X11. Таким образом, вопреки сложившимся житейским представлениям, сервер X11 работает на компьютере или X-терминале пользователя, а приложение (клиент X11) может быть запущено как локально, так и удалённо.
Протокол X11 представляет шрифт как набор матриц из нулей и единиц (растров). Каждый шрифт имеет ряд характеристик (имя, размер, кодировка и т.д.). Сервер ищет требуемый приложением растр шрифта с запрошенными свойствами сам, при помощи своего шрифтового модуля, или обращается за ним к специальному серверу шрифтов, запущенному локально или удалённо. Таким образом, протокол X11 был изначально ориентирован на работу с растровыми (bitmap) шрифтами (PCF, BDF), при этом приложение (клиент) может лишь запрашивать шрифт, но само с его растрами не работает.
С ростом возможностей печатающих устройств, они стали использовать
масштабируемые шрифты, задаваемые векторно, что позволило легко
масштабировать их, а также осуществлять другие преобразования.
Более того, при выводе на качественные устройства печати символы
шрифтов отображаются не одним цветом, а оттенками цвета, что
позволяет создать эффект сглаживания (антиалиасинга). UNIX
™
прекрасно справлялся и справляется с красивой печатью масштабируемыми
шрифтами при помощи знаменитых программ nroff (groff в
варианте GNU), TeX,
Ghostscript, но программы просмотра выходных форматов этих
программ не пользуются шрифтовыми возможностями протокола
X, ограниченного
растром, а посылают серверу X уже
сформированную картинку, что сильно замедляет работу и делает
практически невозможным динамическое отображение текста в процессе
набора или использование его в элементах интерфейса.
Для использования в оконной системе X
масштабируемых шрифтов (Type1,
TTF, Speedo), необходимо
преобразовывать их символы (глифы) в растры. В свободной реализации
X, XFree86, это делает
либо сам сервер X11, собранный с библиотекой
растеризации freetype1
(сейчас это более
распространённый способ), либо сервер шрифтов. При этом существенно
увеличивается количество доступных шрифтов, появляется возможность
использовать для отображения и печати одни и те же шрифты, но вот
качество отображения оставляет желать лучшего, так как на экране
символ по-прежнему остаётся одноцветным, без полутонов, т.е.
сглаживания.
Сглаживание шрифтов
Сглаживание шрифтов в XFree86, не модифицирующее протокол X11,
было реализовано около двух лет назад. Для создания картинки из
глифа использовалась библиотека freetype2
[1], для отрисовки
её на экране с использованием, при возможности, аппаратной акселерации —
расширение Render
сервера X, а для управления шрифтами и взаимодействия
с расширением Render
— библиотека Xft1
.
Важно, что картинка сглаженного глифа создаётся клиентом из шрифтов
на стороне клиента, а расширение Render
на стороне
сервера X11 отрисовывает её, согласуя с фоном. При этом расширение
Render
аппаратно-зависимо и, к сожалению, существует
не для всех видеочипов. Тем более его нет на стандартных X-терминалах.
Вот почему сглаживание шрифтов, использующее библиотеку
Xft1
, работает не на всех системах.
Летом 2002 года Кейт Паккард (Keith Packard), автор новой концепции
рендеринга для X и библиотеки Xft1
, выпустил её новую, переработанную
редакцию — Xft2
. Кейт выделил библиотеку управления шрифтами
клиента, назвав её fontconfig, а в Xft2
добавил возможность отрисовки
на сервере X11 картинок сглаженных глифов даже в том случае, если расширения
Render
на нем нет. При этом, конечно, трафик между
клиентом и сервером заметно возрастает.
Управление шрифтами
Сервер X
Каталоги со шрифтами, управляемыми самим сервером X11,
описываются в секции «Files» файла конфигурации
/etc/X11/XF86Config-4
(здесь и далее
приводится расположение файлов, принятое в ALT Linux).
В каждом таком каталоге должен быть файл
fonts.dir
(созданный, например, при помощи
утилиты mkfontdir для каталогов с
растровыми шрифтами и утилитой
ttmkfdir — для каталогов с TTF)
с описанием шрифтов и, возможно, файл
fonts.alias
с альтернативными описаниями
шрифтов каталога. Для того чтобы изменения в секции
«Files» (равно как и в других секциях
XF86Config
) вступили в силу, требуется
перезапуск сервера X11. В то же время, добавить или удалить
шрифты в процессе работы можно при помощи утилиты
xset [+|-]fp. В стандартной конфигурации XFree86 в
ALT Linux
непосредственное управление шрифтами сервером X не используется.
Сервер шрифтов xfs
В большинстве современных дистрибутивов Linux
для управления
шрифтами X11 используется сервер шрифтов xfs. Для того, чтобы
указать серверу X11 на необходимость обращения к серверу шрифтов,
достаточно указать в XF86Config-4
его сетевой
адрес и протокол доступа. В случае, если xfs запущен локально, в
XF86Config-4
есть строчка
FontPath "unix/:-1"
в секции «Files». Каталоги со шрифтами перечисляются в
/etc/X11/fs/config/
. Самый удобный способ добавления/удаления
каталогов шрифтов — утилита
chkfontpath, которая изменяет файл
настроек xfs и перезапускает сервер шрифтов.
Просмотреть шрифты, доступные системе, можно при помощи программы xfontsel.
Управление шрифтами клиента средствами fontconfig
Файл системных настроек шрифтов клиента, управляемых при помощи
библиотеки fontconfig, ./etc/fonts/fonts.conf
, представляет из себя файл
в разметке XML. Его формат описан в man-странице
fontconfig. Утилита
fc-list позволяет увидеть список доступных
шрифтов, а утилита fc-cache —
пересоздать файлы описания fonts.cache-NN
для
каталогов со шрифтами. Утилита fontconfig
позволяет управлять не только масштабируемыми, но и растровыми шрифтами
в кодировке iso10646-1
(Unicode).
Система управления шрифтами на основе
fontconfig позволяет пользователю легко
добавлять новые шрифты без перезапуска серверов. Для этого достаточно
разместить их в каталоге ~/.fonts
и выполнить команду
fc-cache ~/.fonts
Шрифты станут доступны всем вновь запущенным приложениям, использующим fontconfig.
Утилита fontconfig используется не только приложениями, работающими
с сервером X, но и, например, библиотекой печати
gnome-print2
. Унификация управления шрифтами,
которую предлагает fontconfig, — одна из задач, которую предстоит
решить в ближайшем будущем.
Другие средства управления шрифтами
Свои средства подключения и настройки шрифтов имеют интерпретатор языка PostScript — GNU GhostScript, издательская система TeX, программы форматирования текстов groff и GNU enscript.
Расположение файла описания шрифтов GhostScript —
Fontmap
, а также каталогов со шрифтами, определяется
системной переменной GS_LIB
. В ALT Linux файл
Fontmap
находится в каталоге
/etc/gs
. Значение переменной
GS_LIB
удобно наблюдать в выводе команды
gs -help.
В пакете teTeX-2.0
, входящем в
дистрибутивы Master и Junior, значительно улучшена
и упрощена работа со шрифтами Type1. Именно они, а не
шрифты Metafont, как ранее, являются основными в нашем
пакете.
Шрифты в ALT Linux Master и Junior
Растровые шрифты
Основными растровыми шрифтами в
distro
являются шрифты misc
из поставки
XFree86
, а также шрифты Дмитрия Болховитянова
XFree86-cyr_rfx-75dpi
в различных кириллических
кодировках и шрифты XFree86-75dpi-unicode
,
созданные ASP Linux путём объединения шрифтов
XFree86
и шрифтов Дмитрия Болховитянова.
Для правильной работы некоторых приложений с кириллицей важно, чтобы
шрифты в требуемой кириллической кодировке стояли первыми в списке
шрифтов xfs. При установке системы это требование соблюдается, но
если вы изменили основную кодировку системы, то может понадобиться
доустановить пакет шрифтов в новой кодировке и поменять порядок путей
в /etc/X11/fs/config
.
Масштабируемые шрифты
Type1
Свободные шрифты Type1
в
distro
стали
основными шрифтами для приложений, использующих сглаживание
(антиалиасинг). Современные версии библиотеки
freetype2
позволяют
обеспечить их качественный рендеринг.
Большинство приложений Qt/KDE
и Gtk+2/GNOME 2 используют по
умолчанию шрифты пакета urw-fonts
с
кириллическими глифами Валентина Филиппова. Эти же шрифты используются
при печати из большинства приложений.
Мы рекомендуем также установить пакеты свободных шрифтов
sharatype-fonts
и
dmtr40in-fonts
, созданных Сергеем Шарашкиным
(на основе шрифтов bitstream
) и Дмитрием Сорокиным
(оригинальный шрифт XlinSans
).
Пакет шрифтов cm-super
, созданный Владимиром
Воловичем на основе шрифтов Ольги Лапко, является основным для нашего
пакета teTeX
, но, отчасти, может быть использован
для отображения и печати. Система именования шрифтов в
TeX и библиотеках, работающих со шрифтами
Type1
, отличается, потому большинство этих прекрасных
шрифтов пока недоступны вне TeX.
Наконец, в Master включены декоративные шрифты проекта Vedi [2]. Они не свободные, но бесплатные для многих применений — не забудьте ознакомиться с их лицензией.
True Type
Если вы используете сглаживание, то в установке шрифтов
True Type
нет большой необходимости. В противном
случае, можно установить пакет val-ttf
, созданный
Валентином Филипповым на основе urw-fonts
.
Сглаживание шрифтов
По умолчанию сглаживание шрифтов включено в приложениях
Qt/KDE,
Gtk+2/GNOME и
Mozilla. В
WindowMaker, fvwm2,
waimea, xjed оно
также доступно, но по умолчанию выключено. В документации к
соответствующим пакетам
(/usr/share/doc/<имя пакета>-<версия>
)
вы можете прочитать о способах настройки шрифтов в этих приложениях.
Выключить сглаживание шрифтов в KDE и
GNOME 2 можно через меню настроек этих систем, а
также установив в «0» системные переменные
QT_XFT
и GDK_USE_XFT
соответственно.
Установка шрифтов
Мы настоятельно рекомендуем всем пользователям тщательно проверять
любые шрифты, не входящие в комплект
distro
, перед их
установкой в системные каталоги, используя пользовательскую установку
при помощи xset [+|-]fp или fc-cache, как это было
описано выше в этой главе.
Если шрифты уже проверены, то лучший способ их установки — сборка шрифтового пакета на примере пакетов, входящих в Master. Если со сборкой таких пакетов возникают проблемы, то можно обратиться за консультацией в наши списки рассылки.
[1] http://www.freetype.org
[2] http://vedi.d-s.ru
(c) ALT Linux 2002
Россия, Москва, Волхонка 14/5, офис 519.
Телефон/Факс: +7 095 2039698
Е-mail: org @ altlinux.ru