Мини-HOWTO: Облагораживание шрифтов XFree86

Doug Holland

         [email protected]
      

Обновлено: Hal Burgiss

         [email protected]
      

Перевод: Станислав Рогин, SWSoft Pte Ltd.

версия 1.5, 25 июля 2000

Каким образом можно исправить безобразные и нечитаемые шрифты X-Windows.


1. Введение

Огромное количество проблем, которые я вынужден был решать, возникли при работе со стандартными шрифтами и настройками шрифтов в X (Я говорю в частности о XFree86, в других версиях Х все может быть несколько лучше.) Многие программы используют стандартные шрифты с фиксированной шириной, в свою очередь, использование в них шрифтов с переменной шириной было бы более приемлемо. Другие программы используют ужасно мелкие, а соответственно, нечитаемые, шрифты. Шрифты, встроенные в стандартную поставку XFree86, вряд ли соответствуют реальным потребностям, возникающим при работе. В комплект поставки входит еще относительно неплохой шрифт Courier, но в свою очередь Times и Helvetica - это простые "картинки" (bitmap), в которых при большом увеличении слишком заметны точки. Ой-ой!

В этом документе я попытаюсь показать вам, как сконфигурировать различные настройки шрифтов, установить новые шрифты, и сделать другие вещи, которые серьезно улучшат внешний вид и читабельность шрифтов на рабочем столе X Window. Это делается путем настройки параметра FontPath в файле XF86Config, а также указанием дополнительных ключей при запуске X-Servera в команде startx или xdm, добавлением новых шрифтов, установкой TrueType-шрифтового сервера xfstt, и использованием специальной функции программы K Desktop Environment 1.1, которая "автоматически" настраивает шрифты, включая не-KDE приложения для настройки их шрифтов и цветов для соответствия настройкам стиля KDE.

Комментарии, исправления, дополнения и критика всегда только приветствуются. Вы можете написать авторам по следующим адресам: [email protected], или [email protected]


1.1. Термины, применяемые в этом документе

В приведенных здесь примерах команд, символ "#" используется для выделения тех команд, которые должны быть запущены от пользователя root. Символ "$" используется для тех команд, которые запускаются обычным пользователем (не root).

В примерах предполагается, что шрифты TrueType находятся в каталоге /usr/local/share/fonts/ttfonts. Ничего особенного именно в этом каталоге нет, и шрифты спокойно могут находиться в любом другом каталоге.

Когда я упоминаю "xfs", то я говорю о пакете xfs дистрибутива Redhat версий 6.x. Он очень серьезно отличается от стандартного независимого xfs, поставляемого с xfs.

"Netscape" - это полный набор программ Netscape: Communicator, Navigator, Messenger, и т.п. Во всех случаях все советы подойдут и для Mozilla.


1.2. История версий этого документа

  • 0.1: 21 февраля 1999 г.: Первоначальный выпуск.

  • 0.11: 27 февраля 1999 г.: Добавлена информация о копирайте для защиты моей за....

  • 0.12: 10 июня 1999 г.: Добавлена мольба о помощи

  • 0.20: 14 сентября 1999 г.: Добавлен раздел о xfs для владельцев дистрибутива Redhat. Большое спасибо Hal Burgiss за сотрудничество

  • 1.0: 23 ноября 1999 г.: Документ преобразован в SGML, для передачи его в Проект Документирования Linux (Linux Documentation Project). Убрана мольба о помощи.

  • 1.5: 25 июля 2000 г.: Новые разделы, различные дополнения и исправления.


1.3. Новые версии

Последняя версия содержит новые разделы, касающиеся xfsft, fonts.alias и XFree86 версии 4.x. Она также включает новые разделы "Ссылки" и "Замечание", а также переписана глава, касающаяся xfs.

Последнюю версию этого документа можно найти по адресу http://feenix.eyep.net/ldp/fdu/index.html.


1.4. Copyright

Copyright © 1999 by Doug Holland.

Unless otherwise stated, Linux HOWTO documents are copyrighted by their respective authors. Linux HOWTO documents may be reproduced and distributed in whole or in part, in any medium physical or electronic, as long as this copyright notice is retained on all copies. Commercial redistribution is allowed and encouraged; however, the author would like to be notified of any such distributions.

All translations, derivative works, or aggregate works incorporating any Linux HOWTO documents must be covered under this copyright notice. That is, you may not produce a derivative work from a HOWTO and impose additional restrictions on its distribution. Exceptions to these rules may be granted under certain conditions; please contact the Linux HOWTO coordinator for more information.

In short, we wish to promote dissemination of this information through as many channels as possible. However, we do wish to retain copyright on the HOWTO documents, and would very much like to be notified of any plans to redistribute the HOWTOs, this one in particular! Web page authors are free to link to this HOWTO without restriction, though the author would appreciate an email informing him of this, just so he can boost his ego by knowing who else reads and links to this document.

Many of the terms mentioned in this document are trade names. Unless otherwise stated, all trademarks are property of their respective owners.


1.5. Авторские права

Авторские права на русский перевод этого текста принадлежат © 2000 SWSoft Pte Ltd. Все права зарезервированы.

Этот документ является частью проекта Linux HOWTO.

Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но так или иначе автор текста и автор перевода желали бы знать о таких дистрибутивах.

