Font HOWTO: Делаем фонты доступными для X-сервера
Далее Назад Оглавление4. Как сделать фонты доступными для X-сервера
Имеется несколько способов добавить фонты в X. Во-первых, XFree86 имеет font path, который есть просто список нескольких каталогов или фонт-серверов, в которых осуществляется поиск фонтов. Фонт-сервер - это просто фоновый процесс, который делает фонты доступными для XFree86. Преимущество фонт-сервера в том, что он может посылать шрифты на удаленный дисплей.
Недавно фонт-сервер xfs (the ``X font server'') был доработан с целью обеспечения поддержки шрифтов TrueType и обеспечения возможности запуска его как отдельной программы. Доработанные версии поставляются с дистрибутивами, основанными на Red Hat, и включены в XFree86 3.9.17 (новейшая версия на момент написания настоящего документа; программа будет включена и в состав XFree86 4.0). xfs есть в действительности отдельный фонт-сервер, который входит в состав XFree86. Его исходный код является частью дерева исходников XFree86. Однако с недавних пор в дистрибутивы включается версия программы, которая может работать в режиме отдельно запускаемой программы. Отдельный фонт-сервер для X с поддержкой шрифтов TrueType (поддержка TrueType осуществляется отдельным фонт-сервером, который называется xfsft) - это, вероятно, самое удачное из доступных на сегодняшний день решений по управлению фонтами. Оно имеет следующие преимущества:
- Обеспечивается поддержка различных типов фонтов, включая Type1, TrueType и растровые шрифты.
- Обеспечивается доступ к шрифтам с удаленных дисплеев.
- Существенно упрощается редактирование пути к шрифтам - Вы можете теперь делать это из командной строки с помощью утилиты chkfontpath, в то время как раньше надо было редактировать конфигурационные файлы. Это не только облегчает жизнь пользователей, но и упрощает создание пакетов ПО, а также их установку.
Разные дистрибутивы имеют, естественно, разные конфигурации. Можно выделить три группы:
- Дистрибутивы с отдельно поставляемым сервером xfs, доработанным с целью поддержки фонтов формата TrueType. Эта группа включает Red Hat и такие основанные на RedHat дистрибутивы, как Mandrake, TurboLinux и Independence. Для этой группы самая разумная стратегия состоит в установке как фонтов TrueType, так и фонтов Type1, используя xfs
- Дистрибутивы, с отдельно поставляемым пакетом xfs, но без поддержки TrueType (напомню, что XFree86 поддерживает фонты TrueType начиная с версии 3.9.17 ). К этой группе относится Debian. В таком случае рекомендуется использовать xfs для установки фонтов Type1, а фонты TrueType устанавливать через xfstt. Пользователи Debian могут просмотреть TrueType Fonts in Debian mini-HOWTO для получения информации об установке фонтов TrueType в Debian.
- Если у Вас нет пакета xfs, то Вам необходимо установить фонты Type1 путем добавления путей к ним в перечень путей к фонтам в XFree86 и использования xset. Для установки фонтов TrueType используйте xfstt.
4.1 Перечень каталогов фонтов (The font path)
XFree86 ищет файлы фонтов, просматривая каталоги, включенные в Перечень каталогов фонтов (font path) - список директорий (или серверов, но об этом мы поговорим чуть позже), содержащих файлы фонтов. Когда приложение запрашивает фонт, соответствующий файл ищется в этих каталогах, в указанной последовательности, пока нужный фонт не будет найден. Чтобы сделать фонты доступными, необходимо задать этот перечень (font path). Вы можете добавить каталог в font path с помощью команды
xset fp+ directoryПосле того, как Вы это сделали, необходимо заставить X-сервер перечитать перечень каталогов с фонтами командой
xset fp rehashЧтобы эти команды выполнялись автоматически, поместите их в Ваш файл .xinitrc (или в .Xclients или в .xsession -- это зависит от того, как Вы запускаете X-ы. Можно сделать два из этих файлов ссылками на третий, чтобы избежать путаницы). Другой способ подключения каталога к перечню каталогов фонтов состоит в редактировании файла XF86Config. Например, чтобы добавить каталог /usr/share/fonts/myfonts к перечню, добавьте в XF86Config такую строку:
... Section "Files" ... FontPath /usr/share/fonts/myfonts ... EndSection ...Преимущество второго способа (редактирования XF86Config) состоит в том, что в результате изменения будут действовать во всей системе, т.е. фонты станут доступны всем пользователям.
4.2 Установка фонтов Type1
Команда Type1inst
Простейший способ сделать фонты Type1 доступными для X - это воспользоваться утилитой Type1inst. Это скрипт на языке perl, который автоматически создает файлы fonts.dir и fonts.scale, которые необходимы для того, чтобы X-ы могли использовать фонты. Просто перейдите в каталог с фонтами и запустите type1inst.
cd directory type1inst
Если у Вас имеется пакет xfs
Тогда Вам остается только добавить имя каталога с фонтами к fontpath. Если пакет xfs у Вас уже запущен, Вы можете сделать это путем редактирования конфигурационного файла xfs. Пользователи Redhat могут использовать команду chkfontpath, следующим образом chkfontpath --add directory.
Теперь Ваши фонты должны быть доступны для X. Только запустите команду
xset fp rehashи X-сервер сможет найти новые фонты.
Если у Вас нет пакета xfs
В этом случае Вам необходимо добавить имя каталога, содержащего файлы Ваших новых фонтов, к перечню каталогов фонтов (font path) одним из способов, описанных выше.
4.3 Фонты True Type
Добавление фонтов TrueType немного сложнее, потому что Вы должны иметь фонт-сервер, который может обслуживать фонты TrueType. Существуют два фонт-сервера, способные делать это - xfstt и xfs.
xfstt - это фонт-сервер для фонтов TrueType. Хотя он легко конфигурируется и вполне работоспособен, однако кажется, что xfs становится более популярным. Главное преимущество xfs по сравнению с xfstt состоит в том, что он поддерживает как фонты Type1, так и фонты TrueType.
xfstt
Чтобы запустить xfstt, надо скачать его и установить. Если Ваш дистрибутив основан на rpm, то соответствующий rpm-пакет с xfstt можно найти на http://independence.seul.org/. После установки нужно сделать следующее:
- установить фонты в соответствующий каталог (прочитайте документацию, которая поставляется с пакетом).
- cd в этот каталог и запустить xfstt --sync. По этой команде сервер просмотрит каталог и создаст файл fonts.dir.
- Теперь добавьте строку unix/:7100 к Вашему перечню каталогов фонтов (font path).
/usr/X11R6/bin/xfstt --sync /usr/X11R6/bin/xfstt &
4.4 Сервер фонтов xfs
Некоторые из новейших дистрибутивов Линукса поставляются с сервером фонтов xfs, сконфигурированным как отдельно запускаемая программа. В частности, Redhat и все основанные на redhat дистрибутивы используют такую версию xfs со встроенной поддержкой фонтов TrueType. Debian тоже поставляет xfs, но их версия не имеет встроенной поддержки true type.
Запуск xfs как отдельной программы имеет несколько преимуществ, особенно если имеется встроенная поддержка фонтов TrueType. Главное преимущество состоит в том, что поскольку фонт-сервер не является более частью X-сервера, появляется возможность предоставлять шрифты удаленным дисплеям. Кроме того, сильно упрощается модификация перечня каталогов фонтов (font path).
Перечень каталогов фонтов xfs
Как фонт-сервер, xfs имеет свой собственный перечень каталогов с фонтами (font path). Может возникнуть вопрос: а зачем он нужен и где его место в общей картине. Он работает следующим образом: Вы включаете ссылку на фонт-сервер xfs в перечень каталогов фонтов XFree86, добавляя в него следующую строку: unix/:port. После этого любой фонт, находящийся в одном из каталогов, включенных в перечень каталогов фонтов xfs, становится доступным для XFree86.
Сам перечень каталогов фонтов xfs определяется в конфигурационном файле xfs. В Redhat это /etc/X11/fs/config, в Debian - /etc/X11/xfs/config. Пользователи Redhat не обязаны редактировать этот файл вручную, они могут воспользоваться утилитой chkfontpath. Ее синтаксис очень прост:
chkfontpath --add directoryПользователи других дистрибутивов должны отредактировать этот файл примерно следующим образом:
catalogue = /usr/X11R6/lib/X11/fonts/misc:unscaled, ... /usr/share/fonts/my_new_fonts/, ... /usr/share/fonts/some_other_directory # in 12 points, decipoints default-point-size = 120 ...В приведенном примере к перечню каталогов фонтов xfs добавлен каталог /usr/share/fonts/my_new_fonts/. Обратите внимание на то, что последняя строка в списке каталогов не содержит запятой в конце. Для того, чтобы сделанные изменения вступили в силу, нужно перезапустить сервер xfs. Неплохо вообще перезапустить сессию X после перезапуска xfs.
Установка фонтов для xfs
Для того, чтобы подготовить использование фонта через фонт-сервер xfs, Вы должны выполнить следующие шаги:
- Если xfs у Вас не установлен, установите его.
- Поместите новые шрифты в каталог.
- Если Вы устанавливаете фонты Type1, подготовьте этот каталог для сервера, для чего запустите в этом каталоге скрипт type1inst.
- Если Вы устанавливаете фонты TrueType, ( помните, что не все
дистрибутивы могут использовать фонты TrueType через xfs!),
подготовьте новый каталог для сервера, для чего запустите
команды:
ttmkfdir -o fonts.scale mkfontdir
в каталоге, содержащем Ваши новые фонты. ttmkfdir входит в состав пакета freetype. - Теперь Вы можете добавить новый каталог к перечню каталогов фонтов xfs. Пользователи дистрибутивов, основанных на Redhat, могут сделать это с помощью утилиты chkfontpath. В противном случае это можно сделать редактированием конфигурационного файла xfs.
- Если xfs уже установлен в Вашей системе, Вы должны определить,
какой порт использует эта программа. Это можно сделать следующим образом:
ps ax | grep xfs
- Затем проверьте перечень каталогов фонтов XFree86:
xset -q
- Если перечень каталогов фонтов XFree86 содержит строку
типа unix:/port_number, где port_number
совпадает с номером порта, используемым программой xfs, то сервер
xfs у Вас установлен корректно. В противном случае, Вы должны добавить
ссылку на него в перечень каталогов фонтов XFree86:
xset fp+ unix/:port_number xset fp rehash
Чтобы это подключение выполнялось автоматически, отредактируйте Ваш файл .xinitrc так, как это было объяснено выше. Чтобы изменения действовали во всей системе, отредактируйте файл конфигурационный файл XF86Config (это либо /etc/X11/XF86Config, либо /etc/XF86Config, либо /usr/X11R6/lib/X11/XF86Config), добавив в него строку FontPath "unix:/port_number" в секцию "Files". Вот пример:... Section "Files" ... FontPath "unix/:-1" ... EndSection ...
- Если xfs установлен корректно, Вы можете перестартовать его
так:
/etc/rc.d/init.d/xfs restart
- После того, как Вы перезапустили xfs, перезапустите также X-сессию.
Далее Назад Оглавление