Серверы шрифтов в основном предназначены для того, чтобы системный администратор мог, не затрачивая больших усилий, обеспечить доступ к шрифтам узлов сети, состоящей из компьютеров под управлением Linux и UNIX. (X-серверы в Windows, MacOS и других системах также иногда используют удаленные серверы шрифтов.) Для того чтобы обеспечить работу программ с использованием сервера шрифтов, необходимо выполнить два основных действия: задать пути к шрифтам для сервера шрифтов (эти пути отличаются от путей к шрифтам, задаваемых для X-сервера) и включить шрифты в соответствующие каталоги.
Пути к шрифтам задаются в конфигурационном файле сервера шрифтов (обычно это файл /etc/X11/fs/config
или /etc/X11/fs/conf
). Вместо ключевого слова FontPath
, присутствующего в файле XF86Config
, для указания шрифтов в файле config
или conf
используется ключевое слово catalogue
. Пример записи, с помощью которой задаются пути к шрифтам, приведен ниже.
catalogue = /usr/X11R6/lib/X11/fonts/75dpi:unscaled,
/usr/X11R6/lib/X11/fonts/Type1,
/usr/X11R6/lib/X11/fonts/TrueType,
/usr/X11R6/lib/X11/fonts/75dpi
Запись catalogue
может занимать несколько строк. Каталоги в списке разделяются запятыми. После последнего каталога запятая не указывается, что является признаком окончания списка. Если имя каталога сопровождается выражением :unscaled
, это означает, что растровые шрифты, находящиеся в этом каталоге, могут использоваться только в том случае, если их размеры совпадают с требуемыми размерами шрифтов. При отсутствии ключевого слова unscaled
обработка растровых шрифтов производится следующим образом: если имя шрифта совпадает с именем, указанным в запросе, а файл, содержащий битовые карты нужного размера, отсутствует, шрифт приводится к требуемому размеру путем масштабирования (при этом качество шрифта обычно получается невысоким). Подобные соглашения действуют также при описании путей к шрифтам в файле XF86Config
. В приведенном выше примере сервер шрифтов использует растровый шрифт из каталога 75dpi
только в том случае, если его размер строго соответствует размеру, указанному в запросе. Если найти битовые карты подходящего размера не удается, система продолжает поиск шрифта в каталогах Type1
и TrueType
, а затем возвращается к каталогу 75dpi
и масштабирует один из находящихся там растровых шрифтов.
Изменяя список, задаваемый с помощью ключевого слова catalogue
, вы можете добавлять или удалять каталоги со шрифтами. Так, например, если вы хотите добавить набор шрифтов, скопированный из Internet или полученный на компакт-диске, то должны поместить файлы в каталог и включить его в запись. При инсталляции некоторых серверов в конфигурационном файле указываются каталоги, которые содержат шрифты, поставляемые вместе с сервером. Если эти шрифты вам не нужны, удалите путь к каталогу из списка. (При этом необходимо следить за тем, чтобы после последнего каталога в списке не было запятой.)
Настройка сервера шрифтов предполагает создание файлов описания каталогов. Файл описания каталогов имеет имя fonts.dir
, а его содержимое представляется в следующем формате:
...
Первая строка содержит число, которое указывает, сколько шрифтов описано в данном файле. Каждая последующая строка описывает один шрифт. Все строки, кроме первой, начинаются с имени шрифта (например, goodfont.ttf
или t1f32.pfb
). Файл шрифта с указанным именем должен присутствовать в каталоге.
Каждый шрифт Туре 1 реализуется в виде нескольких файлов. Файл PFB (Printer Font Binary — двоичный шрифт печати) содержит основную информацию о шрифте; имя этого файла обычно указывается в fonts.dir
. Вместо PFB-файла вы можете задать в составе fonts.dir
файл PFA (Printer Font ASCII — ASCII шрифт печати), в котором находятся те же данные, представленные в другом формате. Прочие файлы, определяющие шрифт, имеют расширения pfm
, .afb
и .afm
. Эти файлы необходимы для того, чтобы сервер шрифтов мог предоставлять клиентам шрифты Туре 1.
Остальная часть строки представляет собой логический дескриптор шрифта (XLFD — X Logical Font Descriptor). Ниже приведен пример подобного дескриптора.
-bitstream-charter-medium-r-normal--0-0-0-0-p-0-iso8859-1
Логический дескриптор шрифта состоит из нескольких полей, разделенных дефисами (-
). В полях дескриптора содержатся информация об изготовителе шрифта (bitstream
); название семейства шрифтов (charter
); 'вес' шрифта (medium
); сведения о том, представлены ли символы шрифта курсивом (r
); ширина символов (normal
); дополнительное имя стиля (в данном примере не используется); обобщенные данные о размере (строка, состоящая из нулевых значений, означает, что шрифт допускает масштабирование); сведения о том, является ли шрифт моноширинным или пропорциональным (p
); средняя ширина (0 для масштабируемого шрифта) и кодировка (iso8859- 1
).
При составлении XLFD легко допустить ошибку, а в случае ошибки сервер не сможет предоставить шрифт клиенту. Поэтому для создания XLFD и даже для формирования всего файла fonts.dir
предусмотрены специальные утилиты.
Для поддержки семейства шрифтов серверу требуется несколько файлов. Предположим, что в текстовом процессоре используется шрифт Times и возникает необходимость выделять фрагменты текста полужирным шрифтом или курсивом. Разновидности шрифта Times по сути являются отдельными шрифтами, для их представления используются отдельные файлы шрифтов, а в файле fonts.dir
создаются XLFD. Многие текстовые процессоры и подобные им программы могут имитировать курсив и полужирный текст, но гораздо лучшие результаты получаются при использовании специальных шрифтов, в особенности это относится к символам, представленным курсивом.
Утилита, позволяющая создавать файл fonts.dir
на основании файлов шрифтов Туре 1, содержащихся в каталоге, называется type1inst
. Эта утилита поставляется в составе многих дистрибутивных пакетов Linux, но по умолчанию она не инсталлируется. После установки данной программы надо сделать текущим каталог со шрифтами Туре 1 и ввести следующую команду:
# type1inst
Программа type1inst
просматривает файлы шрифтов, извлекает имена шрифтов и другую XLFD-информацию и на основании полученных данных создает файл fonts.dir
. Данная программа также оповещает пользователя о ходе обработки шрифтов, например, она может сообщить, что на данный момент создана 21 запись в файле fonts.dir
, одна из них описывает шрифт, изготовителя которого не удалось определить. Файл fonts.dir
, созданный программой type1inst
, можно отредактировать вручную и удалить несоответствия, например, выявить файлы шрифтов, принадлежащие одному семейству, но созданные различными производителями. X-программы используют информацию, содержащуюся в файле fonts.dir
, и игнорируют данные в составе шрифтов. Поэтому изменение некоторых деталей файлов шрифтов не влияет на работу этих программ. Несоответствия, о которых шла речь выше, могут привести к возникновению проблем, в частности, если информация о производителе не совпадает, то, запросив шрифт, клиент может получить ту или иную его разновидность.