Как заменить pk-шрифты в ps-файлах

 

PostScript является языком описания страниц от фирмы Adobe Systems Inc. На основе этого языка разработан формат переносимого документа – Portable Document Format (файлы с расширением pdf), который идеально подходит для создания электронных книг и документации. В числе достоинств отметим платформенную независимость (один и тот же документ может быть прочитан и в Microsoft Windows, и в Linux, и в FreeBSD Unix и в Sun Solaris – для всех этих систем существуют бесплатные просмотрщики), причём у пользователя не возникнет потребности в установке дополнительных шрифтов – они встраиваются в сам документ (в Microsoft Word вы иногда созданный документ не можете открыть на соседней машинеJ). Кстати, pdf-файлы безопасны относительно вирусов (в PostScript они были возможны – это полноценный язык программирования). Поддерживается поиск и сжатие, развитая система закладок и перекрёстных ссылок для навигации. В документ могут быть встроены звук и анимация. Неудивительно, что многие издательства сейчас выпускают книги именно в этом формате, а программные пакеты сопровождаются документацией в нём же.

Для создания документа в этом формате требуется пакет Adobe Acrobat, в отличие от Adobe Acrobat Reader она платная. Устанавливать её нужно после офисных программ – она встраивает свой плагин. Реально pdf-файлы создаются небольшой программой из этого пакета – Acrobat Distiller, которая может быть использована также отдельно. Имея только Distiller, pdf-документ можно создавать по следующей схеме: в качестве принтера выбираете Acrobat Distiller, в качестве расширения задайте ps (печать в PostScript-файл). Для получения ps-файла можно использовать и такой способ: установить принтер, например, Apple LaserWriter.

Настало пора обрадовать читателя: существуют программы, бесплатные, для создания pdf – это, например, TeX! Схематически это выглядит так: tex --> dvi --> ps --> pdf.

Стандартным выводом TeX является dvi-файл, который затем можно обработать программой dvips для получения PostScript-файла, который в свою очередь можно продистиллировать для получения pdf. Есть реализация (вернее, формат) TeX, который из исходного tex-файла генерирует сразу pdf — это pdf(La)TeX.

Часто попадаются PostScript-файлы, после конвертации которых в pdf формат полученный файл в просмотрщике (хотя Acrobat 6 уже умеет сглаживать!) смотрится очень плохо: буквы выглядят «рваными», да и сам документ открывается/пролистывается долго — вследствие встраивания растровых (pk) шрифтов TeX. При выводе на принтер документ выглядит нормально. В таких файлах нет также полноценного текстового поиска. Заметим, что такие файлы, как правило, созданы программой dvips.

Поскольку почти все TeX’овские шрифты давно имеют векторные (PostScript Type 1) варианты, то заменой pk шрифтов на их векторные аналоги можно исправить положение. Необходимым условием является то, что ps-файл должен быть создан dvips версией старше 5.58. Эту информацию можно посмотреть, открыв файл в простом текстовом редакторе (например, в Far). В самом начале файла можно найти требуемую информацию. В файле вы обнаружите теги-комментарии, в частности, наличие комментария BitmapFont и обеспечивает возможность замены шрифтов. Старые версии dvips не пишут этот комментарий.

Для нашей цели существуют две программы:

ü      dvipsstrip    от Y&Y;

ü      pkfix           – perl-скрипт от Heiko Oberdiek, http://tug.ctan.org/tex-archive/support/pkfix.

Сравним их «потребительские» свойства в контексте процесса ps-->pdf. pkfix нормально работает под Windows, с MiKTeX, надо установить ActivePerl от ActiveState и всё будет в порядке. Внимание, для тех, кто использует несколько OS на одной машине — необязательно ActivePerl устанавливать всякий раз, после установки в одном разделе диска из-под другой OS (имею в виду версии Windows) достаточно занести путь в подкаталог BIN в переменную окружения PATH, т.е. ActivePerl можно вызывать даже из сидюка.

Теперь о главном — dvipsstrip не требует наличия TeX, это, даже достоинством назвать трудно. И он непригоден в FreeBSD Unix и Linux. Результат нужно продистиллировать в обязательном порядке с указанием местоположения PostScript-шрифтов TeX.

pkfix работает на всех платформах (с учётом сказанного выше), имеет открытый код, и, требует наличия TeX, что естественно. При этом он свою работу делает более "интеллектуально" (dvipsstrip в лоб заменяет ссылки на шрифты). Для ps-файлов с английским содержимым без разницы, какую из этих применять, а для "русских" файлов dvipsstrip бесполезен — шрифты Computer Modern не содержат русских букв, а содержащие, самоделки — нарушают лицензию. Тем более в teTeX (FreeBSD Unix и Linux) встроены кириллические шрифты lh, у которых есть PostScript версия — CM-SUPER. У меня был препринт на русском – ps-файл, после dvipsstrip-->pdf русских букв там не было. pkfix же заменил растровые cm-шрифты с русскими буквами на PostScript CM-SUPER шрифты. Но вот ps-->pdf после этого не сработало, анализ показал, что в результирующем ps-файле не хватает вектора кодировки шрифта; вставив его вручную, я успешно продистиллировал pdf. Ошибка с пропуском вектора кодировки исправлена в последней версии.

Иногда попадаются файлы (русские), в которых нужно заменить zc-шрифты, для чего требуются их PostScript версии. Они были сгенерированы автором, ссылки будут помещены в общий доступ.

На последнем этапе можно использовать также Ghostscript, но, на мой взгляд Distiller предпочтительнее с точки зрения лучшей оптимизации.

 

 

Б. И. Тулеуов.

berik_t@yahoo.com

Караганда, 19 февраля 2006 г.

 

Как  русифицировать  Scientific Word (Scientific WorkPlace)

Как установить MiKTeX

Как защитить свои диски

Как рисовать в METAPOST

Работаем без инсталляции!

Разное

Hosted by uCoz