Все переводы и производные работы, выполненные по документам Linux HOWTO должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO с которым можно связаться по адресу приведенному ниже.

Мы бы хотели распространить эту информацию по всем возможным каналам. Но при этом сохранить авторские права и быть уведомленными о всех планах распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь к координатору проекта Linux HOWTO по электронной почте: , или к координатору русского перевода Linux HOWTO компании SWSoft Pte Ltd. по адресу


1.6. Благодарности

  Автор документа - Doug Holland
  Email: [email protected]
  WWW: http://www.frii.com/~meldroc/
 

 
 Обновлено и дополнено Hal Burgiss.
  Email: [email protected]
  WWW: http://feenix.eyep.net/
 

Большое спасибо:

  • Разработчикам Проекта XFree86 за ту тяжелую работу, которую они проводят, тратя на это большую часть своего времени. А также Juliusz Chroboczek за его работу над xfsft, и XFree86 4.x за то, что несет TrueType в массы.

  • В первую очередь, ребятам из comp.os.linux.x, которые протянули мне руку помощи в выяснении всего выше написанного.

  • Сообществу Linux вообще - всем, кто сделал все выше написанное возможным.

  • Microsoft и Apple: за любезно предоставленные шрифты, которые украсили мой рабочий стол.


2. Настройка X-сервера

Для того, чтобы X работал значительно лучше, надо сделать несколько простых операций.


2.1. Настраиваем параметр FontPath

Первое, что нужно посмотреть, для излечения проблем со шрифтами - это файл XF86Config. (обычное его место - /usr/X11/lib/X11/XF86Config или /etc/X11/XF86Config.) Если вы еще до сих пор не догадались, то наиболее важная часть этого файла, относящаяся к шрифтам, это секция FontPath. Пока мы не углубились в нее, нужно бросить быстрый взгляд на другие части вашей X-конфигурации. Плохие настройки монитора могут со значительно большей вероятностью вызвать сильную головную боль, чем плохие или нечитаемые шрифты. Поэтому убедитесь в том, что частота вертикальной синхронизации монитора настолько высока, насколько может позволить ваш монитор (85+ Hz это великолепно, 75 Hz - так, ничего, 60 Hz - очень болезненно.)

Используйте ваш любимый текстовый редактор, чтобы исправить файл XF86Config. Почти в самом начале файла вы увидите примерно такие строки:

FontPath        "/usr/X11R6/lib/X11/fonts/misc/"
FontPath        "/usr/X11R6/lib/X11/fonts/Type1/"
FontPath        "/usr/X11R6/lib/X11/fonts/Speedo/"
FontPath        "/usr/X11R6/lib/X11/fonts/75dpi/"
FontPath        "/usr/X11R6/lib/X11/fonts/100dpi/"
 

Они должны либо в точности совпадать с тем, что я здесь указал, или быть очень похожи (как для XFree86 3.x, так и для 4.x). Параметр FontPath указывает X, где найти шрифты, которые он использует для вывода текста на ваш дисплей. Порядок строк очень важен: когда Х-приложение просит Х вывести некоторый текст, то у Х-сервера обычно бывает некоторая свобода при выборе шрифта, который надо использовать. Х-сервер идет последовательно по каталогам, указанным в FontPath и использует первый попавшийся шрифт, который удовлетворяет критериям Х-клиента, и затем выводит текст на экран. Заметьте, что xfs, входящий в состав Redhat версий 6.x, использует другой способ настройки FontPath. См. раздел Разд. 3.2.2, в котором это описано подробнее.

Обычно, в стандартном файле конфигурации, 75dpi-шрифты идут до 100dpi-шрифтов. Если у вас хороший монитор с высоким разрешением, то это будут очень маленькие шрифты. Первая хитрость, которую вы можете испробовать - это поменять местами строки с путями к 75dpi- и 100dpi-шрифтам.

FontPath        "/usr/X11R6/lib/X11/fonts/misc/"
FontPath        "/usr/X11R6/lib/X11/fonts/Type1/"
FontPath        "/usr/X11R6/lib/X11/fonts/Speedo/"
FontPath        "/usr/X11R6/lib/X11/fonts/100dpi/"
FontPath        "/usr/X11R6/lib/X11/fonts/75dpi/"
 

Затем, укажите X-windows, что вы предпочитаете использование неизмененных (unscaled) bitmap-шрифтов. Если вам доводилось когда-нибудь использовать Netscape или другую программу, которая выводит заголовки с использованием больших шрифтов, то вы, наверное, заметили, что эти большие шрифты некачественны, то есть, в них просматриваются точки. Это выглядит коряво, и должно быть исправлено. Поэтому добавьте :unscaled к строчкам с misc-, 100dpi- и 75dpi-шрифтам. Вы можете использовать вместе и неизмененные и измененные шрифты, если захотите, просто поместите вначале строки FontPath с опцией "unscaled", чтобы Х-Windows знал, что вы предпочитаете использование неизмененных шрифтов, насколько это возможно.

FontPath        "/usr/X11R6/lib/X11/fonts/misc:unscaled"
FontPath        "/usr/X11R6/lib/X11/fonts/100dpi:unscaled"
FontPath        "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
FontPath        "/usr/X11R6/lib/X11/fonts/Type1"
FontPath        "/usr/X11R6/lib/X11/fonts/Speedo"
FontPath        "/usr/X11R6/lib/X11/fonts/misc"
FontPath        "/usr/X11R6/lib/X11/fonts/100dpi"
FontPath        "/usr/X11R6/lib/X11/fonts/75dpi"
 

