Font HOWTO: TeX / LaTeX

Далее Назад Оглавление

9. TeX / LaTeX

9.1 Обзор файлов фонтов для LaTeX/TeX

Добавление фонтов к TeX и LaTeX является довольно сложной процедурой. Однако, как и во многих других вещах, все просто, если Вы знаете, как это сделать. Некоторые фонты распространяются в формате Метафонт, а некоторые - в формате Type1. Обычно, фонты формата Type1 более доступны. Однако фонты Метафонт имеют то очевидное преимущество, что они меняют форму изображения в соответствии с размером, в то время как фонты Type1 и TrueType при различных размерах просто увеличивают или уменьшают изображения символов, не изменяя формы. Главная причина того, что это качество желательно, состоит в том, что в идеале шрифт должен быть (относительно) узким при больших размерах и более широким при малых размерах.

В нижеследующем изложении мы сконцентрируем внимание на фонтах Type1, поскольку они более доступны и порождают больше проблем при инсталляции.

Вот небольшой обзор файлов фонтов в LaTeX. LaTeX использует следующие типы файлов при обработке фонтов Type1:

  • .pl -- список свойств (property list). Это версия файла метрик фонта для tex, приспособленная для чтения человеком.
  • .vpl -- виртуальный список свойств (virtual property list). Ориентированная на чтение человеком версия виртуального файла фонта.
  • .fd -- определение фонта (font definition). Используется для задания семейства фонтов.
  • .tfm -- метрика фонта tex (tex font metric). Это файл метрик, как это объясняется в глоссарии. Этот файл полностью аналогичен файлу .afm, используемому для фонтов типа Type1. TeX нуждается в файле метрик для того, чтобы правильно расположить текст на странице.
  • .vf -- виртуальный фонт (virtual font). Эти файлы содержат детали кодирования и действуют как интерпретаторы. TeX обращается с ними как с фонтами. Например, представьте, что существует некий фонт foobar-exp.pfb, который состоит из небольшого числа (скажем 20) альтернативных символов, и имеется виртуальный фонт, который использует некоторые из этих альтернативных символов (и использует остальные символы из фонта foobar.pfb). Dvips может сказать "Мне нужен символ 65 из виртуального фонта foo.vf". Dvips знает, что 65 всегда соответствует "a" в схеме TeX. Тогда виртуальный фонт переадресует запрос TeX'а в запрос символа 14 в фонте foobar.pfb типа Type1 (который может замещать "a" в Type1 фонте foobar.pfb). Механизм виртуальных фонтов очень гибок и позволяет конструировать фонт из нескольких различных файлов фонтов. Это очень полезно, когда используются такие фонты как фонты "expert" от Adobe.
  • .pk -- аппаратно-зависимый растровый (bitmap) фонт. Эти фонты обычно конструируются по мере необходимости (они содержат готовые изображения символов, создаваемые с помощью фонтов Type1 и метафонта). Они обычно имеют высокое разрешение (около 300-1200dpi) и предназначены для того, чтобы организовать вывод на принтер. Из-за высокого разрешения и того факта, что для вывода символов каждого размера требуется .pk-файл, они требуют очень много дискового пространства, поэтому обычно сохраняются в кэше, а не записываются на диск.
  • .mf -- файлы метафонтов (metafont files). Метафонт - это язык программирования графики (a graphics programming language), широко используемый для создания фонтов (хотя он может быть использован для любой графики). Он имеет много преимуществ по сравнению со схемами, использованными в TrueType и Type1. Его главной слабостью является то, что он не так вездесущ, как TrueType или Type1 (и он не очень хорош для WYSIWYG-приложений. Конечно, это главный недостаток, если Вы используете для печати TeX.)

Неплохо знать кое-что о структуре каталогов TeX. Основные каталоги, о которых Вы дожны знать, следующие:

  • $TEXMF/fonts -- главный каталог для фонтов
  • $TEXMF/fonts/type1 -- директория для фонтов type1
  • $TEXMF/fonts/type1/foundry -- каталог для файлов фонтов от конкретного производителя (foundry)
  • $TEXMF/fonts/type1/foundry/fontname -- содержит фонт с именем name. Это имя (name) обычно представляет собой произвольное английское название и не обязано следовать довольно загадочной схеме формирования имен фонтов, принятой в TeX.
  • $TEXMF/fonts/afm/foundry/fontname -- каталог, содержащий afm-файлы, соответствующие фонту name, принадлежащему производителю foundry.
  • $TEXMF/fonts/tfm/foundry/fontname -- аналогичный каталог, содержащий файлы tfm (вместо afm-файлов).
  • $TEXMF/fonts/vf/foundry/fontname -- аналогичный каталог для виртуальных фонтов.
  • $TEXMF/fonts/source/foundry/fontname -- аналогичный каталог, содержащий файлы метафонта.
  • $TEXMF/dvips/config/psfonts.map -- файл, определяющий соответствия между названиями фонтов и именами файлов, содержащими эти фонты, для dvips. Этот файл по своим функциям и структуре подобен файлу Fontmap из пакета ghostscript.
  • $TEXMF/tex/latex/psnfss -- здесь находятся все файлы определений фонтов (.fd).

