Мини-HOWTO: Настройка шрифтов TrueType Fonts в Debian

Bear Giles

     [email protected]
   

Перевод: Станислав Рогин, SWSoft Pte Ltd.

версия 0.3, 10 января 2000 года

В этом документе дается описание настройки Debian GNU/Linux на использование TrueType-шрифтов для вывода на экран и принтер. Последнюю версию этого документа можно найти по адресу http://www.dimensional.com/~bgiles/debian-tt.html


Содержание
1. Введение
1.1. Ответственность
1.2. Благодарности
1.3. Дополнительные ссылки
1.4. История изменений
1.5. Отзывы
1.6. Связанные проекты
1.7. Распространение
2. Дисплей (то, что вам никто не рассказывал)
2.1. Будущее XFree86 4.0
2.2. Общий обзор: приготовления перед правкой файлов конфигурации X.
3. Дисплей (X-серверы и серверы шрифтов)
3.1. Настройка сервера шрифтов xfs
3.2. Настройка сервера шрифтов xfstt и установка шрифтов TrueType
3.3. Использование шрифтов TrueType
3.4. Установка дополнительных шрифтов TrueType
3.5. Интернационализация
3.6. Вопросы безопасности
4. Печать (ghostscript)
4.1. Настройка Ghostscript на использование шрифтов TrueType
4.2. Печать образцов шрифтов TrueType
5. Настройка программ
5.1. Генерация метрик шрифтов AFM AFM
5.2. Создание файлов font.map
5.3. Работа с изображениями: GIMP
5.4. Преобразование ASCII в PostScript: enscript
5.5. Форматирование и обработка текста: groff
5.6. Набор и форматирование текстов: TeX
6. Незаданные вопросы
7. Где найти шрифты TrueType
7.1. Небольшое дополнение по использованию бесплатных TrueType шрифтов Microsoft
8. Legalities
9. Авторские права

1. Введение

Любая инсталляция Linux обычно содержит несколько независимых наборов шрифтов или их метрик. Если бросить быстрый взгляд на шрифты в Linux, то он пройдет по следующим каталогам:

  • XFree86 хранит свои шрифты в /usr/X11R6/lib/X11/fonts/

  • Ghostscript содержит свои шрифты в /usr/lib/ghostscript/fonts/

  • Шрифты TeX находятся в /usr/lib/texmf/fonts/

  • Пакет kbd дистрибутива Debian содержит шрифты в /usr/share/consolefonts/

  • Groff содержит метрики шрифтов в /usr/share/font/devps/

  • Enscript (конвертер из ASCII в PostScript) содержит метрики в /usr/share/enscript/*.afm

Не надо говорить, что шрифты не скоординированы между собой.

Шрифты TrueType существуют для того, чтобы исключить эту проблему, путем использования одних и тех же шрифтов для вывода на экран и печать. В этом документе мы попытаемся показать, как использовать шрифты TrueType для вывода на экран, принтер и для подготовки документов в дистрибутиве Debian GNU/Linux.


1.1. Ответственность

В этом документе приведена, насколько я могу судить об этом, верная информация. Однако этот HOWTO до сих пор находится на стадии разработки, поэтому то, что работает у меня, может не работать у вас. Если даже у вас все работает, то помните, что я не профессиональный автор технических текстов, и я известен тем, что люблю упускать критические детали.

Поэтому веселитесь, но с опаской, и почаще делайте резервные копии.


1.2. Благодарности

Автор этого документа - Bear Giles, <[email protected]>

Большая благодарность:

  • Brion Vibber, <[email protected]>, написавшему (preliminary) TrueType HOW-TO (http://pobox.com/~brion/linux/TrueType-HOWTO.html)

  • Doug Holland, <[email protected]>, написавшему XFree86 Font Deuglification HOW-TO (http://www.frii.com/~meldroc/Font-Deuglification.html)


1.3. Дополнительные ссылки

Ниже приведены ссылки на документы, не описывающие напрямую систему Debian или ее пакеты, но которые все-таки могут быть интересны читателям этого документа.

  • Использование TrueType шрифтов в RedHat Linux (http://www.kegel.com/linux/tt.html)

  • Утилиты для работы со шрифтами в X (http://www.hex.net/~cbbrowne/xfonts.html)

  • Улучшение внешнего вида шрифтов в GNU/Linux в различных приложениях (например StarOffice) (http://king.ccrc.wustl.edu/~zubin/fonts.html)

  • Как использовать True Type c шрифты в StarOffice в Linux (http://www.mindspring.net/~john_mcl/adding_fonts.html)


1.4. История изменений

  • Версия 0.1. 16 сентября 1999: Исходная версия.

  • 0.2. 16 сентября 1999: добавлен раздел "Дополнительные ссылки".

  • 0.3. 10 января 2000: отзывы читателей! Добавлено разъяснение некоторых деталей.


1.5. Отзывы

Комментарии, исправления, дополнения и критика только приветствуются. Меня можно найти по адресу [email protected].


1.6. Связанные проекты

  • FreeType http://www.freetype.org/

    FreeType - это бесплатная библиотека обработки и вывода TrueType шрифтов, адаптируемая на различные системы. Ее код представляет из себя полностью независимую реализацию "с чистого листа", абсолютно независимую от вариантов Apple и Microsoft. (Однако поднимался вопрос о возможном использовании патента Apple.) FreeType - это только библиотека, а не сервер шрифтов или полноразмерная библиотека работы с обработкой или выводом текста.


1.7. Распространение

Это первый пробный черновик этого документа, и я предполагаю внести в него значительные изменения после первого издания - наиболее новую версию вы можете найти по адресу http://www.dimensional.com/~bgiles/debian-tt.html. В конце концов финальная версия этого документа будет находиться по адресу http://www.coyotesong.com/


2. Дисплей (то, что вам никто не рассказывал)

Перед тем, как мы углубимся в настройку шрифтов TrueType в X, мы должны еще раз объяснить разницу между пунктами (point) и пикселями (pixel)... и почему это важно для нас.

Все выводимые на экран шрифты измеряются в пунктах. Один дюйм равен ровно 72 пунктам. Почему именно 72? Частично из-за ограничений механических печатных машин, частично потому, что это число делится на 2, 3, 4, 6, 8, 9, 12, 18 и 24. Ну и конечно надо упомянуть, что пункт является основной единицей измерения в PostScript.

(Историческая справка: Тут я немного приврал. До введения PostScript дюйм равнялся 72,27 пункта, но этот размер пункта был установлен в эру механических печатающих машин. При помощи дисплеев и лазерных принтеров, любому шрифту легко можно придать любой размер, и число 72 значительно более удобно по причинам, упомянутым выше).

В основном любой текст имеет размер от 7 до 12 пунктов. Все, что меньше 6, называется буквально - "точная печать". Построчные принтеры печатали шрифтами размером 9 или 12 (для того, чтобы было 8 или 6 строк на дюйм соответственно).

В противоположность этому, все видеодрайверы повсеместно измеряют шрифты в пикселях. Для вашего видеодрайвера экран имеет размер 1024x768 пикселей, а не 10 на 8 дюймов (или 720 на 576 пунктов).

Чтобы произвести преобразование из пунктов (в которых мы измеряем размер шрифта) в пиксели (в которых мы измеряем видеопамять) нужно знать разрешение экрана. Обычно оно измеряется в точках на дюйм (dots per inch (dpi)), что на самом деле есть пиксели на дюйм. Эти единицы используются в двух наборах растровых шрифтов, поставляемых вместе с XFree86: fonts-75 используются на недорогих дисплеях с разрешением около 75 dpi, fonts-100 используются на мониторах среднего качества с разрешением примерно 100 dpi. К сожалению, в поставку не входят шрифты для высококачественных дисплеев с разрешением 120 dpi и выше.

В качестве конкретного примера можно привести экран с диагональю 13 дюймов (видимая область изображения 11.1 дюйма), выводит изображение размером 640x480 пикселей с разрешением 72.0 dpi. Это Не Совпадение. На самом деле многие web-страницы (и приложения фирмы Microsoft) рассчитаны на стандартные дисплеи с разрешением именно 72 dpi. Стандартная конфигурация XFree86 предполагает наличие дисплея с разрешением 75 dpi.

Однако в настоящее время никто уже практически не пользуется разрешением 640x480. Никто больше не использует 13-дюймовые мониторы. Так как видеокарты обогнали в своем развитии мониторы, то можно нередко встретить следующую конфигурацию: 19-дюймовый монитор (диагональ изображения больше 17 дюймов), 1600x1200 пикселей, разрешение - 117 точек на дюйм.

Если я запущу стандартную конфигурацию X, то все мои шрифты будут равны примерно 2/3 нормального размера. Не будет преувеличением сказать, что все шрифты будут уменьшены на порядок - большие шрифты (12 пунктов) станут средними (9). Средние шрифты (9) станут маленькими (6).

Существует три вещи, которые надо сделать, чтобы исправить это несоответствие. Во-первых, мы должны указать X-серверу настоящее разрешение экрана:

/etc/X11/xdm/Xservers

#:0 local /usr/X11R6/bin/X -bpp 16
:0 local /usr/X11R6/bin/X -bpp 16 -dpi 120

Во-вторых, мы должны использовать по умолчанию сначала растровые шрифты с разрешением 100 dpi, и только после них шрифты 75 dpi.

/etc/X11/XF86Config

Section "Files"
    RgbPath    "/usr/X11R6/lib/X11/rgb"
    FontPath   "/usr/X11R6/lib/X11/fonts/100dpi/"
    FontPath   "/usr/X11R6/lib/X11/fonts/75dpi/"
    FontPath   "/usr/X11R6/lib/X11/fonts/misc/"
    FontPath   "/usr/X11R6/lib/X11/fonts/Type1/"
    FontPath   "/usr/X11R6/lib/X11/fonts/Speedo/"
EndSection

И еще одно. Если ни один из наших растровых шрифтов не совпадает по разрешению с требуемым, то X-сервер попытается "растянуть" похожий шрифт через простое копирование пикселей. Результаты такого "растягивания" всегда оставляют желать лучшего. Предположив, что у нас достаточно быстродействующий компьютер, мы можем указать серверу использовать по умолчанию векторные шрифты, затем подходящие "один-к-одному" растровые шрифты и только затем "растянутые" растровые шрифты.

/etc/X11/XF86Config

Section "Files"
    RgbPath    "/usr/X11R6/lib/X11/rgb"
    FontPath   "/usr/X11R6/lib/X11/fonts/Type1/"
    FontPath   "/usr/X11R6/lib/X11/fonts/Speedo/"
    FontPath   "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"
    FontPath   "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"
    FontPath   "/usr/X11R6/lib/X11/fonts/misc/"
    FontPath   "/usr/X11R6/lib/X11/fonts/100dpi/"
    FontPath   "/usr/X11R6/lib/X11/fonts/75dpi/"
EndSection


2.1. Будущее XFree86 4.0

Мне совсем недавно сказали, что XFree86 версии 4.0 будет поддерживать DDC, если его поддерживают и видеокарта, и монитор. Это позволит X-серверу узнавать его физические размеры, и сервер сможет автоматически рассчитывать разрешение экрана.

Но вам, в любом случае, придется исправлять установки fontpath в файле XF86Config, так как сервер не может угадать требования вашей конкретной конфигурации.


2.2. Общий обзор: приготовления перед правкой файлов конфигурации X.

Каждый раз, когда мы вносим изменения в файлы конфигурации X11, неплохо запрещать запуск XDM, указанием команды exit 0 где-нибудь в начале этого файла. Если вы этого не сделаете, и X не запустится по каким-либо причинам, то XDM зациклится таким образом, что перегрузит систему, и это достаточно сложно исправить. Я вас предупредил.


3. Дисплей (X-серверы и серверы шрифтов)

Строго говоря, абсолютно не обязательно настраивать серверы шрифтов для использования шрифтов TrueType с X-серверами. Если вы хотите использовать статические файлы, вместо сервера шрифтов, то смотрите инструкции по настройке использования шрифтов TrueType в ghostscript.


3.1. Настройка сервера шрифтов xfs

С этого момента, я предполагаю, что у вас имеется работающий файл /etc/X11/XF86Config, загружающий шрифты из четко определенных в разделе FontPath каталогов. Мы его исправим таким образом, чтобы он использовал сервер шрифтов xfs.

  • Установка XFS

    Если вы еще этого не сделали, установите пакет main/binary-*/x11/xfs_*.deb.

  • Настройка XFS

    Откройте файл /etc/X11/xfs/config и измените опцию catalogue так, чтобы она соответствовала секции FontList из файла /etc/X11/XF86Config. Вам также, возможно, надо будет изменить значение опции default-resolutions.

    /etc/X11/xfs/config

    # paths to search for fonts
    catalogue =
        /usr/X11R6/lib/X11/fonts/100dpi/:unscaled,
        /usr/X11R6/lib/X11/fonts/75dpi/:unscaled,
        /usr/X11R6/lib/X11/fonts/misc/,
        /usr/X11R6/lib/X11/fonts/Speedo/,
        /usr/X11R6/lib/X11/fonts/Type1/,
        /usr/X11R6/lib/X11/fonts/100dpi/,
        /usr/X11R6/lib/X11/fonts/75dpi/
    # x1,y1,x2,y2,...
    default-resolutions = 100,100,75,75

  • Перезапуск XFS

    Перезапуск XFS обычным для Debian образом:

    root shell

    # /etc/init.d/xfs restart

  • Проверка работы XFS

    Перед тем, как мы начнем исправлять файл XF86Config, необходимо проверить работоспособность сервера xfs. Для этого мы выведем на экран список доступных через него шрифтов:

    user shell

    $ fslsfonts -server unix/:7100
    -adobe-courier-bold-i-normal--0-0-0-0-m-0-iso8859-1
    -adobe-courier-bold-o-normal--0-0-100-100-m-0-iso8859-1
    -adobe-courier-bold-o-normal--0-0-75-75-m-0-iso8859-1
    ....

  • Исправление /etc/X11/XF86Config

    Теперь мы готовы указать X-серверу использовать сервер шрифтов xfs. Оставим путь к одному каталогу со шрифтами на тот случай, если у нас возникнут проблемы с xfs. (Оставляем каталог "misc". потому что в нем содержится шрифт fixed, который используется в X по умолчанию.)

    /etc/X11/XF86Config

    Section "Files"
        FontPath   "unix/:7100"
        FontPath   "/usr/X11R6/lib/X11/fonts/misc/"
    EndSection

  • Перезапуск X

    Перезапустите X командой startx, в случае, если вы не любите острые ощущения. Если любите - то трижды назовите имя компании, которая вас застраховала на большую сумму, и затем, скрестив пальцы, перезапустите xdm.

  • Проверка работоспособности шрифтов XFS

    Как только у нас загрузился сеанс работы X, мы можем проверить, видит ли наш сервер шрифты xfs, выведя список шрифтов экран командой:

    user shell

    $ xlsfonts
    -adobe-courier-bold-i-normal--0-0-0-0-m-0-iso8859-1
    -adobe-courier-bold-o-normal--0-0-100-100-m-0-iso8859-1
    -adobe-courier-bold-o-normal--0-0-75-75-m-0-iso8859-1
    ....