После этих изменений перезагрузите Х. Ну что, рабочий стал стал лучше выглядеть?


2.2. Опции командной строки X-сервера

Следующая вещь, которую вам необходимо сделать, это настроить опции командной строки Х-сервера. Вам будет необходимо использовать опцию -dpi, которая определяет разрешение монитора в точках на дюйм. Так как в наше время многие системы используют дисплеи с высоким разрешением, то есть большие шансы, что они будут прекрасно работать с разрешением в 100 точек на дюйм (dpi).

Если вы запускаете Х с командной строки консоли, наберите

 $ startx -dpi 100.
 

Если вы используете xdm для графического входа в систему, вам, наверное, потребуется изменить ваш файл /usr/X11/lib/X11/xdm/Xservers (или, возможно, в /etc/X11/xdm/Xservers), в котором будет командная строка запуска для Х-сервера. В моем файле находится такая строчка:

 :0 local /usr/X11R6/bin/X -dpi 100 -gamma 1.6

Дополнительную информацию смотрите в руководстве по Х и Х-серверу.


3. Шрифты TrueType (Одна из немногих хороших вещей в Windows)

По той интересной причине, что ребята в Redmond-е значительно сильнее заботятся о внешнем виде своего программного обеспечения (чем о нормальности внутреннего содержания ;) они встроили поддержку шрифтов TrueType в Windows. Windows 9x и почти все остальные варианты Windows поставляются сейчас со шрифтами Arial, Times New Roman, и Courier New, которые являются почти полными аналогами шрифтов Helvetica, Times и Courier. Шрифты TrueType - векторные, поэтому они выглядят хорошо при больших размерах, и они прекрасно описаны, поэтому они хорошо читаются даже при очень маленьких размерах. Многие Windows-программы поставляются с дюжинами шрифтов TrueType. Не используйте пока ваш Windows CD, как горючее для микроволновой печи, сначала достаньте оттуда шрифты.

К великому сожалению, в XFree86 3.x не встроена поддержка шрифтов TrueType, поэтому вам придется самим ее добавить. Однако, эта поддержка встроена в XFree86 версий 4.x (см. раздел Разд. 4). Это означает, что вам надо установить сервер шрифтов, поддерживающий TrueType, и, конечно, сами шрифты. Вы не найдете хороших шрифтов ни в одном дистрибутиве. Наиболее вероятная причина этого - ни один хороший качественный шрифт до сих пор не имеет подходящей для этого открытой лицензии.


3.1. Делаем шрифты TrueType доступными

Давайте начнем со шрифтов. Для этого подойдет любой шрифт TrueType, включенный в любую реализацию MS Windows. Не забудьте, что текстовые процессоры и другие программы тоже могут включать в себя свои шрифты. Шрифты MacOS для этого не подойдут. Существуют также несколько наборов "бесплатных" шрифтов, которые вы можете скачать из сети, если вы уже сожгли свой CD с Windows (см. ссылки в разделе3 Разд. 6.2).

Для того, чтобы использовать TrueType, шрифты должны быть всегда доступны серверу шрифтов. Это означает, что они должны быть на файловой системе, которая всегда подключена. Я бы не советовал вам использовать Windows-раздел, если у вас система с двойной загрузкой. Шрифты лучше скопировать в Linux-раздел. Во-первых, станем пользователем root при помощи команды su:

 # su -
 # mkdir -p /usr/local/share/fonts/ttfonts
 

Теперь перейдем в наш новый каталог:

  # cd  /usr/local/share/fonts/ttfonts
 

Затем перенесите шрифты в этот каталог, например, скопировав их из вашей Windows-системы:

 # cp /mnt/<путь_к_шрифтам>/*ttf  .
 

или загрузив те, которые доступны прямо в Microsoft. Эти шрифты поставляются в саморазжимающихся zip-архивах. Вы также можете установить их в linux-е (для этого возьмите те шрифты, которые предназначены для Windows 3.1):

 # ls *exe | xargs -n 1 unzip -L
 

Опция '-L' преобразует имена шрифтов в нижний регистр (это необходимо для того, чтобы нормально работали xfsft и xfs из Redhat). Заметьте, что текущая версия утилиты zip в Linux не работает с 32-битными архивами шрифтов для Win9x. (Также, кажется, что Microsoft на этом сайте больше не поддерживает 16-битные шрифты Arial, Courier и Times-Roman.) Вы можете скачать RPM с Веб-Шрифтами, который содержит часть TrueType шрифтов Microsoft, по этому адресу. В нем есть достаточно шрифтов для удовлетворения потребностей Netscape и других веб-обозревателей.

Затем добавьте новый каталог TrueType шрифтов к FontPath вашего X-сервера:

FontPath        "/usr/local/share/fonts/ttfonts"
FontPath        "/usr/X11R6/lib/X11/fonts/misc:unscaled"
FontPath        "/usr/X11R6/lib/X11/fonts/100dpi:unscaled"
FontPath        "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
FontPath        "/usr/X11R6/lib/X11/fonts/Type1"
FontPath        "/usr/X11R6/lib/X11/fonts/Speedo"
FontPath        "/usr/X11R6/lib/X11/fonts/misc"
FontPath        "/usr/X11R6/lib/X11/fonts/100dpi"
FontPath        "/usr/X11R6/lib/X11/fonts/75dpi"
 


3.2. Серверы шрифтов

Существует несколько различных версий серверов шрифтов, которые нам подойдут: xfstt, xfsft, а также подправленная Redhat версия xfs, основанная на xfsft. Несмотря на похожесть имен, это абсолютно различные программы. Скорее всего, ваш дистрибутив включает в себя один из этих пакетов, и, возможно, часть из них вы уже установили.

Раньше, серверы шрифтов использовать для передачи шрифтов по сети. В этом случае шрифты могли находиться на одной машине, и клиенты могли обращаться к ним по мере необходимости. Однако, в настоящее время разработчики встроили в них возможность вывода шрифтов (Эта возможность уже встроена в XFree86 4.x, поэтому вам не понадобится отдельный сервер шрифтов, если вам нужна лишь поддержка TrueType)


3.2.1. xfstt

Один из таких серверов шрифтов - xfstt. xfstt был создан специально для работы с шрифтами TrueType.


3.2.1.1. Установка

xfstt очень просто установить. Сначала, загрузите его из сети, или проверьте CD с вашим дистрибутивом. Самую свежую версию можно найти по адресу http://metalab.unc.edu/pub/Linux/X11/fonts/

После того, как вы получите архив, разархивируйте его:

 $ tar -zxvf xfstt-*tgz
 

Потом соберите и установите его. Прочтите файл INSTALL, в нем есть краткие инструкции, но там все достаточно просто.

Все, что вам надо сделать, это запустить команды:

 # make
 # make install
 

Запустите xfstt, набрав

 # xfstt --sync        # обновляет базу данных шрифтов xfstt
 # xfstt &             # запускает xfstt в фоновом режиме.
 

xfstt должен быть запущен до запуска X-сервера. После того, как это все нормально заработает, вы можете добавить эти строки в файл /etc/rc.d/rc.local, или любой другой подходящий для этого инициализационный скрип. Затем наберите:

 $ xset +fp unix/:7101     # сообщить X о xfstt.
 

или добавьте:

FontPath "unix/:7101"
  

в ваш файл XF86Config для того, чтобы сообщить X о новом шрифтовом сервисе. Запускайте команду xfstt --sync каждый раз при изменении переменной FontPath или содержимого каталога шрифтов.


3.2.1.2. Изменение размера шрифта, устанавливаемого по умолчанию

Если ваши шрифты TrueType будут слишком мелки, то вам, наверняка, помогут следующие команды.

Добавьте опцию -dpi к командной строке вашего Х-сервера (см. раздел 3, чтобы узнать как это сделать.)

Используйте ключ --res для того, чтобы указать xfstt увеличить разрешение экрана по умолчанию. Используйте следующую командную строку:

 # xfstt --res 120
 


3.2.2. xfs, входящий в состав дистрибутива Redhat

В комплект дистрибутива RedHat (начиная с версии 6.0), а также производных ему (Mandrake, и т.п.) входит специальная измененная версия пакета xfs - сервера шрифтов XFree86, а также подправленные версии X-серверов. Этот исправленный xfs включает в себя патч xfsft, который, в свою очередь, основан на библиотеке FreeType Font. Этот xfs делает практически то же самое, что и xfstt. xfs обрабатывает шрифты Truetype и Type 1, а также обычные шрифты X Window.

Если ваш дистрибутив основан на RedHat, то у вас уже должен быть установлен xfs. Если нет, то он находится в пакете XFree86-xfs*rpm. Для того, чтобы убедиться в том, что он работает в качестве стандартного сервиса, используйте ntsysv или:

 # chkconfig --add xfs
 

Теперь xfs будет запускаться при каждой загрузке системы.


3.2.2.1. Установка переменной FontPath для xfs

Стандартная установка xfs в RedHat работает со шрифтами через Доменные Сокеты Unix (Unix Domain Socket). Мы должны указать X-серверу, где искать xfs, а, соответственно, и шрифты. FontPath в файле /etc/X11/XF86Config должен содержать строку:

 FontPath   "unix/:-1" 

Так, по крайней мере, сделано в стандартной установке. Здесь приводится ссылка на сокет, на котором находится xfs. Вы можете также включить сюда ссылки на другие каталоги, но их будет обрабатывать X-сервер, а не xfs. В стандартной установке RedHat 6.x это делается по умолчанию, но, если вы обновляете старую версию, то вам придется указать эту строку вручную!

Переменная FontPath, которую использует xfs, находится в отдельном файле /etc/X11/fs/config. В этом файле находится список каталогов со шрифтами. Он не имеет никакого отношения к FontPath в XF86Config. Вы можете либо добавить каталоги вручную, либо использовать для этого команду chkfontpath:

 # chkfontpath --add /usr/local/share/fonts/ttfonts
 

Переменная FontPath должна быть задана до запуска chkfontpath. Соответствующая секция файла /etc/X11/fs/config должна выглядеть примерно так:


