PostScript – Уикипедия

PostScript
Парадигмахибриден език: стеково базиран, процедурен
Реализиране през1982
АвторДжон Уорнок и Чак Гешке от Adobe Systems
Типизация на даннитестрога, динамична
Повлиян отLisp
ПовлияваPDF
Уебсайтwww.adobe.com/products/postscript
PostScript
Информация
Файлово разширение.ps
Тип MIMEapplication/postscript
Тип на форматаprinting file format

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, която извлича от стека двата последни поставени елемента, умножава ги и записва резултата в стека, откъдето той може да бъде извлечен чрез друга операция като операнд. Това се записва така:

4 5 add

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

Кратък обзор на механизма за рисуване на изображения

[редактиране | редактиране на кода]

Процесът на рисуване (растеризация) при PostScript се заключава в изчисляване на параметрите за всеки пиксел – един (при монохромни) или няколко (например четири за CMYK устройства или шест за CMYKOrGr) в диапазон от 0 до 1.0. Тези значения се използват като аргументи на функцията Transfer Function. По подразбиране това е простата функция y(x)=x, когато функцията приема стойностите на аргумента. В редица случаи – например за компенсиране на нарастване на точката се използват сложни нелинейни зависимости y(x), задавани посредством интервално линейна или таблична апроксимация. Интервално линейна апроксимация се използва например в EPS и PS файловете на Adobe Photoshop като целия интервал [0;1.0] е разделен на 40 участъка с ширина 0.025, като на всеки от тези участъци transfer function има вида y(x)=b·x+a. Transfer function от вида y(x)=1-x (в термините на PostScript language {1 sub neg} settransfer) обръща изображениеето – именно така печатат негатива PostScript принтерите.

В монохроматичните устройства – например при фотонаборните апарати, подсветката на пикселите се получава в резултат от сравняване на изчислената величина за даден пиксел от transfer function и значението на Spot функцията или чрез двумерния масив Threshold array: когато стойността на transfer function е по-голямо от стойността на Spot функцията или елемента Threshold array то този пиксел се засветява.

Оптималният подбор на transfer function и Spot функцията или Threshold array позволява изходното растерно изображение да е близо до проектираното по съотношение на засветени и незасветени пиксели.

По аналогичен начин се получават и полутоновете в типографските изображения на печатните издания.

%!PS-Adobe-1.0 % По подразбиране, постскрипт използва единицата за измерване пункт=1/72 инча, % преобръщане в милиметри. 72 25.4 div % 1 мм = 72/25.4 пунктов dup % дублиране на значението във върха на стека scale % мащабиране на двете координати в милиметри 100 100 translate % дефиниране на началото на координатната система в (100 мм, 100 мм)   /Times-Roman findfont % печатане с шрифт Times-Roman 10 scalefont % шрифтов размер 10 (използваме единица за измерване милиметър) setfont % инсталиране на избрания шрифт   0 30 330 { % цикъл за ъглите от 0 до 330 със стъпка 30   gsave % да се запомни текущото преобразуване на координатите     rotate % завъртване на координатната система (ъгълът в градуси се взима от върха на стека стека)     15 0 moveto % преместване в точка (15 мм, 0 мм)     (Wikipedia) show % да се напише думата с текущия шрифт   grestore % връщане на координатната трансформация } for % край на цикъла for   showpage % показване на страницата 

Резултат от изпълнение на програмата

[редактиране | редактиране на кода]
Изходен резултат

Тенденции и перспективи

[редактиране | редактиране на кода]

Освен езика PostScript на пазара на лазерни принтери широко разпространение получи езикът за управление на принтери PCL, разработен от Хюлет-Пакард. PCL отначало бил проектиран за други задачи и в сравнение с PostScript няма преносимост, но за офисно ползване е по-удобен в ред случаи. Той използва стандартните Windows шрифтове TrueType (за разлика от PostScript). Освен това последната му версия (PCL6) е разработвана от HP в тясно сътрудничество с Microsoft и затова притежава ускорени функции на ползване, бърз печат на сложни графически изображения, подобрено качество на печат и повишена точност за разпечатване на документите.

Освен това, езикът PostScript изисква лицензиране и изплащане на лицензионни отчисления на Adobe Systems от всеки контролер RIP (Raster Image Processor), докато езикът PCL може да се използва от различни производители безплатно. Лицензът на RIP PostScript 3 за плотери производство на HP струва около 500 долара, докато нелицензираните контролери – „емулация на PS2“ струват между 30 и 70 долара.

В резултат, ако преди 10 години практически всички лазерни принтери поддържаха PostScript като основен език, то сега болшинството лазерни принтери от класа Сохо (бизнес) не поддържат PostScript. Така PostScript се измества от езика PCL, оставайки при това безалтернативен стандарт в областта на допечатната подготовка.

  1. Книга на руски език с описание на основните команди на езика PostScript и конкретни примерни програми
  2. Руски сайт за езика и технологи на PostScript
  3. The history of PostScript
  4. History of PostScript
  5. First Guide to PostScript Архив на оригинала от 2005-03-07 в Wayback Machine.
  6. PostScript Language Reference, 3rd ed. Published by Addison-Wesley ISBN 0-201-37922-8 Архив на оригинала от 2006-06-14 в Wayback Machine.
  7. PostScript Language Tutorial and Cookbook
  8. Glenn C. Reid. Thinking in PostScript. Addison-Wesley, 1990.
  9. Роберт Шимонски Освой самостоятельно Unix. 10 минут на урок = Sams Teach Yourself Unix in 10 Minutes. – М.: „Вильямс“, 2006. – С. 272. – ISBN 0-672-32764-3
  10. С. Немнюгин, М. Чаунин, А. Комолкин. Ефективная работа под UNIX. СПб.: „Питер“, 2001. ISBN 5-272-00197-4
  11. Романовский Иосиф Владимирович, Столяр Сергей Ефимович. „Стекове и стекови езици“ Архив на оригинала от 2011-08-20 в Wayback Machine., Учебно пособие. – СПб.: Издателство ЦПО „Информатизация на образованието“, 2002. – 35 с.
  12. PostScript или PDF? Архив на оригинала от 2007-04-03 в Wayback Machine.
  13. Языки PCL и PostScript Архив на оригинала от 2012-01-06 в Wayback Machine.
  14. PostScript Language Document Structuring Conventions Specification. Version 3. 25 септември 1992
  15. Halftones and Screens. Adobe® Developers Association. 9 октомври 1997