6.5. Использование шрифтов в X11
Пред. | Глава 6. X Window System | След.

## 6.5. Использование шрифтов в X11

Текст предоставил Murray Stokely.

### 6.5.1. Шрифты Type1

Шрифты, используемые по умолчанию и распространяемые вместе с X11, вряд ли можно назвать идеально подходящими для применения в обычных издательских приложениях. Большие презентационные шрифты выглядят рвано и непрофессионально, а мелкие шрифты в Netscape® вообще невозможно разобрать. Однако есть некоторое количество свободно распространяемых высококачественных шрифтов Type1 (PostScript®), которые можно без изменений использовать с X11. К примеру, в наборе шрифтов URW (`x11-fonts/urwfonts`) имеются высококачественные версии стандартных шрифтов type1 (Times Roman®, Helvetica®, Palatino® и другие). В набор Freefonts (`x11-fonts/freefonts`) включено ещё больше шрифтов, однако большинство из них предназначено для использования в программном обеспечении для работы с графикой, например, Gimp, и они не вполне пригодны для использования в качестве экранных шрифтов. Кроме того, X11 с минимальными усилиями может быть настроена на использование шрифтов TrueType®. Более детальная информация находится на странице справочной системы X(7) и в разделе о шрифтах TrueType® ниже.

Для установки вышеупомянутых коллекций шрифтов Type1 из коллекции портов выполните следующие команды:

`#` `cd /usr/ports/x11-fonts/urwfonts` `#` `make install clean`

То же самое нужно будет сделать для коллекции freefont и других. Чтобы X-сервер обнаруживал этих шрифты, добавьте соответствующую строку в файл настройки X сервера (`/etc/X11/xorg.conf`), которая должна выглядеть так:

FontPath "/usr/local/lib/X11/fonts/URW/"

Либо из командной строки при работе с X выполните:

`%` `xset fp+ /usr/local/lib/X11/fonts/URW` `%` `xset fp rehash`

Это сработает, но будет потеряно, когда сеанс работы с X будет закрыт, если эта команда не будет добавлена в начальный файл (`~/.xinitrc` в случае обычного сеанса через `startx` или `~/.xsession` при входе через графический менеджер типа XDM). Третий способ заключается в использовании нового файла `/usr/local/etc/fonts/local.conf`: посмотрите раздел об антиалиасинге.

### 6.5.2. Шрифты TrueType®

В Xorg имеется встроенная поддержка шрифтов TrueType®. Имеются два модуля, которые могут обеспечить эту функциональность. В нашем примере используется модуль freetype, потому что он в большей степени похож на другие механизмы для работы с шрифтами. Для включения модуля freetype достаточно в раздел `"Module"` файла `/etc/X11/xorg.conf` добавить следующую строчку.

Load "freetype"

Теперь создайте каталог для шрифтов TrueType® (к примеру, `/usr/local/lib/X11/fonts/TrueType`) и скопируйте все шрифты TrueType® в этот каталог. Имейте в виду, что напрямую использовать шрифты TrueType® с Macintosh® нельзя; для использования с X11 они должны быть в формате UNIX®/MS-DOS®/Windows®. После того, как файлы будут скопированы в этот каталог, воспользуйтесь утилитой ttmkfdir для создания файла `fonts.dir`, который укажет подсистеме вывода шрифтов X на местоположение этих новых файлов. `ttmkfdir` имеется в Коллекции Портов FreeBSD: `x11-fonts/ttmkfdir`.

`#` `cd /usr/local/lib/X11/fonts/TrueType` `#` `ttmkfdir -o fonts.dir`

После этого добавьте каталог со шрифтами TrueType® к маршруту поиска шрифтов. Это делается точно также, как описано выше для шрифтов Type1, то есть выполните

`%` `xset fp+ /usr/local/lib/X11/fonts/TrueType` `%` `xset fp rehash`

или добавьте строку `FontPath` в файл `xorg.conf`.

Это всё. Теперь Netscape®, Gimp, StarOffice™ и все остальные X-приложения должны увидеть установленные шрифты TrueType®. Очень маленькие (как текст веб-страницы на дисплее с высоким разрешением) и очень большие (в StarOffice™) шрифты будут теперь выглядеть гораздо лучше.

### 6.5.3. Антиалиасинг шрифтов

Обновление выполнил Joe Marcus Clarke.

Антиалиасинг присутствует в X11 начиная с XFree86™, версии 4.0.2. Однако настройка шрифтов была довольно громоздка вплоть до появления XFree86™ 4.3.0. Начиная с версии XFree86™ 4.3.0, все шрифты, расположенные в каталогах `/usr/local/lib/X11/fonts/` и `~/.fonts/`, автоматически становятся доступными для применения антиалиасинга в приложениях, использующих Xft. Не все приложения могут использовать Xft, но во многих его поддержка присутствует. Примерами приложений, использующих Xft, является Qt версий 2.3 и более поздних (это инструментальный пакет для оболочки KDE), GTK+ версий 2.0 и более поздних (это инструментальный пакет для оболочки GNOME), а также Mozilla версий 1.2 и более поздних.

Для применения к шрифтам антиалиасинга, а также для настройки параметров антиалиасинга, создайте (или отредактируйте, если он уже существует) файл `/usr/local/etc/fonts/local.conf`. Некоторые мощные возможности системы шрифтов Xft могут быть настроены при помощи этого файла; в этом разделе описаны лишь некоторые простые возможности. Для выяснения всех деталей, пожалуйста, обратитесь к fonts-conf(5).