catalogue = /usr/X11R6/lib/X11/fonts/misc:unscaled,
            /usr/X11R6/lib/X11/fonts/100dpi:unscaled,
            /usr/X11R6/lib/X11/fonts/75dpi:unscaled,
            /usr/X11R6/lib/X11/fonts/Type1,
            /usr/X11R6/lib/X11/fonts/Speedo,
            /usr/X11R6/lib/X11/fonts/misc,
            /usr/X11R6/lib/X11/fonts/100dpi,
            /usr/X11R6/lib/X11/fonts/75dpi,
            /usr/local/share/fonts/ttfonts

 


3.2.2.2. Подготовка шрифтов

Нам надо сделать кое-что еще перед тем, как использовать шрифты TrueType. Для использования xfs должны быть выполнены некоторые правила. Во-первых, имена файлов шрифтов должны быть написаны маленькими буквами. Во-вторых, для работы надо создать пару файлов.

Используйте команду su для того, чтобы стать пользователем root, и перейдите в каталог со шрифтами TrueType:

 # su -
 # cd /usr/local/share/fonts/ttfonts
 

Если у вас там есть шрифты с большими буквами в именах, то вам надо использовать следующий скрипт для того, чтобы преобразовать все имена в нижний регистр:


 #!/bin/sh
 #
 ## -------- преобразование букв имен файлов в строчные ---------

 ls * | while read f
  do
    if [ -f $f ]; then
      if [ "$f" != "`echo \"$f\" | tr A-Z a-z`" ]; then
       # Внимание, файл 'This' будет перезаписан файлом 'this'!
       mv -iv "$f" "`echo \"$f\" | tr A-Z a-z`"
      fi
    fi
  done

 ## eof

 

Обратите внимание на символы -- очень важны обратные апострофы! Уберите из имен файлов все пробелы. После этого создайте файлы fonts.dir и fonts.scale. Это можно сделать при помощи следующих команд:

 # ttmkfdir -o fonts.scale
 # mkfontdir
 

Теперь у вас в каталоге с TrueType-шрифтами должны появиться файлы fonts.dir и fonts.scale. Команда ttmkfdir входит в состав RPM Freetype, и ее надо запускать до запуска mkfontdir. Эти команды не всегда выдают сообщения об ошибках, поэтому надо убедиться в том, что они создали не пустые файлы:

 $ ls -l fonts.*
  -rw-r--r--  1 root   root    11657 Aug 17 10:31 fonts.dir
  -rw-r--r--  1 root   root    11657 Aug 17 10:31 fonts.scale
 

Если у вас возникли проблемы, то используйте опцию -m команды ttmkfdir. В результате из файлов шрифтов будут отброшены все плохие символы. Задайте число 50 или 100 (ttmkfdir -m 50). Полученные файлы являются текстовыми, и вы можете на них взглянуть:

 $ less  fonts.dir
  114
  webdings.ttf  -microsoft-Webdings-medium-r-normal--0-0-0-0-p-0-microsoft-symbol
  verdanaz.ttf  -microsoft-Verdana-bold-i-normal--0-0-0-0-p-0-ascii-0
  verdanaz.ttf  -microsoft-Verdana-bold-i-normal--0-0-0-0-p-0-fcd8859-15
  verdanaz.ttf  -microsoft-Verdana-bold-i-normal--0-0-0-0-p-0-iso8859-15
  verdanaz.ttf  -microsoft-Verdana-bold-i-normal--0-0-0-0-p-0-iso8859-9
  verdanaz.ttf  -microsoft-Verdana-bold-i-normal--0-0-0-0-p-0-iso8859-1
 [...]
 

После этого обновитье переменные FontPath вашего xfs (это может быть не обязательно в случае XFree86 4.x) и X-сервера:

 # /etc/rc.d/init.d/xfs restart
 $ xset +fp /usr/local/share/fonts/ttfonts
 $ xset fp rehash
 

Запускайте первую и последнюю команды каждый раз при добавлении или удалении шрифтов. Команда xset +fp необходима только в тех случаях, когда вы добавляете новый каталог шрифтов к существующим.

Теперь все должно работать. Проверьте доступность шрифтов командой:

 $ xlsfonts | less
 

или проверьте их при помощи xfontsel, или gfontsel. Если их видит xlsfonts, то они должны быть доступны X и наоборот. Если их нет, то попоробуйте перезапустить X клавишами Ctrl-Alt-BS.


3.3. xfsft

xfsft - это решение для работы с TrueType, предложенное Juliusz Chroboczek. xfsft основан на библиотеке работы со шрифтами FreeType, которая разработана Mark Leisher. Также существует патч для xfs XFree86, и связанная с ним библиотека -- xfs + ft. xfs, входящий в состав Redhat является на самом деле xfsft с небольшими изменениями. Более того, XFree86 версий 4.x включает в себя модуль работы со шрифтами freetype, который также сделан Juliusz Chroboczek.

Сборка xfsft требует наличия части исходных текстов XFree86 (кроме самих исходных текстов xfsft), так что это не очень быстрое занятие. Инструкции по сборке и настройке xfsft находятся в самом файле исходных текстов, поэтому я не буду вдаваться в подробности. Там все достаточно просто. На домашней странице xfsft также есть ссылки на уже собранные программы (см. выше).

Заметьте, что xfsft требует наличия файлов fonts.scale и fonts.dir. Файл fonts.scale можно создать вручную (уф!), или при помощи утилиты ttmkfdir. Она не входит в состав xfsft, но вы найдете ее здесь или, возможно, на других известных Linux-сайтах. Она также входит в состав RPM Freetype в RedHat.

