Ключевые слова:linux, font, rus, xfree86, x, ttf, truetype, xfs, (найти похожие документы)
From: Алексей Новодворский <aen.at.altlinux.ru>
Date: Mon, 14 May 2003 13:01:37 +0000 (UTC)
Subject: Шрифты в дистрибутивах ALT Linux
Оригинал: http://www.altlinux.ru/index.php?module=articles&action=show&artid=15
Шрифты в дистрибутивах ALT Linux
Алексей Новодворский
Протокол X11 и шрифты
Протокол X11, разработанный в середине 80-х годов, определяет
взаимодействие между приложением и системой отображения графики.
Приложения называется клиентом X11, а система отображения -- сервером
X11. Таким образом, вопреки сложившимся житейским представлениям,
сервер X11 работает на компьютере или X-терминале пользователя, а
приложение (клиент X11) может быть запущено как локально, так и
удалённо.
Протокол X11 представляет шрифт как набор матриц из нулей и единиц
(растров). Каждый шрифт имеет ряд характеристик (имя, размер,
кодировка и т.д.). Сервер ищет требуемый приложением растр шрифта с
запрошенными свойствами сам, при помощи своего шрифтового модуля, или
обращается за ним к специальному серверу шрифтов, запущенному локально
или удалённо. Таким образом, протокол X11 был изначально ориентирован
на работу с растровыми (bitmap) шрифтами (PCF, BDF), при этом
приложение (клиент) может лишь запрашивать шрифт, но само с его
растрами не работает.
С ростом возможностей печатающих устройств, они стали использовать
масштабируемые шрифты, задаваемые векторно, что позволило легко
масштабировать их, а также осуществлять другие преобразования. Более
того, при выводе на качественные устройства печати символы шрифтов
отображаются не одним цветом, а оттенками цвета, что позволяет создать
эффект сглаживания (антиалиасинга). UNIX(TM) прекрасно справлялся и
справляется с красивой печатью масштабируемыми шрифтами при помощи
знаменитых программ nroff (groff в варианте GNU), TeX, Ghostscript, но
программы просмотра выходных форматов этих программ не пользуются
шрифтовыми возможностями протокола X, ограниченного растром, а
посылают серверу X уже сформированную картинку, что сильно замедляет
работу и делает практически невозможным динамическое отображение
текста в процессе набора или использование его в элементах интерфейса.
Для использования в оконной системе X масштабируемых шрифтов (Type1,
TTF, Speedo), необходимо преобразовывать их символы (глифы) в растры.
В свободной реализации X, XFree86, это делает либо сам сервер X11,
собранный с библиотекой растеризации freetype1 (сейчас это более
распространённый способ), либо сервер шрифтов. При этом существенно
увеличивается количество доступных шрифтов, появляется возможность
использовать для отображения и печати одни и те же шрифты, но вот
качество отображения оставляет желать лучшего, так как на экране
символ по-прежнему остаётся одноцветным, без полутонов, т.е.
сглаживания.
Сглаживание шрифтов
Сглаживание шрифтов в XFree86, не модифицирующее протокол X11, было
реализовано около двух лет назад. Для создания картинки из глифа
использовалась библиотека freetype2 http://www.freetype.org, для
отрисовки её на экране с использованием, при возможности, аппаратной
акселерации -- расширение 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 http://vedi.d-s.ru
Они не свободные, но бесплатные для многих применений -- не забудьте
ознакомиться с их лицензией.
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. Если со
сборкой таких пакетов возникают проблемы, то можно обратиться за
консультацией в наши списки рассылки.