Этот файл должен быть сформирован в формате XML. Обратите особое внимание на регистр символов, и удостоверьтесь, что все тэги корректно закрыты. Файл начинается обычным заголовком XML, за которым следуют DOCTYPE и тэг `<fontconfig>`:

<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig>

Как и говорилось ранее, все шрифты из каталога `/usr/local/lib/X11/fonts/`, а также `~/.fonts/` уже доступны для приложений, использующих Xft. Если вы хотите добавить каталог, отличный от этих двух, добавьте строчку, подобную следующей, в файл `/usr/local/etc/fonts/local.conf`:

<dir>/path/to/my/fonts</dir>

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

`#` `fc-cache -f`

Антиалиасинг делает границы несколько размытыми, что делает очень мелкий текст более читабельным и удаляет «лесенки» из текста большого размера, но может вызвать нечёткость при применении к тексту обычного размера. Для исключения размеров шрифтов, меньших 14, из антиалиасинга, добавьте такие строки:

<match target="font"> <test name="size" compare="less"> <double>14</double> </test> <edit name="antialias" mode="assign"> <bool>false</bool> </edit> </match> <match target="font"> <test name="pixelsize" compare="less" qual="any"> <double>14</double> </test> <edit mode="assign" name="antialias"> <bool>false</bool> </edit> </match>

Для некоторых моноширинных шрифтов антиалиасинг может также оказаться неприменимым при определении межсимвольного интервала. В частности, эта проблема возникает с KDE. Одним из возможных решений для этого является жесткое задание межсимвольного интервала в 100. Добавьте следующие строки:

<match target="pattern" name="family"> <test qual="any" name="family"> <string>fixed</string> </test> <edit name="family" mode="assign"> <string>mono</string> </edit> </match> <match target="pattern" name="family"> <test qual="any" name="family"> <string>console</string> </test> <edit name="family" mode="assign"> <string>mono</string> </edit> </match>

(это создаст алиасы `"mono"` для других общеупотребительных имён шрифтов фиксированного размера), а затем добавьте:

<match target="pattern" name="family"> <test qual="any" name="family"> <string>mono</string> </test> <edit name="spacing" mode="assign"> <int>100</int> </edit> </match>

С некоторыми шрифтами, такими, как Helvetica, при антиалиасинге могут возникнуть проблемы . Обычно это проявляется в виде шрифта, который наполовину вертикально обрезан. Хуже того, это может привести к сбоям таких приложений, как Mozilla. Во избежание этого следует добавить следующее в файл `local.conf`:

<match target="pattern" name="family"> <test qual="any" name="family"> <string>Helvetica</string> </test> <edit name="family" mode="assign"> <string>sans-serif</string> </edit> </match>

После того, как вы закончите редактирование `local.conf`, удостоверьтесь, что файл завершен тэгом `</fontconfig>`. Если этого не сделать, ваши изменения будут проигнорированы.

Набор шрифтов по умолчанию, поставляемый с X11, не очень подходит, если включается антиалиасинг. Гораздо лучший набор шрифтов, используемых по умолчанию, можно найти в порте `x11-fonts/bitstream-vera`. Этот порт установит файл `/usr/local/etc/fonts/local.conf`, если такого ещё не существует. Если файл существует, то порт создаст файл `/usr/local/etc/fonts/local.conf-vera`. Перенесите содержимое этого файла в `/usr/local/etc/fonts/local.conf`, и шрифты Bitstream автоматически заменят используемые по умолчанию в X11 шрифты Serif, Sans Serif и Monospaced.

Наконец, пользователи могут добавлять собственные наборы посредством персональных файлов `.fonts.conf`. Для этого каждый пользователь должен просто создать файл `~/.fonts.conf`. Этот файл также должен быть в формате XML.

И последнее замечание: при использовании дисплея LCD может понадобиться включение разбиения точек. При этом компоненты красного, зелёного и голубого цветов (разделяемые по горизонтали), рассматриваются как отдельные точки для улучшения разрешения экрана по горизонтали; результат может оказаться потрясающим. Для включения этого механизма добавьте такую строчку где-нибудь в файле `local.conf`:

<match target="font"> <test qual="all" name="rgba"> <const>unknown</const> </test> <edit name="rgba" mode="assign"> <const>rgb</const> </edit> </match>

### Примечание:

В зависимости от типа дисплея, `rgb` может потребоваться заменить на `bgr`, `vrgb` или `vbgr`: пробуйте и смотрите, что работает лучше.

Антиалиасинг должен быть включен при следующем запуске X-сервера. Однако программы должны знать, как использовать его преимущества. В настоящее время инструментальный пакет Qt умеет ими пользоваться, так что вся оболочка KDE может использовать шрифты с антиалиасингом. GTK+ и GNOME также можно заставить использовать антиалиасинг посредством капплета «Font» (обратитесь к Раздел 6.7.1.3, «Шрифты с антиалиасингом и GNOME» для выяснения всех подробностей). По умолчанию Mozilla версий 1.2 и выше будет автоматически использовать антиалиасинг. Для отмены использования антиалиасинга перестройте Mozilla с флагом `-DWITHOUT_XFT`.

Пред. | Наверх | След.
6.4. Конфигурация X11 | Начало | 6.6. Менеджеры экранов (Display Managers) X

Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку <doc@FreeBSD.org>.