Вам необходимо настроить файл конфигурации. Ниже приведен пример:

-----------------------------------------------------

clone-self = off
use-syslog = off

client-limit = 20

catalogue = /usr/local/share/font/ttfonts

error-file = /home/jec/fonts/xfs.errors

# в деципунктах
default-point-size = 120

# x,y
default-resolutions = 100,100,75,75

-----------------------------------------------------

 

После этого вы можете запустить:

 # xfs -port 7100 -config /путь/к/вашему/файлу/конфигурации &
 

Затем вы можете добавить xfsft к переменной FontPath вашего X-сервера:

 $ xset +fp tcp/localhost:7100
 

Если все пойдет хорошо, то добавьте эту строку к переменной FontPath вашего файла XF86Config.


3.4. Файл fonts.alias

fonts.alias - это еще один конфигурационный файл, который можно использовать для изменения способа работы со шрифтами. Подобно файлам fonts.scale и fonts.dir, файл fonts.alias должен быть в том же каталоге, что и шрифты, к которым вы задаете алиасы. Этот файл не обязятелен, но он может решить некоторые проблемы. Ниже приведен пример строки из файла /usr/X11R6/lib/X11/fonts/misc/fonts.alias в системе Redhat:

 fixed    -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1
 

fixed - это алиас. При каждом запросе мы на самом деле получаем определение шрифта из второй колонки. Шрифт слишком мал? Мы просто изменяем определение шрифта. (Внимание: этот файл критичен для работы системы, по крайней мере в RedHat.) Этот принцип справедлив для всех шрифтов, включая и TrueType. На самом деле, если у вас нет TrueType шрифтов, вы можете использовать эту хитрость для подстановки подобного ему шрифта Type 1, или другого шрифта, алиас которого ссылается на TrueType.

Файл fonts.alias очень важен для некоторых программ, которые не совсем правильно работают с данными, которые есть в файле fonts.scale. Одной из таких программ является Netscape. Если у вас нет файла fonts.alias, то вы заметите, что Netscape показывает размеры шрифтов от 0 до 12. Это можно исправить при помощи fonts.alias. Вы также можете заметить, что, если вы зададите другой размер в опции scalable font в пункте меню Preferences, Netscape не запомнит эту настройку. Это очень неудобно! Это также исправляется при помощи алиасов. Поэтому нам очень нужен этот файл. Вот пример из файла fonts.scale:

 arial.ttf   -monotype-Arial-medium-r-normal--0-0-0-0-p-0-ascii-0
 arial.ttf   -monotype-Arial-medium-r-normal--0-0-0-0-p-0-fcd8859-15
 arial.ttf   -monotype-Arial-medium-r-normal--0-0-0-0-p-0-iso8859-15
 arial.ttf   -monotype-Arial-medium-r-normal--0-0-0-0-p-0-iso8859-1
 

Это - векторные шрифты, поэтому мы не задаем стандартные размеры шрифтов. Нам надо создать свой файл fonts.alias. Ниже приведена его часть (касающаяся Arial):


 -monotype-Arial-medium-r-normal--6-60-0-0-p-0-iso8859-1 \
             -monotype-Arial-medium-r-normal--9-90-75-75-p-0-iso8859-1

 -monotype-Arial-medium-r-normal--7-70-0-0-p-0-iso8859-1 \
             -monotype-Arial-medium-r-normal--9-90-75-75-p-0-iso8859-1

 -monotype-Arial-medium-r-normal--8-80-0-0-p-0-iso8859-1 \
             -monotype-Arial-medium-r-normal--10-100-75-75-p-0-iso8859-1

 -monotype-Arial-medium-r-normal--9-90-0-0-p-0-iso8859-1 \
             -monotype-Arial-medium-r-normal--11-110-75-75-p-0-iso8859-1

 -monotype-Arial-medium-r-normal--10-100-0-0-p-0-iso8859-1 \
             -monotype-Arial-medium-r-normal--12-120-75-75-p-0-iso8859-1

 -monotype-Arial-medium-r-normal--11-110-0-0-p-0-iso8859-1 \
             -monotype-Arial-medium-r-normal--12-120-75-75-p-0-iso8859-1

 -monotype-Arial-medium-r-normal--12-120-0-0-p-0-iso8859-1 \
             -monotype-Arial-medium-r-normal--12-120-75-75-p-0-iso8859-1

 -monotype-Arial-medium-r-normal--13-130-0-0-p-0-iso8859-1 \
             -monotype-Arial-medium-r-normal--13-130-75-75-p-0-iso8859-1

 -monotype-Arial-medium-r-normal--14-140-0-0-p-0-iso8859-1 \
             -monotype-Arial-medium-r-normal--14-140-75-75-p-0-iso8859-1

 -monotype-Arial-medium-r-normal--15-150-0-0-p-0-iso8859-1 \
             -monotype-Arial-medium-r-normal--15-150-75-75-p-0-iso8859-1

 -monotype-Arial-medium-r-normal--18-180-0-0-p-0-iso8859-1 \
            -monotype-Arial-medium-r-normal--18-180-75-75-p-0-iso8859-1

 -monotype-Arial-medium-r-normal--24-240-0-0-p-0-iso8859-1 \
            -monotype-Arial-medium-r-normal--24-240-75-75-p-0-iso8859-1

 

