<!--
     The FreeBSD Russian Documentation Project

     $FreeBSD$
     $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/fonts/article.sgml,v 1.2 2001/06/30 11:08:05 phantom Exp $

     Original revision: 1.15
-->

<!DOCTYPE ARTICLE PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
<!ENTITY % man PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN">
%man;
]>

<!-- Recently, I wanted to figure out how to use some additional fonts that
     I had accumulated.  I finally figured out *how to do it* from the various
     man pages and documentation.  Since it might be of use to other users,
     and I didn't see any reference to this topic in the FAQ or handbook, I
     thought I'd try my hand at a simple cookbook tutorial addressing the
     use of fonts.  I have included my unanswered questions at the end of
     the document.

     Anyway, here's what I put together.  This is my present understanding of
     fonts and how to use them with FreeBSD.  I am sure that there are errors or
     misunderstandings, but it contains enough valid information to allow the
     use of additional fonts with Ghostscript, X11 and Groff.  This is my first
     attempt to write anything along the lines of a tutorial/FAQ, so I am sure
     it is pretty raw.  There are probably better ways to do some of this stuff,
     and I would welcome being corrected.
 -->

<!-- The section "Setting a virtual console to 80x60 line mode" was
     updated to reflect changes in FreeBSD system configuration
     files by Mark Ovens <mark@ukug.uk.freebsd.org> 27/5/00
 -->

<article>
  <articleinfo>
    <title>Шрифты и FreeBSD</title>

    <subtitle>Пособие</subtitle>

    <authorgroup>
      <author>
	<firstname>Dave</firstname>

	<surname>Bodenstab</surname>

	<affiliation>
	  <address>
	    <email>imdave@synet.net</email>
	  </address>
	</affiliation>
      </author>
    </authorgroup>

    <pubdate>7 августа 1996, среда</pubdate>

    <abstract>
      <para>Этот документ содержит описание различных файлов шрифтов, которые
        могут использоваться с FreeBSD и драйвером системной консоли, системой
        X11, программами Ghostscript и Groff.  Даются реально работающие
        примеры по переключению экрана системной консоли в режим 80x60 и
        использованию файлов шрифтов формата Type 1 с перечисленными выше
        прикладными программами.</para>
    </abstract>
  </articleinfo>

  <sect1>
    <title>Введение</title>

    <para>Существует много мест, где можно найти файлы шрифтов, но встает
      вопрос о возможных способах их использования с FreeBSD.  Ответ может быть
      найден в результате тщательного изучения документации по тем компонентам,
      которые вы собираетесь использовать.  На это тратится очень много
      времени, и это пособие является попыткой дать готовые ответы для тех, кто
      заинтересуется такими вопросами.</para>
  </sect1>

  <sect1>
    <title>Основные термины</title>

    <para>Имеется множество различных форматов файлов шрифтов и соответствующих
      окончаний имен файлов.  Здесь обсуждаются лишь следующие из них:</para>

    <variablelist>
      <varlistentry>
	<term><filename>.pfa</filename>, <filename>.pfb</filename></term>

	<listitem>
	  <para>Файлы шрифтов формата postscript type 1.  Файлы
	    <filename>.pfa</filename> являются текстовым (
	    <emphasis>A</emphasis>scii) представлением, а
	    <filename>.pfb</filename> - двоичным
            (<emphasis>B</emphasis>inary).</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<term><filename>.afm</filename></term>

	<listitem>
	  <para>Параметры (метрики) соответствующих шрифтов типа type 1.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<term><filename>.pfm</filename></term>

	<listitem>
	  <para>Метрики для принтеров соответствующих шрифтов типа type
            1.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<term><filename>.ttf</filename></term>

	<listitem>
	  <para>Файл шрифтов формата TrueType</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<term><filename>.fot</filename></term>

	<listitem>
	  <para>Неявная ссылка на файл шрифтов TrueType (реальной информации о
            шрифте здесь не содержится)</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<term><filename>.fon</filename>, <filename>.fnt</filename></term>

	<listitem>
	  <para>Файлы экранных шрифтов с побитным представлением</para>
	</listitem>
      </varlistentry>
    </variablelist>

    <para>Файлы <filename>.fot</filename> используются в Windows в качестве
      некой символической ссылки на файл со шрифтом в формате TrueType
      (<filename>.ttf</filename>).  Файлы шрифтов <filename>.fon</filename>
      также используются в Windows.  Мне неизвестно, как можно использовать
      этот формат шрифтов во FreeBSD.</para>
  </sect1>

  <sect1>
    <title>Какие форматы файлов шрифтов я могу использовать?</title>

    <para>То, файл шрифтов какого формата будет полезен, зависит от
      используемого приложения.  Сама по себе FreeBSD шрифтов не использует.
      Прикладные программы и/или драйверы могут использовать файлы шрифтов.
      Вот краткий справочник по типам файлов шрифтов и
      приложениям/драйверам:</para>

    <variablelist>
      <varlistentry>
	<term>Драйвер</term>

	<listitem>
	  <variablelist>
	    <varlistentry>
	      <term>syscons</term>

	      <listitem>
		<para><filename>.fnt</filename></para>
	      </listitem>
	    </varlistentry>
	  </variablelist>
	</listitem>
      </varlistentry>

      <varlistentry>
	<term>Приложение</term>

	<listitem>
	  <variablelist>
	    <varlistentry>
	      <term>Ghostscript</term>

	      <listitem>
		<para><filename>.pfa</filename>,
		  <filename>.pfb</filename>,
		  <filename>.ttf</filename></para>
	      </listitem>
	    </varlistentry>

	    <varlistentry>
	      <term>X11</term>

	      <listitem>
		<para><filename>.pfa</filename>,
		  <filename>.pfb</filename></para>
	      </listitem>
	    </varlistentry>

	    <varlistentry>
	      <term>Groff</term>

	      <listitem>
		<para><filename>.pfa</filename>,
		  <filename>.afm</filename></para>
	      </listitem>
	    </varlistentry>

	    <varlistentry>
	      <term>Povray</term>

	      <listitem>
		<para><filename>.ttf</filename></para>
	      </listitem>
	    </varlistentry>
	  </variablelist>
	</listitem>
      </varlistentry>
    </variablelist>

    <para>Окончание <filename>.fnt</filename> используется достаточно часто.  Я
      полагаю, что когда кто-нибудь собирается создать файл шрифтов для своего
      приложения, чаще всего выбирается именно это окончание.  Поэтому файлы с
      таким окончанием не все имеют одинаковый формат; в частности, формат
      файлов <filename>.fnt</filename>, используемых драйвером syscons во
      FreeBSD, может отличаться от формата файлов <filename>.fnt</filename>,
      встречающихся в MSDOS/Windows.  Я даже не пытался использовать другие
      файлы <filename>.fnt</filename>, кроме тех, что поставляются с
      FreeBSD.</para>
  </sect1>

  <sect1>
    <title>Настройка виртуальной консоли на режим работы 80x60</title>

    <para>Во-первых, должен быть загружен шрифт размера 8x8.  Для этого файл
      <filename>/etc/rc.conf</filename> должен содержать строчку (измените в
      ней имя файла со шрифтом на соответствующий вашей локализации):</para>

    <informalexample>
      <programlisting>font8x8="iso-8x8"		# font 8x8 from /usr/share/syscons/fonts/* (or NO).</programlisting>
    </informalexample>

    <para>Команда для переключения режимов называется &man.vidcontrol.1;:</para>

    <informalexample>
      <screen>&prompt.user; <userinput>vidcontrol VGA_80x60</userinput>
      </screen>
    </informalexample>

    <para>Различные программы, ориентированные на работу с экраном, такие, как
      &man.vi.1;, должны уметь определять текущие размеры экрана.  Так как это
      делается через вызовы <command>ioctl</command> к драйверу консоли
      (такому, как &man.syscons.4;), то размеры будут определяться
      правильно.</para>

    <para>Чтобы это проходило более гладко, можно включить эти команды в
      скрипты начальной загрузки, чтобы они выполнялись при запуске системы.
      Чтобы это сделать, добавьте такую строчку в
      <filename>/etc/rc.conf</filename></para>

    <informalexample>
      <programlisting>
        allscreens_flags="VGA_80x60"	# Set this vidcontrol mode for all virtual screens
      </programlisting>
    </informalexample>

    <para>Справочная информация: &man.rc.conf.5;, &man.vidcontrol.1;.</para>
  </sect1>

  <sect1>
    <title>Использование шрифтов type 1 с системой X11</title>

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

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

    <informalexample>
      <screen>
<lineannotation>Создаем каталог для файлов шрифтов</lineannotation>
&prompt.user; <userinput>mkdir -p /usr/local/share/fonts/type1</userinput>
&prompt.user; <userinput>cd /usr/local/share/fonts/type1</userinput>

<lineannotation>Помещаем сюда файлы .pfa, .pfb и .afm</lineannotation>
<lineannotation>Кому-то может потребоваться хранить здесь также</lineannotation>
<lineannotation>сопроводительные файлы и документацию к шрифтам</lineannotation>
&prompt.user; <userinput>cp /cdrom/fonts/atm/showboat/showboat.pfb .</userinput>
&prompt.user; <userinput>cp /cdrom/fonts/atm/showboat/showboat.afm .</userinput>

<lineannotation>Обновление индексного файла со ссылками на файлы шрифтов</lineannotation>
&prompt.user; <userinput>echo showboat - InfoMagic CICA, Dec 1994, /fonts/atm/showboat &gt;&gt;INDEX</userinput>
      </screen>
    </informalexample>

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

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

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

    <informalexample>
      <screen>
&prompt.user; <userinput>strings showboat.pfb | more</userinput>
%!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--
      </screen>
    </informalexample>

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

    <informalexample>
      <screen>-type1-Showboat-medium-r-normal-decorative-0-0-0-0-p-0-iso8859-1
      </screen>
    </informalexample>

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

    <variablelist>
      <varlistentry>
	<term>Foundry</term>

	<listitem>
	  <para>Давайте называть все новые шрифты
            <literal>type1</literal>.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<term>Family</term>

	<listitem>
	  <para>Имя шрифта.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<term>Weight</term>

	<listitem>
	  <para>Normal, bold, medium, semibold, и так далее.  Из результата
            работы команды &man.strings.1; похоже, что этот шрифт имеет ширину
	    <emphasis>medium</emphasis>.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<term>Slant</term>

	<listitem>
	  <para><emphasis remap=bf>r</emphasis>oman, <emphasis
            remap=bf>i</emphasis>talic, <emphasis
            remap=bf>o</emphasis>blique, и так далее.  Так как
	    <emphasis>ItalicAngle</emphasis> равен нулю, то будет
            использоваться <emphasis>roman</emphasis>.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<term>Width</term>

	<listitem>
	  <para>Normal, wide, condensed, extended, и так далее.  Пока это не
            будет проверено, предполагаем <emphasis>normal</emphasis>.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<term>Дополнительный стиль</term>

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

      <varlistentry>
	<term>Spacing</term>

	<listitem>
	  <para>proportional или monospaced.  Используется
	    <emphasis>proportional</emphasis>, потому что
	    <emphasis>isFixedPitch</emphasis> равен false.</para>
	</listitem>
      </varlistentry>
    </variablelist>

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

      <informalexample>
	<screen>&hellip;-normal-r-normal-&hellip;-p-&hellip;
	</screen>
      </informalexample>

      в качестве имени, а затем использовать &man.xfontsel.1; для его проверки
      и изменения имени на основе того, как выглядит шрифт.</para>

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

    <informalexample>
      <screen>
<lineannotation>Делаем шрифт доступным для X11</lineannotation>
&prompt.user; <userinput>cd /usr/X11R6/lib/X11/fonts/Type1</userinput>
&prompt.user; <userinput>ln -s /usr/local/share/fonts/type1/showboat.pfb .</userinput>

<lineannotation>Редактируем файлы fonts.dir and fonts.scale, добавляя строку,
описывающую шрифт и увеличивая количество шрифтов в первой строке.</lineannotation>
&prompt.user; <userinput>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</userinput>

<lineannotation><filename>fonts.scale</filename> идентичен
<filename>fonts.dir</filename>&hellip;</lineannotation>
&prompt.user; <userinput>cp fonts.dir fonts.scale</userinput>

<lineannotation>Указываем X11, что произошли изменения</lineannotation>
&prompt.user; <userinput>xset fp rehash</userinput>

<lineannotation>Проверяем новый шрифт</lineannotation>
&prompt.user; <userinput>xfontsel -pattern -type1-*</userinput>
      </screen>
    </informalexample>

    <para>Справочная информация: &man.xfontsel.1;, &man.xset.1;, <citetitle>The
      X	Windows System in a Nutshell</citetitle>, <ulink
      URL="http://www.ora.com/">O'Reilly &amp; Associates</ulink>.</para>
  </sect1>

  <sect1>
    <title>Использование шрифтов type 1 с пакетом Ghostscript</title>

    <para>Ghostscript ссылается на шрифт через свой файл
      <filename>Fontmap</filename>.  Он должен быть подправлен так же, как 
      и файл <filename>fonts.dir</filename> в случае X11.  Ghostscript может
      использовать файлы шрифтов в форматах <filename>.pfa</filename> или
      <filename>.pfb</filename>.  Взяв шрифт из предыдущего примера, его можно
      использовать с Ghostscript вот так:</para>

    <informalexample>
      <screen>
<lineannotation>Помещаем файл со шрифтом в каталог со шрифтами Ghostscript</lineannotation>
&prompt.user; <userinput>cd /usr/local/share/ghostscript/fonts</userinput>
&prompt.user; <userinput>ln -s /usr/local/share/fonts/type1/showboat.pfb .</userinput>

<lineannotation>Редактируем Fontmap, чтобы Ghostscript знал о шрифте</lineannotation>
&prompt.user; <userinput>cd /usr/local/share/ghostscript/4.01</userinput>
&prompt.user; <userinput>ex Fontmap
:$a
/Showboat        (showboat.pfb) ; % From CICA /fonts/atm/showboat
.
:wq</userinput>

<lineannotation>Используем Ghostscript для проверки шрифта</lineannotation>
&prompt.user; <userinput>gs prfont.ps</userinput>
Aladdin Ghostscript 4.01 (1996-7-10)
Copyright (C) 1996 Aladdin Enterprises, Menlo Park, CA.  All rights
reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Loading Times-Roman font from /usr/local/share/ghostscript/fonts/tir_____.pfb...
 /1899520 581354 1300084 13826 0 done.
GS&gt;<userinput>Showboat DoFont</userinput>
Loading Showboat font from /usr/local/share/ghostscript/fonts/showboat.pfb...
 1939688 565415 1300084 16901 0 done.
&gt;&gt;showpage, press &lt;return&gt; to continue&lt;&lt;
&gt;&gt;showpage, press &lt;return&gt; to continue&lt;&lt;
&gt;&gt;showpage, press &lt;return&gt; to continue&lt;&lt;
GS&gt;<userinput>quit</userinput>
      </screen>
    </informalexample>

    <para>Справочная информация: <filename>fonts.txt</filename> из дистрибутива
      Ghostscript 4.01</para>
  </sect1>

  <sect1>
    <title>Использование шрифтов в формате type 1 с программой Groff</title>

    <para>Теперь, когда новый шрифт может быть использован как с X11, так и в
      Ghostscript, как использовать его с программой groff?  Во-первых, так как
      мы имеем дело со postscript-шрифтами формата type 1, то подходящим
      устройством groff является <emphasis>ps</emphasis>.  Для каждого шрифта,
      который может использоваться программой groff, должен быть создан файл
      шрифта.  Имя шрифта для groff является просто именем файла из каталога
      <filename>/usr/share/groff_font/devps</filename>.  В нашем примере
      файлом шрифта может быть
      <filename>/usr/share/groff_font/devps/SHOWBOAT</filename>.  Файл должен
      быть создан с помощью утилит, поставляемых с программой groff.</para>

    <para>Первой утилитой является <command>afmtodit</command>.  Обычно она не
      устанавливается, так что она должна быть получена из дистрибутива с
      исходными текстами.  Я обнаружил, что нужно изменить первую строку файла,
      что я делал так:</para>

    <informalexample>
      <screen>
&prompt.user; <userinput>cp /usr/src/gnu/usr.bin/groff/afmtodit/afmtodit.pl /tmp</userinput>
&prompt.user; <userinput>ex /tmp/afmtodit.pl
:1c
#!/usr/bin/perl -P-
.
:wq</userinput>
      </screen>
    </informalexample>

    <para>Эта утилита создаст файл шрифтов для groff из файла метрик (с
      окончанием <filename>.afm</filename>).  Продолжая с нашим
      примером:</para>

    <informalexample>
      <screen>
<lineannotation>Многие файлы <filename>.afm</filename> в формате Mac
&hellip; строки разделены символом ^M.  Нам нужно преобразовать их в
разделитель ^J в стиле unix</lineannotation>
&prompt.user; <userinput>cd /tmp</userinput>
&prompt.user; <userinput>cat /usr/local/share/fonts/type1/showboat.afm |
	tr '\015' '\012' &gt;showboat.afm</userinput>

<lineannotation>Теперь создаем файл шрифтов groff</lineannotation>
&prompt.user; <userinput>cd /usr/share/groff_font/devps</userinput>
&prompt.user; <userinput>/tmp/afmtodit.pl -d DESC -e text.enc /tmp/showboat.afm generate/textmap SHOWBOAT</userinput>
      </screen>
    </informalexample>

    <para>Теперь к шрифту можно обращаться по имени SHOWBOAT.</para>

    <para>Если в системе для управления принтерами используется программа
      ghostscript, то больше ничего делать не нужно.  Однако, если используются
      настоящие postscript-принтеры, то для использования шрифта его нужно
      загрузить в принтер (если только в принтере шрифт showboat не встроен или
      не имеется на диске со шрифтами).  Последний шаг заключается в создании
      загружаемого шрифта.  Утилита <command>pfbtops</command> используется для
      создания шрифта в формате <filename>.pfa</filename>, а файл для
      <filename>загрузки</filename> изменяется для указания нового шрифта.
      Файл для <filename>загрузки</filename> должен ссылаться на внутреннее имя
      шрифта.  Оно может быть легко определено из файла шрифтов groff, как
      это показывается здесь:</para>

    <informalexample>
      <screen>
<lineannotation>Создание файла шрифта <filename>.pfa</filename></lineannotation>
&prompt.user; <userinput>pfbtops /usr/local/share/fonts/type1/showboat.pfb &gt;showboat.pfa</userinput>
      </screen>
    </informalexample>

    <para>Конечно, если файл <filename>.pfa</filename> уже имеется, для его
      использования создаем символическую ссылку на него.</para>

    <informalexample>
      <screen>
<lineannotation>Получение внутреннего имени шрифта</lineannotation>
&prompt.user; <userinput>fgrep internalname SHOWBOAT</userinput>
internalname Showboat

<lineannotation>Указываем утилите groff, что шрифт должен быть загружен</lineannotation>
&prompt.user; <userinput>ex download
:$a
Showboat      showboat.pfa
.
:wq</userinput>
      </screen>
    </informalexample>

    <para>Для тестирования шрифта:</para>

    <informalexample>
      <screen>
