Русификация groff

Иногда возникает необходимость напечатать какой-нибудь текст на русском языке, отформатированный с помощью groff, например, рускоязычные маны. Когда я впервые столкнулся с такой проблемой, никто не мог мне указать даже примерного пути решения. Я долго воевал с groff’ом, и в конце концов он капитулировал. Теперь я печатаю по-русски без проблем.
Во-первых, вам понадобятся русские шрифты в формате Type1. Я использую семейство шрифтов позаимствованное из пакета русификации TeX’а. Скачать его можно groff-metrics.tar.gz (9647)
psfonts.tar.gz (427488) . Распакуйте их в каталог со шрифтами Ghostscript’а (у меня это /usr/share/ghostscript/fonts). Теперь допишите в конец файла Fontmap (у меня он находится в каталоге /usr/share/ghostscript/5.50) следующие строчки:

/ArialCyrMT                             (arial8.pfb)    ;
/ArialCyrMT-Italic                      (ariali8.pfb)   ;
/ArialCyrMT-Bold                        (arialbd8.pfb)  ;
/ArialCyrMT-BoldItalic                  (arialbi8.pfb)  ;

/CourierCyrPS                           (cour8.pfb)     ;
/CourierCyrPS-Inclined                  (couri8.pfb)    ;
/CourierCyrPS-Bold                      (courbd8.pfb)   ;
/ArialCyrMT-BoldItalic                  (arialbi8.pfb)  ;

/TimesNRCyrMT                           (times8.pfb)    ;
/TimesNRCyrMT-Inclined                  (timesi8.pfb)   ;
/TimesNRCyrMT-Bold                      (timesbd8.pfb)  ;
/TimesNRCyrMT-BoldInclined              (timesbi8.pfb)  ;

На данном этапе Ghostscript должен научиться печатать русскими шрифтами, что уже неплохо. На нас ждет более грандиозная цель: надо заставить groff работать с этими шрифтами.
Для работу с Type1 шрифтами groff нужна информация о метриках и расположении глифов, которую он хранит в своем собственном формате. Преобразовать afm файл от шрифта в этот формат можно при помощи поставляемой утилиты afmtodit. Казалось бы все прекрасно, но… в полученных при помощи afmtodit файлах записана некорректная информация о русских буквах. Я долго думал, сравнивал, анализировал, затем взял в руки vi и поправил сгенерированные файлы. Скачайте из <ссылка> здесь и положите в каталог метрик groff, у меня это /usr/share/groff/font/devps.
Результат превзошел все ожидания: groff почти начал работать с русскими шрифтами. Почему почти – потому что для корректной печати русских букв в groff необходимо отключать некоторые анахронизмы, делается это путем подключения макросов newps. Например, если надо сгенерировать posctscript файл для документа business написанного при помощи макропакета me я запускаю следующую команду:

$ groff -Tps -me -mpsnew business.me >
business.ps

Полученный файл business.ps можно печатать или разглядывать в вашем любимом просмотрщике постскрипта. Я предпочитаю использовать gv, но это уже совсем другая история… Александр Бабичев 08.02.1999