Заметьте, что я разделил каждую строку на две для читаемости. В этом файле должны быть две колонки без символа "\", разделенные, как минимум, одним пробелом. Это достаточно для Netscape. Обратите внимание на различие поля pointsize записей первой и второй колонок первых двух строк. В первой колонке в этом поле написано "6", а во второй - "9". Таким образом, можно обойти синдром "очень мелких шрифтов" Netscape. Подправьте этот файл по вашему вкусу, разрешению экрана и т.п.

Этот файл можно создать вручную при помощи текстового редактора, или, что проще, при помощи специальных скриптов, использующих sed и awk. Прекрасное обсуждение содержимого этого файла есть здесь. Там же есть ссылка на python-скрипт, который может почти автоматически создать этот файл прямо на том сайте.


4. XFree86 версий 4.x

XFree86 4.0 среди большого количества новых возможностей включает в себя встроенную поддержку шрифтов TrueType. Расширенная поддержка шрифтов основана на xfsft Juliusz Chroboczek, который, в свою очередь, основан на библиотеке FreeType, написанной Mark Leisher, поэтому его настройка похожа на настройку xfsft и модифицированной Redhat версии xfs.

Переменная FontPath находится там же, в файле XF86Config. Для пользователей Redhat xfs это означает, что им надо перенести FontPath из файла /etc/X11/fs/config обратно в XF86Config. Более того, надо заметить, что для поддержки TrueType шрифтов xfs больше не нужен. Вы можете его отключить, только если вам не нужен сетевой сервер шрифтов.

 Section "Files"
  FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled"
  FontPath "/usr/X11R6/lib/X11/fonts/100dpi:unscaled"
  FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
  FontPath "/usr/X11R6/lib/X11/fonts/misc"
  FontPath "/usr/X11R6/lib/X11/fonts/Type1"
  FontPath "/usr/X11R6/lib/X11/fonts/Speedo"
  FontPath "/usr/share/fonts/default/Type1"
  FontPath "/usr/local/share/fonts/ttfonts"
  FontPath "/usr/X11R6/lib/X11/fonts/100dpi"
  FontPath "/usr/X11R6/lib/X11/fonts/75dpi"
 EndSection
  

Доя использования TrueType, вы также должны указать загрузку модуля X-сервера в разделе "Module":

 Section "Module"
  Load  "freetype"
  Load  "speedo"
  Load  "type1"
 EndSection
  

Для каждого каталога со шрифтами TrueType вы должны создать файлы fonts.scale и fonts.dir (аналогично xfsft и xfs Redhat). В создании файла fonts.scale вам поможет утилита ttmkfdir. Смотрите выше раздел с описанием xfs Разд. 3.2.2, в котором описывается, как это сделать.

xtt - это другой доступный модуль работы с TrueType, который больше известен поддержкой идеографических (Восточных) шрифтов. Вы можете использовать и его, но не вместе с обычным.


5. Настройка шрифтов в отдельных программах

5.1. KDE

KDE - это одна из наилучших вещей, которые случались с Linux и X в течение долгого времени. Она представляет из себя полный пользовательский интерфейс, который очень сильно приближает Linux к цели - быть доступным для среднего непрофессионала. Более подробную информацию о KDE вы можете найти по адресу http://www.kde.org/. Тогда почему я пою этой системе дифирамбы здесь? Потому что в KDE версии 1.1 есть новая функция - совместить шрифты и цвета в ваших программах, включая и не-KDE программы, с тем стилем, который на этот момент выбран для KDE.


5.1.1. Использование шрифтов и цветов KDE в не-KDE приложениях

Это очень просто. Просто запустите Центр Управления KDE, перейдите к пункту Desktop, внутри него зайдите в подпункт Style. Там будет флажок с надписью "Использовать шрифты и цвета в не-KDE приложениях" ("Apply fonts and colors to non-KDE apps"). Установите его, нажмите OK, и все! В следующий раз, когда вы будете запускать многие X-приложения, они будут использовать те же цвета и шрифты, которые используют ваши KDE-приложения. Некоторым больше нравится эта опция, некоторым меньше. Если она вам не понравится, вы всегда можете ее выключить.


5.2. Netscape

Давайте согласимся с одним фактом, Netscape - это очень важная программа для Linux программа. Мы все ее используем, всем нам она очень нужна, поэтому остановимся на ней поподробнее. Стандартная установка Netscape известна своими проблемами со шрифтами - большие шрифты состоят из крупных точек, шрифты выглядят неправильно, шрифты слишком мелки для чтения. В-общем, неудобно! Может быть, именно поэтому вы читаете этот текст?

Я надеюсь, что вы уже последовали моим предыдущим советам. То, что я посоветую в этом разделе должно вам помочь. Наличие шрифтов TrueType в вашей системе уже стало необходимостью, и для работы с ними вам нужен сервер шрифтов TrueType. Многие веб-страницы используют конкретные семейства шрифтов, таких, как Arial, которые не очень типичны для пользователей Linux. Это неправильный шаг с точки зрения дизайна, но наличие в вашей системе стандартных TrueType шрифтов поможет вам обойти глупость некоторых веб- дизайнеров. НУ НЕ МОЖЕМ МЫ ОБОЙТИСЬ БЕЗ MICROSOFT!

