Русификация 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



