Далее Назад Оглавление

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) - это, вероятно, самое удачное из доступных на сегодняшний день решений по управлению фонтами. Оно имеет следующие преимущества:

Разные дистрибутивы имеют, естественно, разные конфигурации. Можно выделить три группы:

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/. После установки нужно сделать следующее:

  1. установить фонты в соответствующий каталог (прочитайте документацию, которая поставляется с пакетом).
  2. cd в этот каталог и запустить xfstt --sync. По этой команде сервер просмотрит каталог и создаст файл fonts.dir.
  3. Теперь добавьте строку unix/:7100 к Вашему перечню каталогов фонтов (font path).
Фонты TrueType должны теперь отображаться и быть доступными для приложений типа GIMP и Netscape. Вполне вероятно, что Вы захотите, чтобы фонты TrueType становились доступны каждый раз, когда Вы запускаете систему. Проверьте сначала, включены ли в пакет инициализационные файлы (если Вы используете RPM, Вы можете воспользоваться командой rpm -ql xfstt |grep init и поискать в выводе команды файлы, которые имеют примерно такие имена: /etc/rc.d/init.d/xfstt). Если инициализационных скриптов нет, просто допишите в /etc/rc.local две строки следующего вида:
        /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, Вы должны выполнить следующие шаги:


Далее Назад Оглавление
Используются технологии uCoz