Предположим, что в вашей системе уже работает TrueType. Зайдите в Netscape в меню Edit -> Preferences -> Fonts. Откройте список под названием Variable Width Font в правой части окна. Выберите любой подходящий вам шрифт. Включите флажок Allow Scaling. Если вам предлагаются только 0 и 12 размер шрифта, то вы можете ввести свой размер в окошке рядом с размерами, а затем нажать на кнопку OK. Проблема состоит в том, что Netscape не запомнит эти значения, и вам придется вносить их каждый раз при запуске Netscape. Это нужно только, если вы еще не настроили файл fonts.alias. Этот файл разрешит ваши проблемы. Читайте раздел Разд. 3.4, чтобы узнать подробнее о файле fonts.alias.

Вы можете поэкспериментировать над настройками в файлах ~/.Xdefaults (или ~/.Xresources):

 Netscape*DocumentFonts.sizeIncrement: 10
 Netscape*documentFonts.xResolution*iso-8859-1: 120
 Netscape*documentFonts.yResolution*iso-8859-1: 120
  

Переменная 'sizeIncrement' контролирует размер интервала при различии заданных в странице параметров 'basefont':

 <basefont size=7>
 

Значение по умолчанию - '20', что достаточно много. Изменяя это число можно уберечь Netscape от слишком больших или слишком малых шрифтов. Разрешения по x и по y - очень грубый эквивалент разрешения экрана в точках на дюймах. Экспериментируйте.

Затем запустите команду:

 $ xrdb -load ~/.Xdefaults
 

(или .Xresources) и перезапустите Netscape. Таким образом можно изменять разные параметры Netscape. Вы можете посмотреть содержимое файла Netscape.ad, который должен входить в поставку вашего пакета Netscape.

Если при помощи этих советов вы не сможете добиться желаемого результата, и проблема "мелких шрифтов" останется, то смотрите выше раздел, касающийся файла fonts.alias. С помощью этого файла вы можете добиться значительно лучших результатов.

Настройка Mozilla должна быть практически идентична Netscape.


6. Разное

6.1. Замечания

  • К сожалению, в Linux нет стандартной системы работы со шрифтами. Вам придется настраивать каждую программу в отдельности. В каждой программе может быть свой собственный способ настройки, поэтому читайте руководства.

  • Многие программы с графическим интерфейсом должны поддерживать и шрифты TrueType и шрифты Type 1. Однако, например, Wordperfect для Linux, не может их использовать. (См.ниже ссылки, где можно найти более подробную информацию о Wordperfect.) Текстовым редакторам, терминальным программам и т.п. требуются фиксированные шрифты, и они плохо работают с TrueType или с другими векторными шрифтами.

  • Несмотря на то, что мы не обсуждали здесь шрифты Type 1, они практически идентичны TrueType по своим свойствам. Скорее всего часть из них у вас уже есть. Однако, к большому сожалению, Type 1 не стал сетевым стандартом в отличие от TrueType. На самом деле они предназначались для печати. Более подробно об этом вы можете прочитать на странице ghostscript.

  • Антиалиасинг не поддерживается ни одной версией XFree86.

  • Несмотря на то, что существует возможность задать стандартный размер шрифта xfs-сервера, эта функция не используется практически ни одним приложением.


6.2. Ссылки

  • HOWTO: Настройка Видео-режимов - основы и детали того, как взять максимум от вашего монитора.

  • HOWTO: Шрифты - Много полезных советов по установке шрифтов и настройке приложений (StarOffice, Applixware, Wordperfect, Ghostscript, TeX/LaTeX).

  • HOWTO: TrueType - много советов по печати и немного описаний приложений.

  • Домашняя страница xfsft, программы поддержки TrueType для X. Эта программа положена в основу модуля "freetype" XFree86 версий 4.x и xfs, входящего в состав дистрибутива Redhat. Неплохой сайт, на котором есть ссылки на другую информацию, касающуюся шрифтов и TrueType.

  • Домашняя страница ueType - еще один сервер шрифтов TrueType, который подходит Японских, Китайских и Корейских шрифтов.

  • Советы по решению проблем с размером шрифтов на сайте Netscape.

  • Wordperfect для Linux -- Шрифты и Принтеры автора Rod Smith, автора книги Использование Corel Wordperfect 8 для Linux от Que. Великолепная информация по Wordperfect, и как использовать в нем TrueType.

  • Проект XFree86 - та компания классных ребят, тратящих огромное количество сил и времени на создание этого шикарного графического интерфейса. Некоторая информация о шрифтах на странице XFree86 4.x.

  • Веб-шрифты Microsoft прямо из пасти огнедышащего Дракона -- и бесплатно! Если у вас нет доступа к системе win32, то вам понадобятся шрифты, предназначенные для Win3.1. Их можно распаковать в Linux (см. вышеe).

  • RPM-пакет Веб-Шрифты - содержит часть веб-шрифтов MS.

  • HP FontSmart TrueType Fonts от Hewlett Packard -- Garamond, Bodoni, Dark Courier, Euro Sign и Ozzie Black. Могут быть разархивированы в Linux утилитой unzip.

  • Freeware Connection -- Сайты Бесплатных Шрифтов - большое количество ссылок на сайты со шрифтами.

  • TrueType Шрифт Bitstream's Geometric Slabserif.