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 выглядят следующим образом:
Для каждого нового файла шрифтов необходимо создать новое имя. Если у вас есть какая-либо информация из сопроводительной документации к шрифту, то она может служить основой для создания имени. Если информации нет, то можно получить некоторую информацию от использования программы 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
.
Имя шрифта.
Normal, bold, medium, semibold, и так далее. Из результата работы команды strings(1) похоже, что этот шрифт имеет ширину medium.
roman, italic, oblique, и так далее. Так как ItalicAngle равен нулю, то будет использоваться roman.
Normal, wide, condensed, extended, и так далее. Пока это не будет проверено, предполагаем normal.
Обычно опускается, но он будет указывать, что в шрифте есть декоративные заглавные буквы.
proportional или monospaced. Используется proportional, потому что isFixedPitch равен false.
Все эти имена произвольны, но нужно стараться следовать существующим соглашениям. В программе для X11 на шрифт ссылаются по имени с применением шаблонов, так что в выбираемом имени это должно учитываться. Можно начать с простого использования
в качестве имени, а затем использовать xfontsel(1) для его проверки и изменения имени на основе того, как выглядит шрифт.
Итак, завершая наш пример:
%
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.
Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.