Упражнение 1
Упражнение 2
320.00K

PostScript – язык описания страниц

1.

1 PostScript – язык описания страниц

2.

Язык PostScript был изобретён на фирме Adobe в 1985 году.
ПРОБЛЕМА: отсутствие механизма автоматической настройки
высококачественного вывода на разнообразные устройства
(мониторы, принтеры).
Текст и изображения выводятся на растровые внешние устройства.
Основное свойство таких устройств: изображение строится из массива
прямоугольных элементов, называемых пикселами. Каждый пиксел имеет в
этом массиве свой адрес и цвет. Устанавливая определенные пикселы в
нужные цвета, можно получить на экране текст и изображения.
У каждого растрового устройства пикселы имеют определенные
физические размеры. Число элементов изображения на единицу длины
называется разрешением растрового выводного устройства. В
зависимости от этой характеристики производится разделение на
устройства с низким, средним и высоким разрешением. Для лазерных
принтеров это соответственно до 300, 300-600 и более 600 dpi (точек на
дюйм). Для каждого типа устройств границы этих классов свои.
ЦЕЛЬ: достижение максимального уровня качества изображения для
каждого отдельного устройства.

3.

1.1 Основные концепции языка PostScript
Страница описывается с помощью математических формул и
объектов, что даёт абсолютную переносимость описания страницы
между платформами (аппаратное обеспечение, hardware) и
операционными системами (программное обеспечение, software).
Язык PostScript оперирует с графическими объектами, к которым
относится и текст.
Передача описания страницы более выгодна, чем передача сразу
всего массива составляющих страницу пикселов (изображения):
1. Описание во много раз компактнее даже сильно сжатого
изображения.
2. Процесс подготовки печатной страницы требует значительного
времени. Если пересылается описание, то подготовкой к печати
занимается процессор принтера или дисплейный процессор, что
освобождает центральный процессор для выполнения другой работы и
тем самым повышает его производительность.
3. Независимость описания от типа устройства.

4.

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

5.

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

6.

1.2 Общие положения языка PostScript
Язык PostScript использует постфиксную нотацию (обратная польская
запись) для записи математических выражений.
Язык PostScript подразумевает, что программа состоит из слов,
разделённых разделителями:
• пробел
• комментарии
• табуляция
• символ конца строки
• символ конца страницы.
Несколько последовательных разделителей обрабатываются как один.
Комментариями считается всё, начиная от знака % и до конца строки.
Язык PostScript не накладывает ограничений на длину строк или на
количество слов в строке.

7.

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

8.

1.3 Структура программы на языке PostScript
Пролог
общие описания, необязательная часть
ОПЕРАТОРЫ
Эпилог
заключительные описания, необязательная часть
Оператор в PostScript - это слово, заставляющее интерпретатор выполнять те
или иные действия. Он эквивалентен командам или процедурам в других
языках программирования. Когда интерпретатор встречает слово в PostScriptпрограмме, он просматривает свой внутренний словарь и пытается
определить, является ли это слово именем оператора. Если оно в словаре
найдено, то выполняются все связанные с ним действия, а затем производится
переход к следующему слову в исходном файле.
В PostScript есть порядка 250 стандартных слов, которые можно назвать
командами, действиями, операторами, функциями или процедурами языка.

9.

1.4 Стеки
Стек - специально организованная часть памяти, последовательность
ячеек. Данные, помещаемые в стек, извлекаются из него в обратном
порядке, т. е. последнее записанное туда число удаляется первым. Такая
дисциплина обслуживания называется LIFO (Last In First Out).
PostScript резервирует стек для обрабатываемых данных. Данные
размещаются в стеке, извлекаются из стека для обработки, результат
записывается в стек.
Вершина стека
Основание стека
Текущее состояние стека:
3
17
25
14
2
Состояние стека после выполнения команды «сложить»:
3
17
25
16
Состояние стека после выполнения команды «вычесть»:
3
17
9

10.

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

11.

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

12.

1.5 Обратная польская запись
Форма записи математических выражений, в которой операнды
расположены перед знаками операций.
Обычная инфиксная запись:
5+3
Обратная польская запись:
5 3 +
Такая форма записи удобна при работе со стеком.

13.

Примеры: файл ПОЛИЗ.rtf

14.

1.6 Единицы измерения в PostScript
Единица измерения длины - пункт (point), обозначается пт (pt).
В среде GSView координаты курсора можно увидеть по меню:
Правка – Измерения – Правка.
В одном стандартном дюйме (inch) помещается 72 пункта (pt).
Угловая мера - градус (полная окружность = 360 градусов).
Положительное направление отсчета углов - против часовой стрелки.
При создании образа страницы удобнее пользоваться
метрическими единицами длины: сантиметр, миллиметр.
Перевод из миллиметров в пункты
мм -> дюйм -> пункт
мм / 25.4 * 72
мм 25.4 / 72 *

15.

1.7 Арифметические операторы
В PostScript вместо обычных знаков математических операций используются
специальные слова, обозначающие эти математические операции:
+
add
-
sub
*
mul
/
div
Целая часть частного
idiv
Остаток от деления
mod
Смена знака
neg

16.

Программа перевода из миллиметров в пункты
мм 25.4 / 72 *
мм 25.4 div 72 mul
Например,
100 25.4
div
72
mul
-35 25.4
div
72
mul
общие действия

17.

1.8 Действия над стеком
Очистка всего стека операндов
clear
Удаление элемента из вершины стека
pop
Дублирование элемента в вершине стека
dup
Вращение элементов стека
roll
Дублирование N элементов в вершине стека
copy
Обмен значениями двух элементов в вершине стека
exch
Число элементов в стеке
count

18.

Упражнения
Треугольник
Написать программу на языке PostScript, которая по заданным
значениям катетов a и b вычисляет гипотенузу.
C2 = A2 + B2

19.

• Вычисление гипотенузы по катетам
dup
mul
exch
dup mul
add
sqrt
% комментарий
% a b
исходное состояние стека
% a b b
% a b*b
% b*b a
% b*b a*a
% b*b+a*a
% результат в вершине стека

20.

Упражнения
Дискриминант
Написать программу на языке PostScript, которая по заданным
значениям коэффициентов квадратного уравнения ax2 + bx + c = 0
вычисляет дискриминант по формуле b2 – 4ac.

21.

Упражнения
Формула
Написать арифметическое выражение, содержащее 4 переменные
и 4 арифметические операции.

22.

Упражнения
Формула
Написать программу вычисления значения арифметического
выражения.

23. Упражнение 1

• Вычисление гипотенузы по катетам
% это комментарий
% a b
исходное состояние стека
dup
% a b b
mul
% a b*b
exch
% b*b a
dup mul % b*b a*a
add
% b*b+a*a
sqrt
% желанный результат
• Очень важно, что такие действия, которые мы описываем сами,
можно превращать в слова, а их потом наряду со стандартными
словами используются для вычислений и для описания других слов.
• Например,
• /hypot{dup mul exch dup mul add sqrt}def

24. Упражнение 2

Вычисление дискриминанта по коэффициентам
% это комментарий
% a b с
исходное состояние стека
exch
% a с b
dup mul
% a с b*b
3 1 roll % b*b c a
4 mul mul
% b*b c*a*4
sub
% b*b-c*a*4
ответ
http://xmlhack.ru/aff/andy/ps/
English     Русский Правила