9.2 Добавление фонтов Type1

Именование фонтов

Во-первых, Вы должны соответствующим образом назвать Ваши фонты. Инструкции о том, как именуются фонты, ищите в документации на fontinst в Вашей системе (она должна находиться в подкаталоге fontinst каталога, содержащего документацию по tetex). Очень кратко схема именования фонтов такова: FNW{V}E{N} где:

  • F - однобуквенное сокращение для производителя фонта (m = monotype, p = adobe, b = bitstream, f = free )
  • N - двух-буквенное сокращение от имени фонта (например, ag = "avant garde")
  • W - это толщина фонта (r = regular, b = bold, l = light d = demibold )
  • V - необязательные указание на вариант наклона (i = italic, o = oblique)
  • E - сокращение для кодирования (почти всегда 8a, что означает стандартную схему кодирования adobe).
  • N - необязательное указание на ширину символов (n = narrow)
Например, фонт Adobe Garamond demibold именуется как pgad8a.

Создание виртуальных фонтов и метрик фонта для tex

Теперь Вы можете запустить fontinst следующим образом:

        latex `kpsewhich fontinst.sty`
после чего ввести на запрос программы:
        \latinfamily{font_name}{}\bye
где font_name - это три первых буквы имени файла Вашего фонта (например, pad для adobe garamond). После этого fontinst создаст множество файлов -- файлы описания фонта, файлы списка свойств и файлы виртуальных списков свойств. Будет сгенерировано также множество .mtx-файлов. Они создаются программой fontinst, но Вам нет необходимости использовать их. Вам необходимо конвертировать списки свойств и виртуальные списки свойств в метрики и виртуальные фонты. Это делается с помощью утилит vptovf и pltotf.
        for X in *.pl; do pltotf $X; done
        for X in *.vpl; do vptovf $X; done
Затем удалите старые vpl, pl и mtx файлы.

Конфигурирование dvips

Вы должны отредактировать конфигурационный файл dvips, psfonts.map. Лучший способ объяснить формат файла - это привести пример.

     marr8r          ArialMT <8r.enc <farr8a.pfa
     marbi8r         Arial_BoldItalicMT <8r.enc <farbi8a.pfa
     marb8r          Arial_BoldMT <8r.enc <farb8a.pfa
     marri8r         Arial_ItalicMT <8r.enc <farri8a.pfa
     marr8rn         Arial_Narrow <8r.enc <farr8an.pfa
Здесь 8r.enc служит просто для информирования dvips об используемой схеме кодирования (во всех наших примерах это 8r, в силу способа, которым fontinst конструирует виртуальные фонты). Самый левый столбец - это имя фонта, который использует TeX. Второй столбец - это реальное имя фонта, которое содержащееся в файле фонта (это имя можно узнать, открыв afm-файл в текстовом редакторе и найдя директиву FontName). Последний столбец это имя файла контуров, соответствующего данному фонту. Указывать имя каталога нет необходимости -- tex знает, где искать.

Тестирование фонта

Попытайтесь запустить latex на документе следующим образом:

\documentclass{article}
\begin{document}
        \usefont{T1}{pga}{m}{n}\selectfont
        \huge
        Testing a new font \dots the quick red fox jumped over the lazy brown dogs
\end{document} 
где нужно заменить pga на указание на Ваш фонт. Если это работает, Вы почти у цели. Все, что Вам еще необходимо сделать - это разместить все файлы в соответствующих каталогах (как это объяснено выше), после чего запустить run
         texconfig rehash
с тем, чтобы tex мог обновить список каталогов.

Создание .sty-файла

Вы можете создать файл .sty для того, чтобы легче было использовать фонты. Используйте в качестве образцов (или шаблонов) файлы из $TEXMF/tex/latex/psnfss.


Далее Назад Оглавление