3.2. Настройка сервера шрифтов xfstt и установка шрифтов TrueType

К этому моменту, я предполагаю, что вы имеете работающий сервер шрифтов xfs и хотите установить поддержку шрифтов TrueType при помощи xfstt.

  • Установка XFSTT

    Установите main/binary-*/x11/xfstt_*.deb, если вы еще этого не сделали.

  • Установка шрифтов TrueType

    Скопируйте ваши шрифты TrueType в каталог /usr/share/fonts/truetype. Эти файлы обычно имеют расширение .ttf, и на них должны быть установлены права с маской 0444.

  • Перезапуск сервера шрифтов XFSTT

    Перезапустите сервер xfstt с опцией force-reload flag

    root shell

    # /etc/init.d/xfstt force-reload

  • Проверка работы XFSTT

    Перед тем, как мы изменим файл XF86Config необходимо проверить, работает ли вообще сервер xfstt.

    Важно: Сервер xfstt в дистрибутиве Debian использует порт 7101, вместо 7100. Права на его использование установлены по умолчанию так, что этот запрос доступен только root-у.

    user and root shells

    $ fslsfonts -server unix/:7101
    _FSTransSocketUNIXConnect: Can't connect: errno = 111
    fslsfonts:  unable to open server "unix/:7101"
    
    # fslsfonts -server unix/:7101
    -ttf-arial black-medium-r-normal-regular-0-0-0-0-p-0-iso8859-1
    -ttf-arial mt black-medium-r-normal-regular-0-0-0-0-p-0-iso8859-1
    -ttf-arial narrow-bold-i-normal-bold italic-0-0-0-0-p-0-iso8859-1

  • Включение в /etc/X11/XF86Config использования xfstt

    Теперь мы готовы к тому, чтобы указать X-серверу использовать сервер шрифтов xfstt. Мы хотим, чтобы шрифты TrueType имели наибольший приоритет.

    /etc/X11/XF86Config

    Section "Files"
        FontPath   "unix/:7101"
        FontPath   "unix/:7100"
        FontPath   "/usr/X11R6/lib/X11/fonts/misc/"
    EndSection

  • Проверка работы шрифтов сервера XFSTT

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

    $ xlsfonts | grep ttf
    -ttf-arial black-medium-r-normal-regular-0-0-0-0-p-0-iso8859-1
    -ttf-arial mt black-medium-r-normal-regular-0-0-0-0-p-0-iso8859-1
    -ttf-arial narrow-bold-i-normal-bold italic-0-0-0-0-p-0-iso8859-1
    ....


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

С этого момента у вас появилась возможность использовать шрифты TrueType в различных приложениях, например, GIMP, Netscape или StarOffice. Так как у шрифтов TrueType ширина нефиксирована, то вам наверно не стоит использовать их в xterm - эти программы выделяют под символы фиксированное пространство, равное размеру самого большого символа.


3.4. Установка дополнительных шрифтов TrueType

Установить новые шрифты TrueType очень просто, если вы используете сервер шрифтов xfstt:

  • Скопируйте новые шрифты в каталог /usr/share/fonts/truetype/

  • Перезапустите xfs командой /etc/init.d/xfs restart


3.5. Интернационализация

xfstt имеет возможность генерировать различные кодовые страницы шрифтов в том случае, если в шрифте TrueType содержатся соответствующие образы символов. Чтобы разрешить использование кодовых страниц, отличных от iso8859-1/unicode-1, вы должны вручную исправить скрипт /etc/init.d/xfstt:

/etc/init.d/xfstt

- start-stop-daemon --start --quiet --exec $XFSTT -- \
      --port $portno --daemon
+ start-stop-daemon --start --quiet --exec $XFSTT -- \
      --port $portno --encoding iso8859-1,koi8-r,windows-1252,symbol-0 \
      --daemon 

В Debian 2.1 распознаются следующие кодовые таблицы:

  • iso8859-1 (Latin 1 - Западная Европа)

  • iso8859-2 (Latin 2 - Центральная и Восточная европа)

  • iso8859-3 (Latin 3 - Эсперанто и Мальтийский)

  • iso8859-4 (Latin 4 - заменена Latin 6)

  • iso8859-5 (Кириллица)

  • iso8859-6 (Арабский)

  • iso8859-7 (Греческий)

  • iso8859-8 (Иврит)

  • iso8859-9 (Latin 5 - Latin 1 с турецким вместо Исландского)

  • iso8859-10 (Latin 6 - Северные языки, заменяют Latin 4)

  • koi8-r (Кириллица)

  • windows-1250 (Центральная Европа)

  • windows-1251 (Кириллица)

  • windows-1252

  • windows-1253 (Греческий)

  • windows-1254

  • windows-1255

  • windows-1256

  • windows-1257

  • symbol-0

  • wingding-0

  • wingreek-0

  • cp-437 (различные кодовые страницы IBM)

  • cp-737

  • cp-850

  • cp-851

  • cp-852

  • cp-853

  • cp-855

  • cp-857

  • cp-860

  • cp-861

  • cp-862

  • cp-863

  • cp-864

  • cp-865

  • cp-866

  • cp-869

  • cp-895

  • atari-st

  • unicode-2

Первые 128 символов в страницах iso8859-x - это всегда ASCII. Страницы windows- расширяют и дополняют iso8859-1 дополнительными символами, например "умными кавычками." (Так как этих расширений нет в iso8859-1, то они обычно бывают представлены вопросительными знаками.)

Чтобы более подробно узнать о кодовых страницах символов, читайте:

  • http://ppewww.ph.gla.ac.uk/%7Eflavell/iso8859/iso8859-pointers.html,

  • http://anubis.dkuug.dk/i18n/ и

  • http://czyborra.com/charsets/iso8859.html.


3.6. Вопросы безопасности

Я использовал в вышеприведенных примерах гнезда Unix, но стандартные пакеты в Debian настроены так, что xfs и xfstt слушают порты 7100 и 7101, так же и по TCP/IP. Доступ к этим портам должен контролироваться полем trusted-clients в файле /etc/X11/xfs/config, но эта опция все еще не реализована в XFree86 версии 3.3.2.3a.

Это означает, что кто угодно, когда угодно, может подключиться к вашему серверу шрифтов. Так как xfs (и, скорее всего, xfstt), по-видимому, поддерживают большое количество пользователей, то против подобных систем может быть применена стандартная форма атаки "отказ в предоставлении сервиса". Использовать серверы шрифтов по телефонным линиям, наверно, достаточно безопасно (так как вы в реальном режиме времени решаете проблемы), но пользователи DSL и кабельных модемов должны использовать firewall.


4. Печать (ghostscript)

Начиная с версии 4, в ghostscript встроена внутренняя поддержка шрифтов TrueType. ghostscript представлен в Debian двумя пакетами:

  • main/binary-*/text/gs_*.deb - это DFSG-совместимая версия 5.10,

  • non-free/binary-*/gs-aladdin_*.deb - это не-DFSG-совместимая версия 5.50.

Обе версии поддерживают шрифты TrueType.


4.1. Настройка Ghostscript на использование шрифтов TrueType

Если у вас есть работающий сервер xfstt, то настроить ghostscript на использование шрифтов TrueType достаточно просто. Выполните следующую команду:

# xfstt --gslist --sync >> /etc/gs.Fontmap

На самом деле, я счел необходимым внести небольшие изменения в определения шрифтов, созданные xfstt. Во-первых, если стандартное название шрифта не содержит пробелов, то я изменяю имя файла на стандартное название. Если в названии шрифта есть пробелы, то я меняю все пробелы в имени на тире, а исходное название включаю в виде алиаса на новое.

Затем я добавляю к именам шрифтов префикс TTF- (или MS-) для того, чтобы минимизировать риск пересечения имен шрифтов TrueType с уже установленными.

Таким образом,

(Arial)               (/usr/share/fonts/truetype/arial.ttf)   ;
(Arial Bold Italic)   (/usr/share/fonts/truetype/arialbi.ttf) ;

Станет

/MS-Arial             (/usr/share/fonts/truetype/arial.ttf)   ;
/MS-Arial-Bold-Italic (/usr/share/fonts/truetype/arialbi.ttf) ;
(Arial Bold Italic)   /MS-Arial-Bold-Italic                   ;
/Arial                /MS-Arial                               ;

Алиасы существуют для того, чтобы и ghostscript и xfstt смогли найти шрифт по его стандартному имени.

Значительно более важен тот факт, что с подобной сменой имен можно заставить ghostscript использовать шрифты TrueType, вместо обычных. В документации сказано, что это возможно сделать и при помощи вводной нотации, но я так и не смог этого сделать.

Мы можем, например, указать ghostscript заменить шрифт Helvetica на бесплатный шрифт Microsoft Arial, добавив в файл /etc/gs.Fontmap следующие строки:

/Helvetica               /MS-Arial              ;
/Helvetica-Oblique       /MS-Arial-Italic       ;
/Helvetica-Bold          /MS-Arial-Bold         ;
/Helvetica-BoldOblique   /MS-Arial-Bold-Italic  ;

Подобные алиасы можно определить и для других стандартных шрифтов. Эти алиасы очень хороши, в случае использования samba-принтеров, работающих с Windows-клиентами.


4.2. Печать образцов шрифтов TrueType

Самый лучший способ проверить, что ghostscript правильно настроен на использование шрифтов TrueType - это напечатать образцы шрифтов. Предполагая, что у вас запущен ghostscript версии 5.50, и что он является вашей очередью печати по умолчанию, вы можете напечатать образцы всех шрифтов TrueType командой:

# xfstt --gslist --sync | printfont

где printfont - это следующий скрипт:

#!/bin/sh

set -e
IFS= ')'

while read fontname rest
do
    cat << EOM | lpr
%!PS
(/usr/lib/ghostscript/5.50/prfont.ps) run
$fontname) DoFont
EOM
done

Если вы хотите напечатать только некоторые шрифты, то скрипт будет проще:

#!/bin/sh

set -e
while read -p "Введите имя шрифта или ^D для выхода: " fontname
do
    cat << EOM | lpr
%!PS
(/usr/lib/ghostscript/5.50/prfont.ps) run
$fontname DoFont
EOM
done


5. Настройка программ

5.1. Генерация метрик шрифтов AFM AFM

Шрифтовые метрики AFM не нужны для того, чтобы выводить содержимое существующих файлов, но они нужны для создания новых. Эти файлы метрик могут быть созданы при помощи программы /usr/lib/ghostscript/5.50/printafm.ps, входящей в пакет ghostscript, но, я нашел программу ttf2afm, входящую в пакет tetex-bin, которая значительно проще в использовании.

Нижеприведенный скрипт создаст afm-файлы для всех шрифтов TrueType в текущем каталоге:

#!/bin/sh

set -e

for i in *.TTF
do
    /usr/bin/ttf2afm $i > ${i%TTF}afm
done

for i in *.ttf
do
    /usr/bin/ttf2afm $i > ${i%ttf}afm
done

Одна небольшая проблема, возникающая с ttf2afm - это то, что некоторые программы предполагают, что afm-файлы начинаются с тэга StartFontMetrics, но файлы, созданные ttf2afm начинаются с комментария. Эта "проблема" легко исправляется при помощи текстового редактора.


5.2. Создание файлов font.map

Теперь у нас есть afm-файлы, и нам надо указать системе, где их найти. Обычно это делается при помощи файла font.map.

Я так и не смог обнаружить документацию по формату этого файла, в отличие от fonts.dir, fonts.scale, и fonts.alias, создаваемых mkfontdir. Однако минимальный формат достаточно прост:

  • Название шрифта без пробелов

  • Имя AFM - файла, без расширения

Алиасы реализуются набором нескольких строк, а расширение файла должно быть написано строчными буквами.


5.3. Работа с изображениями: GIMP

GIMP - это программа рисования и обработки изображений Gnu. Мне не пришлось вносить никаких изменений в систему, чтобы использовать шрифты TrueType в gimp.


5.4. Преобразование ASCII в PostScript: enscript

Enscript - это программа, преобразующая ASCII в PostScript. Для этих же целей существуют программы a2ps и mpage.. Enscript позволяет производить повороты на 90 градусов, добавлять водяные знаки, заголовки и окрашивание текста, базирующееся на применении ключевых слов. Она не форматирует текст, поэтому чаще всего используется для печати исходных текстов программ.

Чтобы использовать шрифты TrueType в enscript, сделайте следующее:

  • Добавьте /usr/share/fonts/truetype к переменной AFMPath.

  • Укажите шрифт TrueType, либо напрямую, либо через алиасинг обычного шрифта.

Более подробно читайте документацию enscript.

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


5.5. Форматирование и обработка текста: groff

Groff - это передний план системы форматирования документов groff/troff Gnu. Возможности Groff можно оценить, просмотрев руководство пользователя (man).

user shell

$ zcat /usr/man/man1/groff.1.gz | groff -man | lpr

Огромное количество документации в Unix использует форматирование при помощи troff и макросов ms (и, иногда, me). Пакет xbooks в Debian, например, содержит 43 файла, использующих troff с макросами ms. Можно очень красиво распечатать эти документы, используя groff.

Groff - это очень мощная система, но, в любом случае, это внук (или правнук) программ, использовавшихся в 60-х годах на печатных прессах. Поддержка шрифтов в groff полностью отражает суть этой наследственности. Groff, в отличие от своих предков, использует PostScript в качестве формата вывода по умолчанию, поэтому наши предыдущие изменения, внесенные в ghostscript, займутся решением наших проблем -- groff не должен заниматься чтением файлов со шрифтами TrueType. Ему также не нужны точные метрики шрифтов, и в этом разделе мы только опишем восстановление необходимых groff файлов:

Файлы описания PostScript Groff

/usr/share/groff/font/devps/DESC
    Файл описания устройств
/usr/share/groff/font/devps/text.enc
    Таблицы кодировок используемые для шрифтов
/usr/share/groff/font/devps/generate/textmap
    Стандартная таблица преобразования
/usr/share/groff/font/devps/generate/Makefile
    Стандартный makefile

Теперь надо отредактировать Makefile,

/usr/share/groff/font/devps/generate/Makefile

- afmdir=/usr/local/afm
+ afmdir=/usr/share/fonts/truetype

Измените названия шрифтов на их TrueType-эквиваленты (например, если мы используем бесплатные шрифты Microsoft TrueType, мы бы заменили Helvetica на Arial), и измените раздел TEXTFONTS, и подобные ему, вставив только те, которые нам необходимы.

Также вам надо отредактировать файл /usr/share/groff/font/devps/generate/afmname, чтобы использовать имена шрифтов TrueType и afm-файлов, и убрать флаг "-e" у awk.

После этого можно перестроить таблицы groff командой

user shell

$ cd /usr/share/groff/font/devps
$ make -f generate/Makefile

Как всегда, лучший способ проверить сделанные изменения - использовать нестандартно выглядящий шрифт. Например, вы можете использовать шрифт Mistral из бесплатных шрифтов Microsoft Truetype для печати TR.

(Я жду благодарностей от всех, кто перенастроит свою систему так, что она будет печатать man-ы староанглийским шрифтом не ранее следующего 1 апреля!)


5.6. Набор и форматирование текстов: TeX

TeX - это вторая очень распространенная система набора и форматирования текста во многих системах GNU/Linux.

Шрифты TeX могут быть созданы при помощи mktexmf, но я имею очень скудную информацию по конкретным деталям процесса. Более подробное описание читайте в следующих версиях.


6. Незаданные вопросы

  • Приложения

    Самый большой нерешенный на настоящий момент вопрос - это почему netscape communicator использует шрифты TrueType,ghostscript использует те же шрифты TrueType, а напечатанные при помощи netscape отличаются от того, что на экране.

    Короткий ответ - netscape генерирует PostScript со стандартными шрифтами (Helvetica и Times-Roman), вместо тех, которые заданы пользователем или в HTML. Длинный ответ - я абсолютно не знаю, почему так происходит и есть ли способы это исправить.


7. Где найти шрифты TrueType

Если вы ищете шрифты TrueType, то вот несколько мест, откуда можно начать поиски:

  • c:\windows\fonts

  • Бесплатные шрифты Microsoft TrueType http://www.microsoft.com/typography/fontpack/

  • Шрифты Acid http://www.acidcool.com/

  • Кольцо Шрифтов (The Font Ring) http://www.webring.org/cgi-bin/webring?ring=fontring&list


7.1. Небольшое дополнение по использованию бесплатных TrueType шрифтов Microsoft

Ни одна статья о поддержке шрифтов TrueType в Linux не может обойтись без упоминания о бесплатных шрифтах Microsoft TrueType fonts. Сначала о легальности использования Бесплатных Шрифтов Microsoft TrueType:

http://www.microsoft.com/typography/faq/faq8.htm Вопрос: "Что я могу делять с этими шрифтами?"

  • Кто угодно может загрузить и установить эти шрифты
    для собственного пользования.
  • Дизайнеры [веб-страниц] могут указывать ссылки на эти
    шрифты в своих Веб-страницах.

Ясно - абсолютно легально и правильно пользователям Linux загружать эти шрифты и устанавливать их, за что Microsoft большое спасибо.

Несмотря на то, что другое условие запрещает их дальнейшее распространение "в любой форме, придающей дополнительную ценность коммерческому продукту" Я не думаю, что в ближайшее время этот пакет появится в группе main. (Возможно, когда-нибудь в группе non-free, может быть в пакете установщика...?)

После того, как мы обсудили первый пункт, я обращаю ваше внимание на второй. Microsoft активно призывает веб-дизайнеров использовать ее шрифты на страницах, и многие HTML-редакторы используют их по умолчанию.

Многие web-сайты при просмотре стандартным Netscape/Linux могут быть описаны как ... разборчиво читаемые. Некоторые не читаются вовсе. Абсолютно не случаен тот факт, что эти, м-м-м - разборчивые сайты - это те, которые жестко прописывают в страницах информацию о шрифтах.

После того, как я установил эти шрифты, я заметил, что эти "проблемные" сайты стали значительно более привлекательны. Многие из них все-таки очень Windows-центричны, но я по крайней мере перестал вздрагивать каждый раз после загрузки страниц с этих сайтов.

Мой совет - установите бесплатные шрифты Microsoft TrueType fonts в ваш броузер. Вам не обязательно создавать свои страницы с использованием этих шрифтов, ни использовать ghostscript для их просмотра.


8. Legalities

Copyright © 1999 by Bear Giles.

Unless otherwise stated, Linux HOWTO documents are copyrighted by their respective authors. Linux HOWTO documents may be reproduced and distributed whole or in part, in any medium physical or electronic, as long as this copyright notice is retained in all copies. Commercial redistribution is allowed and encouraged; however, the author would like to be notified of any such distributions.

All translations, derivative works, or aggregate works incorporating any Linux HOWTO documents must be covered under this copyright notice. That is, you may produce a derivative work from a HOWTO and impose additional restrictions on distribution. Exceptions to these rules may be granted under certain conditions; please contact the Linux HOWTO cordinator for more information.

In short, we wish to promote dissemination of this information through as many channels as possible. However, we do wish to retain copyright on the HOWTO documents, and would very much like to be notified of any plans to redistribute the HOWTOs, this one in particular! Web page authors are free to link to this HOWTO without restriction, though the author would appreciate an email informing him of this, just so he can boost his ego by knowing who else reads and links to this document.

Many of the terms mentioned in this document are trade names. Unless otherwise stated, all trademarks are property of their respectve owners.


9. Авторские права

Авторские права на русский перевод этого текста принадлежат © 2000 SWSoft Pte Ltd. Все права зарезервированы.

Этот документ является частью проекта Linux HOWTO.

Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе, физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но, так или иначе, автор текста и автор перевода желали бы знать о таких дистрибутивах.

Все переводы и производные работы, выполненные по документам Linux HOWTO, должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO, с которым можно связаться по адресу приведенному ниже.

Мы бы хотели распространить эту информацию по всем возможным каналам. Но при этом сохранить авторские права и быть уведомленными о всех планах распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь к координатору проекта Linux HOWTO по электронной почте: или к координатору русского перевода Linux HOWTO компании SWSoft Pte Ltd. по адресу