5.5. Использование шрифтов в XFree86

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

5.5.1. Шрифты Type1

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

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

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

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

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

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

    % xset fp+ /usr/X11R6/lib/X11/fonts/URW
    % xset fp rehash

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

5.5.2. Шрифты TrueType

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

    Load  "freetype"

В случае XFree86 3.3.X требуется отдельный сервер шрифтов TrueType. Для этого обычно используется Xfstt. Для установки Xfstt просто установите порт x11-servers/Xfstt.

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

    # cd /usr/X11R6/lib/X11/fonts/TrueType
    # ttmkfdir > fonts.dir

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

    % xset fp+ /usr/X11R6/lib/X11/fonts/TrueType
    % xset fp rehash

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

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

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

Обновление для XFree86 4.3 выполнил Joe Marcus Clarke.

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

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

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

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

Как и говорилось ранее, все шрифты из каталога /usr/X11R6/lib/X11/fonts/, а также ~/.fonts/ уже доступны для приложений, использующих Xft. Если вы хотите добавить каталог, отличный от этих двух, добавьте строчку, подобную следующей, в файл /usr/X11R6/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>

Для некоторых моноширинных шрифтов антиалиасинг может также оказаться неприменимым при определении межсимвольного интервала. В частности, эта проблема возникает с 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>. Если этого не сделать, то ваши изменения будут проигнорированы.

Набор шрифтов по умолчанию, поставляемый с XFree86, не очень желателен, если включается антиалиасинг. Гораздо лучший набор шрифтов, используемых по умолчанию, можно найти в порте x11-fonts/bitstream-vera. Этот порт установит файл /usr/X11R6/etc/fonts/local.conf, если такого ещё не существует. Если файл существует, то порт создаст файл /usr/X11R6/etc/fonts/local.conf-vera. Перенесите содержимое этого файла в /usr/X11R6/etc/fonts/local.conf, и шрифты Bitstream автоматически заменят используемые по умолчанию в XFree86 шрифты 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>
          

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

Антиалиасинг должен быть включен при следующем запуске X-сервера. Однако программы должны знать, как использовать его преимущества. В настоящее время инструментальный пакет Qt умеет ими пользоваться, так что вся оболочка KDE может использовать шрифты с антиалиасингом (обратитесь к Section 5.7.3.2 о KDE для выяснения всех подробностей). Gtk+ и GNOME также можно заставить использовать антиалиасинг посредством капплета "Font" (обратитесь к Section 5.7.1.3 для выяснения всех подробностей). По умолчанию Mozilla версий 1.2 и выше будет автоматически использовать антиалиасинг. Для отмены этого перестройте Mozilla с флагом -DWITHOUT_XFT.