# PostScript

PostScript és un llenguatge de descripció de pàgines (en anglès PDL, page description language ), utilitzat en moltes impressores i, de manera usual, com a format de transport de fitxers gràfics en tallers d'impressió professional.
Està basat en la feina realitzada per John Gaffney a "Evans&Sutherland" l'any 1976. Posteriorment, van continuar-ne el desenvolupament 'JaM' ('John and Martin', Martin Newell) a Xerox PARC i, finalment, va ser implementat en la seva forma actual per John Warnock i altres. Va ser precisament John Warnock, juntament amb Chuck Geschke, qui van fundar Adobe Systems Incorporated (també conegut com a Adobe ) l'any 1982.
El concepte de PostScript es va diferenciar, fonamentalment, per utilitzar un llenguatge de programació complet, per descriure una imatge d'impressió. Imatge que més tard seria impresa en una impressora làser o algun altre dispositiu de sortida de gran qualitat, en lloc d'una sèrie de seqüències de fugues de baix nivell (en això s'assembla a Emacs, que va explotar un concepte intern semblant, pel que fa a les tasques d'edició).
També va implementar, notablement, la composició d'imatges. Aquestes imatges es descrivien com un conjunt de:
* Línies horitzontals
* Píxels al vol
* Descripcions per corbes de Bezier
* Tipografia (tipus) d'alta qualitat a baixa resolució (p. ex. 300 punts per polzada).
Una de les peculiaritats de PostScript és que utilitza Reverse Polish Notation (RPN o notació polonesa inversa-com les calculadores de butxaca d'HP). En altres paraules, els paràmetres d'una comanda són donats abans que la comanda mateixa. Les comandes se separen amb espais en blanc. Utilitza operacions de pila per a processar dades i executar comandes.
Hi ha quatre piles disponibles a PostScript:
* La pila d'operands
* La de diccionari
* La d'execució
* La d'estat gràfic.
La pila d'operands conté objectes PostScript arbitraris que són els operands i resultats dels operadors PostScript que s'estan executant. Podem donar alguns exemples d'operacions aritmètiques. Per exemple,
PDF és un altre llenguatge de descripció de pàgines i és derivat de PostScript, però més simple i lleuger.
PostScript també ha trobat aplicacions diferents de la impressió en paper, com és el cas de Display PostScript. DPS és una extensió de PostScript i va ser utilitzat com a sistema gràfic 2D en el sistema operatiu NEXTSTEP. Quartz, de Mac OS X, és un sistema similar que utilitza PDF.
Ghostscript és una implementació oberta d'un intèrpret compatible amb PostScript.
Un altre tipus llenguatge de descripció de pàgina per a impressores és PCL (dissenyat per HP). És més lleuger però amb menys possibilitats que PostScript.

## Desenvolupament històric
### PostScript Nivell 1

Ofereix suport per treballar amb objectes vectorials, amb "tipus de contorn" (un conjunt limitat de descripcions de lletres a base de traçats matemàtics), amb lineatures de semitons professionals, capacitat de generar punts de semitons de diferents formes (línia, quadrat, cercle, lipse, etc.), capacitat de gestionar fins a 256 tons de gris diferents en una impressió. Independència total del dispositiu (el que permet imprimir aprofitant al màxim la resolució d'aquest). Portabilitat entre aparells. Disponibilitat pública del codi i de la seva sintaxi (el que permet a qualsevol escriure un programa capaç de generar fitxers PostScript) i algunes coses més.

### PostScript Nivell 2

PostScript Nivell 2 va ser introduït l'any 1991 incloent diverses millores com:
* Gestió de memòria extremadament millorada
* Major velocitat i fiabilitat
* Capacitat per a la separació del color en el RIP (in-RIP separation)
* Descompressió d'imatges
* Suport per tipus asiàtiques
* Suport per tipus compostes
* Millora dels controladors d'impressora
* Millora molt notable (encara que una mica tardana) dels algoritmes de tramat de semitons.
El nivell 2 de PostScript encara no ha estat adoptat del tot per molts fabricants de programari i maquinari.

### PostScript 3

A partir d'aquesta versió Adobe va abandonar la terminologia de nivells, passant a utilitzar la de versions. Aquesta versió va ser alliberada a finals de 1997. Les principals millores que va introduir aquesta nova versió són:
* Ús de 12 bits per descriure les lineatures de semitò
* Control extremadament millorat de les separacions de color
* Suport del format PDF desenvolupat pel programa Acrobat
* Gestió del color molt més avançada.
* Noves característiques d'impressió relacionades amb les possibilitats que ofereix Internet que encara no han estat molt desenvolupades.
* Introducció de nous filtres de compressió d'imatges com són el FlateDecode i FlateEncode i per definició de dades com ReusableStreamDecode

## Dibuix de figures en PostScript

En el llenguatge PostScript es fa servir un sistema de coordenades cartesianes amb origen a la cantonada inferior esquerra de la pàgina. La unitat de mesura és el punt tipogràfic, el valor es defineix en aquest cas com la setantena segona part d'una polzada ($1/72$). En el cas d'un full de tipus letter (hi ha altres mides disponibles) les dimensions són de 612 punts d'ample per 792 de llarg.
Un exemple d'una pila d'instruccions per realitzar un dibuix simple amb PostScript es detalla a continuació:
newpath
% Inicialització del cursor
100.100 moveto
% Dibuix del rectangle
300.100 lineto
300.250 lineto
100.250 lineto
100.100 lineto
stroke
* Newpath indica que anem a dibuixar una nova figura.
* Moveto situa el cursor per començar a dibuixar la figura. En aquest cas les coordenades són 100, 100.
* Els diferents lineto dibuixen les línies de la figura (en aquest cas totes són línies rectes).
* Finalment, la comanda stroke indica la realització del dibuix a l'intèrpret.
Òbviament, també hi ha ordres per a dibuixar línies corbes. Per exemple,
x y r a b arc
on:
* "x" i "y", són les coordenades horitzontal i vertical del centre de l'arc circular.
* "r", el radi de l'arc.
* "a" i "b", l'angle entre la part positiva de l'eix horitzontal i els raigs centrals que passen a través del punt inicial i final de l'arc.

## Eines d'escriptura en PostScript

PostScript té diverses tipus que s'usen com tipus estàndards per autoedició. Té també eines de creació de tipus a les quals es pot accedir definint piles de diccionari on les tipus estan disponibles. El següent programa en PostScript pot ser un exemple.
/Times-Roman findfont
15 scalefont
setfont
100.500 moveto
(I love PostScript !) show
/Times-Italic findfont
20 scalefont
setfont
100.450 moveto
(I love PostScript !) show
/Times-Bold findfont
25 scalefont
setfont
100.400 moveto
(I love PostScript !) show
showpage

## Índex d'operadors

A continuació es detalla una llista que recull l'ús dels operadors més freqüents en les descripcions de Postscript.
| Add Arc Begin Bind Clip Charpath Closepath Curveto Def Div Dup | End Exch Fill For Findfont Grestore Gsave If Ifelse Index Lineto | Moveto Mul Newpath Pop Restore Rlineto Rmoveto Rotate Save Scale Scalefont | Setfont Setgray Setlinewidth Show Showpage Stroke Sub Translate |

## Referències

* ↑ Abans que es desenvolupés Postscript es creia que les tipografies de mapa de bits millorades manualment eren més adequades per a aquesta tasca.
* ↑ Per exemple, les imatges en format JPEG poden ser renderitzades per un programa PostScript.
* ↑ Les tipus asiàtiques necessiten, per a la correcta descripció, d'una major quantitat de bytes que les europees
* ↑ Aquesta característica permet superar la barrera de 256 tons i arribar fins a un degradat que contempla 4.096 tons d'un mateix color.
* ↑ El control millorat permet realitzar sense problemes separacions de color que superin la quadricromia convencional (hexacromia, duotono, imatges multicanal, etc ...).

## Vegeu també

* Portable Document Format
* PostScript encapsulat
* Tipus de lletra PostScript

## Enllaços externs

* Descripció de referència del llenguatge Postscript (en anglès)
* Llenguatge PostScript II i Llenguatge PostScript III