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

Содержание

Слайд 2

Язык PostScript был изобретён на фирме Adobe в 1985 году. ПРОБЛЕМА:

Язык PostScript был изобретён на фирме Adobe в 1985 году.
ПРОБЛЕМА: отсутствие

механизма автоматической настройки высококачественного вывода на разнообразные устройства (мониторы, принтеры).

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

Слайд 3

Страница описывается с помощью математических формул и объектов, что даёт абсолютную

Страница описывается с помощью математических формул и объектов, что даёт абсолютную

переносимость описания страницы между платформами (аппаратное обеспечение, hardware) и операционными системами (программное обеспечение, software).
Язык PostScript оперирует с графическими объектами, к которым относится и текст.

1.1 Основные концепции языка PostScript

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

Слайд 4

Как правило, программы на PostScript генерируются приложениями, например текстовыми процессорами или

Как правило, программы на PostScript генерируются приложениями, например текстовыми процессорами или

программами для настольных издательских систем.

Язык PostScript является издательским и типографским стандартом. Интерпретаторы языка PostScript встраиваются в большинство бытовых печатных систем. Наличие интерпретатора PostScript в издательской технике является обязательным.

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

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

Слайд 5

Интерпретаторы PostScript, работающие на обычном компьютере, позволяют: - посмотреть на экране

Интерпретаторы PostScript, работающие на обычном компьютере, позволяют:
- посмотреть на экране

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

Исходный текст программы набирается в Блокноте.
Просмотр страниц выполняется в приложении GSView, которое взаимодействует с интерпретатором.

Слайд 6

Язык PostScript использует постфиксную нотацию (обратная польская запись) для записи математических

Язык PostScript использует постфиксную нотацию (обратная польская запись) для записи математических

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

1.2 Общие положения языка PostScript

Слайд 7

Текущая страница - "идеальная" страница в памяти, на которой рисует PostScript.

Текущая страница - "идеальная" страница в памяти, на которой рисует PostScript.

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

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

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

Слайд 8

1.3 Структура программы на языке PostScript Пролог общие описания, необязательная часть

1.3 Структура программы на языке PostScript

Пролог общие описания, необязательная часть
ОПЕРАТОРЫ
Эпилог заключительные

описания, необязательная часть

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

В PostScript есть порядка 250 стандартных слов, которые можно назвать командами, действиями, операторами, функциями или процедурами языка.

Слайд 9

Стек - специально организованная часть памяти, последовательность ячеек. Данные, помещаемые в

Стек - специально организованная часть памяти, последовательность ячеек. Данные, помещаемые в

стек, извлекаются из него в обратном порядке, т. е. последнее записанное туда число удаляется первым. Такая дисциплина обслуживания называется LIFO (Last In First Out).
PostScript резервирует стек для обрабатываемых данных. Данные размещаются в стеке, извлекаются из стека для обработки, результат записывается в стек.

Основание стека

Вершина стека

Текущее состояние стека:

Состояние стека после выполнения команды «сложить»:

Состояние стека после выполнения команды «вычесть»:

1.4 Стеки

Слайд 10

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

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


Стек операндов - содержит собственно объекты PostScript и результаты действий над ними. Операторы PostScript получают операнды только через стек.

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

Слайд 11

Словарь (dictionary) - это таблица, которая связывает между собой пары объектов.

Словарь (dictionary) - это таблица, которая связывает между собой пары объектов.

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

1.5 Обратная польская запись Форма записи математических выражений, в которой операнды

1.5 Обратная польская запись

Форма записи математических выражений, в которой операнды расположены

перед знаками операций.

Обычная инфиксная запись: 5 + 3
Обратная польская запись: 5 3 +

Такая форма записи удобна при работе со стеком.

Слайд 13

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

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

Слайд 14

1.6 Единицы измерения в PostScript Перевод из миллиметров в пункты Единица

1.6 Единицы измерения в PostScript

Перевод из миллиметров в пункты

Единица измерения длины

- пункт (point), обозначается пт (pt).
В среде GSView координаты курсора можно увидеть по меню:
Правка – Измерения – Правка.
В одном стандартном дюйме (inch) помещается 72 пункта (pt).

Угловая мера - градус (полная окружность = 360 градусов). Положительное направление отсчета углов - против часовой стрелки.

При создании образа страницы удобнее пользоваться метрическими единицами длины: сантиметр, миллиметр.

мм -> дюйм -> пункт
мм / 25.4 * 72
мм 25.4 / 72 *

Слайд 15

1.7 Арифметические операторы В PostScript вместо обычных знаков математических операций используются

1.7 Арифметические операторы

В PostScript вместо обычных знаков математических операций используются специальные

слова, обозначающие эти математические операции:
Слайд 16

Программа перевода из миллиметров в пункты мм 25.4 / 72 *

Программа перевода из миллиметров в пункты

мм 25.4 / 72 *

мм 25.4

div 72 mul

Например, 100 25.4 div 72 mul
-35 25.4 div 72 mul

общие действия

Слайд 17

1.8 Действия над стеком

1.8 Действия над стеком

Слайд 18

Упражнения Треугольник Написать программу на языке PostScript, которая по заданным значениям

Упражнения

Треугольник
Написать программу на языке PostScript, которая по заданным значениям катетов a

и b вычисляет гипотенузу.

C2 = A2 + B2

Слайд 19

Вычисление гипотенузы по катетам % комментарий % a b исходное состояние

Вычисление гипотенузы по катетам
% комментарий
% 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 % результат в вершине стека
Слайд 20

Упражнения Дискриминант Написать программу на языке PostScript, которая по заданным значениям

Упражнения

Дискриминант
Написать программу на языке PostScript, которая по заданным значениям коэффициентов квадратного

уравнения ax2 + bx + c = 0 вычисляет дискриминант по формуле b2 – 4ac.
Слайд 21

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

Упражнения

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

Слайд 22

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

Упражнения

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

Слайд 23

Упражнение 1 Вычисление гипотенузы по катетам % это комментарий % a

Упражнение 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