Напечатать что-либо -- это всегда проблема. Имеется набор различных принтеров от различных производителей с различными особенностями. Даже для вывода на печать обычного ASCII текста нет никаких общих решений (это применимо не только к UNIX, но также и к другим операционным системам).
Принтеры имеют различные управляющие языки, и очень часто они имеют сильно различные подходы к поддержке иностранных языков. Хорошая новость -- это то, что сейчас в качестве управляющего языка, как стандарт de facto для описания работы печати, используется язык PostScript, разработанный Adobe Corporation. Много принтеров имеют встроенный PostScript интерпретатор, то есть вам надо просто послать на принтер Postscript данные. Для тех, у кого этого нет, существует программные PostScript интерпретаторы, которые берут данные PostScript и преобразовывают в специфический для данного принтера управляющий код. Один из них мы сейчас обсудим (вероятно, лучший из лучших). Это GNU GhostScript (gs для краткости).
Другая проблема -- это широкий спектр требований, предъявляемых к печати. Например, иногда вы хотите просто напечатать часть вашей программы на "C", содержащей в качестве комментария текст на русском, так что вы не нуждаетесь в "навороченной" процедуре печати -- вам нужен простой ASCII вывод с одним шрифтом. Совсем другое дело, когда вы создаёте открытку для вашей подруги. В этом случае вы, вероятно, будете нуждаться в печати документа с различными шрифтами и т.д. И это уже определённо требует больших усилий по установке поддержки кириллицы.
Чтобы выполнить вышеупомянутую задачу по выводу С программы, вы должны заставить ваш принтер понять только один шрифт кириллицы и (возможно) установить некоторую программу-фильтр, чтобы выводить данные в соответствующем формате. Чтобы совладать со второй задачей, вы должны обучить ваш принтер различным шрифтам и иметь специальное программное обеспечение.
Бывают задачи, требующие для выполнения нечто среднее, тогда вам нужна программа, которая знает как организовать и шрифты, и соответствующий вывод в принтер, так что вы можете, скажем, получить на выходе качественно отпечатанный текст без сложных систем подготовки текстов.
Иногда у вас есть простой ASCII KOI-8 текст, и вы хотите его только напечатать. Один из самых простых способов это сделать -- это воспользоваться услугами программ, преобразующих текст в PostScript.
Есть ряд программ, делающих такое преобразование. Я лично предпочитаю a2ps. Первоначально разработанная как простой преобразователь text-to-PostScript, сейчас эта программа стала "матёрым", легко настраиваемым программным продуктом с большим количеством опций и настроек. Она позволяет управлять форматами, размещением страниц, выделением и т.д. Другая утилита, делающая примерно то же самое (теперь доступная как часть проекта GNU) -- enscript.
Преобразователь текста в PostScript был и остаётся одним из наиболее универсальных средств печати. Все, в чем вы теперь нуждаетесь -- это PostScript принтер.
Команда, которую я использую для этого:
a2ps -X koi8r --print-anyway <файл>
Комплект шрифтов i18n-fonts
нужных для преобразования
кириллических текстов в Postscript не входит в дистрибутив a2ps начиная с
версии 4.12 ПО ПРИЧИНЕ НЕ ХАЛЯВНОЙ ЛИЦЕНЗИИ. Шрифты следует
скачать с домашней странички
a2ps или с
ftp a2ps.
Для работы a2ps
можно использовать
шрифты
sharatype-2.0.tar.gz,
где в комплекте идёт все необходимое для прикрутки оных шрифтов к
a2ps. Будет работать и в Latin-1 и в KOI-8. Должно также и в
Latin-2.
Программа GNU enscript
, как и a2ps, была разработана для
преобразования текста в PostScript, и она также поддерживает
не-ascii кодировки. Программа не имеет русских PostScript
шрифтов в своём составе, но их очень просто доустановить. Как это
сделать, описано ниже (спасибо Michael Van Canneyt):
enscript
. Самую последнюю
версию 1.5. вы можете найти в
GNU FTP архиве.
textbook.tar.gz
из архива на
sunsite.unc.edu
(здесь лежит программное обеспечение для русификации).
Разархивируйте этот файл в каталог, где размещены шрифты для enscript
(обычно /usr/share/enscript
). Теперь перейдите туда и выполните
следующую команду:
mkafmmap *.afm
enscript --font=Textbook8 --encoding=koi8 some.file
Если же вам требуется действительно быстрый и простой способ, а качество вывода для вас некритично, и все, что вам нужно -- это только русский текст на бумаге, попробуйте пакет rtxt2ps. Это очень простой, без украшательств, конвертер текста в PostScript. Качество вывода не очень хорошее (честно говоря, плохое), но это работает.
Если все, в чем вы нуждаетесь -- это печать ASCII текста без
дополнительной обработки, то вы можете
использовать некоторые программки, которые могут преобразовать
ваш текст кириллицы в готовый TeX файл. Одна из самых лучших
программ для таких целей -- это translit
(Смотрите раздел
Символьная перекодировка). В этом случае вы
даже не должны беспокоиться относительно установки шрифтов
кириллицы для TeX, так как translit
использует пакет кириллицы
Washington Cyrillic
, который включён в большинство дистрибутивов
TeX (подробнее об этом пакете смотрите в разделе
Работа с Washington Cyrillic).
Эксперты говорят, что PostScript -- это просто. Я не могу судить -- у меня было слишком много вещей, которые надо изучить, чтобы выкроить время для изучения PostScript. Но я все равно попробую использовать мои небольшие знания об этом вопросе. Я буду очень благодарен за любую информацию об этом вопросе от вас, друзья, которые знают больше меня (вас приблизительно 99% от Земной популяции).
Чтобы печатать русский текст с использованием PostScript, вы должны удостовериться относительно следующих вещей:
Не имеется никакого достаточно общего решения, чтобы рекомендовать его как окончательное. Я попробую осветить различные способы для решения различных проблем, связанных с этим вопросом.
Один способ -- это побороть проблемы установки кириллицы вообще,
и состоит он в том, чтобы использовать
Ghostscript. Ghostscript
(или
просто gs
от newspeak) абсолютно free (ну, не совсем)
интерпретатор PostScript. У него есть много преимуществ; среди
них:
В нашем специфическом случае является важным то, что однажды
установив и настроив Ghostscript
, мы можем все печатать через
него, таким образом нам не надо дополнительно
настраивать другие PostScript устройства (например, HP LaserJet IV).
Рисунки в формате PostScript часто требуется включать в текст, подготовленный
таким средством форматирования, как TeX. Компания Adobe разработала формат
файла Инкапсулированный
PostScript (EPS или EPSF), который создаётся в
соответствии с соглашениями по структурированию документов в формате
PostScript
(PostScript Document Structuring Conventions).
Большинство современных графических приложений порождает файл в общепринятом формате EPS, который без труда может быть использован LaTeXом. Существует одно но: как правило, при создании EPS файла шрифты, которыми делаются надписи (шрифты, конечно же, -- PostScript Type1), в него не включаются и при печати заменяются первыми попавшимися.
Если у вас есть картинка в EPS, использующая шрифт AAA, и файл AAA.PFA
с этим PostScript шрифтом, то для того, чтобы инкапсулировать шрифт в
картинку, надо с помощью любого текстового редактора вставить файл AAA.PFA
целиком непосредственно перед строчкой %%EndProlog
в файл EPS.
Если у вас есть только PFB шрифты, то их следует его преобразовать в PFA. Для
этого воспользуйтесь утилитой pfb2pfa (см.
CTAN) или t1ascii (см.
t1utils
).
Для вставки вместо редактора можно использовать
скрипт includeresources
из psutils
-- он делает то же,
но автоматически.
Этот же приём срабатывает и для обычного PostScript файла.
Пакет Ghostscript является совершенно уникальным продуктом -- фактически все, что печатается в Unix, проходит через Ghostscript.
Иногда необходимо иметь какую-нибудь специфическую, не общесистемную настройку ghostscript. Например, возможно, что у вас нет привилегий root-а, или вы не желаете воспользоваться ими из соображений безопасности. В системе могут совместно работать пользователи, нуждающиеся в разных настройках. Кроме того, универсальной настройки просто не существует. Например, для того, чтобы Netscape печатал кириллицу, нужно заместить стандартные латинские PostScript шрифты кириллическими. Но с другой стороны, после этой замены будет невозможно напечатать (и даже увидеть на экране) некоторые латинские тексты.
Создайте новый каталог (например, ~/.ghostscript
) и поместите в
него все новые кириллические шрифты. Скопируйте в него также файл
Fontmap
и затем измените его как Вам угодно. Установите
переменную
окружения GS_LIB
:
export GS_LIB=~/.ghostscript
Эта переменная указывает ghostscript, что нужно сначала заглянуть
в каталог ~/.ghostscript
(где находятся ваши новые шрифты
и файл Fontmap), и лишь потом в общесистемные каталоги.
Это важно, так как вы, вероятно, не захотите взваливать ответственность за включение шрифтов кириллицы в PostScript на другие программы. Взамен вы добавляете их только к gs и заставляете программы выводить русский текст, совместимый с этими шрифтами.
Чтобы добавлять новый шрифт (в формате pfa
или pfb
) в gs
, вы
должны:
/usr/lib/ghostscript/fonts
-- можно уточнить
с помощью команды 'gs -h'
.
Fontmap
в каталоге gs
.
О том, где можно найти шрифты Type1, написано в разделе Шрифты Type1.
Если у вас есть старый добрый матричный принтер, и вы нуждаетесь в простом выводе текста на KOI8, то попробуйте следующее:
rc
файла при
загрузке.
Таким образом, наличие символов Cyrillic в верхней части набора символов принтера позволит вам печатать тексты по-русски без дополнительных ухищрений.
Альтернативно к KOI8-R шрифтам вы можете попробовать использовать CP866 шрифты. Для этого имеются две причины:
Следует отметить, что в Болгарии вместо CP866 используется кодировка МИК.
Однако, в этом случае вы должны будете преобразовать ваши
тексты из KOI8-R в CP866 перед посылкой их на принтер. Это не
проблема, так как имеется множество программ, делающих это (для примера
смотрите раздел
Символьная перекодировка),
так что для этого вам нужно только вызвать
такую программку из файла /etc/printcap
в "if
поле".
Например, с программой translit
можно сделать следующее:
if=/usr/bin/translit -t koi8-alt.rus
Для подробностей смотрите printcap(5)
.
Это имеет весьма отдалённое отношение к кириллизации, но иногда очень полезно знать, что надо сделать, чтобы ваш текст был отформатирован под страницу формата A4 (заимствовано из Serbian-HOWTO).
/usr/share/texmf/dvips/config/config.ps
или ~/.dvips
.
-sPAPERSIZE=a4
.
~/.Xresources
:
Ghostview.pageMedia: A4
~/.Xresources
:
XDvi.paper: A4