Privacy Policy Cookie Policy Terms and Conditions PostScript - Vikipeedia, vaba entsüklopeedia

PostScript

See artikkel vajab toimetamist

PostScript on programmeerimiskeel graafiliste objektide (tekst, vektorina kirjeldatud objektid nagu ring, ruut, joon jms ning rastergraafika) kirjeldamiseks sõltumata tulemust realiseerivast seadmest (printer, kuvar vms). Siiski on PostScript ka võimas programmeerimiskeel, millel abil tehtud ka näiteks veebiserver (http://www.pugo.org/).

Sisukord

[redigeeri] Ajalugu

Aluse pani John Warnock 1976. aastal firmas Evans and Sutherland (arvutigraafikaga tegelev ettevõte). 1978 hakkas Warnock tööle Xerox PARC-is koos Martin Newell'ga. Koos kirjutasid nad disainimissüsteemi nimega JaM (John and Martin), mida arendati edasi ning, mida teatakse InterPress nime all. Warnock lahkus ettevõttest koos Chuck Geschke'ga ja rajas Adobe System'i aastal 1982. Seal tegid nad InterPressi põhjal lihtsama keele: PostScript, mis tuli turule 1984. Steve Jobs'i pealekäimisel kohandasid nad keele laserprinteritele. 1985 tuli turule esimene laserprinter (Apple LaserWriter) PostScripti toetusega. See oli mõneti revolutsiooniline. Sellest peale muutus PostScripti kasutamine laserprinterites tavaliseks. Aastaks 2001 ei olnud väga paljud printerid enam PostScripti toetusega, sest selle lisamine printerisse tuli oluliselt kallim kui et teostada lehe renderdamine juba arvutis. Aegamööda on PostScripti tahaplaanile surunud tema järeltulija PDF (Portable Document Format), mida esimest korda tutvustati 1990 aastate alguses, kuid ta ei saavutanud kiiret populaarsust.

PostScript-i keel on saanud 2 suurt uuendust, mida eristatakse levelite abil. Algne PostScript ehk PostScript Level 1 tuli välja aastal 1984. PostScript Level 2 tuli välja aastal 1991. Parandatud oli kiirust, JPEG lisamist otse PostScript-i, dokumendi osade kordamist (Form mehhanism) jms. PostScript Level 3 tuli välja aastal 1997. Parandatud oli värvide käsitlust, vea käsitlust, programmi sisu filtreid (pakkimine, formaatide tõlgendamine jms), programmi ülesehitust.

[redigeeri] Fakte

  • Type 1 ja Type 3 fondid baseeruvad PostScriptil
  • PostScripti on kasutatud ka ekraanil (Display PostScript ehk DPS ja Network extensible Window System ehk NeWS; DPS sarnast süsteemi kasutab Apple Mac OS X)

[redigeeri] Programmeerimiskeelena

PostScript on pinu (andmestruktuur, millest loetakse esimesena viimati sisestatu) põhine süsteem. Tavaliselt kirjutavad PostScript programme teised programmid ja mitte inimene. Keelena sarnaneb PostScript keelele Forth, aga andmestruktuurid sarnanevad rohkem Lisp-ile. Keeles on hulk operaatoreid, mis muudavad pinu sisu (on erandeid: kõik operaatorid ei tarvitse pinu sisu siiski muuta). Iga operaator vajab kindlat hulka ja kindlat andmetüüpi kirjeid pinus ja pinusse jätab samamoodi kindlaksmääratud arvu kindlat tüüpi elemente. Reavahetus ei oma PostScriptis mingit tähtsust, tühik ja reavahetus on samaväärsed. Puudub lause algus ja lõpp, kõike käsitletakse ühe jadana. Tekstilise väärtuse puhul reavahetust ikkagi arvestatakse.

Programminäide aritmeetilise tehte (1 + 2) * (9 - 8) näol:

 1 2 add 9 8 sub mul

Toimuvad järgmised sammud:

  1. Pinusse pannakse 1
  2. Pinusse pannakse 2
  3. Operaator add loeb pinust 2 ühikut (1 ja 2) ning jätab tulemuse 3 pinusse
  4. Pinusse lisatakse 9
  5. Pinusse lisatakse 8
  6. Operaator sub loeb 2 arvu pinust (9, 8) ja lahtab need ning jätab tulemuse 1 pinusse
  7. Operaator mul loeb 2 arvu pinust (3 ja 1, mille jätsid eelnevad operaatorid) ja korrutab need

Programmi lõppedes on pinus arv 3.

Kommentaare saab lisada protsendiga, kommentaar kestab rea lõpuni.

Muutujat saab defineerida operaatoriga def:

 /x 123 def      % defineeritakse muutuja x väärtusega 123
 /x 1 2 add def  % defineeritakse muutuja x väärtusega 3
 /y x 3 add def  % kasutades muutujat x defineeritakse muutuja y väärtusega 6

Nagu näha, siis kaldkriipsu kasutatakse literaadina. Muutuja kasutamisel kaldkriipsu lisada ei tule.

Operaatoriga saab luua tsükleid, esitada tingimusi, defineerida operatsioone korduvaks kasutuseks (nagu funktsioonid), teostada graafilisi operatsioone, muuta pinu sisu (elemente ümber reastada, kustutada, paljundada) ja palju muud.

[redigeeri] "Hello world" programm

PostScripti formaat eeldab, et fail hakkab kommentaariga, mille esimeseks sümboliks on hüüumärk. Tekstilisi väärtusi väljendatakse sulgudega. Standardväljundisse trükitakse pinus olev võrdusmärgiga:

 %!
 (Hello world) =

Paberile minev programm:

 %!
 /Times-Roman findfont 15 scalefont setfont
 72 200 moveto
 (Hello world) show
 showpage

[redigeeri] Interpretaatorid

PostScripti suudavad interpreteerida GhostScript, Acrobat Distiller.

Näiteks GhostScript linuxi käsureal:

 $ gs
 ESP Ghostscript 815.01 (2005-09-22)
 Copyright (C) 2004 artofcode LLC, Benicia, CA.  All rights reserved.
 This software comes with NO WARRANTY: see the file PUBLIC for details.
 GS>4 5 mul
 GS<1>6
 GS<2>mul
 GS<1>=
 120
 GS>quit
 $ 

GhostScripti käsureal on näha, mitu elementi on pinus.

GhostScripti koosseisu kuulub ka PostScriptist PDF-i konventeerimise programm, GhostView (gv) ja palju muud.

[redigeeri] Välislingid

Adobe poolt ilmunud raamatud (keelega alustajatel soovitatakse raamatutega just selles järjekorras tutvust teha):

  • "The Blue Book" tutvustus ja kasutusnäited (Tutorial and Cookbook)
  • "The Green Book" sügavamalt keelt lahkav raamat (PostScript Language Program Design)
  • "The Red Book" keele spetsifikatsioon (PostScript Language Reference, third edition)

Teised raamatud:

Saidid:

Static Wikipedia (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia February 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu