Имеется несколько способов добавить фонты в 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) - это, вероятно, самое удачное из доступных на сегодняшний день решений по управлению фонтами. Оно имеет следующие преимущества:
Разные дистрибутивы имеют, естественно, разные конфигурации. Можно выделить три группы:
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) состоит в том, что в результате изменения будут действовать во всей системе, т.е. фонты станут доступны всем пользователям.
Простейший способ сделать фонты Type1 доступными для X - это воспользоваться утилитой Type1inst. Это скрипт на языке perl, который автоматически создает файлы fonts.dir и fonts.scale, которые необходимы для того, чтобы X-ы могли использовать фонты. Просто перейдите в каталог с фонтами и запустите type1inst.
cd directory type1inst
Тогда Вам остается только добавить имя каталога с фонтами к fontpath. Если пакет xfs у Вас уже запущен, Вы можете сделать это путем редактирования конфигурационного файла xfs. Пользователи Redhat могут использовать команду chkfontpath, следующим образом chkfontpath --add directory.
Теперь Ваши фонты должны быть доступны для X. Только запустите команду
xset fp rehashи X-сервер сможет найти новые фонты.
В этом случае Вам необходимо добавить имя каталога, содержащего файлы Ваших новых фонтов, к перечню каталогов фонтов (font path) одним из способов, описанных выше.
Добавление фонтов TrueType немного сложнее, потому что Вы должны иметь фонт-сервер, который может обслуживать фонты TrueType. Существуют два фонт-сервера, способные делать это - xfstt и xfs.
xfstt - это фонт-сервер для фонтов TrueType. Хотя он легко конфигурируется и вполне работоспособен, однако кажется, что xfs становится более популярным. Главное преимущество xfs по сравнению с xfstt состоит в том, что он поддерживает как фонты Type1, так и фонты TrueType.
Чтобы запустить xfstt, надо скачать его и установить. Если Ваш дистрибутив основан на rpm, то соответствующий rpm-пакет с xfstt можно найти на http://independence.seul.org/. После установки нужно сделать следующее:
/usr/X11R6/bin/xfstt --sync /usr/X11R6/bin/xfstt &
Некоторые из новейших дистрибутивов Линукса поставляются с сервером фонтов xfs, сконфигурированным как отдельно запускаемая программа. В частности, Redhat и все основанные на redhat дистрибутивы используют такую версию xfs со встроенной поддержкой фонтов TrueType. Debian тоже поставляет xfs, но их версия не имеет встроенной поддержки true type.
Запуск xfs как отдельной программы имеет несколько преимуществ, особенно если имеется встроенная поддержка фонтов TrueType. Главное преимущество состоит в том, что поскольку фонт-сервер не является более частью X-сервера, появляется возможность предоставлять шрифты удаленным дисплеям. Кроме того, сильно упрощается модификация перечня каталогов фонтов (font path).
Как фонт-сервер, 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, Вы должны выполнить следующие шаги:
ttmkfdir -o fonts.scale mkfontdirв каталоге, содержащем Ваши новые фонты. ttmkfdir входит в состав пакета freetype.
ps ax | grep xfs
xset -q
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 ...
/etc/rc.d/init.d/xfs restart