Архив документации OpenNet.ru / Раздел "Руководства по FreeBSD на русском" / Индекс

5. Использование шрифтов type 1 с системой X11

X11 может использовать файлы шрифтов в формате .pfa или .pfb. Шрифты для X11 располагаются в различных подкаталогах в /usr/X11R6/lib/X11/fonts. На каждый файл со шрифтом имеется ссылка по его X11-имени в файле fonts.dir в каждом таком каталоге.

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

    Создаем каталог для файлов шрифтов
    % mkdir -p /usr/local/share/fonts/type1
    % cd /usr/local/share/fonts/type1
    
    Помещаем сюда файлы .pfa, .pfb и .afm
    Кому-то может потребоваться хранить здесь также
    сопроводительные файлы и документацию к шрифтам
    % cp /cdrom/fonts/atm/showboat/showboat.pfb .
    % cp /cdrom/fonts/atm/showboat/showboat.afm .
    
    Обновление индексного файла со ссылками на файлы шрифтов
    % echo showboat - InfoMagic CICA, Dec 1994, /fonts/atm/showboat >>INDEX
         

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

    -bitstream-charter-medium-r-normal-xxx-0-0-0-0-p-0-iso8859-1
         |        |      |    |   |     |  | | | | | |    \    \
         |        |      |    |   |     \  \ \ \ \ \ \     +----+- набор символов
         |        |      |    |   \      \  \ \ \ \ \ +- средняя ширина
         |        |      |    |    \      \  \ \ \ \ +- spacing
         |        |      |    \ \      \  \ \ \ +- разрешение по вертикали
         |        |      |     \     \  \  \ \ +- разрешение по горизонтали
         |        |      |      \     \  \  \ +- пунктов
         |        |      |       \     \      \  +- пиксел
         |        |      |        \     \      \
      foundry  family  weight   slant  width  additional style
         

Для каждого нового файла шрифтов необходимо создать новое имя. Если у вас есть какая-либо информация из сопроводительной документации к шрифту, то она может служить основой для создания имени. Если информации нет, то можно получить некоторую информацию от использования программы strings(1) над файлом шрифта. Например:

    % strings showboat.pfb | more
    %!FontType1-1.0: Showboat 001.001
    %%CreationDate: 1/15/91 5:16:03 PM
    %%VMusage: 1024 45747
    % Generated by Fontographer 3.1
    % Showboat
     1991 by David Rakowski.  Alle Rechte Vorbehalten.
    FontDirectory/Showboat known{/Showboat findfont dup/UniqueID known{dup
    /UniqueID get 4962377 eq exch/FontType get 1 eq and}{pop false}ifelse
    {save true}{false}ifelse}{false}ifelse
    12 dict begin
    /FontInfo 9 dict dup begin
     /version (001.001) readonly def
     /FullName (Showboat) readonly def
     /FamilyName (Showboat) readonly def
     /Weight (Medium) readonly def
     /ItalicAngle 0 def
     /isFixedPitch false def
     /UnderlinePosition -106 def
     /UnderlineThickness 16 def
     /Notice (Showboat
     1991 by David Rakowski.  Alle Rechte Vorbehalten.) readonly def
    end readonly def
    /FontName /Showboat def
    --stdin--
         

Пользуясь этой информацией, можно составить возможное имя:

    -type1-Showboat-medium-r-normal-decorative-0-0-0-0-p-0-iso8859-1
         

Компонентами нашего имени являются:

Foundry

Давайте называть все новые шрифты type1.

Family

Имя шрифта.

Weight

Normal, bold, medium, semibold, и так далее. Из результата работы команды strings(1) похоже, что этот шрифт имеет ширину medium.

Slant

roman, italic, oblique, и так далее. Так как ItalicAngle равен нулю, то будет использоваться roman.

Width

Normal, wide, condensed, extended, и так далее. Пока это не будет проверено, предполагаем normal.

Дополнительный стиль

Обычно опускается, но он будет указывать, что в шрифте есть декоративные заглавные буквы.

Spacing

proportional или monospaced. Используется proportional, потому что isFixedPitch равен false.

Все эти имена произвольны, но нужно стараться следовать существующим соглашениям. В программе для X11 на шрифт ссылаются по имени с применением шаблонов, так что в выбираемом имени это должно учитываться. Можно начать с простого использования

    ...-normal-r-normal-...-p-...
       
в качестве имени, а затем использовать xfontsel(1) для его проверки и изменения имени на основе того, как выглядит шрифт.

Итак, завершая наш пример:

    Делаем шрифт доступным для X11
    % cd /usr/X11R6/lib/X11/fonts/Type1
    % ln -s /usr/local/share/fonts/type1/showboat.pfb .
    
    Редактируем файлы fonts.dir and fonts.scale, добавляя строку,
описывающую шрифт и увеличивая количество шрифтов в первой строке.
    % ex fonts.dir
:1p
25
:1c
26
.
:$a
showboat.pfb -type1-showboat-medium-r-normal-decorative-0-0-0-0-p-0-iso8859-1
.
:wq
    
    fonts.scale идентичен
fonts.dir...
    % cp fonts.dir fonts.scale
    
    Указываем X11, что произошли изменения
    % xset fp rehash
    
    Проверяем новый шрифт
    % xfontsel -pattern -type1-*
         

Справочная информация: xfontsel(1), xset(1), The X Windows System in a Nutshell, O'Reilly & Associates.


Архив документации на OpenNet.ru