PostScript: Разлика между версии

Изтрито е съдържание Добавено е съдържание
Ред 83:
PostScript е пълноценен [[език за програмиране]]. Въпреки че [[Програма|програмите]] на PostScript се създават основно от други програми, по принцип нищо не пречи да се пишат на него програми за разчетни графики, прилагането на числени методи за решаване на математически задачи и т. н.
 
PostScript е интерпретируем стеков език, подобен на [[Forth]]. Синтаксисът на езика използва [[обратно полско математическо представяне]], което прави ненужно ползването на скоби, но трябва известна практика, за да може да се чете текстатекстът на програмата поради необходимостта да се помнинапомни умнаум съдържанието на стека. Повечето оператори взимат операнди от стека и поставят резултата от изчисленията в стека. Стринговете и числата се копират на стека.
 
За рисуване в ''PostScript'' се използва двумерна правоъгълна координатна система, началото на която съвпада с левия долен ъгъл на страницата; оста ''X'' по подразбиране ие насочена горизонталнохоризонтално (т.е. по ширината на страницата), оста ''Y'' — вертикално. ЕдиницаЗа единица за измерване на линейните координати служи така нареченият [[типографски пункт]]. С помощта на оператори на езика [6, pp.&nbsp;517–518] началото на координатната система може да се пренесе във всяка точка (оператор <code>translate</code>), а самата система — завъртяна на произволен ъгъл в плоскостта на страницата (оператор <code>rotate</code>); масштабътмащабът на всяка от двете оси с помощта на оператора <code>scale</code> също може да бъде изменен. Например, «огледалното» проектиране на изображението върху лента (т.н. «''Emulsion down''») в ''PostScript''-принтерите се осъществява с помощта на един единствен оператор <code>scale</code>, определящ отрицателния мащаб по една от осите на координатната система, <code>-1.0 1.0 scale</code>.
''PostScript'' има елементи на [[метафайл]], поддържайки както векторна, така и растерна графика. [[Шрифт]]овете в ''PostScript'' са само векторни. Изключение правят ''Type3'' шрифтовете, в които за изрисуване на [[глиф]]овете (процедура <code>/BuildGlyph</code>) се използват всички процедури, дефинирани в термините на езика ''PostScript''. След излизането на SP4 за Windows NT 4.0 през 1998 г. (в смисъл http://support.microsoft.com/gp/lifesupsps ) когато е инсталирана в системата ''Adobe Type Manager 4.0'' и драйвер за ''AdobePS 5'' всички шрифтове в не-''roman'' кодиране, в частност кирилица, се инсталираха в ''PostScript'' файла като ''Type3'' шрифтове, като всяка глифа е представена посредством растерно изображение. Представянето на шрифта като растерно изображение създава много проблеми при подготовката към изход на [[фотонабор]]а и [[предпечатна подготовка|предпечатната подготовка]]. Тази грешка е оправена в ''AdobePS 5.1'' и ''Adobe Type Manager 4.1'', които влизат в дистрибутива на ''Windows 2000''.
 
=== Структура на документа ===
 
Структурата на файла PostScript се формира от структурни коментарии [14]. Структурните комментариикоментарии започват с последователност от символи «<code>%%</code>» в началото на реда.
 
Файлът PostScript е съставен от четири части: заглавие, пролог, тяло и епилог.
 
<u>Заглавието</u> започва с реда «<code>%!PS-Adobe-N.M</code>» където N.M е версията на спецификацията, следват структурните коментарии с общите свойства на документа, и завършва с реда «<code>%%EndComments</code>».
 
<code>
Ред 109:
В <u>пролога</u> обикновено се описват подпрограмите и данните, необходими за отпечатване на документа — например, процедури и шрифтове. Прологът завършва с коментар «<code>%%EndProlog</code>».
 
В <u>тялото на програмата</u> се намират командите, отговарящи за изрисуване на всяка страница, предшествани от реда «<code>%%Page: <етикет> <номер></code>», където <етикет> е етикетът на страницата, която не се разпечатва, а <номер> е серийниясерийният номер на страницата във файла, например,
<code>%%Page: iii 3</code>
 
След командите за изрисуване на страниците следва структурнияструктурният коментарий «<code>%%Trailer</code>», след което запомвазапочва эпилогътепилогът.
 
В <u>эпилогаепилога</u> е възможно да се дублират коментариите от заглавието (прави се в случай, че в началото на програмата още не е известно, например, брояброят на страниците) — в този случай вместо числови значения на параметрите в заглавието трябва да се напише «<code>(atend)</code>».
 
Файлът завършва с реда «<code>%%EOF</code>».
Ред 130:
'''Оператори'''
 
Операторите в PostScript получават операнди (параметри), изтривайки ги от стека, и записвайки резултатътрезултата от действието (ако съществува) пак в стека. Такъв стил на програмиране, при което операндите се записват до операциите над тях (оператора), се нарича постфиксна нотация. Например, при умножаване на две числа, трябва отначало да се поставят във върха на стека на операндите, след което да се изпълни командата <code>add</code>, която извлича от стека двата последни поставени елемента, умножава ги и записва резултата в стека, откъдето той може да бъде извлечен чрез друга операция като операнд. Това се записва така:
 
<code>4 5 add</code>
 
Операторите на PostScript могат да се разделят на няколко групи. Оператори за работа със съдържанието на стека (независимо от типа), аритметични операции, оператори за работа с масиви, работа с речници, работа с редове, сравнения, управление на потокътпотока с команди, работа с типа на аргументите и конверсия, достъп и работа с файловете, работа с виртуалната памет, графики и други.
Описанието на операторите на PostScript може да се открие в [5, 6], кратки описания на най-употребяваните оператори на кирилица може да се намерят в [1].
 
=== Кратък обзор на механизма за рисуване на изображения ===
 
Процесът на рисуване (растеризация) при ''PostScript'' се заключава в изчисляване на параметрите за всеки [[пиксел]] - един (при монохромни) или няколко (например четири за ''CMYK'' устройства или шест за [[Hexachrome|''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'' <code>{1 sub neg} settransfer</code>) обръща изображениеето — именно така печатат негатива ''PostScript'' принтерите.
 
В монохроматичните устройства — например при фотонаборните апарати, подсветката на пикселите се получава в резултат от сравненяванесравняване на изчислената величина за даден пиксел от ''transfer function'' и значението на ''Spot'' функцията или чрез двумерния масив ''Threshold array'' [6, pp.&nbsp;484–490], [15]: когато стойността на ''transfer function'' е по-голямо от стойността на ''Spot'' функцията или елемента ''Threshold array'' то този пиксел се засветява.
ОптималнияОптималният подбор на ''transfer function'' и ''Spot'' функцията или ''Threshold array'' позволява изходното растерно изображение да е близо до проектираното по съотношение на засветени и незасветени пиксели.
 
По аналогичен начин се получават и полутоновете в типографските изображения на печатните издания.
Ред 165:
(Wikipedia) show % да се напише думата с текущия шрифт
grestore % връщане на координатната трансформация
} for % край на циклацикъла for
&nbsp;
showpage % показване на страницата