PostScript (Постскрипт) е език за описание на страници, който се използва основно в малките издателски системи.
Идеология Postscript е разработен от Джон Уорнок и Чак Гешке от Adobe Systems в началото на 80-те години. Отначало Postscript се използвал като ядро в печатния механизъм на компютрите Apple, но скоро станал широко разпространен стандарт за повечето компютърни системи. Интерпретатори на Postscript (във вид на софтуерни или хардуерни компоненти) за печат на документи присъстват на практика във всички съвременни компютърни системи.
В Postscript се използва моделът за изрисуване на текста (или рисунката) върху чиста страница. Страниците се разпечатват една след друга, или така нареченият метод на компилация. Всеки документ Postscript включва в себе си програма, която печата на принтера (или изкарва на екрана на монитора) една след друга страниците.
История Концепцията на езика PostScript е заложена през 1976 г. от Джон Уорнок, сътрудник на Evans and Sutherland Computer Corporation. Колегата му Джон Гафни, по това време интерпретатор на голяма база данни за тримерна графика на Нюйоркското пристанище, създал езика „Design System“ (приличащ много на езика за програмиране FORTH). По-късно Джон Уорнок се премества в изследователския център на Xerox в Пало Алто (Xerox P.A.R.C.) и заедно с Мартин Нювел създава на базата на Design System нова система JaM (John and Martin), използвана в изследването на печата и развита като InterPress, протокол за печатане на Xerox.
През 1982 г. Джон Уорнок се уволнява от Xerox и заедно с Чак Гешке (Chuck Geschke) основава Adobe Systems Inc. Отначало тяхната цел е създаването на специализирана работна станция за печат, която е трябвало да се казва PostScript, но те скоро разбрали, че е по-добре да концентрират усилията си върху разработката на средство за управление на принтери от различни производители.
През 1984 г. излиза на бял свят PostScript (по-късно към името било добавено Level 1, за да се различава от Level 2 – см. ретроним). Postscript имал огромни преимущества пред другите системи от това време: Платформена независимост. Един и същ файл можел да се печата както на лазерен принтер, с разделителна способност 300 dpi, така и на фотонаборно устройство с 2400 dpi с най-добро качество. Всеки производител можел да лицензира интерпретатора PostScript и да го използва в своето устройство. Спецификациите на PostScript били общодостъпни, поради което, всеки разработчик можел да пише програми, поддържащи PostScript.
Adobe рискувала, пускайки PostScript, и е възможно да не можеше да убеди пазара в необходимостта от този език, ако не беше Стив Джобс от Apple Computer. През 1985 г. продажбата на компютри Macintosh започнала да пада и на Apple ѝ бил нужен „killer app“ – нещо, което може да работи само на нейните компютри. Стив Джобс инвестирал 2,5 милиона долара в Adobe, която създала PostScript – контролер за принтера Apple LaserWriter, и в Aldus, създател на програмата PageMaker, използваща всички възможности на Macintosh и LaserWriter. Появилата се тогава възможност за допечатна подготовка на компютъра спасила Apple и превърнала Adobe и Aldus в крупни компании. Другите производители на фотонаборна апаратура, начело с Linotype, оценили PostScript и бързо снабдили своите фотонаборни устройства с интерпретатори PostScript. Така PostScript станал стандарт в областта на допечатната подготовка.
През 1991 г. Adobe пуснали следващата ревизия на PostScript – PostScript Level 2. Имало значителни преработки, очаквани отдавна от издателското съсловие.
Основните подобрения били: увеличена скорост и надеждност (свързано с по-доброто управление на паметта); поддръжка на цветоотделяне в самия контролер; разархивиране на компресирани изображения в самия контролер (JPEG и CCITT group 4); поддръжка на богат набор от шрифтове (за азиатските страни); кеширане на шрифтовете и изображенията; подобрени драйвери; подобрен алгоритъм за разпечатване на изображения (Accurate Screening).
Adobe направил грешка, като публикувал спецификациите на PostScript Level 2 преди началото на неговата хардуерна реализация. Конкурентите неочаквано излезли на пазара с емулатори за PostScript Level 2 по-рано от самата Adobe, поради което било необходимо прекалено много време, преди приложенията да започнат да използват новите функции за PostScript level 2. Такава функция, като цветоделянето в контролера, не се поддържа от XPress 5, въпреки че от излизането на Level 2 са минали много години.
През 1998 г. Adobe въвежда нов стандарт PostScript 3. Измененията в сравнение с Level 2 са незначителни. Това е логично, отчитайки, че множество приложения не могат да обезпечат пълна поддръжка на PostScript Level 2.
Основни преимущества на PostScript 3: поддръжка на 4096 оттенъка на цвета (12-бита на цвят, дотогава са поддържани 256 оттенъка – 8 бита за цвят); поддръжка на PDF (контролерите PS Level 3 могат да обработват PDF заедно с файлове PS Level 2); разширена поддръжка на цветоотделянето (контролерите PS 3 могат да произведат цветоотделяне на изображенията, зададени в оттенъците на сивото или в шест цвята); добавена е интернет-функционалност (Web-ready printing), като нито един от OEM-партньорите на Adobe още не е успял да я реализира.
Области на приложение PostScript е събрал в себе си най-добрите възможности на принтерите и плотерите. Както плотерите, PostScript предоставя възможност за изкарване на висококачествена векторна графика и единен език за управление, който може да бъде използван от всеки производител на хардуер. Подобно на матричните принтери, PostScript предлага удобни възможности за разпечатване на растерна графика и текст. За разлика от едните и от другите, PostScript съвместява всички тези възможности за изход на една страница, притежавайки много по-голяма гъвкавост в сравнение с който и да е принтер или плотер.
PostScript е повече от един типичен език за управление на принтер, тъй като в същото време е и пълноценен език за програмиране. Много приложни програми могат да преобразуват документите си в PostScript програми, при чието изпълнение се получава началният документ. Тази програма може да се препрати директно на принтер с поддръжка на PostScript или да бъде преобразувана от интерпретатора на PostScript в друг формат (за принтери, неподдържащи PostScript), или резултатите от изпълнението на интепретатора може да се покажат директно върху екрана. Тъй като изходната PostScript програма е една и съща, PostScript се нарича независима от устройството.
Повечето високоскоростни принтери и плотери имат вграден интерпретатор на езика PostScript. В същото време, обикновените принтери от домашен клас поддържат само елементарни графически операции, затова задачата по създаването на растерно изображение се възлага на централния процесор. Съществуват интерпретатори на езика PostScript за различни операционни системи, като най-известният от тях е свободната програма Ghostscript.
Съществува платена версия на ТеХ – BaKoMa TeX, написана напълно на PostScript.
Език PostScript е пълноценен език за програмиране. Въпреки че програмите на PostScript се създават основно от други програми, по принцип нищо не пречи да се пишат на него програми за разчетни графики, прилагането на числени методи за решаване на математически задачи и т.н.
PostScript е интерпретируем стеков език, подобен на Forth. Синтаксисът на езика използва обратно полско математическо представяне, което прави ненужно ползването на скоби, но трябва известна практика, за да може да се чете текстът на програмата поради необходимостта да се помни наум съдържанието на стека. Повечето оператори взимат операнди от стека и поставят резултата от изчисленията в стека. Низовете и числата се копират на стека.
За рисуване в PostScript се използва двумерна правоъгълна координатна система, началото на която съвпада с левия долен ъгъл на страницата; оста X по подразбиране е насочена хоризонтално (т.е. по ширината на страницата), оста Y – вертикално. За единица за измерване на линейните координати служи така нареченият типографски пункт. С помощта на оператори на езика началото на координатната система може да се пренесе във всяка точка (оператор translate), а самата система – завъртяна на произволен ъгъл в плоскостта на страницата (оператор rotate); мащабът на всяка от двете оси с помощта на оператора scale също може да бъде изменен. Например, „огледалното“ проектиране на изображението върху лента (т.н. „Emulsion down“) в PostScript-принтерите се осъществява с помощта на един-единствен оператор scale, определящ отрицателния мащаб по една от осите на координатната система, -1.0 1.0 scale.
PostScript има елементи на метафайл, поддържайки както векторна, така и растерна графика. Шрифтовете в PostScript са само векторни. Изключение правят Type3 шрифтовете, в които за изрисуване на глифовете (процедура /BuildGlyph) се използват всички процедури, дефинирани в термините на езика PostScript. След излизането на SP4 за Windows NT 4.0 през 1998 г. когато е инсталирана в системата Adobe Type Manager 4.0 и драйвер за AdobePS 5 всички шрифтове в не-roman кодиране, в частност кирилица, се инсталираха в PostScript файла като Type3 шрифтове, като всяка глифа е представена посредством растерно изображение. Представянето на шрифта като растерно изображение създава много проблеми при подготовката към изход на фотонабора и предпечатната подготовка. Тази грешка е оправена в AdobePS 5.1 и Adobe Type Manager 4.1, които влизат в дистрибутива на Windows 2000.
Структура на документа Структурата на файла PostScript се формира от структурни коментарии. Структурните коментарии започват с последователност от символи „%%“ в началото на реда.
Файлът PostScript е съставен от четири части: заглавие, пролог, тяло и епилог.
Заглавието започва с реда „%!PS-Adobe-N.M“ където N.M е версията на спецификацията, следват структурните коментарии с общите свойства на документа и завършва с реда „%%EndComments“.
%!PS-Adobe-2.0 %%Creator: dvips(k) 5.78 Copyright 1998 Radical Eye Software %%Title: rep.dvi %%Pages: 9 %%PageOrder: Ascend %%BoundingBox: 0 0 596 842 %%EndComments
В пролога обикновено се описват подпрограмите и данните, необходими за отпечатване на документа – например, процедури и шрифтове. Прологът завършва с коментар „%%EndProlog“.
В тялото на програмата се намират командите, отговарящи за изрисуване на всяка страница, предшествани от реда „%%Page: <етикет><номер>“, където <етикет> е етикетът на страницата, която не се разпечатва, а <номер> е серийният номер на страницата във файла, например, %%Page: iii 3
След командите за изрисуване на страниците следва структурният коментарий „%%Trailer“, след което започва епилогът.
В епилога е възможно да се дублират коментариите от заглавието (прави се в случай, че в началото на програмата още не е известно, например, броят на страниците) – в този случай вместо числови значения на параметрите в заглавието трябва да се напише „(atend)“.
Файлът завършва с реда „%%EOF“.
Обзор на елементите на езика Стекове
В PostScript за съхраняване на данни от различен тип се използват четири стека: стекът на операндите, стекът на графическия контекст, стекът за изпълнение, стекът на речниците.
Типове данни
Основните типове данни в езика PostScript са: цяло число със знак, реално число, логически израз (true или false), символен низ ((...)), масив ([ ... ]), процедура ({ ... }), речник, име.
Оператори
Операторите в PostScript получават операнди (параметри), изтривайки ги от стека, и записвайки резултата от действието (ако съществува) пак в стека. Такъв стил на програмиране, при което операндите се записват до операциите над тях (оператора), се нарича постфиксна нотация. Например, при умножаване на две числа, трябва отначало да се поставят във върха на стека на операндите, след което да се изпълни командата add, която извлича от стека двата последни поставени елемента, умножава ги и записва резултата в стека, откъдето той може да бъде извлечен чрез друга операция като операнд. Това се записва така: