PostScript

Данная статья даёт первоначальное представление о языке PostScript, его возможностях, особенностях, применениях. За рубежом он занял своё весомое место в издательской индустрии, начиная от настольных издательских систем и заканчивая промышленным типографским производством. Наряду с этим PostScript нашёл широкое применение в областях далёких от полиграфии.
В статье даётся только беглое описание его синтаксиса и программных аспектов, основное же внимание уделено концепциям и идеям, положеным в основу языка. Многие аспекты языка демонстрируются на приводимых примерах.

История PostScriptа

Первая публикация о языке PostScript и первый PostScript принтер появились в 1985 году. В то время в печатной и издательской индустрии ещё не существовало каких-либо стандартов описания печатных изображений, разнообразные популярные гарнитуры были ограничены рамками конкретных их использующих закрытых систем или типографского оборудования. Создание высококачественных изобразительных материалов ограничивалось только специалистами. Стоимость полиграфической технологии и оборудования были весьма высоки. За это относительно короткое время многое изменилось. Все основные производители компьютеров, принтеров, фотонаборных аппаратов, растровых плоттеров поддерживают этот язык как стандарт. Основные библиотеки шрифтов доступны в PostScript совместимых форматах. Стоимость производства высококачественной печатной продукции существенно снизилась. PostScript стал частью производства в печатной, издательской и компьютерной индустрии.

Спустя пять лет после появления первой версии появилась спецификация языка PostScript Уровня 2. Все новшества языка можно разделить схематически на два направления: полиграфия и диалоговые компьютерные системы. В зависимости от ориентации каждый конкретный интерпретатор языка PostScript имеет то или иное реализованное подмножество языка. Помимо расширения языка для более гибкого управления памятью в процессе интерпретации и нового унифицированного подхода к описанию специфики конкретных выходных устройств язык существенно расширился в следующих направлениях:

расширение числа цветовых пространств (в языке Уровня 1 были только монохромное и RGB цветовые пространства);
добавление новых форматов шрифтов, поддерживаемых интерпретатором, и операторов работы с текстом для более гибкого управления размещением текста на странице и ускорения интерпретации;
сохранение истинности цветопередачи при выводе изображения на различные выходные устройства при условии окалиброванности устройств;
управление коррекцией цветов по всем цветовым каналам или по каждому цветовому каналу в отдельности;
чтение и запись при помощи встроенных фильтров языка данных, представленных в форматах ASCII85 (формат представления информации, принятый в системах электронной почты), RLE (кодирование длин пробега – способ упаковки растровых данных, используемый в форматах PCX, TIFF, DIB), LZW (формат, используемый многими программами архивации), CCITT (формат передачи факсовской информации) и JPEG (формат с высокой степенью упаковки растровых данных);
задание пользовательской сепарации (цветоделения) по любому заданному цвету;
управление полиграфическими параметрами (линеатурой, углом, формой офсета) для каждого сепарированного слоя в отдельности;
двоичное представление PostScript программы для сокращения объёмов и повышения скорости интерпретации;
расширение числа графических операторов для более быстрого формирования изображения при диалоговой работе;
выделение подмножества языка Display PostScript, ориентированного на диалоговую PostScript ориентированную работу с экраном.

После появления спецификаций языка Уровень 2 в 1990м году язык продолжает развиваться, расширяясь в различные ранее не предполагавшиеся направления. Немаловажной причиной популярности языка является открытость его спецификаций и многочисленность методических материалов по разработке PostScript генераторов, учитывающих все его реализационные особенности для написания эффективных PostScript программ.

Автором языка PostScript является фирма Adobe System, известная также своими популярными продуктами для платформ IBM PC и Macintosh – Adobe Photoshop и Adobe Illustrator. Популярность языка обеспечивается усилиями фирмы по переносу интерпретатора в различные аппаратные и программные среды. Кроме того, существуют интерпретаторы других фирм-разработчиков, зачастую предлагающих расширения языка, которым вынуждена следовать и фирма Adobe.

[В Начало]

Суть PostScriptа

PostScript – это язык описания страниц, предназначеный для формирования изображений произвольной сложности и вывода их на печать. Для этого в языке имеется широкий набор графических операторов, используемых в произвольной комбинации. Все графические операторы языка, формирующие изображение, можно разделить на три группы:

векторная графика,
позволяющая рисовать прямые линии, дуги, кривые произвольного размера, ориентации, ширины, закрашивать прощади любого размера, формы, цвета; цвет для линий или заливок может задаваться в любом из цветовых пространств языка; любой описанный на языке контур может быть границей клипирования изображения; контур клипирования задаёт границы рисуемого изображения;
работа с текстом –
для вывода текста произвольного размера в различных гарнитурах, размещая его с произвольной ориентацией в произвольном месте страницы; текст полностью интегрирован с графикой все текстовые символы трактуются как графические фигуры и могут обрабатываться любым из графических операторов;
растровые изображения
позволяют выводить на листе сканированные рисунки или фотографии с масштабированием и ориентацией, источником растра может быть как текущий файл, содержащий программу на PostScriptе, так и внешний; считывание цветовых слоев может вестись как из одного файла, так и из нескольких сепарированных.

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

  1. Приложение генерирует устройство независимое изображение на языке PostScript.
  2. Система обработки изображения (интерпретатор) интерпретирует изображение (программу) и приближает его к характеристикам конкретного выходного устройства.

PostScript это язык программирования графических изображений. В зависимости от сложности изображения (сложности PostScript программы) интерпретация различных страниц может существенно отличаться по времени. Значительная часть информации может быть определена на этапе интерпретации. Использование этой информации из PostScript программы при генерации изображения придаёт языку дополнительную гибкость.

[В Начало]

PostScript – Это Язык Программирования

В начале статьи упоминалось, язык PostScript это язык программирования, имеющий джентельменский набор управляющих конструкций языков программирования. Программы на языке PostScript интерпретируются, а не компилируются. PostScript в своих идеях много взял из различных языков программирования, но более всего идеологически по интерпретацонной схеме и переопределениям операторов он взял из языка FORTH.

Все данные, используемые операторами языка, хранятся в стеках. Программа на языке PostScript это последовательность операторов, заданных в постфиксной нотации или обратной польской записи: операнды записываются перед оператором. Читая файл программы, интерпретатор записывает в стек операнды, затем выполняет оператор, снимая операнды со стека. Язык имеет типы данных, обычные для языков программирования: вещественные, целые, булевские, строковые, массивы. Специфическим типом данных PostScriptа является словарь универсальное хранилище разнородной информации. Все объекты, хранящиеся в словаре, задаются ключом, в качестве которого чаще всего используются идентификаторы, и значением.

PostScript гибкий язык, позволяющий переопределять существующие операторы или определять новые функции, не отличающиеся по синтаксису от стандартных операторов. Таким образом осуществляется эмуляция операторов Уровня 2 в интерпретационных средах Уровня 1. PostScript это не фиксированный язык, а скорее интерпретационная среда, подстраиваемая под конкретную задачу. PostScript программы это обычные текстовые файлы, которые можно обрабатывать стандартными текстовыми редакторами.

Постфиксная запись является трудно читаемой и обыкновенные арифметические выражения принимают трудно понимаемый вид.

Язык C Язык PostScript
- A >> A neg
A + B >> A B add
A * (B + C) >> B C add A mul или A B C add mul
sqrt( sqr(A) + sqr(B) ) >> A dup mul B dup mul add sqrt
sqrt( 1 - sqr(X) ) >> X dup mul 1 exch sub sqrt

Но PostScript не предназначен для использования его программистами. Программы на PostScriptе генерируются PostScript драйверами. Для эффективности интерпретации важной является простота синтаксических конструкций. Поэтому весь синтаксис языка укладывается в простую форму:

Операнд1 Операнд2 . . . ОперандN Оператор

Программа на PostScriptе это последовательность операторов и ничего более. Операторы не являются строчно ориентированными как в ассемблере. Никакой макроструктуры в виде блока данных, объявлений функций, главной функции (как в языке C) в PostScripte не существует. Объявление переменной это оператор с тем же синтаксисиом.

/A 10 def

Результатом выполнения оператора def является помещение в словарь имени A со значением 10. Объявление процедуры это тоже оператор.

/Inch { 72 mul } def

В результате работы оператора def в словарь будет помещена переменная Inch, значением которой является функция умножения на 72, перевода из пунктов в дюймы. После определения этой функции программа на PostScriptе может использовать функцию Inch как стандартный оператор. Фрагмент программы 3 Inch в процессе интерпретации аналогичен выполнению фрагмента 3 72 mul.

Считываемые интерпретатором операнды при выполнении оператора языка размещаются на стеке операндов, откуда и снимаются каждым оператором самостоятельно. Когда оператор возвращает один или более результатов, он также размещает их на стеке операндов. Выше приведенный оператор mul своим результатом оставит на вершине стека число 216.

Помимо стека операндов в интерпретаторе имеются ещё три стека, определяющие вместе с ним состояние выполнения PostScript программы. Стек словарей содержит только словари. Текущее множество словарей на стеке словарей определяет текущий контекст для поиска значений имён, встречающихся интерпретатором. Поиск значения имени по словарям начинается с верхнего словаря на стеке. Стек выполнения содержит выполняемые обьекты PostScript программы: функции, файлы. По завершении выполнения объекта интерпретатор удаляет его со стека выполнения и продолжает выполнение объекта, лежавшего ниже. О назначении четвертого стека будет сказано ниже.

Интерпретируемая природа языка, помимо простоты синтаксиса, имеет ещё ряд преимуществ, очень немаловажных для успеха языка. Программа на PostScriptе, обрабатываемая как "бесконечный" входной поток, не имеет никаких ограничений на размер, что очень важно для сложных изображений. Механизм переопределения существующих функций и даже стандартных операторов позволяет исправлять ошибки, выявленные в аппаратно зашитых интерпретаторах. Корректирующий PostScript фрагмент посылается на вход принтеру переопределяя ошибочно работающие конструкции, что используется для исправления ошибок в PostScript принтерах.

[В Начало]

Векторная Графика

Программа на языке PostScript, рисует три квадрата со стороной 2 дюйма красного, зелёного и синего цветов, жёлтый круг радиусом 1 дюйм и чёрную линию длиной 6 дюймов. Результат работы программы приведен на рисунке 2. Все цвета в программе задаются в цветовых пространствах устройств: монохромном, RGB и CMYK. Для демонстрации программных приёмов каждый из квадратов рисуется по своему, используя различные операторы языка. За рамками данной программы осталась работа с текстами и растровыми изображениями.

[Результат программы векторной графики]

Рисунок 1. Результат программы векторной графики.

Не операторы PostScripta, формирующие изображение, осуществляют рисование. Только операторы fill, rectfill и stroke. Операторы lineto, rlineto, arc только описывают контур. В языке PostScript имееется возможность формировать контуры кривыми Безье, используя оператор curveto.

% Пример Векторной Графики
/Inch { 72 mul } def
/DeviceRGB setcolorspace
Строки комментария начинаются с % в 1-й позиции
Определение функции, переводящей пункты в дюймы
Задание текущим цветовым пространством RGB
% --- Red Square ---
1 0 0 setcolor
1 Inch 1 Inch moveto
3 Inch 1 Inch lineto
3 Inch 3 Inch lineto
1 Inch 3 Inch lineto
closepath
fill

Задание текущим красного цвета в пространстве RGB
Установка пера в позицию (1, 1) в дюймах
Построение ребра от (1, 1) до (3, 1)
Построение ребра от (3, 1) до (3, 3)
Построение ребра от (3, 3) до (3, 1)
Замыкание контура
Заливание контура (квадрата) текущим цветом (красным)
% --- Green Square ---
0 1 0 setcolor
3 Inch 3 Inch moveto
2 Inch 0 rlineto
0 2 Inch rlineto
-2 Inch 0 rlineto
closepath
fill

Задание текущим зелёного цвета в пространстве RGB
Установка пера в позицию (3, 3)
Построение ребра от текущей точки на 2 дюйма вправо
Построение ребра от текущей точки на 2 дюйма вверх
Построение ребра от текущей точки на 2 дюйма влево
Замыкание контура
Заливание контура (квадрата) текущим цветом (зелёным)
% --- Blue Square ---
0 0 1 setcolor
5 Inch 5 Inch 2 Inch 2 Inch rectfill

Задание текущим синего цвета в пространстве RGB
Заливание текущим цветом (синим) прямоугольника с нижним левым углом в точке (5, 5) и размером 2 x 2
/DeviceCMYK setcolorspace
% --- Yellow Circle ---
0 0 1 0 setcolor
3 Inch 7 Inch 1 Inch 0 360 arc
closepath
fill
Задание текущим цветовым пространством CMYK