&prompt.user; <userinput>cd /tmp</userinput>
&prompt.user; <userinput>cat &gt;example.t &lt;&lt;EOF
.sp 5
.ps 16
This is an example of the Showboat font:
.br
.ps 48
.vs (\n(.s+2)p
.sp
.ft SHOWBOAT
ABCDEFGHI
.br
JKLMNOPQR
.br
STUVWXYZ
.sp
.ps 16
.vs (\n(.s+2)p
.fp 5 SHOWBOAT
.ft R
To use it for the first letter of a paragraph, it will look like:
.sp 50p
\s(48\f5H\s0\fRere is the first sentence of a paragraph that uses the
showboat font as its first letter.
Additional vertical space must be used to allow room for the larger
letter.
EOF</userinput>
&prompt.user; <userinput>groff -Tps example.t &gt;example.ps</userinput>

<lineannotation>Для использования с ghostscript/ghostview</lineannotation>
&prompt.user; <userinput>ghostview example.ps</userinput>

<lineannotation>Для его печати</lineannotation>
&prompt.user; <userinput>lpr -Ppostscript example.ps</userinput>
      </screen>
    </informalexample>

    <para>Справочная информация:
      <filename>/usr/src/gnu/usr.bin/groff/afmtodit/afmtodit.man</filename>,
      &man.groff.font.5;, &man.groff.char.7;, &man.pfbtops.1;.</para>
  </sect1>

  <sect1>
    <title>Преобразование файлов шрифтов TrueType в формат groff/postscript для
      использования с groff</title>

    <para>Потенциально это требует некоторых усилий, просто потому что зависит
      некоторых утилит, которые в качестве части системы не устанавливаются.
      Это:</para>

    <variablelist>
      <varlistentry>
	<term><command>ttf2pf</command></term>

	<listitem>
	  <para>Утилита для преобразования TrueType в postscript.  Она
            позволяет преобразовать шрифт TrueType в метрику шрифта в текстовом
            формате (файл <filename>.afm</filename>).</para>

	  <para>Доступна по адресу <ulink
            url="http://sunsite.icm.edu.pl/pub/GUST/contrib/BachoTeX98/ttf2pf/">
            http://sunsite.icm.edu.pl/pub/GUST/contrib/BachoTeX98/ttf2pf</ulink>.
            Замечание: Эти файлы являются postscript-программами и должны быть
            скачаны на диск щелчком на ссылке при нажатой клавише
	    <keycap>Shift</keycap>.  В противном случае для их просмотра ваш
            браузер может попытаться запустить программу
            <application>ghostview</application>.</para>

	  <para>Интерес представляют следующие файлы:</para>

	  <itemizedlist>
	    <listitem>
	      <para><filename>GS_TTF.PS</filename></para>
	    </listitem>

	    <listitem>
	      <para><filename>PF2AFM.PS</filename></para>
	    </listitem>

	    <listitem>
	      <para><filename>ttf2pf.ps</filename></para>
	    </listitem>
	  </itemizedlist>

	  <para>Смесь верхнего/нижнего регистров присутствует из-за того, что
            эти файлы предназначены и для DOS.  <filename>ttf2pf.ps</filename>
            использует остальные с именами в верхнем регистре, так что при
            переименовании это нужно учитывать.  (На самом деле
	    <filename>GS_TTF.PS</filename> и <filename>PFS2AFM.PS</filename>
            предположительно являются частью дистрибутива ghostscript, но их
            легко использовать как отдельные утилиты.  В поставку FreeBSD они
            не включены.)  Вы можете также установить их в каталог
	    <filename>/usr/local/share/groff_font/devps</filename>(?).</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<term><command>afmtodit</command></term>

	<listitem>
	  <para>Создает файлы шрифтов для использования с программой groff из
            текстовых файлов с метриками шрифта.  Она обычно располагается в
            каталоге <filename>/usr/src/contrib/groff/afmtodit</filename> и
            для ее использования требуется проделать некоторую работу.</para>

	  <note>
	    <para>Если вы избегаете работать в дереве
              <filename>/usr/src</filename>, просто скопируйте содержимое
              вышеупомянутого каталога во временный рабочий каталог.</para>
	  </note>

	  <para>Во рабочем каталоге вам нужно построить утилиту.  Просто
            введите такую команду:</para>

	  <screen>
<prompt>#</prompt> <userinput>make -f Makefile.sub afmtodit</userinput>
	  </screen>

	  <para>Вам может также потребоваться скопировать
	    <filename>/usr/contrib/groff/devps/generate/textmap</filename> в
	    <filename>/usr/share/groff_font/devps/generate</filename>, если его
            только уже не существует.</para>
	</listitem>
      </varlistentry>
    </variablelist>

    <para>Как только эти утилиты готовы, вы можете начать:</para>

    <orderedlist>
      <listitem>
	<para>Создайте файл <filename>.afm</filename> по такой команде:</para>

	<screen>
<prompt>%</prompt> <userinput>gs <optional>-dNODISPLAY</optional> <optional>-q</optional> -- ttf2pf.ps <replaceable>TTF_name</replaceable> <optional><replaceable>PS_font_name</replaceable> <optional><replaceable>AFM_name</replaceable></optional></optional></userinput>
	</screen>

	<para>Здесь <replaceable>TTF_name</replaceable> обозначает ваш файл со
          шрифтом TrueType, <replaceable>PS_font_name</replaceable> является
          именем для файла <filename>.pfa</filename>,
          <replaceable>AFM_name</replaceable> задает имя для файла
          <filename>.afm</filename>.  Если вы не укажете имена выходных файлов,
          для форматов <filename>.pfa</filename> или <filename>.afm</filename>,
          то по умолчанию будут использоваться имена, получаемые из имени файла
          со шрифтом TrueType.</para>

	<para>При этом также будет создан файл <filename>.pfa</filename>,
          текстовый файл с метриками postscript-шрифта
          ((<filename>.pfb</filename> для двоичного представления).  Это не
          не обязательно, но может быть (я думаю) полезным для сервера
          шрифтов.</para>

	<para>Например, для преобразования шрифта 30f9 Barcode с именами файлов
          по умолчанию, воспользуйтесь следующей командой:</para>

	<screen>
<prompt>%</prompt> <userinput>gs -dNODISPLAY -- ttf2pf.ps 3of9.ttf</userinput>
Aladdin Ghostscript 5.10 (1997-11-23)
Copyright (C) 1997 Aladdin Enterprises, Menlo Park, CA.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Converting 3of9.ttf to 3of9.pfa and 3of9.afm.
	</screen>

	<para>Если вы хотите, чтобы преобразованные шрифты сохранялись в файлы
	  <filename>A.pfa</filename> and <filename>B.afm</filename>, то
          выдайте такую команду:</para>

	<screen>
<prompt>%</prompt> <userinput>gs -dNODISPLAY -- ttf2pf.ps 3of9.ttf A B</userinput>
Aladdin Ghostscript 5.10 (1997-11-23)
Copyright (C) 1997 Aladdin Enterprises, Menlo Park, CA.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Converting 3of9.ttf to A.pfa and B.afm.
	</screen>
      </listitem>

      <listitem>
	<para>Создайте postscript-файл для groff:</para>

	<para>Смените текущий каталог на
          <filename>/usr/share/groff_font/devps</filename> для облегчения
          запуска упоминаемых далее программ.  Для этого вам может понадобиться
          иметь привилегии администратора системы.  (Или, если вы избегаете
          здесь работать, обязательно посмотрите файлы
          <filename>DESC</filename>, <filename>text.enc</filename> и
	  <filename>generate/textmap</filename> в этом каталоге.)</para>

	<screen>
<prompt>%</prompt> <userinput>afmtodit -d DESC -e text.enc file.afm \
	    generate/textmap <replaceable>PS_font_name</replaceable></userinput>
	</screen>

	<para>Здесь <filename>file.afm</filename> является файлом
          <replaceable>AFM_name</replaceable>, созданным программой
	  <command>ttf2pf.ps</command> выше, а
          <replaceable>PS_font_name</replaceable> является именем шрифта,
          используемым в той команде, так же, как и имя, которое будет
          использовать утилита &man.groff.1; для ссылки на этот шрифт.
          Например, полагая, что вы использовали первую команду
	  <command>tiff2pf.ps</command> выше, то шрифт 3of9 Barcode может быть
          создан при помощи такой команды:</para>

	<screen>
<prompt>%</prompt> <userinput>afmtodit -d DESC -e text.enc 3of9.afm \
                 generate/textmap 3of9</userinput>
	</screen>

	<para>Проверьте, что полученный файл
          <replaceable>PS_font_name</replaceable> (к примеру,
          <filename>3of9</filename> из примера выше) расположен в каталоге
	  <filename>/usr/share/groff_font/devps</filename>, скопировав или
          перенеся его сюда.</para>

	<para>Заметьте, что если <filename>ttf2pf.ps</filename> назначает
          имя шрифта, используя один из найденных в файле шрифта TrueType, а
          вы хотите использовать другое имя, то вы должны отредактировать файл
	  <filename>.afm</filename> до запуска команды
          <command>afmtodit</command>.  Это имя к тому же должно
          совпадать с тем, что используется в файле Fontmap, если вы
          собираетесь перенаправлять вывод &man.groff.1; утилите
          &man.gs.1;.</para>
      </listitem>
    </orderedlist>
  </sect1>

  <sect1>
    <title>Можно ли использовать шрифты в формате TrueType с другими
      программами?</title>

    <para>Формат TrueType используется в Windows, Windows 95 и на компьютерах
      Macintosh.  Он достаточно популярен и в этом формате имеется большое
      количество шрифтов.</para>

    <para>К сожалению, я знаю лишь несколько программ, которые могут
      использовать этот формат: на ум приходят Ghostscript и Povray.  Его
      поддержка в программе Ghostscript, согласно документации, находится в
      зачаточном состоянии и получаемый результат хуже того, что получается при
      использовании шрифтов type 1.  Программа Povray версии 3 также может
      использовать шрифты TrueType, но я очень сомневаюсь, что много кто
      создает документы как последовательность анимированных страниц
      :-).</para>

    <para>Такая весьма печальная ситуация может вскоре измениться.  В рамках
      проекта <ulink url="http://www.freetype.org/">FreeType Project</ulink>
      в настоящее время разрабатывается полезный набор инструментов для работы
      с FreeType:</para>

    <itemizedlist>
      <listitem>
        <para>Модуль freetype включен в XFree86 4.x.  Подробную информацию
          можно найти в <ulink
          url="http://www.freebsd.org/handbook/x-fonts.html">Руководстве по
          FreeBSD</ulink> или на странице о <ulink
          url="http://www.xfree86.org/4.0.2/fonts.html">шрифтах XFree86
          4.0.2</ulink>.</para>
      </listitem>

      <listitem>
	<para>Сервер шрифтов <command>xfsft</command> для X11 может работать и
          со шрифтами TrueType, и с обычными шрифтами.  Хотя в настоящее время
          он еще находится в стадии отладки, но его уже можно использовать.
          Посмотрите <ulink
          url="http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/">страницу
          Juliusz Chroboczek</ulink>, чтобы получить более полную информацию.
          Указания по переносу на FreeBSD можно найти на странице <ulink
          url="http://math.missouri.edu/~stephen/software/">Стивена
          Монтгомери</ulink> (Stephen Montgomery), посвященной программному
          обеспечению.</para>
      </listitem>

      <listitem>
	<para><command>xfstt</command> является еще одним сервером шрифтов для
          X11, доступный по адресу <ulink
          url="ftp://sunsite.unc.edu/pub/Linux/X11/fonts">
	  ftp://sunsite.unc.edu/pub/Linux/X11/fonts</ulink>.</para>
      </listitem>

      <listitem>
	<para>Программа, которая называется <command>ttf2bdf</command>, может
          генерировать BDF-файлы, которые можно использовать в системе X
          Window, из файлов шрифтов TrueType.  Выполнимые файлы Linux могут
          находиться по адресу <ulink
          url="ftp://crl.nmsu.edu/CLR/multiling/General">
          ftp://crl.nmsu.edu/CLR/multiling/General/</ulink>.</para>
      </listitem>

      <listitem>
	<para>Для тех, кому нужно использовать азиатские шрифты TrueType, можно
          порекомендовать обратить внимание на сервер шрифтов
	  <command>XTT</command>.  Информация о <command>XTT</command> может
          быть найдена по такому адресу: <ulink
          url="http://hawk.ise.chuo-u.ac.jp/student/person/tshiozak/study/freebsd-at-random/x-tt/index-en.html">
          http://hawk.ise.chuo-u.ac.jp/student/person/tshiozak/study/freebsd-at-random/x-tt/index-en.html</ulink>.</para>
      </listitem>

      <listitem>
	<para>и другие &hellip;</para>
      </listitem>
    </itemizedlist>

    <para><ulink url="http://freetype.sourceforge.net/projects.html">
      Страница проектов FreeType</ulink> может оказаться полезной в качестве
      начальной для получения информации об этих и других некоммерческих
      проектах TrueType.</para>
  </sect1>

  <sect1>
    <title>Где можно найти дополнительные шрифты?</title>

    <para>Много шрифтов можно найти в сети Интернет.  Они либо абсолютно
      бесплатны, либо условно-бесплатны.  Кроме того, продается много недорогих
      компакт-дисков, содержащих много шрифтов.  Вот некоторые адреса Интернет
      (на август 1996):</para>

    <itemizedlist>
      <listitem>
	<para><ulink url="ftp://ftp.winsite.com">ftp://ftp.winsite.com</ulink>
	  (бывший архив CICA)</para>
      </listitem>

      <listitem>
	<para><ulink url="http://www.simtel.net/">
          http://www.simtel.net/</ulink></para>
      </listitem>

      <listitem>
	<para><ulink url="ftp://ftp.coast.net/">
          ftp://ftp.coast.net/</ulink></para>
      </listitem>

      <listitem>
	<para><ulink
	  url="http://af-pc-plloyd.ecel.uwa.edu.au/fonts/index.html">
          http://af-pc-plloyd.ecel.uwa.edu.au/fonts/index.html</ulink></para>
      </listitem>

      <listitem>
	<para><ulink url="http://www.esselte.com/letraset/index.html">
          http://www.esselte.com/letraset/index.html</ulink></para>
      </listitem>

      <listitem>
	<para><ulink url="http://www.inil.com/users/elfring/esf.htm">
          http://www.inil.com/users/elfring/esf.htm</ulink></para>
      </listitem>
    </itemizedlist>
  </sect1>

  <sect1>
    <title>Дополнительные вопросы</title>

    <itemizedlist>
      <listitem>
	<para>Для чего предназначены файлы <filename>.pfm</filename>?</para>
      </listitem>

      <listitem>
	<para>Можно ли получить файл <filename>.afm</filename> из файла
	  <filename>.pfa</filename> или <filename>.pfb</filename>?</para>
      </listitem>

      <listitem>
	<para>Как получить файлы преобразования символов groff для
          postscript-шрифтов с нестандартными названиями символов?</para>
      </listitem>

      <listitem>
	<para>Можно ли настроить xditview и устройства devX?? на работу всех
          новых шрифтов?</para>
      </listitem>

      <listitem>
	<para>Хорошо бы иметь примеры использования шрифтов TrueType с
          программами povray и ghostscript.</para>
      </listitem>
    </itemizedlist>
  </sect1>
</article>
