Включение шрифтов в каталог
Серверы шрифтов.
🕛 09.07.2009, 13:42
Настройка сервера шрифтов предполагает создание файлов описания каталогов. Файл описания каталогов имеет имя fonts. dir, а его содержимое представляется в следующем формате:число
имя_файла_шрифта1 XLFD1 имя_файла_шрифта2 XLFD1
Первая строка содержит число, которое указывает, сколько шрифтов описано в данном файле. Каждая последующая строка описывает один шрифт. Все строки, кроме первой, начинаются с имени шрифта (например, goodfont. ttf или tlf32 . 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); сведения о том, представлены ли символы шрифта курсивом (г); ширина символов (normal); дополнительное имя стиля (в данном примере не используется); обобщенные данные о размере (строка, состоящая из нулевых значений, означает, что шрифт допускает масштабирование); сведения о том, является ли шрифт моноширинным или пропорциональным (р); средняя ширина (0 для масштабируемого шрифта) и кодировка (iso8859-l).
При составлении XLFD легко допустить ошибку, а в случае ошибки сервер не сможет предоставить шрифт клиенту. Поэтому для создания XLFD и даже для формирования всего файла fonts . dir предусмотрены специальные утилиты.
Для поддержки семейства шрифтов серверу требуется несколько файлов. Предположим, что в текстовом процессоре используется шрифт Times и возникает необходимость выделять "фрагменты текста полужирным шрифтом или курсивом. Разновидности шрифта Times по сути являются отдельными шрифтами, для их представления используются отдельные файлы шрифтов, а в файле fonts .dir создаются XLFD. Многие текстовые процессоры и подобные им программы могут имитировать курсив и полужирный текст, но гораздо лучшие результаты получаются при использовании специальных шрифтов, в особенности это относится к символам, представленным курсивом.
368.
Часть II. Серверы в локальных сетях
Утилита, позволяющая создавать файл fonts.dirна основании файлов шрифтов Туре 1, содержащихся в каталоге, называется typelinst. Эта утилита поставляется в составе многих дистрибутивных пакетов Linux, но по умолчанию она не инсталлируется. После установки данной программы надо сделать текущим каталог со шрифтами Туре 1 и ввести следующую команду:
# typelinst
Программа typelinst просматривает файлы шрифтов, извлекает имена шрифтов и другую XLFD-информацию и на основании полученных данных создает файл fonts . dir. Данная программа также оповещает пользователя о ходе обработки шрифтов, например, она может сообщить, что на данный момент создана 21 запись в файле fonts. dir, одна из них описывает шрифт, изготовителя которого не удалось определить. Файл fonts. dir, созданный программой typelinst, можно отредактировать вручную и удалить несоответствия, например, выявить файлы шрифтов, принадлежащие одному семейству, но созданные различными производителями. Х-пограммы используют информацию, содержащуюся в файле fonts .dir, и игнорируют данные в составе шрифтов. Поэтому изменение некоторых деталей файлов шрифтов не влияет на работу этих программ. Несоответствия, о которых шла речь выше, могут привести к возникновению проблем, в частности, если информация о производителе не совпадает, то, запросив шрифт, клиент может получить ту или иную его разновидность.
Программа аналогичного назначения создана и для работы с шрифтами TrueType. Эта программа называется ttmkfdir и входит в состав библиотеки FreeType, используемой xfsft и XFree86 4.0. Программа ttmkfdir работает подобно программе typelinst, но позволяет задавать имя выходного файла посредством опции -о. Данная программа не включает в выходной файл сведения о шрифтах, в которых отсутствуют некоторые символы. Для того чтобы сведения об этих шрифтах были включены в выходной файл, необходимо задать опцию -с. Чтобы учесть изменения, внесенные в каталог со шрифтами, надо задать следующую команду:
# ttmkfdir -с -о fonts.dir
Если вы обнаружите, что при работе с некоторыми шрифтами возникают проблемы, вызовите эту же команду, но без опции -с. Список шрифтов станет короче, но оставшиеся в нем шрифты скорее всего будут работоспособны.
ВНИМАНИЕ Как было сказано выше, программы typelinst и ttmkfdir создают новый f файл fonts.dir взамен существующего. Если вы добавляете шрифты в каталог, желательно создать резервную копию файла fonts. dir. Как вы уже знаете, автоматически созданный файл fonts . dir можно редактировать вручную. Копия файла поможет вам вспомнить, какие изменения уже были внесены в него.
После изменения файла fonts, dir необходимо остановить и снова запустить сервер шрифтов. Кроме того, надо либо перезапустить Х-серверы, использующие сервер шрифтов, либо указать им на то, что список доступных шрифтов должен быть обновлен. Сделать это можно с помощью следующей команды:
# xset fp rehash
Если вы не сделаете этого, новые шрифты будут не доступны Х-серверам. Если вы удалили шрифты и не оповестили об этом Х-сервер, то при попытке получить отсутствующий шрифт, работа Х-сервера будет приостановлена.