Задание текущим жёлтого цвета в пространстве CMYK
Построение окружности с центром (3, 7) радиусом 1
Замыкание контура
Заливание контура (окружности) текущим цветом (жёлтым)
/DeviceGray setcolorspace
% --- Black Line ---
0 setcolor
0.2 Inch setlinewidth
1 Inch 9 Inch moveto
7 Inch 9 Inch lineto
stroke
showpage
Задание текущим цветовым пространством монохромного

Задание текущим чёрного в монохромном пространстве
Задание толщины линии 0.2 дюйма
Прочерчивание линии от (1, 9) до (7, 9) заданной толщины


Вывод страницы

Программа 1. Векторная графика.

Как видно из программы 1 при формировании изображения существует некий графический контекст, хранящий разнообразную информацию, описывающую графическое состояние. Графическое состояние хранит позицию пера, цветовое пространство, цвет, толщину линии, способ скругления концов линии, способ скругления стыковок линий, матрицу текущего координатного преобразования, контур клипирования изображения, формируемый контур и многое другое. Графическое состояние это ещё одно специфическое данное языка PostScript. PostScript позволяет организовывать вложенность графических состояний, что обеспечивает огромную гибкость при описании изображений. Вложенные графические состояния интерпретатор размещает на стеке графических состояний четвёртом стеке интерпретатора.

[В Начало]

Работа с Текстом и Шрифты

Отдельной большой подсистемой являются шрифты языка PostScript. Шрифт это специальная программа, выполняемая интерпретатором, и имеющая свои дополнительные операторы и элементы, хинты, не используемые в PostScript программах. Хинты служат для улучшения отрисовывания симоволов.

Сильной стороной языка является тесная интеграция графических и текстовых объектов, тотальность использования графических операторов к графическим и текстовым объектам. Интеграция графики и текста является трудной задачей, но PostScript является одним из наиболее успешных интеграторов текста и графики. Координатные преобразования, цветовые установки используются при работе с объектами обоих типов.

[Результат программы работы с текстом]

Рисунок 2. Результат программы работы с текстом.

Небольшая программа пишет текст Hello, PostScript! размером 1.5 дюйма гарнитурой Times-Roman по диагонали через всю страницу. Также как и в предыдущем примере строки, требующие разъяснений, прокомментированы.

% Печать Приветствия
/Inch { 72 mul } def
/Times-Roman findfont
1.5 Inch scalefont
setfont
2 Inch 1 Inch moveto
60 rotate
(Hello, PostScript!) show
showpage


Поиск шрифта Times-Roman в каталоге шрифтов
Установка размер шрифта 1.5 дюйма
Установка текущим шрифта Times-Romаn в 1.5 дюйма


Вывод текста в скобках текущим шрифтом

Программа 2. Работа с текстом.

В результате выполнения оператора findfont на стеке операндов остаётся словарь, содержащий всю информацию о шрифте Times-Roman. Символы шрифта имеют размер 1 пункт. Следующий оператор масштабирует шрифт до размера 1.5 дюйма. Оператор setfont делает этот шрифт текущим, записывая его в графическое состояние. Все операторы show выводят текст текущим шрифтом. Из программы 2 видно, что текстовые строки в PostScriptе пишутся в круглых скобках.

Шрифты различных гарнитур являются внешними объектами по отношению к интерпретатору. При использовании какого-либо шрифта, встречающегося в программе, интерпретатор считывает его из каталога шрифтов. Каталог шрифтов понятие, не специфицированное на уровне языка и зависящее от особенностей среды функционирования интерпретатора. У интерпретаторов принтеров, как правило, все шрифты хранятся в ПЗУ. Некоторые принтеры имеют встроенный дисковод для хранения на нём шрифтов. Это снимает количественные ограничения и делает PostScript принтер конфигурируемым, позволяя по мере необходимости добавлять новые шрифты и удалять ненужные. У программных интерпретаторов такая гибкость в манипулировании со шрифтами заложена изначально.

Стандартный набор шрифтов не специфицирован в языке. Но существует стандарт de facto множество из 35 шрифтов, существовавших у принтера LaserWriter, первого PostScript принтера. Обработка ситуации, когда требуемый программой шрифт отсутствует, каждым интерпретатором может решаться по-своему. Чаще всего подставляется какой-либо умолчательный шрифт из числа имеющихся. Чтоб избежать такого, многие PostScript генераторы могут инкапсулировать требуемые шрифты в текст PostScript программы, что полностью защищает программу от особенностей внешнего окружения, но существенно замедляет быстродействие и увеличивает её размер. Ещё более радикальным средством, но с потерей качества, является генерация текста как кривых, то есть с полным отключением шрифтовой подсистемы.

Подытожим всё, что мы говорили о тесной интеграции графики и шрифтов:

необходимо установить текущий шрифт в графическом состоянии, как и другие упоминавшиеся ранее графические атрибуты;
вывод текста начинается с установки текущей точки;
текст выводится в координатах пространства пользователя;
текст рисуется текущим цветом;
текст преобразуется, как и остальные графические объекты, при помощи МТП.

Языком поддерживается несколько форматов шрифтов, разработанных Adobe Systems. Формат Тип 3 это обыкновенная PostScript программа результатом выполения которой является шрифт в памяти интерпретатора. Этот формат имеет свои достоинства и недостатки. В нём могут использоваться все операторы языка для скрупулёзной отрисовки символов. Но нет возможности использовать хинты. Тип 1 имеет достоинства и недостатки противоположные Типу 3 возможность использования хинтов, но ограниченный набор графических операторов для отрисовки символов. У иерографических языков возникла проблема объёмов шрифтов. Способ, использовавшийся для формирования шрифтов буквенных алфавитов, оказался неприемлемым для восточных языков. Формат Тип 0 был разработан специально для разрешения этой проблемы. В формате Тип 0 каждый иероглиф описывается не явно, а как суперпозиция функий рисования более примитивных элементов лапок иероглифов. Примитивы формирования символов в Типе 0 опираются на операторы формата Тип 1.

Стандартом de facto стало использование многими PostScript интерпретаторами и других популярных форматов шрифтов: TrueType, Intellifont, Spido.

[В Начало]

Растровые Изображения

Третьей графической стороной языка является обработка растровых изображений. Растровое изображение это прямоугольный массив элементов изображения или имиджа, каждое из которых представляет определённый цвет. Каждый элемент в массиве может состоять из 1-й, 3-х или 4-х компонент в зависимости от цветности имиджа. Каждая компонента состоит из 1-, 2-, 4-, 8-, или 12-битного целого, обеспечивая представление 2, 4, 16, 256, или 4096 различных значений для каждой компоненты. Входная последовательность элементов может располагаться в самой Postscript программе.

Имидж можно вести из произвольного файла или даже нескольких, если имидж разделён по цветовым слоям. Многое из того, что говорилось о тесной интеграции графики и шрифтов, относится и к растровым изображениям.

% Растровое Изображение
/PictStr 768 strung def
50 150 moveto
132 132 scale
256 256 8
[256 0 0 -256 0 256]
{currentfile PictStr readhexstring pop}
false 3
colorimage


94a1bec8c0b371 a3a5c4d281 ...
... всего 393216 16-ричных цифр
растровых данных,
задающих 65636 пикселов ...

showpage


Определение строки для чтения 256-ти RGB пикселов
Позиция начала рисования растра
Масштабирование растра
Размерность растра и число бит на компоненту
Матрица координатного преобразования растра
Функция читает по 768 байт из текущего файла в PistStr
Признак одного источника, число цветов
Оператор растрового изображения, использует операнды из предыдущих 5 строк

Поток растровых данных, заданный в этом же файле

Программа 3. Растровое изображение.

Выше приведенный фрагмент программы демонстрирует способ использования растровых изображений в PostScript программах. Изображение на листе масштабируется средствами языка. Чтение растровых данных можно вести как из текущего файла, так из любого другого. Чтение из файла осуществляется PostScriptовской процедурой, что позволяет программировать различные способы чтения. Для работы c растрами PostScript имеет два оператора: image и colorimage.

[В Начало]

Координатная Система PostScriptа

Описание изображения на языке PostScript идёт в абстрактной декартовой системе координат. Эта координатная система называется пользовательским пространством (ПП) или пользовательской координатной системой. Концептуально ПП можно считать бесконечной плоскостью, по которой можно перемещаться с любой необходимой точностью. Координаты в пользовательском пространстве задаются в вещественных числах. Позиционирование в ПП не связывается ни с какой растровой сеткой. ПП можно представить себе как левую часть на рисунке 3. Теоретически изображение может иметь произвольные координаты безо всяких ограничений.

Как правило, начало системы координат ПП совмещают с левым нижним углом страницы. Стандартной единицей измерения в PostScriptе является пункт, равный 1/72 дюйма. Пункт это стандартная единица измерения в полиграфии и издательской деятельности, хотя общепризнанного стандартного размера пункта не существует размеры пункта варьируются от страны к стране. На левой части рисунка 3 приводятся размеры страницы формата A4, заданные в пунктах.

[Координатная Система PostScript]

Рисунок 3. Координатная система языка PostScript.

Рисование изображения ведётся в пространстве устройства (ПУ). Только часть бесконечной плоскости ПП соответствует изображаемой части ПУ ПУ, в отличие от ПП, имеет физические размеры, определяемые спецификой конкретных выходных устройств: форматами бумаги (A4, A3, Letter, Ledger, Tabloid), разрешающей способностью выходного устройства. Например, экран компьютера имеет разрешающую способность 93 т/дюйм, и позиционирование точки осуществляется с точностью до 0.77 пункта. Для лазерного принтера с разрешающей способностью 300 т/дюйм точка позиционируется с точностью до 0.24 пункта.

При рисовании в ПУ отображение координат из ПП в ПУ осуществляется через матрицу текущего преобразования (МТП), имеющую следующий вид:

[Матрица Текущего Преобразования]

где a, b, c и d являются коэффициентами, задающими параметры поворота и масштабирования, а Tx и Ty параметры сдвига. Преобразование точки (Xпольз, Yпольз) из ПП в точку (Xустр, Yустр) ПУ осуществляется умножением двух матриц.

(Xустр, Yустр, 1) = [Матрица Текущего Преобразования] * (Xпольз, Yпольз, 1)

Умножив матрицы, мы получаем пару уравнений для пересчёта координат из ПП в ПУ.

Xустр = a * Xпольз + b * Yпольз + Tx

Yустр = c * Xпольз + d * Yпольз + Ty

МТП является матрицей из девяти элементов (три на три) с константными значениями третьего столбца; к (x, y) парам добавлены единицы, необходимые для того, чтобы "работали" правила матричного умножения. Для экономии памяти МТП в PostScripte задаётся шестиэлементным вектором без третьего столбца.

[Матрица Текущего Преобразования Сокращенная]

Приведенное выше равенство можно записать более компактно и выразительно

(Xустр, Yустр, 1) = МТП * (Xпольз, Yпольз, 1)

Координатные преобразования языка PostScript в большинстве случаев сводятся к трём следующим операторам, используемым в любой суперпозиции. Каждое из трёх преобразований определяет свою матрицу преобразования, умножаемую слева на МТП. Полученная в результате умножения матрица является новой МТП.

Tx Ty translate Tx и Ty определяют величину сдвига по x и y направлениям соответственно. Сдвиг является самым простым из координатных преобразований это перемещение начала системы координат. (1,0,0,1,Tx,Ty) умножается на МТП.
Sx Sy scale Масштабирование, позволяющее задавать сжатие или растяжение по каждому направлению. (Sx,0,0,Sy,0,0) умножается на МТП.
A rotate Поворот. Угол поворота A задается в градусах, отсчёт против часовой стрелки. (cosA,sinA,-sinA,cosA,0,0) умножается на МТП.

Последовательное выполнение трех вышеприведенных операторов в вышеприведенном порядке аналогично умножению матрицы на МТП.

Операторы сдвига, масштабирования и поворота изменяют элементы МТП и являются удобной "пользовательско-ориентированной" формой более общих матричных операторов языка. При помощи матричных операторов можно задавать различные проекции, используемые при визуализации трёхмерных объектов на плоскости. Широкоизвестным примером таких проекций является изометрическая проекция, которая является частным случаем аксонометрических проекций, называемых еще параллельными проекциями. Заданием соответствующей матрицы преобразования можно строить изображения в диметрической или триметрической проекции. Но это уже выходит за рамки данной статьи.

МТП, задающая отображение из ПП в ПУ при начале работы PostScript программы, называется умолчательной матрицей преобразования (УМП). Например, УМП принтера Apple LaserWriter, первого PostScript принтера, имеет следующие значения:

[МТП принтера LaserWriter]

Зная смысл коэффициентов МТП, теперь нетрудно вычислить разрешающую способность принтера и формат бумаги. 4.16667 * 72 = 300 т/дюйм. Начало координат принтера LaserWriter находится в середине ПУ. Несложными вычислениями получаем 1650,5 * 2 / 300 = 11 дюймов и 1280 * 2 / 300 = 8.5 дюймов. Это размеры формата Letter.

[В Начало]

Цветовые Пространства PostScripta

PostScript обладает развитыми возможностями задания цвета формируемых изображений, которые можно разделить на две части:

Цветовые спецификации.
PostScript программа может специфицировать цвет независимо от цветовых возможностей выходного устройства. Цвет задаётся в различных цветовых системах или цветовых пространствах.
Цветовые приближения.
Воспроизведение цвета на конкретном выходном устройстве является многоступенчатым процессом, включающим в себя цветовые конверсии, гамма коррекцию, задание линеатуры, углов и формы офсета. Некоторые шаги этого процесса управляются на уровне языка PostScript, но возможности цветового приближения являются устройство зависимыми, и не должны учитываться при формировании изображения.

Для задания цвета язык PostScript вобрал в себя несколько цветовых моделей из полиграфии, телевидения и науки. Все цветовые пространства языка PostScript можно разложить на три взаимосвязанные категории (Рисунок 4):

Цветовые пространства устройств.
Позволяют непосредственно описывать цвета в терминах выходных устройств. Такими цветовыми пространствами являются: монохромное, RGB, HSB, CMYK.
CIE (Commision Internationale de l'Йclairage)
определяет международный стандарт спецификации цвета. Цвета, заданные в цветовых пространствах CIE, не зависят от характеристик каждого конкретного выходного устройства.
Специальные цветовые пространства
добавляют специальную семантику к другим цветовым простанствам. Они позволяют задавать цвета шаблонами, индексированно (палитровое пространство), сепарациями.

postscript_colorspace.gif (12310 bytes)

Рисунок 4. Связь цветовых пространств.

Во всех цветовых пространствах цветовые значения задаются вещественными значениями. Приближение к конкретной цветовой глубине выходного устройства осуществляется на этапе рисования или интерпретации изображения для конкретного выходного устройства. Сам же язык PostScript никак не ограничивает цветовую глубину изображения.

Цветовые пространства устройств являются наиболее известными. Цветовые значения в этих пространствах самым прямым образом связаны с представлением цветов выходным устройством. Цветовые значения в этих пространствах отображаются прямо или с очень простым конвертированием в цвета устройства, такие как чернила или интенсивности экранного люминофора.

Самым простым из пространств устройств является монохромное (серое) однокомпонентное пространство, предназначенное для устройств, цветовая палитра которого ограничена чёрным, белым и градациями серого цвета. В языке PostScript чёрному соответствует значение 0, белому 1, с промежуточными значениями серого между ними.

Перед тем как перейти к следующим двум пространствам, рассмотрим различие между аддитивной и субтрактивной моделями цвета. Модель, когда различные цвета смешиваются или складываются для создания нового цвета называется аддитивным смешением цветов. Модель, при которой свет вычитается или абсорбируется, называется субтрактивным смешением цветов.

Мы имеем дело с аддитивной схемой, когда наш глаз видит свет, излучаемый каким-либо источником, а не отражённый от какой-либо поверхности. В аддитивной схеме первичными цветами являются красный, синий и зелёный. Первичные цвета это цвета, при помощи которых формируются все остальные цвета. Красный, синий и зелёный люминофоры компьютерного монитора позволяют нам видеть огромный диапазон цветов (но не все видимые цвета). Для формирования нужного цвета свет добавляется из каждого из трёх источников в различных количествах. Поэтому эта схема называется аддитивной. Когда все первичные цвета складываются вместе, результатом является белый цвет.

Субтрактивная схема появляется, когда глаз видит свет, отражённый от объекта. Одни световые волны объект поглащает, другие отражает. Цвет, который мы видим в этом случае, это цвет отражённых световых волн. Первичными цветами для субтрактивного смешения цветов являются голубой, пурпурный и жёлтый, каждый из которых является комбинацией первичных цветов в аддитивной схеме. Голубой цвет в аддитивной схеме образуемся смешением синего и зелёного цветов, то есть голубой цвет отражает синий и зелёный цвета и абсорбирует красный. Таким образом мы видим смесь синего и зелёного голубой. Этот процесс и называется субтрактивным смешением цветов. Хоть эта модель изначально использовалась для печати или рисования, сейчас она не ограничивается только этими сферами.

Вторым известным пространством устройств является пространство RGB трёхкомпонентное пространство опирающееся непосредственно на физические возможности экранов. Каждый из первичных цветов RGB пространства принимает значения от 0 до 1. 0 отсутствие цвета, 1 максимальная интенсивность. Визуальным выражением КСЗ пространства является "цветовой куб."

Ещё одной удобной формой представления цвета является HSB пространство. Модель представления цвета HSB является так называемой "субьективной" цветовой моделью. Субьективность модели заключается в более естественном для человека способе задания цветов. Изменяя компоненту цвета в модели HSB от 0 до 1 мы проходим по всем цветам радуги. Изменением яркостной комноненты от 0 до 1 цвет меняется от чёрного до максимально яркого. Комнонента насыщенности задаёт задаёт "сочность" или чистоту цвета. При нулевой насыщенности цвет становится серым. Визуальным выражением HSB пространства является "цветовой конус."

HSB не является истинным цветовым пространством. Это способ задания цветовых значений RGB в другой координатной системе, что и видно на рисунке 4 заданные HSB значения конвертируются в RGB значения.

Конвертирование пространств устройств осуществляется по следующим формулам:

RGB >> Монохромное Мн = 0.3 * R + 0.59 * G + 0.11 * B
Монохромное >> RGB R = Мн
G = Мн
B = Мн
CMYK >> Монохромное Мн = 1.0 - min (1.0, 0.3 * C + 0.59 * M + 0.11 * Y + B)
Монохромное >> CMYK C = 0
M = 0
Y = 0
B = 1.0 - Мн
RGB >> CMYK c' = 1.0 - R
m' = 1.0 - G
y' = 1.0 - B
k' = min (c', m', y')
C = min (1.0, max (0.0, c' - УЦ(k')))
M = min (1.0, max (0.0, m' - УЦ(k')))
Y = min (1.0, max (0.0, y' - УЦ(k')))
K = min (1.0, max(0.0, ГЧ(k')))
CMYK >> RGB R = 1.0 - min (1.0, C + K)
G = 1.0 - min (1.0, M + K)
B= 1.0 - min (1.0, Y + K)

При конвертировании RGB в CMYK используются две PostScript функции: ГЧ генерация чёрного, задающая количество черного при воспроизводстве конкретного цвета, и УЦ удаление цвета, сокращающая количество голубой, пурпурной и жёлтой компонент, чтобы скомпенсировать добавляемой функцией ГЧ количество чёрного. Использование этих двух функций позволяет тонко управлять этой конверсией. При отсутствии этих функций конвертирование ограничивается первыми четырьмя формулами.

В языке PostScript Уровень 2 введена CIE спецификация цвета, утверждённая международной комиссией в 1931 году с появлением телевидения. В отличие от моделей цвета, связанных с конкретными возможностями устройств, таких как мониторы или печатное оборудование, в основе CIE лежит схема восприятия цвета человеком. Детальная семантика и теория, на которую опирается CIE, выходит за рамки этой статьи. Упомянем только, что вариантами CIE являются такие широко известные телевизионные стандарты как NTSC, PAL и SECAM. Язык PostScript имеет в своей реализации два CIE пространства: ABC цветное трёхкомпонентное пространство и A монохромное однокомпонентное пространство. Конвертирование цвета заданного в пространстве CIE ABC или A в пространство текущего выходного устройства осуществляется в два этапа: конвертирование в XYZ пространство, одно из вариантов CIA, а затем через словарь цветового приближения в конкретное пространство устройства (Рисунок 4). Значения, заданные в словаре цветового приближения, заполняются при цветовой калибровке выходного устройства. Для каждого выходного устройства должен существовать свой словарь цветового приближения. Этим обеспечивается согласованность передачи цвета между различными выходными устройствами.

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

Сепарированное пространство необходимо для полиграфического процесса: сепарированные цвета печатаются на отдельных листах сепарациях, из которых готовятся печатные формы. В процессе типографской печати все сепарации накладываются друг на друга, формируя полноцветное изображение. Помимо традиционной четырёхцветной сепарации по голубому, фиолетовому, жёлтому и чёрному цветам, PostScript позволяет задавать сепарации по любому цвету с произвольным числом сепараций. Сепарации могут опираться на любое из пространств устройств и CIE пространство. PostScript позволяет задать произвольную сепарацию, описав процедурой на PostScriptе цвет данной сепарации из первичных цветов базового пространства.

Индексное пространство предназначено для работы с изображением, имеющим ограниченный набор цветов, которые при помощи цветовой таблицы отображаются в значения пространства устройства или CIE пространства. Данное пространство предназначено для работы с растровыми изображениями, в котрых индексированное представление является часто используемым. Такие растровые изображения называют традиционно изображениями с палитрой. Палитра это ничто иное как цветовая таблица индексированного пространства. Цветовая таблица индексированного пространства может определяться как таблично, так и в виде функции, вычисляющей цветовое значение в базовом пространстве.

Самым "абстрактым" из специальных пространств является шаблонное пространство, позволяющее определить в качестве цвета не сепарацию, не индекс, а произвольный PostScript фрагмент, который и будет использоваться как цвет для рисования графических элементов. Этот PostScript рисунок, котрый будет использоваться для зарисовки площади повторением, называется шаблон.

"Рисование шаблоном" означает тиражирование графической фигуры (называемой ячейкой шаблона) с фиксированным шагом по X и по Y на зарисовываемой площади. Рисование шаблоном может быть проэмулировано интерпретатром PostScriptа Уровня 1, но с огромным проигрышом по времени. Шаблоны используются для создания разнообразных графических регулярных текстур, таких как волны, кирпичные стены, аналогичные геометрические рисунки.

[В Начало]

Соглашение о Структуре PostScript Программы

Как говорилось выше, PostScript не специфицирует никакой структуры программы. Любая последовательность операторов, удовлетворяющая синтаксису и семантике языка, является допустимой PostScript программой. Для большой программы, описывающей сложное многостраничный документ, часто необходимо выделить её структуру.

Для структурирования программы используются комментарии языка специального вида: строки начинающиеся с двух % с первой позиции. За этими символами идёт како-либо ключевое слово. Структура и набор этих специальных комментирующих строк описаны в стандарте DSC (Document Structure Convention). Использование DSC позволяет структурно обрабатывать PostScript документы менеджерам документов, не опускаясь до уровня PostScriptа. Менеджер документов может компоновать PostScript документ из нескольких входных, получая итоговый для окончательной печати. Программы на PostScripte, созданные с соблюдением DSC соглашений могут обрабатываться более оптимальным образом в интегрированных средах печати. Ниже приводятся в качестве примера несколько DSC комментариев:

%%BoundingBox: 0 0 612 792
%%Pages: 45
%%BeginSetup

Описание страницы может быть огранизовано как пролог и сценарий. Пролог обычно написан программистом и содержит набор стандартных процедур, используемых для описания страницы. Сценарий генерируется автоматически прикладной программой с использованием процедур пролога. Язык PostScrip по своей сути является устройство-независимым. Однако некоторые операторы языка существенно используют физические характеристики устройств. Использование этих операторов в документе делает его устройство зависимым, что противоречит идее мобильности. DSC комментарии создавались для одновременного использования с PPD (PostScript Printer Definition) файлами, которые содержат языковые расширения для специфических особенностей принтеров. Для каждой модели PostScript принтера существует свой единственный PPD файл. PPD файл это текстовый файл, который можно редактировать любым текстовым редактором. На рисунке 5 показано как менеджер документов из исходного PostScript документа, содержащего DSC комментарии, и PPD файла для данного принтера формирует модифицированный PostScrip документ, являющийся уже устройство-зависимыми и содержащим языковые фрагменты для данного принтера.

Рисунок 5. Совместное использование DSC PostScript и PPD файлов.

При печати из Windows на PostScript принтер документ является уже устройство-зависимым, сформированным с учётом особенностей данного принтера. Вместо PPD файлов в Windows используются WPD файлы, по сути те же самые PPD, но в двоичном виде.

[В Начало]

Инкапсулированный PostScript

Другим надязыковым стандартом является EPS (Encapsulated PostScript) формат стандарт для импорта и экспорта PostScript изображений между приложениями в гетеорогенных системах. EPS формат опирается на DSC соглашения c некоторыми ограничениями.

Инкапсулированный PostScript файл это программа на языке PostScript, описывающая изображение одной страницы. Задачей EPS файла является быть включённым, "инкапсулированным" в другой PostScript документ. EPS файл может содержать любую комбинацию текста, графики, растровых образов. EPS файл является обычным PostScript описанием страницы только с некоторыми ограничениями. На рисунке 6 показывается как EPS файл может включаться в другой PostScript документ.

[Документ с EPS Иллюстрацией]

Рисунок 6. Документ с импортированным EPS файлом.

Имеется ряд программных требований к EPS файлу, для того чтоб он импортировался в произвольный PostScript документ безо всяких граничных эффектов. Соответствующие требования существуют и к импортирующему PostScript приложению. Приложение должно из DSC дирректив вычитать габаритную рамку EPS изображения, для того чтоб правильно разместить изображение на своей странице или при необходимости масштабирования правильно вычислить коэффициенты масштабирования.

EPS файлы являются окончательной формой презентации и не могут редактироваться при импорте в документ. Однако над ним можно выполнить некторые глобальные манипуляции, не меняющие его содержимого: сдвиг, поворот, масшабирование и клипирование.

Устройство-независимая природа языка позволяет использовать его в качестве обменного формата. Однако при экранной диалоговой работе для визуализации содержимого EPS файла требуется наличие PostScript интерпретатора, что не всегда возможно. Для этого в EPS файл может содержать необязательное экранное изображение для предварительного просмотра. Формат этого изображения отличается от системы к системе. Чаще всего это TIFF или Macintosh PICT файл. Многие приложения (CorelDRAW, PhotoStyler, PhotoShop) при экспорте в PostScript требуют задания резолюции. Это не что иное, как резолюция TIFF изображения. В Microsoft Windows приложениях часто используется WMF файл. Если EPS файл не содержит предварительного изображения, импортирующее приложение обязано изобразить EPS файл как прямоугольник, обозначивающий границы EPS файла. Пользователь может использовать прямоугольник для позиционизования и масштабирования EPS файла на странице импортирующего документа.

Имеется ряд PostScrip операторов, запрещённых к использованию в EPS файлах. Это операторы, очищающие стеки, страницу, инициализирующие графическое состояние, то есть все операторы, разрушающие контекст выполнения импортирующей PostScript программы. EPS программа после себя должна оставить стеки операторов и словарей в таком же состоянии, как до своего выполнения.

Так как EPS является обменным форматом не только между приложениями, но и между различными операционными средами и аппаратными платформами имеется ряд требований и формату файла:

файл должен быть 7-битным ASCII;
строки не должны превышать 255 символов;
строки должны заканчиваться комбинациями <ВК>, <ПС>, <ВК><ПС> или <ПС><ВК>.

[В Начало]

Display PostScript

Возникнув как язык принтеров, PostScript сейчас интенсивно развивается в ранее не предполагавшиеся области применений: графические экранные интерактивные приложения, гипертекстовые системы.

Первым использованием PostScriptа для управления дисплеем была операционная система NeXT Step, разработанная фирмой NeXT Incorporated кооперированно с Adobe Systems. Версия PostScriptа для управления дисплеем получила название Display PostScript. Эта версия языка была расширена множественными контекстами выполнения, повышением производительности, разделяемой памятью, операторами определения зон прикосновения. Позже Display PostScript был принят как стандарт для интерактивной работы фирмой Silicon Graphics. Фирма Sun Microsystems имела свой аналогичный PostScriptoобразный стандарт NeWS, от которого потом она отказалась и заявила о поддержке стандарта Display PostScript для своих компьютеров.

Системы, поддерживающие Display PostScript не ограничиваются только интерпретатором. Вся среда состоит из:

PostScript интерпретатора;
Библиотека Клиента, программный интерфейс на языке C, обеспечивающий доступ в базовым возможностям системы Display PostScript для программирования пользовательских прриложений;
pswrap, препроцессор, обеспечивающий доступ к произвольным PostScript программам из программ на языке C;
Библиотека процедур оконной системы;
Операционная система, исполняемая библиотека, библиотеки верхнего уровня.

Описание всех компонент и среды функционирования Display PostScript выходит за рамки этой статьи. Ниже приведены расширения языка для Display Postscripta:

Множественные контексты выполнения. Display PostScript система может обеспечивать одновременное выполнение множества независимых PostScript программ. Каждый контекст представляет собой незавимый интерпретатор со своими стеками, памятью, графическим состоянием и различными переменными.
Кодирование пользовательских имён. Библиотека Клиента динамически кодирует произвольные имена пользователя целыми числами вместо текстовых строк, что существенно улучшает производительность.
Поддержка оконных систем. Эти средства включают в себя учёт экранных особенностей каждой конкретной системы.
Координация растровых шрифтов. Display PostScript системы обеспечивают поддержку для ручной подстройки растровых шрифтов под разрешающую возможность экрана, что существенно улучшает качество экранных шрифтов.

[В Начало]

Формат Мобильных Документов

Отдельным направлением в развитии языка PostScript является его разворот в сторону интенсивно развивающихся сейчас диалоговых гипертекстовых систем. Здесь пришлось отступить от многих характерных черт языка, но с развитием апектов, отсутствовавших у PostScriptа ранее. Результатом явился новый формат представления документов – PDF (Portable Document Format). Целью разработки этого стандарта является обеспенить пользователям простоту и надёжность обмена и просмотра электронных документов независимо от создающих их приложений. PDF опирается на координатную и цветовую устройство-независимую модель языка PostScript для описания текстов и графики. Но для эффективности диалоговой работы PDF имеет более структурный формат, чем большинство PostScript программ. PDF содержит такие объекты, как аннотации и гипертекстовые связи. Текст, графика и растровые изображения, формирующие содержание страницы, представляются операторами языка PostScript.

PDF файл не является PostScript программой и не может быть прямо проинтерпретирован PostScript интерпретатором. Однако страницы из PDF файла могут быть сконвертированы в программу на PostScripte. PostScript программу также можно сконвертировать в PDF формат.

Удовлетворяя целям мобильности и созданный именной с этой целью PDF характеризуется следующими чертами:

PDF – это не язык программирования и не содержит процедур, переменных, управляющих конструкций. PDF это формат ограниченной гибкости, но повышенной эффективности. Операторы PDF реализуют формирование изображения безо всяких аналитических вычислений, что приводит к более быстрой работе.
PDF файл это всегда, в отличие от PostScriptа, 7-битный ASCII файл.
Для сокрашения размеров файла PDF поодерживает следующие промышленные стандарты сжатия информации: JPEG, CCITT, RLE и LZW. Все эти методы сжатия поддерживаются языком PostScript Уровня 2. JPEG позволяет сжимать цветные и монохромные растровые изображения до 10 раз. LZW компрессия позволяет сжимать тектс и графику до 2-х раз. Результатом этих сжатий являются двоичные данные, которые потом кодируются стандартом ASCII85 в 7-битное представление.
Одним из уязвимых мест PostScriptа являлась идеология внешних шрифтов. Приложение печатающее PostScript документ должно иметь те же шрифты, что и приложение, формирующие PostScript. В противном случает осуществляется подстановка умолчательного шрифта, порой приводящая к непредсказуемым последствиям. Во избежание этого многие создающие приложения включали шрифт во внутрь PostScript документа. Но это резко увеличивало объёмы документов. Обычное 2-х страничное письмо увеличивалось в размерах с 10К до 250К. Другое решение использовалось в PDF. PDF файл содержит дескриптор шрифта, описавающий имя, метрики и описание стиля шрифта. Эта информация занимает 1-2К. Если шрифт, используемый в документе, отсутствует на компьютере, где документ просматривается, из шрифта в формате multiple master генерируется шрифт, удовлетворяющий дескриптору. Формат multiple master это формат параметризованного шрифта из которого заданием нужных параметров можно создавать шрифты требуемых стилей.
PDF файл содержит таблицу перекрёстных ссылок, используемую для призвольного доступа к страницам и объектам. Использование этой таблицы делает время доступа независимым от объёма документа, что немаловажно при диалоговой работе.
Реальные PDF доменты содержат сотни страниц. PDF стандарт поддерживает инкрементальное редактирование с добавлениями нового без перезаписывания старого содержимого. Так как предыдущее содержимое хранится в файле, PDF обеспечивает возможность отката с удалением добавлений.
PDF формат является расширяемым и версионируемым, что позволяет приложениям быть совместимыми снизу вверх. Сейчас идёт разработка следующей версии PDF формата с поддержкой аудио и видео данных.

[Структура PDF документа]

Рисунок 7. Компоненты PDF документа.

Структурно PDF документ состоит их четырёх составных частей. Объекты с некоторыми исключениями соответствуют типам данных в языке PostScript. Структура файла определяет как объекты хранятся в файле, какой к ним доступ, как они редактируются. Структура документа описывает как базовые объекты используются для для представления страниц, аннотаций, гипертекстовых связей и шрифтов. Четвёртая компонента опиасние страниц на почти PostScripte с выше упомянутыми отличиями.

[В Начало]

Что дальше

Возникнув как язык описания изображений для печати, PostScript давно перешагнул эту границу, шагая всё дальше и дальше. Язык описания шрифтов (Type 1). Язык экранного интерфейса (DPS). Язык профессиональных издательских систем (DSC и EPS). Язык гипертекстовых электронных документов (PDF). Язык обмена картографической информацией (ER Mapper PostScript). Впереди мультимедиа системы с аудио и видео изображениями.

Ниша PostScriptа в компьютерной индустрии огромна и становится всё больше и больше. Приведём только несколько достаточно убедительных примеров.

В издательской индустрии PostScript является стандартом для тайпсетторов и профессиональных принтеров таких известных фирм как Linotype-Hell, AGFA, Varityper, Cannon, Xerox, Siemens, CalComp.

Display PostScript поддерживается в операционных системах NeXT Step фирмы NeXT Inc., Solaris 2.3 фирмы SunSoft, дочерней фирмы Sun Microsystems, на компьютерах фирмы Silicon Graphics.

PDF используется в качестве единого формата хранения и обмена документов в США в Департаменте Коммерции, Национальном Институте Стандартов и Технологии, Администрации Президента Клинтона, финансовой компании J.P. Morgan & Co.

Есть ли у языка конкуренты? Такая попытка была предпринята фирмой Microsoft пять лет назад разработкой альтернативного языка описания изображений True Image. Главой фирмы, Билом Гейтсом, попытка признана неуспешной, и в дальнейшем делается ставка на поддержку в Windows средах языка PostScript. Удачным и очень живым воспоминанием о языке True Image остался формат описания шрифтов TrueType.

PostScript конечно же не универсален, но там, где он используется, он хорошо справляется с поставленными перед ним задачами.

[В Начало]

Рекомендуемое Чтение

Warnock, John and Wyatt, Douglass. "Device Independent Graphics Imaging Model for Use with Raster Devices," Computer Graphics. Volume 16, Number 3, July 1982, pp. 313-320. Статья написана создателями языка PostScript. До появления языка ещё 3 года, но основные графические концепции, лежащие в его основе, уже описаны в этой статье.

Adobe Systems, Inc. PostScript Language. Tutorial and Cookbook. Addison-Wesley Publishing Co. MA 1986. Синяя книга, названная так по цвету своей обложки и именно так и упоминаемая в PostScript разговорах. Первая 100 страничная часть книги, написанная методически просто великолепно, позволяет быстро ознакомится со всеми аспектами языка. Вторая часть это набор программ на PostScriptе с очень подробными комментариями. Книга описывает Уровень 1. Выдержала более 20 переизданий.

Adobe Systems, Inc. PostScript Language Reference Manual. Second Edition. Addison-Wesley Publishing Co. MA 1990. Красная Книга. Является единственной книгой, подробно специфицирующей язык PostScript Уровень 2. Книга подробно описывает концепции, лежащие в основе языка и интерпретатора. Кроме того, здесь имеются спецификации форматов DSC 3.0 (Document Structure Convention) и EPS (Encapsulated PostScript).

Adobe Systems, Inc. PostScript Language Program Design. Addison-Wesley Publishing Co. MA 1988. Зелёная Книга, полезная для разработчиков PostScript программ или PostScript генераторов. Имеет смысл прочесть при создании для своего приложения функций экспорта в язык PostScript. Обсуждаются вопросы эффективности сгенерированных PostScript программ. Книга описывает Уровень 1.

Apple Computer. Apple LaserWriter Manual. Addison-Wesley Publishing Co. MA 1988. Книга описывает собственно первый из PostScript принтеров. Полезно прочитать, как язык PostScrip расширяется операторами, специфическими для конкретного выходного устройства, и как конфигурируется принтер, используя язык PostScript.

[В Начало]

Ноябрь 1994 года,
Сергей Лизенко

В начало | Содержание | Что Нового | Продукты | Услуги | Цены | Отзыв | О нас | Наши Координаты

Дата последней модификации - 02.04.99 17:46
Copyright © 1998 Интеллиджент Системз

Письмо WEB-Администратору
Мы учтём ваши вопросы, пожелания и замечания