manual curs 'i l

137
S E M I N A R I S D E P O S T S C R I P T MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT © Marc Antoni Malagarriga i Picas

Upload: others

Post on 25-Jul-2022

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MANUAL CURS 'I L

S E M I N A R I S D E P O S T S C R I P T

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

© Marc Antoni Malagarriga i Picas

Marc Antoni Malagarriga i Picas
Nota d'Alliberament
1994, primera edició original en paper. 2005, diada de Sant Jordi, s'allibera aquest manual a la xarxa internet en format electrònic. Han estat revisats alguns continguts en relació als nous nivells del llenguatge i a la inexorable evolució de la informàtica.
Marc Antoni Malagarriga i Picas
Revisions i Traduccions
M'agradaria fer aviat una revisió d'aquest manual per ampliar-lo als nivells 2 i 3 de PostScript. Cara a la seva millora, podeu fer-me arribar tota mena d'esmenes a <[email protected]>, i per descomptat s'accepten tot tipus de col·laboracions per traduïr-lo a d'altres idiomes.
Page 2: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

2

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Continguts

1. Conceptes preliminars del Llenguatge PostScript 61.1 Una curta història 61.2 Llenguatge de Descripció de Pàgines i de Programació 71.3 Un Llenguatge Interpretat 71.4 Independència del Dispositiu d'Impressió 91.5 Portabilitat ASCII 101.6 Caixa Alta i Caixa Baixa 11

2. La Pila i els Operadors 122.1 " Els últims seran els primers ... 122.2 Mig miler d'Operadors 132.3 Noteu la Notació 15

3. Unitats i Espai de Coordenades 163.1 Sistema de Mesures 163.2 Formats de Pàgina 173.3 Efectes dins l'Espai 18

3.3.1 L'origen de l'Espai 183.3.2 Translació 193.3.3 Rotació 193.3.4 Escalat 203.3.5 Perspectivat 21

4. Diccionaris, Procediments, Paquets i Cadenes 224.1 Una Biblioteca plena de Diccionaris 224.2 Procediments 244.3 Paquets anomenats Arrays 244.4 Cadenes dites Strings 25

5. L'Estat Gràfic 26

6. Construcció de Camins 27

7. Gràfics Primitius: Línies, Arcs i Corbes Bezier 297.1 Situar el Primer Punt 297.2 El recte camí 307.3 Arcs i Arcs 317.4 Corbes Franceses 32

8. Emplenadors i Màscares 348.1 És Obert o Tancat 348.2 És Ple o Buit 358.3 Sóc a Sobre o a Sota 368.4 Sóc a Dins o a Fora 38

Page 3: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

3

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Continguts

9. Tipografia: fonaments i composició 409.1 Radiografia d'una Font 40

9.1.1 Breu ullada al Comportament 459.2 Maquinària de Composició 47

9.2.1 Jocs de Caràcters 479.2.2 Cinc Operadors 48

9.2.2.1 Algoritmes de Justificació i d'Interliniat 519.3 Efectes i Acrobàcies 52

9.3.1 Efectes amb Emplenadors i Màscares 529.3.2 Acrobàcies amb l'Espai de Coordenades 53

9.4 Les Fonts i les Aplicacions 55

10. Les Trames: fonaments i manipulacions 5710.1 Cel.les versus Pixels 5710.2 L'operador setscreen 59

10.2.1 Freqüència 6010.2.2 Angle 6110.2.3 Funció del Punt 62

10.3 Funcions de Calibrat 64

11. El Color, fonaments i manipulacions 6511.1 L'espai de Color Acromàtic 66

11.1.1 L'operador setgray 6611.2 L'espai de Color-Llum 68

11.2.1 L'operador setrgbcolor 6811.2.2 La Roda de Color 7211.2.3 L'operador sethsbcolor 72

11.3 L'espai de Color-Matèria 7411.3.1 L'operador setcmykcolor 74

11.4 Els altres Espais de Color 7711.5 Conversions entre Espais de Color 78

11.5.1 Conversió RGB a Nivells de Gris 7911.5.2 Conversió CMYK a Nivells de Gris 7911.5.3 Conversió RGB a CMYK 8011.5.4 Conversió CMYK a RGB 8111.5.5 Conversió CMYK a Separacions per Quadricromia 82

Page 4: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

4

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Continguts

12. La Imatge Digital 8412.1 Construcció de la Imatge 8412.2 L'operador imagemask 86

12.2.1 Treballar amb dades hexadecimals 8612.2.2 Proporció i situació dins l'espai 87

12.3 L'operador image 8912.3.1 Treballar amb dades decimals 9012.3.2 Fondària d'Imatge 9112.3.3 Sentit de lectura 95

12.4 L'operador colorimage 9612.4.1 Treballar amb grans quantitats de dades 9912.4.2 Rotacions i perspectives 10012.4.3 Bits i Bytes 101

12.5 Generadors d'Imatge sintètica 101

13. Introducció al format EPS 10213.1 La pre-visualització 10313.2 Com crear un fitxer EPS 105

Galeria d'Exemples 107

Notes 130

Bibliografia 133

Eines d'Utilitat 135

Adreces d'Utilitat 137

Aquest Manual ha estat elaborat amb les tipografies Palatino i Futura 1 a un cos 11. Les il·lustracions delsexemples han estat creades amb programació manual per l'autor, la resta d'il·lustracions i diagramescomplementaris han estat realitzats amb PageMaker i CorelDraw. L'original i el muntatge final han estatrealitzats amb PageMaker sota plataforma Windows i una impressora làser PostScript a 600 dpi.Existeix la versió electrònica d'aquest Manual en format PDF a http://femfum.com/PDF/psiniual.pdf

Page 5: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT Marc Antoni Malagarriga i Picas

Presentació

Tenir uns coneixements bàsics de

Llenguatge PostScript® no vol dir programar.

Tenir uns coneixements fonamentals de

Llenguatge PostScript® no vol dir Mac o PC.

Tenir uns coneixements importants de

Llenguatge PostScript® no vol dir un Software

o una Versió determinada.

Lluny de les guerres entre Marques i

Versions, aquest Manual vol ajudar a omplir el

buit de coneixement que existeix en tot el món

professional que treballa els gràfics, les imatges

i els textes a través de l'ordinador.

Page 6: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

6

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Conceptes preliminars del LLenguatge PostScript® .1

L'ús de l'ordinador com a eina gràfica es va extenent mica a mica en tots elsàmbits professionals i de l'ensenyament. Particularment en els camps on lesimatges, el dibuix i la tipografia hi tenen un paper important, el LlenguatgePostScript® ha esdevingut el model a seguir.

La creació d'aquest llenguatge coincideix en un canvi de concepte general enel món de la informàtica. Estem parlant dels productes que tenen la vocació d'obertsi portables sigui quina sigui la plataforma informàtica en la que treballin (DOS, Mac,Windows, UNIX, etc.). El Llenguatge PostScript® és un dels principals avaladorsd'aquesta filosofia.

Tal i com diuen els seus creadors, tota la potència d'aquest llenguatge resideixen una sàbia mescla d'Art, Tradició i Tecnologia.

L'Art per la llibertat absoluta en l'ús de l'espai, el color o el punt. La Tradicióper què és hereu dels més de 500 anys d'història del món de la impressió i latipografia. Finalment la Tecnologia que per mitjà de la informàtica ofereix potènciai qualitat en constant evolució.

Una curta història 1.1

John Warnock i Chuck Geschke van crear l'any 1982 Adobe SystemsIncorporated. No va ser fins el gener de 1985 que Adobe va donar a conèixer elLlenguatge PostScript® . Conjuntament amb el llenguatge sortiren els primersproductes per treballar-hi: PageMaker com a programa de muntatge gràfic quegenerava PostScript i les impressores LaserWriter i Linotronic, de baixa i altaresolució, que interpretaven PostScript.

El 1988, Adobe presenta el Display PostScript® (DPS).

A finals de 1990 Adobe dóna a conèixer una important ampliació del llenguatge.És el PostScript de Nivell 2 (Level 2). A partir d'aquest moment es parlarà també dePostScript de Nivell 1 (Level 1), per referir-se a la primera generació del llenguatge.

El PostScript Level 2 ofereix millores en molts camps del llenguatge, peròprincipalment amplia la capacitat de descripció d'espais de color, tractamentd'imatges, captura de dades externes i recursos d'ordre intern.

El Display PostScript, és també una ampliació del llenguatge que s'utilitzaprincipalment en estacions de treball Unix (workstation) per oferir una representacióPostScript a la pantalla.

El juny de 1993, fruit de l'evolució del format .AI d'Adobe Illustrator 3.0, neixel format PDF i Acrobat, es tracta d'un format de PostScript interpretat.

Page 7: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

7

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Llenguatge de Descripció de Pàgines i de Programació 1.2

El PostScript com a Llenguatge té una doble vessant:

Es classifica en el grup dels Llenguatges de Descripció de Pàgina, és a dir quepinten en un espai anomenat pàgina objectes gràfics, imatges i text. Altres llenguatgesd'aquest tipus són: True Type (Microsoft) i Intellifont (HP) pel que fa a text,QuickDraw (Apple), GPI (OS/2) i PCL5 (HP) de caràcter gràfic més general.

Es classifica també en el grup dels Llenguatges de Programació. De fet, se l'hacomparat en diversos aspectes a llenguatges i entorns coneguts: al Lisp (pel seu nivelld'abstracció), al C (per l'ús dels anomenats punters), al Forth i l'Assembler (pel treballamb piles) i al S.O. Unix (pel treball amb arxius).

Un Llenguatge Interpretat 1.3

L'ànima d'un entorn de treball PostScript és l'intèrpret. Un intèrpret PostScriptés com un programa (generalment resident a l'interior dels dispositius d'impressió), quellegeix el contingut dels fitxers escrits en PostScript i comanda el dispositiu traçadorque pinta sobre el paper els objectes gràfics continguts a cada pàgina. Aquestadarrera operació anomenada Scan Conversion assigna el nombre de punts d'imatgea cada objecte gràfic per una resolució d'impressió determinada.

Els fitxers PostScript poden ser generats per Aplicacions (ex. PageMaker,Freehand, Photoshop, etc.) o per un Programador (tu mateix !).

Comprovem que una aplicació genera un fitxer escrit en PostScript:

Exemple 1A Desconnectem una impressora PostScript del seu cable

de comunicacions habitual (LPT1 o RS232)B Connectem-hi al seu lloc una altra impressora no

PostScript (ex. una matricial)C Fem una impressió normal d'un arxiu des d'una

aplicació (ex. PageMaker). Comprovarem com s'escriu tot el fitxerPostScript a la pàgina en lloc de la seva representació gràfica.

Exemple 2A Anem al gestor d'impressió del nostre ordinador (ex.

Windows - Control Panel) i canviem el port de comunicacionshabitual per un port d'arxiu d'impressió.

B Imprimim de forma normal un arxiu1 qualsevol.C Anem al sistema operatiu (DOS) o a un processador de

textes (Mac i Windows) i revisem el contingut del fitxer percomprovar la seva naturalesa PostScript.

Page 8: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

8

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Programar directe i personalment en PostScript, pot fer-se bàsicament dedues maneres: a partir d'un fitxer que enviem a l'intèrpret o parlant directament ambl'intèrpret. La primera opció l'anomenen treballar en batch o diferit. La segona és elmode interactiu.

Expliquem una de les possibilitats per iniciar una sessió interactiva:

Exemple 3A Cal tenir la impressora PostScript connectada a

l'ordinador a través d'un cable RS-232 (sèrie).B Engeguem un programa de comunicacions (ex. Xtalk)

procurant triar el protocol2 correcte.C Un cop connectats a la impressora escrivim:executive

el © de PostScript i l'indicatiu PS> apareixeran.D Qualsevol cosa que escrivim en aquests moments, serà

contestada per l'intèrpret.

Si es disposa d'un RIP de filmadora, molt probablementtambé tindrà disponible en alguna de les seves utilitats una opcióde "diàleg" interactiu amb l'intèrpret, anomenat executive.

Expliquem diverses possibilitats d'enviar un fitxer a l'intèrpret:

Exemple 4A Agafem el fitxer que hem creat a l'Exemple 2B Comprovem el port de comunicacions amb la impressoraC Desde DOS:

Podem enviar l'arxiu des de l'utilitat psdown3(perport RS-232), o podem enviar l'arxiu des de l'utilitat pcsend4(Per port paral.lel). També sol funcionar (no al 100%) la instrucció:

COPY "nom del fitxer" LPT1: (o COM1:, si és sèrie)Desde WINDOWS o MAC:

Podem enviar l'arxiu des de l'utilitat Windown4.1o l'utilitat PSTool4.1 o un altre que vagi incorporada amb leseines de la impressora, (mireu Eines d'Utilitat).

El Programador de PostScript té tres tipus d'avantatges davant l'ús d'unaaplicació:

1 Aprèn cada vegada més el comportament i possibilitats del llenguatge.Si aplica aquests coneixements a entorns de treball i aplicacions concretes potavaluar amb coneixement de causa l'eficiència i comportament de les eines gràfiques.

2 Millora l'eficiència del codi PostScript escrit. De forma que nomésescrivim en el programa les instruccions necessàries pel resultat desitjat. Suposa unestalvi de feina per l'intèrpret i una gran economia d'emmagatzament.

Page 9: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

9

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Aquí en tenim un exemple:

Exemple 5A Des d'una aplicació qualsevol (ex. PageMaker) fem un

cercle de 50 punts de radi situant el seu centre a 100 i 100 puntsde la part inferor esquerra de la pàgina.

B Fem una impressió PostScript a fitxer i mirem el seutamany en bytes.

C Agafem un editor de textes i escrivim el següent:newpath 100 100 50 0 360 arc closepath stroke showpageho guardem en format ASCII i mirem el seu tamany en bytes.

D Comparem el que ocupen els dos fitxers i comparem elseu temps d'impressió (imprimint els dos fitxers p.e. des d'unDriver'PS). L'únic que no ens variarà serà el resultat final.

3 Treu més profit de l'intèrpret. Superant les limitacions que qualsevolaplicació té. Ho comprovem tot seguit:

Exemple 6A Partint de l'exemple anterior (5), afegim a l'inici del

fitxer programat per nosaltres la següent instrucció:[4 2] 0 setdash

que vol dir que utilitzi un determinat tipus de línia discontínua.B Si intentem fer el mateix p.e. amb l'arxiu anterior de

PageMaker, no podrem triar aquest puntejat de línia al menú.C Imprimim el nostre fitxer *.PS i obtindrem un cercle de

50 punts de radi i amb una línia discontínua.

Independència del Dispositiu d'Impressió 1.4

Un altre del pilars fonamentals de la maquinària PostScript és la sevaindepèndència del dispositiu d'impressió. A efectes pràctics això vol dir que elnostre programa de l'exemple 5, el podrem imprimir a qualsevol giny que tingui unintèrpret PostScript® (atenció5 amb el ®). Des d'una làser de 300 ppp, passant per unafilmadora a 2540 ppp, fins un intèrpret de pantalla (Display PostScript).

Aquesta característica és la que permet treballar amb un sistema de proves(p.e. 300 ppp) i un altre d'alta resolució (p.e. 3.300 ppp) sense problemes.

Cal esmentar, però, un detall important a tenir en compte quan treballem ambaplicacions. Fa referència a la tria del tipus d'impressora PostScript que hemd'escollir abans d'imprimir un fitxer. Aquesta operació afegeix unes línies (al fitxerPostScript) de configuració (format de pàgina, efecte mirall, etc.) exclusives de laimpressora determinada que poden fer que aquest arxiu no sigui imprimible ambimpressores d'altres models i marques.

Page 10: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

10

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Veiem-ne un dels casos més característics:

Exemple 7A Agafem un arxiu gràfic d'una aplicació d'edició

qualsevol (ex. Quark) i configurem la impressió per una impressorade proves (300 ppp) que tinguem a l'abast (com pot ser qualsevolmodel LaserWriter). Imprimim el fitxer (directe6 o indirectament)i obtindrem una impressió correcte.

B Amb la mateixa configuració, imprimim (directe oindirectament) amb una filmadora (com pot ser qualsevol modelLinotype o Agfa).

C Comprovarem amb tota probabilitat que el documentno surt filmat o dóna algun altre tipus d'error.

Hem de distingir entre el cos del programa bàsic (imprimible a tot arreu) i elsafegits que hi posen les aplicacions que el configuren a un entorn d'impressiódeterminat.

Molt vinculats al tema que tractem, es troben els darrerament coneguts arxiusPPD. Adobe va crear aquests fitxers per facilitar al màxim la configuració de tots elsmodels i marques d'impressores PostScript® existents al mercat. Aprofundir en elseu comportament i manipulació excedeix el nivell d'aquest curs d'iniciació.

Portabilitat ASCII 1.5

Donem per sabut d'entrada el concepte genèric de Codi ASCIIDA1 (AmericanStandard Code for Information Interchange). Aquest és el format usual del llenguatgePostScript (per a casos molt determinats també es pot treballar en format binari).

La conclusió més inmediata d'aquest fet és que tindrem accés i podrem llegircom a text qualsevol fitxer que tingui relació amb aquest 7llenguatge . La portabilitatve donada per la total compatibilitat d'aquest format entre sistemes operatiusdiferents (DOS, Windows, System 7, UNIX, etc.), aplicacions diverses i canals detransmissió de dades (mòdems). Posem un exemple pràctic:

Exemple 8A Des de DOS: agafem un arxiu PPD i mirem pantalla

a pantalla el contingut del fitxer amb l'ordre: type arxiu.ppd|moreB Des de Windows: agafem un fitxer EPS i obrim-lo amb

qualsevol processador de textes procurant conservar el formatASCII tant a l'entrar com al sortir del programa.

C Des de Mac: agafem un arxiu PS i obrim-lo ambqualsevol processador de textes observant també de no alterar elformat original ASCII.

Page 11: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

11

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Caixa Alta i Caixa Baixa 1.6

Amb els darrers exemples, hem pogut veure que els fitxers PostScript són comllargues cartes escrites en un idioma que de moment no entenem, però quedescriuen gairebé literàriament el contingut gràfic d'una pàgina.

Anem a iniciar-nos en la sintaxi d'aquest llenguatge. Com diu el títol d'aquestapartat el llenguatge PostScript distingeix entre la caixa alta (majúscules) i la caixabaixa (minúscules) de les lletres. Es dedueix doncs que pel llenguatge curs i Curs sónparaules diferents. Val a dir que gairebé totes les instruccions del llenguatge estanescrites en minúscula. Comprovem-ho:

Exemple 9A Anem a utilitzar una instrucció bàsica del llenguatge,

escrivim: showpagel'intèrpret ens treurà una pàgina (o pantalla) en blanc.

B Tornem-li a dir variant de caixa una de les lletres,escrivim per exemple: ShowpageUn missatge ens dirà:%%[ Error: undefined; OffendingCommand: Showpage ]%%

Un altre valor a tenir en compte en la sintaxi és l'espai en blanc que actua coma separador d'objectes. Un o més espais en blanc, un o més cops de tabulador o uno més retorns de carro, per l'intèrpret equivalen a un sol espai en blanc.

La longitud d'una línia és il.limitada.

Podem barrejar el llenguatge humà en mig del llenguatge PostScript mitjançantels comentaris. El tant per cent ( % ), és el caràcter que inicia un comentari i el retornde carro (tecla Enter) és el que el tanca. Veiem-ho:

Exemple 10A Com en l'exemple anterior, suposem que treballem

interactivament amb l'intèrpret. Escrivim:% aquest es un comentari huma i l'interpret passara d'ell

B Un cop enviat l'intèrpret restarà mut.

Fixem-nos que en el text del comentari anterior no hi hem posat accents. Noels podrem utilitzar ni en els comentaris.

Page 12: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

12

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

La Pila i els Operadors .2

Abans de posar-nos a treballar de ple amb el llenguatge, farem una primeraullada a dos elements molt importants de l'anomenada maquinària PostScript.Situarem els conceptes de Pila (stack en l'argot de programació anglès) i el d'Operador.

” Els últims seran els primers ... 2.1

Si no sabeu el que és una Pila informàticament parlant, haureu de fer un esforçd'imaginació per captar-ne el sentit.

Imaginem-nos un pot d'aspirines (estret i alt) on els objectes que hi posems'apilen uns a sobre els altres. On també a mida que hi van entrant objectes el pot esva allargant i si mirem qui és el qui es prèn les aspirines, veiem que és ni més ni menysque l'intèrpret PostScript !

Conclusió: l'intèrpret s'empassa objectes PostScript, un a un mitjançant laPila, i un cop els ha mastegat ens pinta el resultat en una pàgina.

Deduïm que qualsevol cosa que entri dins la Pila és un objecte PostScript ique, tal com diu la frase bíblica que encapçala l'apartat, quan el senyor intèrpret esposa a mastegar algun objecte, comença precisament per l'últim8 que ha entrat.

Si volem parlar d'una forma tècnicament correcte hem de canviar les paraulesempassar i mastegar per executar el programa.

L'intèrpret treballa amb 4 piles simultàniament: la pila dels operants, la piladels diccionaris, la pila d'execució i la pila de l'estat gràfic. Ens interessa de momentla més important: la pila dels operants.

Per saber i entendre en tot moment que passa a la pila dels operants, no hi hacom treballar amb alguna eina on la puguem veure. PSTutor és el nom d'unprograma que actua com a intèrpret simulador de PostScript i que pel seu valordidàctic utilitzarem per la major part d'exercicis d'aquest curs.

Veiem què passa quan la pila comença a rebre objectes PostScript (ex. xifres):

Exemple 11A Des del simulador interactiu escrivim:

1 2 3 4cada objecte ve separat de l'altre amb un espai en blanc

B L'aspecte de la pila serà: 4321

Marc Antoni Malagarriga i Picas
Observar la Pila
Actualment resulta molt més fàcil treballar amb aplicacions com Ghostscript o Acrobat Distiller. Utilitzeu l'operador «pstack» per veure l'estat actual de la pila.
Page 13: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

13

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Fem-hi dues petites operacions més:

Exemple 12A Continuem escrivint des del simulador interactiu:

exchaquesta instrucció inverteix la posició dels dos primers objectes dela pila. L'aspecte de la pila serà:

B Hi afegim:popaquesta instrucció elimina el primer element de la pila. Doncs:

Mig miler d'Operadors 2.2

El operadors (operator) són les instruccions que comanden l'intèrpret PostScriptper fer-hi el que nosaltres o l'aplicació corresponent desitgi. Fins ara havíem parlatd'instruccions, a partir d'ara les masculinitzarem anomenat-les operadors.

Els operadors necessiten (segons quins) els anomenats operants (operand) perexercir la seva tasca. A l'exemple 12, les xifres 4 i 3 són els operants necessaris per quel'operador exch els pugui intercanviar i deixar-ne el resultat ( 3 i 4) a la mateixa pila.Quan no s'acompleixen les condicions per que un operador pugui treballar,l'intèrpret activa un operador d'error. Veiem-ho:

Exemple 13A Partim de la pila buida d'objectes, i escrivim:

exchcom que no té dos objectes per invertir la seva posició, l'intèrpretens contesta:%%[ Error: stackunderflow; OffendingCommand: exch]%%

El operadors poden necessitar o no operants i poden deixar o no el seu resultata la pila dels operants.

3421

421

Page 14: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

14

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Veiem 4 exemples de les quatre possibilitats possibles d'execució de dades perun operador, referents a la pila:

Exemple 14A Escrivim:

2 2L'aspecte de la pila serà:

B Operador que necessita operants i deixa el seu resultata la pila. Exemple:addSuma les dues primeres xifres de la pilaL'aspecte de la pila serà:

C Operador que necessita operants i no deixa cap resultata la pila. Exemple:popElimina el primer element de la pilaL'aspecte de la pila serà:

D Operador que no necessita operants i no deixa capresultat a la pila. Exemple:showpageImprimeix una pàgina

E Operador que no necessita operants i deixa el seuresultat a la pila. Exemple:versionEns dóna la versió de PostScript de l'intèrpretL'aspecte de la pila serà:

Versió de PostScript corresponent a un intèrpret Level 2

Al voltant de mig miler d'operadors (en Nivell 2) realitzen totes les tasques quel'intèrpret és capaç executar. Anirem veient els més importants a mida queexpliquem aquestes tasques tal com han estat classificades en el temari del curs.

Tots els operadors PostScript estan definits al Capítol 8 del PostScript LanguageReference Manual. Second Edition i a les primeres catorze planesDA2 n´hi ha un resumper categories.

22

4

(2012.017)

Page 15: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

15

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Noteu la Notació 2.3

Una altra característica sintàctica del llenguatge PostScript (si el comparemsobretot amb altres llenguatges) és l'ordre d'escriptura de l'operant/s i l'operador. Ésl'anomenada notació Post-Fix o RPN (Reverse Polish Notation). És a dir, primer elsoperant/s i després l'operador, mai a l'inrevés. En tenim una prova en els exemplesnúms. 5 i 14.

Per contra, el llenguatge no té cap mena d'estructura o jerarquia prefixada al'hora de programar. Mentre el resultat sigui el desitjat, podem ordenar la informaciódel programa com ens convingui. Tanmateix existeix un model conformat, anomenat:Document Structuring Conventions (DSC), per tal de facilitar la lectura del programai l'intercanvi d'informació entre aplicacions9 .

Cal afegir la necessitat d'incorporar al principi dels fitxers els caràcters:%!

aquest comentari facilita la impressió dels fitxers PostScript en algunes impressores.A l'hora d'imprimir els exemples d'aquest manual, s'hauria d'incloure.

Page 16: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

16

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Unitats i Espai de Coordenades .3

Per situar-nos poc a poc dins el terreny de joc, acotarem amb mides l'espai dela pàgina i n'estudiarem el comportament.

Sistema de Mesures 3.1

Per defecte i si no li diem el contrari, el llenguatge PostScript treballa sempreamb Punts tipogràfics de Pica (de tradició anglosaxona). Els que coneixen aquestaunitat de mesura saben que és lleugerament més petita que el Punt tipogràfic de Cícero Didot (de tradició llatina). Veiem una petita mostra d'equivalències:

mil·límetres punts de pica punts de cícer

10 mm 28.35 punts 26.8 punts

cada 12 punts fan 1 pica o cícer

Veiem de quina manera el llenguatge ens permet utilitzar la mesura que enssigui més familiar. Cal construir uns petits conversors d'unitats. Abans però, donemuna ullada a una nova taula d'equivalències:

punts polzades mil·límetres

1 punt 1 / 72" (valor mestre)

1" 25.4 mm

2.835 punts 1 mm

En funció d'aquesta taula d'equivalències, podem construir els conversors demesures. Definirem procediments, sota un nom literal i utilitzarem operadorsmatemàtics. Seguim l'exemple:

Exemple 15A Definim dos procediments, un per treballar en polzades

i un altre per treballar en mil.límetres:

/PoLzAdA {72 mul} defmultiplicarà per 72 i traduirà polzades a punts

/mm {2.835 mul} defmultiplicarà per 2.835 i traduirà mm a punts

Page 17: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

17

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Passem a veure funcionar les definicions de l'exemple 15:

Exemple 16A Nosaltres treballem en polzades i l'intèrpret treballa en

punts:

10 PoLzAdAmultiplicarà per 72 i traduirà les polzades a punts

l'aspecte de la pila serà:

10 mmmultiplicarà per 2.835 i traduirà els mil.límetres a punts

l'aspecte de la pila serà:

Formats de Pàgina 3.2

Un altre aspecte molt important relacionat amb les unitats de mesura són elsformats standard de pàgina. Donat que el llenguatge sempre treballa internamenten punts, els valors mestres d'aquests formats es donen només en punts. Mésendavant veurem com, per exemple, definint un A4 en mil.límetres (tal com estemacostumats) i després fent la traducció a punts, ens porta a petits errors de mesura.

Observem quins són els valors mestres, en punts, dels formats10 més habitualsde pàgina:

Standard Internacional PUNTS polzades mil·límetresA3 842x1191 11.69x16.54 297x420A4 595x842 8.27x11.69 210x297A5 420x595 5.83x8.27 148x210ISOB4 709x1001 9.84x13.90 250x353ISOB5 499x709 6.93x9.84 176x250

Standard USA PUNTS polzades mil·límetresLetter 612x792 8.5x11 215.9x279.4Legal 612x1008 8.5x14 215.9x355.6Tabloid (Ledger) 792x1224 11x17 279.4x431.8

Si agafem el valor standard d'un A4 en mil.límetres i el multipliquem per 2.835veurem que tan en amplada com en llargada no coincideix exactament amb el seuvalor mestre en punts.

720

28.35720

Page 18: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

18

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Efectes dins l'Espai 3.3

L'espai de coordenades és la pàgina. Els eixos (x,y) són dos costats (horitzontali vertical) d'aquesta pàgina. El punt d'origen (0,0) una de les cantonades del paper.Aquest és el terreny de joc on els elements tipogràfics, gràfics i d'imatge es situen.

Existeix un espai de coordenades general per tots els elements dins la pàgina.Però també podem crear un espai de coordenades propi per cada element quenecessiti una manipulació particular dins l'espai.

Existeixen quatre manipulacions sobre el comportament de l'espai decoordenades: translació, rotació, escalat i perspectivat.

L'origen de l'Espai 3.3.1

El llenguatge té com a origen de l'espai de coordenades la cantonada inferioresquerra de la pàgina. L'eix de les x es mou positivament cap a la dreta, l'eix de lesy es mou positivament cap amunt. Ho acabarem d'entendre a través del gràfic:

Tanmateix l'operador o l'aplicació pot redefinir els eixos i situar l'origen de lapàgina on més li plagui. Aquest espai que definim a través del llenguatge s'anomenaespai d'usuari (user space). Un cop el llenguatge és interpretat pel dispositiud'impressió, aquest espai es tradueix en un espai del dispositiu (device space). Perpassar d'un espai de coordenades a l'altre cada intèrpret disposa d'una matriu detransformació pròpia11 (CTM). Totes les manipulacions de l'espai alteren la matriude transformació directe o indirectament.

figura 1

Page 19: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

19

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Translació 3.3.2

L'operador translate mou l'origen de l'espai de coordenades a una novaposició dins o fora de la pàgina. El gràfic ens ho representa i l'exemple deprogramació ens ho demostra:

Exemple 17A Escrivim la lletra A (amb Helvetica 100 punts normal)

al punt 0,0 origen de l'espai de coordenades:

/Helvetica findfont 100 scalefont setfont %cridem la font0 0 moveto (A) show showpage %posem la A al punt 0,0

B Traslladem el punt d'origen 100 punts amunt (Y) i 100punts a la dreta (X):

100 100 translate %trasllada l'eix/Helvetica findfont 100 scalefont setfont %cridem la font0 0 moveto (A) show showpage %posem la A al punt 0,0

Les parts del codi de programa que encara no s'entenguin,les veurem ben aviat en els capítols següents.

Rotació 3.3.3

L'operador rotate fa girar l'espai de coordenades pel seu punt d'origen. Sil'angle és positiu gira en sentit contrari de les agulles del rellotge, si és negatiu giraa l'inrevés. Veiem-ho:

Exemple 18A Girem l'espai de coordenades 45 graus en sentit contrari

de les agulles del rellotge:

45 rotate %girem l'eix 45 graus positius

B Situem la lletra A dins aquest espai girat, a 200 puntsde l'eix de les X i a 50 punts de l'eix de les Y:

/Helvetica findfont 100 scalefont setfont %cridem la font200 50 moveto (A) show showpage %posem la A

figura 2

figura 3

Page 20: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

20

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Escalat 3.3.4

L'operador scale modifica l'escala d'unitats amb independència dels doseixos (X,Y). Jugant amb el signe (+,-) del valor d'escala podem fer imatges mirall del'espai d'usuari, tal com ens mostra la figura 1. Veiem un exemple de les duespossibilitats:

Exemple 19A Escalem l'espai de coordenades, un d'alt per dos d'ample:

2 1 scale %valors X=2 i Y=1/Helvetica findfont 100 scalefont setfont %cridem la font50 50 moveto (A) show showpage %lletra A al punt 50,50

B Desplacem cap amunt l'eix Y pel valor de totes lesunitats establertes a la CTM (matriu de transformació), invertiml'espai dels eixos per la Y i escrivim una frase per comprovarl'efecte mirall:

matrix currentmatrix %posem a la pila la CTMaload pop %descarreguem les dades de la pila0 exch translate %utilitzem el valor Y de la CTM%i donem a X el valor 0 per fer un desplaçament verticalclear %esborrem la resta de dades de la pila1 -1 scale %invertim l'escala de la Y/Helvetica findfont 100 scalefont setfont %cridem la font10 10 moveto (com esteu ?) show showpage%comprovem el mirall

Encara que part d'aquest codi sigui de més difícil comprensió,resulta imprescindible per crear un efecte mirall complet.

figura 4

Page 21: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

21

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Perspectivat 3.3.5

L'efecte de perspectivat (skewing), consisteix en crear un espai de coordenadeson els eixos tinguin un angle diferent a 90°. Hi ha dos camins per aconseguir-ho.Encadenant primer un escalat i després una rotació per aquest ordre (en aquest casl'ordre dels factors altera el producte, doncs a l'inrevés no funciona). D'una manera méstècnica i controlable, posant els valors de la tangent dels angles ααααα i βββββ (figura 5) a lamatriu de transformació (CTM).

Exemple 20A Perspectivem, primer escalant l'espai i després fent

una rotació:

2 1 scale %valors X=2 i Y=145 rotate %rotacio positiva de 45°/Helvetica findfont 50 scalefont setfont %cridem la font150 50 moveto (bona tarda) show showpage

B Perspectivem, modificant la matriu de transformació(CTM) multiplicant-la (concat) pel valor de la tangent (√3 i 1)dels angles α i β (60° i 45°) desitjats:

[1 3 sqrt 1 1 0 0] concat %multiplica la CTM10 10 moveto %posiciona el text(AEIOU) show showpage %mostra el text

Hem exagerat el fenomen per fer-lo més entenedor.

figura 5

Page 22: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

22

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Diccionaris, Procediments, Paquets i Cadenes .4

La utilització del llenguatge comporta estar familiaritzat amb un seguitd'objectes que constantment són utilitzats com a portadors d'informació. És l'aspectemés tècnic i fred de la programació. Ens hi acostarem sense que ens pugui resultar,de moment, massa carregós.

Una Biblioteca plena de Diccionaris 4.1

Totes les dades que mou el llenguatge PostScript estan definides en diccionaris.De fet tot el llenguatge està organitzat en diccionaris. Un diccionari és un objectePostScript.

El concepte de diccionari PostScript no és diferent al d'un diccionari dequalsevol idioma. Existeixen uns noms (claus) associats a la seva descripció (valors),de forma que quan en un programa cridem un nom, l'intèrpret el busca a la pila delsdiccionaris fins que el troba i el sustitueix pel seu valor dins el programa (a la pila delsoperants). Un diccionari només pot ser consultat si el tenim a la pila de diccionaris.

El diccionari userdict és el diccionari més utilitzat, de fet és el diccionari dediccionaris. Sempre és obert (lectura i escriptura) i qualsevol definició que fem s'hienregistra automàticament (sempre és a sobre de tot de la pila de diccionaris). Un petitexemple:

Exemple 21A Definim el nom Bon_Dia (clau) per una cadena de text

(valor) en llengua francesa:

/Bon_Dia (Bonjour) defla clau el valor s'arxiva a userdict

B Cridem la clau pel seu nom, però sense la barra (/):

Bon_Dia

i ens posarà el seu valor a la pila:(Bonjour)

Page 23: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

23

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

La majoria dels operadors PostScript estan descrits en un diccionari anomenatsystemdict. És un diccionari només de consulta (no s'hi pot escriure res més) que estàsempre a la disposició de l'intèrpret (sempre és a la pila de diccionaris).

Exemple 22A Cridem un diccionari i veiem quin aspecte té a la pila:

systemdict

l'objecte diccionari es posa a la pila:

Les fonts són també diccionaris, en les seves pàgines hi han descrits tots elscaràcters i els seu comportament quan s'han de composar. El nom Times-Romancorrespon al nom del diccionari de la font Times normal. En podríem dir també queés el seu nom PostScript.

Els programadors i les aplicacions poden crear els seus propis diccionarisposant-hi les definicions que utilitzaran durant l'execució del programa.

Exemple 23A Definim un diccionari12 PostScript com si fos un

diccionari d'idiomes Català-English i English-Català:

/Catala-English&English-Catala 2 dict defnom del diccionari crea un diccionari

per 2 entrades

Catala-English&English-Catala begincridem el diccionari pel seu nom ens obre el diccionari

i el posa a sobre de totde la pila de diccionaris

/esmorzar (breakfast) defnom de la clau valor el definim al diccionari/breakfast (esmorzar) def

Cridem una de les claus i n'obtindrem el valor:

esmorzar

L'aspecte de la pila serà:

-dictionary-

(breakfast)

Page 24: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

24

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Procediments 4.2

S'anomena procediment (procedure) al paquet d'objectes comprès entre elssímbols { ... i ... }. Un procediment es construiex per ser executat (llegit per l'intèrpret)en un moment determinat. Aixó ho podem fer mitjançant un nom que el defineixio a través de l'operador exec. Exemple de procediment que suma dues xifres i lesdivideix per 2:

Exemple 24A Definim el procediment sota un nom:

/miTja { add 2 div } defnom suma les dues primeres xifres divideix per 2

B Posem dues xifres a la pila i cridem el procediment:

4 3 miTja

El resultat de la pila serà:

Paquets anomenats Arrays 4.3

S'anomena paquet o array (en versió anglesa original) el grup d'objectescompresos entre les dues marques [ ... i ... ]. Un paquet es construeix per transportaro agrupar diversos objectes en un de sol. Si en el contingut del paquet hi ha algunobjecte executable, aquest s'executa immediatament. Seguim pas a pas la formaciód'un paquet i el seu aspecte a la pila dels operants:

Exemple 25A Obrim el paquet amb la marca corresponent i posem 3

objectes:

[ (hola) /Clau 1994marca cadena de text nom literal nombre enter

L'aspecte de la pila serà:

1994/Clau(hola)-mark-

3.50

Page 25: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

25

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Exemple 25 (continuació)B Posem tres objectes més al paquet que siguin executables

i tanquem amb la marca corresponent:

5 4 mul ]dues xifres multiplica tancament del paquet

La pila tindrà un sol objecte:

Cadenes dites Strings 4.4

S'anomena cadena13 o string (en versió anglesa original) de text al grup decaràcters compresos entre els símbols ( ... i ... ). S'anomena cadena hexadecimal algrup de caràcters hexadecimals compresos entre els símbols < ... i ... >. Les cadenesde text són les portadores del text escrit quan, per exemple, des d'una aplicaciótreballem amb tipografia. Les cadenes hexadecimals s'utilitzen, per exemple, coma portadores d'informació en la descripció d'una imatge digital. Dos petits exemples:

Exemple 26A Imprimim una cadena de text:

/Times-Roman findfont 40 scalefont setfontdefinim la font Times a cos 40

50 300 movetoposicionem el punter gràfic

( Llenguatge PostScript ) showtext a imprimir

showpageimprimeix la pàgina

B Exemple de cadena hexadecimal portadora d'informaciód'una imatge digital:

<08417f1818fe8282>

[ (hola) /Clau 1994 20 ]

Page 26: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

26

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

l'Estat Gràfic .5

S'anomena estat gràfic al conjunt de paràmetres (de tipus gràfic) que l'intèrpretPostScript té configurats en un moment donat per treballar. Si som a l'inici d'unasessió amb l'intèrpret, s'anomenen paràmetres per defecte. Els paràmetres per defectesón lleugerament diferents per cada tipus intèrpret (dispositiu d'impressió).

Els principals paràmetres que configuren l'estat gràfic són: punt actual, nivellde gris, color, trama, font actual, gruix de línia, acabament de línia, guionat de línia, tipusd'enllaç entre dues línies, màxima punxa permesa en l'enllaç de dues línies, situació de l'eixde coordenades i camí actual.

Per canviar temporalment algún dels paràmetres de l'estat gràfic, preservantl'estat gràfic original, podem utilitzar dues parelles d'operadors: save - restore i/ogsave - grestore.

La parella d'operadors save - restore preserven tot el contingut, existent en unmoment donat, de la memòria virtual14 (VM). En ella també hi ha inclòs l'estat gràfic,per tant els operadors gsave i grestore hi van implícits.

La parella d'operadors gsave - grestore preserven només els valors de l'estatgràfic en un moment donat.

Podem veure una mostra de la seva utilització:

Exemple 27A Fem dos cercles omplerts amb un 20% de color:

.8 setgray % seleccionem un 20% de color100 100 50 0 360 arc fill % primer cercle ple un 20%250 250 50 0 360 arc fill % segon cercle ple un 20%showpage

B Fem el mateix aillant l'estat gràfic del primer cercle:

% el 100% de color es el valor "per defecte" de pintatgsave % salva l'estat grafic actual.8 setgray100 100 50 0 360 arc fill % primer cercle ple un 20%grestore % restableix l'estat grafic anterior250 250 50 0 360 arc fill % segon cercle ple un 100%showpage

figura 6

Page 27: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

27

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Construcció de Camins .6

Per entendre correctament el concepte de camí (path en l'argot anglès) enllenguatge PostScript podem utilitzar la idea de l'esbós amb llapis. Imaginem quesempre que tracem qualsevol forma sobre una pàgina la dibuixem primer ambllapis. Un cop dibuixada la forma amb llapis decidim què fem a l'hora de passar-hoen net: podem resseguir el traç amb un retolador d'un gruix i color determinat,podem només emplenar la forma (si està tancada) o agafar les tisores per retallar-lai fer-la servir de màscara.

L'intèrpret PostScript dibuixa sempre un camí (amb llapis) com a pas previ al'utilització de qualsevol eina gràfica (passar-ho en net). Aparellat amb el concepte decamí tenim el que s'anomena punt actual de situació del punter traçador (currentpoint en l'argot del llenguatge).

Un camí és format per successius trams de línies i/o corves diverses, connectadeso no, formant àrees o creuant-se amb d'altres camins. Per situar una mica totsaquests conceptes anem a veure, en un exemple progressiu, la utilització d'unmateix camí per a tres usos diferents:

Exemple 28A Definim sota un nom i en un procediment un camí

quadrat de 100 punts de costat:

/CamiQuadrat % nom del procediment{ 0 100 rlineto % cami (y) linial A

100 0 rlineto % cami (x) linial B0 -100 rlineto % cami (y) linial Cclosepath % tanca el cami (x) linial D

} def % queda definit al diccionari actual

B Utilitzem el camí per traçar-ne el perfil:

100 100 moveto % situa el primer punt X, del camiCamiQuadrat % dibuixa el cami quadratstroke % traça el cami actual amb el gruix i color per defecteshowpage % imprimeix la pagina

C Utilitzem el camí per omplir:

100 100 moveto % crea el punt actualCamiQuadrat % dibuixa el cami quadratfill % omple el cami actual amb el color per defecteshowpage % imprimeix la pagina

A C

B

DX(100, 100)

figura 7

Page 28: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

28

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Exemple 28 (continuació)

D Utilitzem el camí per retallar una màscara:

100 100 moveto % crea el punt actualCamiQuadrat % dibuixa el cami quadratclip % retalla el cami i crea una mascara buida de dins/Helvetica findfont 200 scalefont setfont % triem la tipografia85 85 moveto (A) show % posicionem la lletra Ashowpage % imprimeix la paginaA

figura 7

Page 29: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

29

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Gràfics Primitius: Línies, Arcs i Corbes Bezier .7

Anomenem gràfic primitiu, al traç elemental de construcció d'una forma. Commés complexe sigui una forma, més elements primitius tindrà. Noteu que estemparlant de formes en sentit abstracte (altra cop el concepte de camí), sense concretar maisi van resseguides, omplertes o retallades. En aquest capítol explicarem els treselements gràfics primitius que el llenguatge PostScript manipula.

Situar el Primer Punt 7.1

Aquest és un detall elemental però indispensable per colocar qualsevol tipusd'element gràfic en general (tipografia, imatges, etc.) i els primitius en particular. Perdefecte, en l'estat gràfic, no existeix cap punt dins l'espai de coordenades. Per agafarel punter gràfic i situar un primer punt dins l'espai de coordenades cal utilitzarl'operador moveto.

Un punt en l'espai (no entenguem pas un punt d'imatge !) és el primer elementque inicia un camí (path). Veiem tot seguit un exemple on primer situem un punt,fem una comprovació, esborrem aquest punt i també ho comprovem:

Exemple 29A Situem un punt en l'espai de coordenades

300 400 movetovalor d'X valor d'Y mou-te al punt indicat

B Comprovem amb l'operador currentpoint que el puntactual a l'espai és 300, 400:

currentpoint % demana la situació del punt actual (darrer)pstack % ensenya tot el contingut de la pila sense alterar-la

C Per mitjà de l'operador newpath anulem el camíexistent, ho comprovem demanant amb currentpoint la situaciódel punt actual:

newpath % esborra el cami existent i en prepara un de noucurrentpoint % demanem quin es el punt actual%% [ Error: nocurrentpoint;OffendingCommand: currentpoint ] %%% com que no hi ha punt actual, activa l'error corresponent

Page 30: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

30

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

El recte camí 7.2

Dos operadors: lineto i rlineto són els constructors de camins rectes entre dospunts. Per treballar, necessiten tenir situat un punt actual. El punt actual, semprepodem comprovar si existeix mitjançant l'operador currentpoint (exemple 29). Tracemi resseguim diversos camins rectes independents i un altre de tancat:

Exemple 30A Tracem 4 camins rectes independents i els resseguim

amb gruixos de línia creixents:

50 400 moveto % punt actual2 setlinewidth % triem el gruix de linia450 400 lineto % tracem el primer cami rectestroke % resseguim el cami amb el gruix triat

50 350 moveto % punt actual6 setlinewidth % triem el gruix de linia450 350 lineto % tracem el segon cami rectestroke % resseguim el cami amb el gruix triat

50 300 moveto % punt actual12 setlinewidth % triem el gruix de linia450 300 lineto % tracem el tercer cami rectestroke % resseguim el cami amb el gruix triat

50 250 moveto % punt actual24 setlinewidth % triem el gruix de linia450 250 lineto % tracem el quart cami rectestroke % resseguim el cami amb el gruix triat

showpage % imprimeix la pagina

B Tracem un camí tancat en forma de triangle rectangleutilitzant coordenades relatives:

16 setlinewidth % triem el gruix de linia1 setlinejoin % triem un enllaç de linies arrodonit50 50 moveto % punt actual0 300 rlineto % tracem una linia Y relativa de 300 punts300 -300 rlineto %linia relativa diagonal avallclosepath % tanquem el camistroke % resseguim el cami amb el gruix triatshowpage % imprimim

Page 31: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

31

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Arcs i Arcs 7.3

Tenim diversos operadors per tractar l'arc (arc, arcn, arct i arcto). Lesprincipals aplicacions del primitiu arc són: com a segment d'un cercle, enllaçant duestangents o com a cercle complet. Anem a veure com treballa en cada una d'elles:

Exemple 31A Tracem un segment d'un cercle sense aillar el traçat del

camí del centre de la circumferència:

100 100 moveto % punt actual inici del nou cami100 100 % centre del gir de la circumferencia200 % longitud del radi0 45 % inici i final de l'angle a descriurearc % traça l'arc segons els darrers 5 operantsclosepath % tanquem el cami amb una linia fins el centrefill % omplira el cami amb el 100% de colorshowpage

B Tracem un arc amb les seves dues tangents, és a direnllacem dues línies amb un arc:

100 100 moveto % punt actual inici del nou cami A% inici de la primera tangent

300 100 % punt de creuament de les tangents X200 300 % final de la segona tangent Z50 % radi r de l'arcarcto % traça el cami arc de punt a punt tangent B i C

% segons les dades dels darrers 5 operants% deixa a la pila els valors de B i C

200 300 lineto % continuem el cami fins el punt final Zstroke % resseguim tot el cami descritshowpage

figura 8

Page 32: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

32

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Exemple 31 (continuació)

C Tracem un cercle de línia discontínua en el sentit de lesagulles del rellotge:

5 setlinewidth % triem el gruix de linia[10] 0 setdash % triem una linia discontinua200 200 % situacio del centre100 % valor del radi360 0 % angles d'inici i finalarcn % descriu un arc negatiustroke % ressegueix amb els valors escollitsshowpage

Corbes Franceses 7.4

Bezier és el nom d'un enginyer francès que va descriure matemàticament eltraçat de corbes irregulars. Les corbes Bezier són una de les funcions de dibuixespectaculars dels programes de grafisme electrònic. La representació per pantallad'aquest tipus de corbes (p.e. Corel Draw) s'adiu amb tota fidelitat a la seva descripciópel llenguatge PostScript. Els operadors curveto i rcurveto necessiten els mateixospunts de control (A, B, C i D) que qualsevol programa de disseny gràfic ens treu perpantalla:

A

B

C

D

figura 9

Page 33: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

33

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

La corba de la figura 9, traçada des de Corel Draw, té la següent descripció:parteix del punt A, descriu una corba tangent al segment A-B continua amb unaaltra corba tangent al segment C-D i acaba al punt D. L'exemple següent en descriuuna de similar des del llenguatge:

Exemple 32

A Típica corba Bezier:

100 200 moveto % punt A d'inici de la corba-cami125 0 % punt B de control400 400 % punt C de control425 200 % punt D final de corba-camicurveto % pren B, C, D i descriu una corba Bezierstroke % ressegueix amb els valors per defecteshowpage

Page 34: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

34

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Emplenadors i Màscares .8

Passem a definir un nou paquet de recursos del llenguatge PostScript quenecessiten prèviament l'ús dels camins i els gràfics primitius.

Anomenarem emplenadors a tots aquells recursos que el llenguatge utilitzaper omplir l'àrea d'un camí tancat.

Anomenarem màscares a tots aquells recursos que el llenguatge utilitza pertapar o retallar, total o parcialment, l'àrea d'un camí tancat.

Emplenadors i màscares tenen gran quantitat de combinacions possibles. Perclarificar i entendre el seu ús, cal fixar-se en quatre conceptes fonamentals que se'ndesprenen:

És Obert o Tancat 8.1

Davant el traçat d'un camí, tant si és creat per una aplicació com si ésprogramat per nosaltres, hem de saber si és obert o tancat. Només si és tancatpodrem omplir-lo o retallar-lo.

El concepte d'obert o tancat ens acosta també a un altre element: el node. Elpunt d'enllaç entre segments (gràfics primitius) diversos d'un camí, s'anomena node.A les aplicacions gràfiques, els nodes, es representen de forma molt didàctica com apetits quadrats que encerclen el punt d'unió entre segments gràfics.

figura 10

1

2

4

3

NODES

Page 35: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

35

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

A la figura 10, veiem clarament 4 nodes, dos dels quals enllacen 3 segmentsgràfics i els altres dos són a l'inici i al final del trajecte. El sistema de representacióés similar per a totes les aplicacions gràfiques.

Només quan els nodes d'inici i final de camí queden lligats tenim una àreatancada. Les aplicacions són molt estrictes en aquest concepte i molts cops encaraque dos nodes coïncideixin en el mateix punt hem d'invocar per menú el seu enllaç.Programant directament amb el llenguatge tancar i omplir un camí determinat potno tenir gaires protocols. Veiem un exemple de construcció ràpida d'un triangle:

Exemple 33

/trngl { 0 1 rlineto 1 0 rlineto } def% definim amb linies relatives un angle recte d' 1x1 punt50 50 moveto % punt actual inicial100 100 scale % multipliquem per 100 l'escalatrngl % cridem el procedimentfill % ens tancara per la diagonal i ens omplira el triangleshowpage

És Ple o Buit 8.2

Tres són els operadors que treballen amb els conceptes de Ple i Buit:

stroke És un operador de Buit. No omple mai cap interior ( o exterior ).Ressegueix el camí actual amb els valors de gruix i color indicats.Té diversos operadors15 derivats.

fill És un operador de Ple i Buit a la vegada.Porta implícit tancar un camí amb una línia si aquest és obert.Omple segons el concepte de Dins o Fora.Si triem un 0% de color omplirem amb blanc.Té diversos operadors16 derivats

clip És un operador de Ple i Buit la vegada.Porta implícit tancar un camí amb una línia si aquest és obert.Fa de màscara (retalla) segons el concepte de Dins o Fora.Té diversos operadors17 derivats.

Page 36: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

36

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Exemple de com veure els marges màxims d'impressió a l'inici d'una sessió ambl'intèrpret, ajudats per l'operador stroke:

Exemple 34

clippath % activa el cami actual dels marges d'impressiostroke % ressegueix el cami actualshowpage

Veiem el mateix exemple 33 amb una petita variant com s'inverteix el conceptede Ple i Buit:

Exemple 35

clippath % activa el cami mes exterior/trngl { 0 1 rlineto 1 0 rlineto } def% definim amb linies relatives un angle recte d' 1x1 punt50 50 moveto % punt actual inicial100 100 scale % multipliquem per 100 l'escalatrngl % cridem el procedimenteofill % ens tancara per la diagonal% i ens omplira l'exterior el triangleshowpage

Sóc a Sobre o a Sota 8.3

En generadors gràfics de tipus CAD el treball per capes constitueix un delsrecursos més utilitzats en l'estratègia de construcció del dibuix. El treballar en capesassocia dos conceptes fonamentals: l'agrupar objectes gràfics diversos en un de sol (lacapa) i el concepte de a Sobre o a Sota (ordre de les capes).

En llenguatge PostScript, podem treballar amb aquesta estratègia (enprogramació) sense limitacions. Pel que fa a les aplicacions, dependrà de lescaracterístiques de cada programa.

La propietat dels objectes gràfics de ser a Sobre o a Sota, depèn de l'ordre en quel'intèrpret els posa sobre la pàgina. L'ordre de col.locació va de baix a dalt. Si volemque un objecte vagi a Sota el cridem abans del que vulguem que vagi a Sobre. Veiem-ho clar amb l'exemple que segueix:

Page 37: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

37

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Exemple 36

A Definim tres objectes de text amb nivells de grisosdiferents:

/Helvetica findfont 200 scalefont setfont % triem la font

/u { % inici del procedimentgsave % salvem l'estat grafic100 100 moveto % posicionem la col.locacio(1) show % xifra amb un 100% de colorgrestore % restaurem l'estat original

} def % final del procediment i ho definim al diccionari

/dos { % inici del procedimentgsave120 120 moveto.7 setgray % triem un 30% de color(2) showgrestore

} def % final del procediment i ho definim al diccionari

/tres { % inici del procedimentgsave145 145 moveto.3 setgray % triem un 70% de color(3) showgrestore

} def % final del procediment i ho definim al diccionari

B Experimentem qui tapa a qui, cridant els objectes endiferents ordres:

u % es a sota de totdos % es al migtres % es a sobre de totshowpage % imprimeix

dos tres u showpage

tres u dos showpage

Page 38: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

38

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Sóc a Dins o a Fora 8.4

Aquest apartat va completament lligat amb el concepte de Ple i Buit que jahem vist anteriorment en l'apartat 8.2. Dues són les regles que determinen quan unpunt a l'espai, envoltat d'un camí, es troba a Dins (suceptible d'esdevenir Ple) o a Fora(esdevé Buit).

Tenim en primer lloc la regla del No-Zero (Nombre de Voltes Diferent de ZeroNon-Zero Winding Number Rule). El procés per realitzar el test és el següent:

A Situem el punt que volem saber si és Dins o Fora i el camí o camins actualsque l'envolten.

B Tracem una recta en qualsevol direcció que surti del punt determinat itravessi el dibuix per complet.

C Començant a comptar de zero, cada vegada que un camí travessi la nostrarecta d'esquerra a dreta n'afegirem un, cada vegada que travessi de dreta aesquerra (ens referim a la direcció de construcció del camí) en treurem un.

D Si el resultat és diferent de zero el punt és a Dins, si és zero és a Fora.

En segon lloc hi ha la regla de Parells i Senars (Even - Odd Rule). El procés perrealitzar el test és el següent:

A Situem el punt que volem saber si és Dins o Fora i el camí o camins actualsque l'envolten.

B Tracem una recta en qualsevol direcció que surti del punt determinat itravessi el dibuix per complet.

C Comptem el nombre de vegades que la nostra recta és travessada per uncamí.

D Si el nombre és senar (imparell) el punt es a Dins. Si és parell és a Fora.

La regla del No-Zero i la de Parells i Senars es comporten de la mateixamanera quan les formes del camí són senzilles. El seu comportament varia a mesuraque les formes es compliquen.

Tant l'emplenador fill com el retalla màscares clip, utilitzen per defecte la regla delNo-Zero. La regla de Parells i Senars (Even-Odd Rule) s'invoca a voluntat a travésd'operadors com eofill o eoclip.

Page 39: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

39

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

En l'exercici que segueix podrem veure com l'operador fill es comporta d'unamanera o d'una altra (segons la regla del No-Zero) en funció del sentit que segueixenels camins que estan implicats en l'ompliment:

Exemple 37

A Dibuixem i omplim dues circumferències, una dinsd'una altra, traçant el camí dels dos perímetres en el mateix sentit:

300 200 175 0 360 arc% dibuixa una circumferencia gran% en sentit contrari a les agulles del rellotge

300 200 125 0 360 arc% dibuixa una circumferencia mes petita% en sentit contrari a les agulles del rellotge

fill % omple els dos camins segons la regla del No-Zeroshowpage

B Dibuixem i omplim dues circumferències, una dinsd'una altra, traçant el camí dels dos perímetres en sentits contraris:

300 200 175 0 360 arc% dibuixa una circumferencia gran% en sentit contrari a les agulles del rellotge

300 200 125 360 0 arcn% dibuixa una circumferencia mes petita% seguint el sentit de les agulles del rellotge

fill % omple els dos camins segons la regla del No-Zeroshowpage

Page 40: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

40

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Tipografia: fonaments i composició .9

La tipografia constitueix, més pel seu comportament que per la seva naturalesa,tot un món diferenciat dins el conjunt de la maquinària PostScript. Les fonts (cada unade les variants d'una família tipogràfica) no són res més que formes gràfiques que escaracteritzen per estar associades a caràcters de l'escriptura. En els apartats quesegueixen fem un recorregut pels aspectes més importants d'aquest món particular.

Radiografia d'una Font 9.1

El contingut d'una col·lecció tipogràfica (ja sigui en disquets magnètics, en formatòptic o al disc dur d'una impressora), és format per arxius de fonts. Un per cada variantd'estil dins la mateixa família tipogràfica.

Cada arxiu de font és un programa escrit en llenguatge PostScript. Aquestprograma un cop carregat dins l'intèrpret (impressora) es converteix en un objecte detipus diccionari. Una font, és i treballa com un diccionari PostScript.

Per veure com està feta una font hem d'agafar-la, i com a diccionari que és, hemd'obrir les seves pàgines per llegir les principals definicions que hi estan escrites.Anem a l'exemple pràctic:

Exemple 38

A Posem a la nostra disponibilitat el diccionari de la font:

/Courier % nom PostScript de la font tipograficafindfont % busca dins l'interpret el nom anterior

Un cop ha trobat el dicionari de la font, el posa sobre la piladels operants com un objecte més:

B Obrim el diccionari per poder-hi llegir:

begin % obre el diccionari

Estem en disposició d'explorar el diccionari de la font

-dictionary-

Page 41: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

41

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Continuant on ens hem quedat a l'exemple 38, començarem l'exploració de lafont llegint el contingut de les principals definicions que composen el diccionari:

Clau Valor

FontType 0 1 3 Definició Obligatòria

Ens diu de quin tipus de font es tracta. Existeixen tres categories de fontstipogràfiques:

Fonts Bàsiques. El valor de FontType és 1. Es tracta de les fonts quenormalment comercialitzen les empreses tipogràfiques (Agfa, Linotype, ITC, Letraset,etc.) sota el nom de Adobe Type 1. Estan en un format empaquetat no visible (encriptat).També poden ser generades per una aplicació (Fontographer, CorelDraw, etc.).

Fonts Definides per l'Usuari. El valor de FontType és 3. Són les fonts quenormalment es construeixen a través d'una aplicació (Fontographer, Publishers TypeFoundry, Font Monger, etc.). Tenen la mateixa estructura que les de tipus 1, però el seuformat és completament transparent (ASCII).

Fonts Compostes. El valor de FontType és 0. Com el seu nom indica estan fetesd'un conjunt de fonts bàsiques que es combinen entre elles. Les fonts d'escripturaXinesa i Japonesa tenen aquesta naturalesa. També hi pertanyen les anomenadesMultiple Master Fonts, basades en l'accés a diverses variants tipogràfiques (pertanyentsa la mateixa família) des d'una sola font.

Clau Valor

FontMatrix [ 0 0 0 0 0 0 ] Definició Obligatòria

Conté la matriu de transformació per l'espai de coordenades de la font. Leslletres disposen del seu propi espai de coordenadesDA3 , diferenciat de l'espai decoordenades de la pàgina. L'espai de coordenades de la font té un valor d'altura (cosde la lletra) d'una unitat, és a dir d'un punt tipogràfic. Un multiplicador escala l'espaide coordenades de la lletra, ajustant el cos a la mida desitjada. Veiem un exempleon es manipula directament la matriu de transformació de la font per obtenir unalletra condensada:

Exemple 39

/Courier findfont % posa el diccionari de la font a la pila[ 50 0 0 100 0 0 ] makefont setfont %multiplica les X %multiplica les Y100 100 moveto(Estic prima) showshowpage

Page 42: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

42

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Clau Valor

FontInfo -dictionary- Definició Opcional

Conté un diccionari amb definicions de contingut informatiu. Per exemplel'entrada Notice ens diu de qui és el copyright de la font, o l'entrada isFixedPitch queinforma si l'espaiat (pitch) de la lletra és fix o proporcional.

Clau Valor Definició Obligatòria

Encoding [ paquet amb els noms indexats dels caràcters ]

Paquet de 256 noms (indexats de 0 a 255) de contingut variable segons la col.leccióde caràcters que haguem triat per treballar. El llenguatge té com a col·lecció base, unjoc de caràcters anomenat StandardEncoding. En aquest joc només tenen nom propi149 caràcters. Alguns noms propis de caràcter són: ampersand (&), ccedilla (ç),Ntilde (Ñ), etc. Els caràcters sense nom propi reben el nom de: .notdef, és a dir nodefinits.

Situats dins del paquet Encoding, el número d'índex (ordre) de qualsevolcaràcter de l'abecedari (excloent els caràcters accentuats), el dels nombres ( 0 ... 9 ) i l'índexde la majoria de signes de puntuació, coincideix amb el número decimal assignat dinsla taula del codi ASCIIDA4 . Per exemple el caràcter A té el valor 65 a la taula ASCII ia la taula Encoding.

La taula anomenada StandardEncoding Encoding VectorDA5 ens dóna els codisdels caràcters bàsics en octal, o sigui en base 8. Tot el que l'intèpret llegeix entre elssignes de cadena ( ... ) i < ... > ho transforma a codi decimal (codi ASCII) directament.Veiem un exemple de com utilitzar la taula StandardEncoding:

Exemple 40

A Escriurem el text aEiOu utilitzant simultàniament elcodi octal de StandardEncoding i codi hexadecimal:

/Courier findfont 100 scalefont setfont50 100 moveto(\141\105\151\117\165) show% codi octal dels caracters aEiOu50 200 moveto< 61 45 69 4f 75 > show% codi hexadecimal dels caracters aEiOushowpage

Page 43: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

43

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Clau Valor

FontBBox [ x y XY ] Definició Obligatòria

Conté les coordenades: inferior esquerra X, inferior esquerra Y, superior dreta X,superior dreta Y, corresponents al perímetre de la caixa de la font (font bounding box)comptat amb unitats de l'espai de coordenades de la font. El perímetre de la caixa dela font és el resultat de posar tots els caràcters de la font coincidint en el mateix orígeni encerclar-los en una caixa el més petita possible. Aquesta informació és utilitzadaper l'intèrpret sobretot a l'hora d'imprimir la font diverses vegades en un document.

Clau Valor Definició donada per l'Intèrpret

FID - identificatiu numèric-

Podríem dir que és el número de sèrie de la font, assignat per l'intèrpret através de l'operador definefont. Existeixen dues maneres més de complementaraquest número de sèrie, són les entrades UniqueID i/o XUID, assignades perl'aplicació o el programador que generi la font. Hem de dir que aquestes numeracionspoden generar problemes si coincideixen en fonts diferents.

Clau Valor

PaintType 0 2 Definició Obligatòria

Ens indica si el perfil (camí) de la lletra és traçada o plena. Si el valor és 0, vaplena. Si el valor és 2, va traçada. Veiem com només amb aquest petit canvi podenalterar el comportament de pintat d'una font:

Exemple 41

A Demanarem primer quina mena de PaintType té la fonti després li canviarem:

/Courier findfont begin % entrem al diccionari de la fontPaintType % cridem la clau per que ens dongui el valor== % ens ensenya i elimina el valor que ha posat a la pila% segurament el valor sera 0 (ple) li canviarem a 2 (traçat)end % sortim del diccionari de Courier/Courier findfont % posem el diccionari de Courier a la pila/PaintType 2 put % canviem el valor de PaintType a 2/Courier findfont 200 scalefont setfont50 100 moveto (Buida) show% comprovem que ara tenim una font traçadashowpage

Marc Antoni Malagarriga i Picas
Exemple 41 Millorat...
/Courier findfont begin % entrem al diccionari de la font PaintType % cridem la clau per que ens dongui el valor == % ens ensenya i elimina el valor que ha posat a la pila % segurament el valor sera 0 (ple) li canviarem a 2 (traçat) end % sortim del diccionari de Courier /Courier findfont % posem el diccionari de Courier a la pila % si treballem amb una copia la font es deixara modificar dup length dict begin {1 index /FID ne {def}{pop pop}ifelse}forall /PaintType 2 def % canviem el valor de PaintType a 2 currentdict end /CourierBuida exch definefont pop % definim la copia modificada % cridem la copia /CourierBuida findfont 200 scalefont setfont 50 100 moveto (Buida) show % comprovem que ara tenim una font tra‡ada showpage %%EOF
Page 44: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

44

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Clau Valor

StrokeWidth 0 Definició Opcional

Indica el gruix del traç (en unitats de coordenades de caràcter) en fonts dePaintType 2. Per defecte el valor és 0, o sigui que pinta en el gruix més prim que és capaçde traçar el dispositiu d'impressió.

Clau Valor

Metrics -dictionary- Definició Opcional

Informa, caràcter a caràcter, de la mètrica de la font. La mètrica de la font lacomposen bàsicament:

L'amplada del caràcter (character width)El punt d'orígen del caràcter (character origin)El marge esquerre del caràcter (left side bearing)La caixa del caràcter (bounding box)

Totes aquestes dades són en unitats de coordenades caràcterDA6 . Una de lesinformacions bàsiques que es desprenen de la mètrica de la font, és el sentit del'escriptura. Segons els valors dels eixos de coordenades podrem treballar amb alfabetsd'escriptura IndoEuropea (d'esquerra a dreta), alfabets d'escriptura Aràbiga (de dreta aesquerra) o alfabets d'escriptura Xinesa-Japonesa (de dalt a baix).

Clau Valor

CharStrings -dictionary- Definició Obligatòria

És el diccionari on hi han associats el nom del caràcter amb la descripció gràficadel seu contorn. La descripció gràficaDA7 no és res més que un procediment { ... } onhi han definits els operadors gràfics necessaris per construir el camí del contorn de cadalletra, sempre mesurat en unitats de coordenades de caràcter. Val a dir que en aquestdiccionari s'hi troben les descripccions gràfiques de tots els caràcters, que estiguindisponibles o no és cosa del paquet Encoding.

Page 45: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

45

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Breu ullada al Comportament 9.1.1

Farem un recorregut sintètic del comportament d'una font tipogràfica, des queés carregada a l'intèrpret, fins que s'imprimeix a la pàgina.

CARREGAR UNA FONTTots sabem que en un entorn de treball PostScript existeixen unes fonts

permanents que resideixen de forma fixa dins l'intèrpret (ROM, Disc Dur, etc.) i unesaltres de carregables que a través de les aplicacions gràfiques o amb manejadorsd'impressió es poden carregar a la memòria RAM (VM). Tant en un cas com en l'altreel programa de la font (diccionari) és emmagatzemat per mitjà de l'operadordefinefont dins un diccionari anomenat FontDirectory, que conté la col·lecció detots els diccionaris de fonts disponibles. Aquest, a la vegada, resideix dins eldiccionari general systemdict. Observem l'esquema de l'exemple:

Exemple 42

A Ens fiquem pas a pas de diccionari en diccionari finsarribar on es troba la font resident:

systemdict % posem el diccionari general a la pilabegin % entremFontDirectory % diccionari del directori de fonts{ == == } forall % treu tots els parells clau/valor a la pila/H -dictionary- % resultat del simulador PSTutor/Helvetica -dictionary- % resultat d'un interpret normal

CRIDAR UNA FONTTant treballant amb aplicacions com en programació manual, és l'operador

findfont el que realitza la tasca de localització del diccionari de la font (mirant siexisteix a FontDirectory) i ens el posa a la pila. Podem repassar l'exemple 38 percomprobar un cop més aquest fet.

ESCALAR UNA FONTUn cop tenim a la pila el diccionari de la font, és quan utilitzarem normalment

l'operador scalefont per donar el valor del cos a tots els caràcters de la fonttipogràfica. L'operador scalefont es limita a multiplicar la unitat (el cos inicial d'unafont és d'un punt de pica) pel valor d'alçada (cos) que haguem decidit donar-li, fentuna còpia amb l'escala alterada del diccionari de la font original. Aquest operadortreballa de forma similar a l'exemple 39, manipulant la controladora de coordenadesFontMatrix, però sempre mantenint una relació proporcional (1:1) entre els eixos decoordenades de la font.

Page 46: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

46

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Exemple 43

A Escrivim una línia de codi PostScript que ja coneixem:

/Helvetica findfont % cridem el diccionari de la font100 scalefont % escalem el diccionari a 100 punts% el diccionari resultant es una copia de l'original

FER DISPONIBLE UNA FONTL'operador setfont s'encarrega d'aquesta tasca. Agafa el diccionari de la font

(que és a la pila dels operants) amb la nova escala i el posa com a valor per defecte del'Estat Gràfic. Esdevé la font actual a punt per ser utilitzada. Empalmem de nouamb l'exemple 43 per comprovar-ho:

Exemple 44

A Fem de l'Helvètica a cos 100, la font actual i tot seguitho comprovem:

/Helvetica findfont 100 scalefont% cridem el diccionari de la font i l'escalem a cos 100setfont % agafa el diccionari i el posa a l'Estat Grafic% esdevé font actual utilitzablecurrentfont % posa a la pila el diccionari de la font actualbegin FontName % entrem i demanem el nom

Page 47: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

47

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Maquinària de Composició 9.2

Coneixent de forma general com està feta una font, podrem entendre millor lestècniques que utilitza el llenguatge PostScript per composar text amb precisió. Jocsde caràcters, justificats, control d'espais entre paraules i l'anomenat kerning (espaientre lletres) són tasques que demanen molta exactitud i càlcul. El llenguatge dónales eines necessàries per que aplicacions i programadors utilitzin el sistema de treballque més els agradi.

Jocs de Caràcters 9.2.1

Els paquets de fonts es comercialitzen amb els caràcters de tots els païsosdibuixats (CharStrings). Són els programadors o les aplicacions els que posen, total oparcialment, el joc de caràcters necessari a disposició de l'usuari. Aquesta operaciós'anomena codificat de la font (Character Encoding).

El codificat d'una font és una operació de llenguatge, força llarga i delicada,que se surt de nivell per explicar-la en detall en aquest manual. En donarem, però,una breu descripcció per entendre millor aquest important procés:

A Quan una font és carregada a l'intèrpret, el joc de caràcters que normalmentté disponibles són els que dicta la taula StandardEncoding. Aixó significa que himanquen tot tipus de caràcters accentuats i algúns d'especials com Ç o Ñ.

B El paquet Encoding és qui determina, en una font, el joc de caràcters que tédisponibles. A Encoding, tal com hem vist a l'apartat 9.1, es relacionen els noms delscaracters disponibles amb el seu número d'índex (parcialment coincident amb la taulaASCII).

C L'operació de codificat comença fent una còpia idèntica de la font (carregadaa l'intèrpret) que es vol recodificar. Es copien totes les entrades del diccionari de la fontmenys l'anomenada FID. Aquesta entrada és la que porta el número de sèrie queadjudica automàticament l'intèrpret quan la dóna d'alta (carrega).

D A la còpia de la nova font li entrarem un nou paquet Encoding, amb la llistade noms (p.e. segons la taula Standard Roman Character Set) ordenats per l'índexcorrecte: [ 0 ... /agrave /aacute /acircumflex ... 255 ].

E Bategem amb un nom nou la còpia de la font i la carreguem a l'intèrpret(donar d'alta) per mitjà de l'operador definefont. Aquest li assigna automàticamentun nou número de sèrie (FID) i ja és a punt per ser utilitzada.

Page 48: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

48

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Cinc Operadors 9.2.2

Bàsicament són cinc els operadors PostScript que controlen un treball tanhabitual com és la composició de textes.

L'OPERADOR showÉs l'operador bàsic de composició de text. Els altres operadors de composició es

deriven del seu comportament. Encara que l'exemple 40 il·lustra molt bé comfunciona, explicarem pas a pas el mecanisme que utilitza show per imprimir una A.

Exemple 45

( A ) show

l'intèrpret sempre transforma el caràcter queapareix entre (... cadena ...) al seu valorASCII decimal. Segons aquesta taula elcaràcter A té el codi 65.

65

Busca en el diccionari de la fontel paquet Encoding

-diccionari de la font-

Agafa el valor 65 i l'utilitza coma índex comptador fins que trobael nom que s'hi correspon

/Encoding [ 0 1 2 ... 65/A ... 255 ]

Busca al diccionari CharStringsel nom /A

/CharStrings

Quan troba el nom /APosa a la pila el procedimentper dibuixar la lletra A

/A { dibuixa la lletra A }

Dibuixa a la pàgina la lletra Asegons els paràmetres de l'EstatGràfic: situació a la pàgina, fontactual, estat de coordenades, etc.

A Deixa el proper punt d'orígen

Page 49: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

49

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

L'OPERADOR ashowAfegeix o resta una quantitat determinada d'unitats a l'amplada o alçada d'un

caràcter per determinar el punt d'orígen del proper caràcter a imprimir. S'utilitzasobretot per forçar justificats de paraules (sobretot titulars) en un espai determinat.

Exemple 46

A Primer escriurem la paraula Ample de forma normal:

/Helvetica findfont 100 scalefont setfont% seleccionem la font100 100 moveto % posicionem(Ample) show % composem normalment

B Després escriurem més amunt la mateixa paraula ambun espaiat d'ample (eix de les x) extra:

100 225 moveto % posicionem mes amunt20 0 (Ample) ashow% composem amb 20 punts d'espai extra entre lletresshowpage

L'OPERADOR kshowCompara seqüencialment de 2 en 2 els caràcters d'una cadena de text avaluant,

segons un procediment { ... }, la necessitat d'afegir o treure espai entre els caràcters.Com el seu nom indica es tracta d'un operador que controla el kernig de les lletres osigui, el seu espaiat. Existeixen unes taules de mètrica i compensació visual deparells de caràcters propis per cada família tipogràfica.

Exemple 47

A Decidim reduir l'espaiat entre la parella u i e, peraquest ordre, de forma que constitueixin un caràcter lligat:

/Times-Roman findfont 100 scalefont setfont% seleccionem la font100 100 moveto % posicionem{ 101 eq { 117 eq {-19 0 rmoveto} if } if }% busca la parella ue pel seu codi decimal% si la troba mou 19 punts d'X negatius l'origen de e(Blues) kshow % cridem l'operadorshowpage

Page 50: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

50

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

L'OPERADOR widthshowActua de forma similar a ashow però només sobre un caràcter determinat.

Identifiquem el caràcter sobre el que volem actuar mitjançant el seu valor decimal(ASCII) o el seu valor octal (StandardEncoding).

Exemple 48

A Escriurem una frase amb el seu espaiat normal:

/Times-Roman findfont 75 scalefont setfont% seleccionem la font10 225 moveto % posicionem(Hola bon dia !) show % composem normalment

B Donarem un espaiat extra únicament al caràcter de"l'espai en blanc" :

10 100 moveto % posicionem de nou40 0 % adjudiquem 40 punts d'X extres32 % valor ascii del caracter espai(Hola bon dia !) widthshow % cridem l'operadorshowpage

L'OPERADOR awidthshowCombina conjuntament les característiques dels operadors ashow i widthshow.

S'usa sobretot per controlar en una sola operació l'espai entre lletres i paraules.

Exemple 49

A Partim del resultat de l'exemple 48:

10 100 moveto % posicionem40 0 32 (Hola bon dia !) widthshow % operador anterior10 10 % posicionem de nou40 0 32 % valor extra d'espaiat per l'espai en blanc7 0 % valor (x, y) extra d'espaiat per tots els caracters(Hola bon dia !) awidthshow % cridem l'operadorshowpage

Page 51: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

51

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Agoritmes de Justificació i d'Interliniat 9.2.2.1

Tots els operadors de composició de text que hem vist anteriorment necessitenajudar-se d'uns processos de control de l'espai. Jugant amb les dades d'inici de líniai llargada màxima de la línia podrem definir les nostres prioritats alhora decomposar quantitats de text amb precisió.

Un procediment que ajusti obligatoriament el text a un inici i a un final de líniaens oferirà una caixa a dues bandes (justificat). Un procediment que obligui el text ainiciar-se al principi de línia i deixi aleatori el final de línia (encara que amb un màximpermès) ens donarà una caixa a l'esquerra (bandera dreta). Contràriament si l'obligaciórecau en justificar el text al final d'una línia deixant aleatori el principi (també ambuna amplada màxima permesa) estarem davant un procediment de caixa a la dreta(bandera esquerra). També el centrat del text força la justificació de la línia pel centre,deixant l'inici i el final a un criteri aleatori.

Els anomenem en un principi procediments per que són ordres de llenguatgeenglobades entre { ... i ... }. Si aquests procediments tenen capacitat de càlcul s'anomenenalgoritmes18.

Pel que fa al càlcul de l'interliniat suposa una operació de posicionament verticalrelativament senzilla. En l'exemple que segueix construirem un típic controladord'interliniat:

Exemple 50

/cos 80 def % definim el valor del cos del text/Times-Roman findfontcos % triem la font cridant el valor de cosscalefont setfont/interli { cos 120 mul 100 div} def% aquest procediment actua com a calculador de l'interliniat% agafa el valor de cos i en calcula el 120 %100 200 moveto % punt d'inici de la primera linia(Primera linia) show % primera linia100200 interli sub % restem a Y el valor de l'interliniatmoveto % posicionem el nou punt d'origen(Segona linia) show % segona liniashowpage

Page 52: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

52

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Efectes i Acrobàcies 9.3

Les fonts tipogràfiques, com a objectes PostScript, poden esdevenirprotagonistes de manipulacions gràfiques diverses. Les aplicacions existents al mercatja ens hi tenen acostumats. Farem un seguiment de les més significatives reforçadesamb exemples.

Efectes amb Emplenadors i Màscares 9.3.1

OMPLIR UNA LLETRAHem vist que una gran majoria de fonts tipogràfiques són, per defecte, plenes

d'un 100% de color negre. Aquest condicionant és fàcilment variable establint, perexemple, un canvi de tant per cent d'aquest mateix color a l'estat gràfic.

Exemple 51

/Helvetica findfont 200 scalefont setfont.95 setgray % triem un 5% de color, negre, per defecte% el valor de gris va de 0 (negre) a 1 (blanc)10 50 moveto(Gris) show % text a emplenarshowpage

PERFILAR UNA LLETRAÉs una modificació una mica més elaborada. Cal recordar que sempre estem

modificant, a través de l'estat gràfic, una còpia de la font (una còpia del diccionari).Utilitzarem el camí de contorn que construeix la lletra per traçar-lo amb un gruixdeterminat.

Exemple 52

/Helvetica findfont 200 scalefont setfont6 setlinewidth % triem un gruix de 6 punts2 setlinecap % triem un acabament de linia quadrat10 50 moveto(Gruix) % text a perfilarfalse charpath % activem el cami de cada caracterstroke % tracem amb el gruix triat els camins seleccionatsshowpage

Page 53: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

53

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

LA LLETRA COM A MÀSCARAProcediment idéntic al traçat, però canviem el traçador pel retallador. Retallar

vol dir buidar, tal com hem vist al capítol 8. Deixarem l'interior d'un text buit (retallat)i posarem unes línies radials per sota.

Exemple 53

/Times-Roman findfont 250 scalefont setfont/raigs { % inici i nom del procediment de traç de liniesnewpath % comencem un nou cami91 % nombre de linies o repeticions{ 0 0 moveto 600 0 lineto stroke % traça 1 linia1 rotate % rotacio d'un grau de l'eix de coordenades} repeat % ordre de repeticio del procediment { ... }} def % guardem el procediment al diccionarinewpath % iniciem un nou cami10 10 moveto % posicionem el text a retallar(Llum) true charpath clip % retallem el cami del text% l'espai retallat esdevindra l'espai disponible a la pagina0 setlinewidth % triem el gruix mes prim disponibleraigs % cridem els raigsshowpage

Acrobàcies amb l'Espai de Coordenades 9.3.2

TREBALL PER CAPESPer mitjà d'uns desplaçaments de l'eix i la sobreposició de capes succesives,

podem aconseguir efectes interessants de degradat del text. Aquest treball permúltiples capes hem de tenir en compte que consumeix força recursos de memòria enqualsevol intèrpret.

Exemple 54

/Helvetica findfont 100 scalefont setfont/gol { % inici i nom del procediment del text a degradar0 0 moveto (GOL) show % posa el text a l'inici de l'eix} def % guardem el procediment al diccionari100 100 translate % traslladem l'eix un tros endins.95 -.05 0 % inici, increment i final del degradat{ setgray gol 2 1 translate } % pinta GOL en un % i traslladafor % executara el procediment { ... } per cada increment1 setgray gol % al final pinta un GOL en blancshowpage

Page 54: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

54

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

TÍPICA ROTACIÓ POSTSCRIPTÉs un dels exemples d'ús del llenguatge que més s'han vist en tot tipus de

publicacions. Tal com veurem en l'exemple es tracta d'una rotació repetida d'un textperfilat i buit on finalment hi sobreposem un text ple de blanc per que destaqui sobrela resta.

Exemple 55

/Helvetica findfont 40 scalefont setfont/PS { % inici i nom del procediment del text a rotar0 0 moveto % posicionat del text al punt 0, 0(PostScript) false charpath stroke % text perfilat} def % tanquem i guardem el procediment200 200 translate % traslladem l'eix de coordenadesgsave18 { PS 20 rotate } repeat% executem 18 cops PS rotant 20 graus cada vegadagrestore0 0 moveto % posicionem(PostScript Language) true charpath % activem el camigsave 1 setgray fill grestore % omplim de blancstroke % perfilem de negreshowpage

TEXT ADAPTAT A CORBESLa dificultat d'aquest efecte depèn de la complexitat de la corba i de la precisió

en la col·locació del text. Un arc sempre té menys dificultat que una corba Bezier.En tots els casos el càlcul de col·locació s'ha de fer per cada un dels caràcters que s'hagid'adaptar a la corba. En l'exemple que segueix donem per pre-calculat l'angle decol·locació de cada caràcter i ens limitem a situar una xifra sobre un arc.

Exemple 56

/Times-Roman findfont 100 scalefont setfont300 150 translate 53 rotate % traslladem i rotem l'eix[1 9 9 4] % paquet amb el text a imprimir{ 2 string cvs % posem en una cadena ( ... )0 150 moveto show % situem el text-30 rotate } % un cop posat el text rotem l'eix negativamentforall % executem { ... } per cada element del paquetshowpage

Page 55: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

55

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Les Fonts i les Aplicacions 9.4

Les aplicacions gràfiques que treballen amb tipografia utilitzen les fonts pera dos canals de sortida: impressora i pantalla. Treballar amb fonts PostScript dónala possibilitat d'unificar aquests dos canals de sortida mitjançant l'intèrpret depantalla i l'intèrpret d'impressora. D'aquesta manera assegurem un 100% decorrespondència (wysiwyg) entre el que es veu per pantalla i el que treiem perimpressora.

El Display PostScript19 és un intèrpret per pantalla que abarca tots els àmbitsdel llenguatge (igual que qualsevol intèrpret d'impressora). l'Adobe Type Managertambé és un intèrpret de pantalla però només cobreix l'àmbit de les fonts20tipogràfiques. Aquests productes a l'hora de treballar amb lletres, treuen la informaciódel mateix fitxer (p.e. en DOS/Windows: *.PFB) que la impressora, d'aquí la sevafidelitat.

Quan un entorn de treball no disposa de cap intèrpret PostScript de pantalla,ha d'utilitzar les anomenades fonts de pantalla per obtenir una representacióaproximada de la tipografia que està utilitzant. Les fonts de pantalla són fontsconstruïdes com una imatge (bit-map) i es necessita un fitxer per cada tamany delletra que es vol utilitzar. Normalment com que tenir una fitxer per cada cos de lletraseria execessiu, es passa amb tres o quatre fitxers de tamanys esglaonats. Aquestaés una de les raons de l'efecte dent de serra quan mirem o treballem en cossos de lletrad'una certa magnitud.

Les aplicacions utilitzen uns fitxers de control mètric de les fonts PostScriptanomenats Adobe Font Metrics. En DOS i Windows aquests fitxers porten l'extensió*.AFM. S'utilitzen per facilitar dades pel càlcul en la composició de text, tant per lapantalla com per la impressora.

Hi han aplicacions (utilitats) que serveixen exclusivament per gestionar lacàrrega i descàrrega de fonts a les impresores PostScript. Generalment també podenconsultar el directori de fonts carregades i enviar a imprimir arxius PostScript (*.ps).

Finalment parlarem dels drivers d'impressió (Mac i Windows) que realitzentasques similars a les aplicacions esmentades anteriorment, però que bàsicamentgestionen la impressió dels fitxers PostScript directament a una impressora o guardatsen un arxiu. Pel que fa a la tipografia, una de les principals avantatges dels driversactuals (Adobe Printer Driver) consisteix en poder incloure totes les fonts queutilitzem dins el document PostScript d'impressió.

Incloure la tipografia dins el fitxer d'impressió té moltes més avantatges queinconvenients, sobretot si treballem en col·laboració amb empreses d'impressió ifilmació de documents. S'eviten tot tipus de problemes derivats de la manca de fonts,canvis de noms, fabricants diferents, etc. L'únic petit inconvenient és que el fitxerocupa més espai al disc, de l'ordre de 50 K per font inclosa.

Page 56: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

56

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

És interessant saber identificar en un fitxer PostScript on s'inclou cada font.El seu aspecte és prou característic, comprobem-ho amb l'exemple:

Exemple 57

%%BeginFont: Futura-Bold%!PS-AdobeFont-1.0: Futura-Bold 001.001%%CreationDate: Tue Jul 7 16:43:391987%%VMusage: 1264 26869•% Copyright (c) 1987 Fundicion TipograficaNeufville S. A.This record % material and the data recorded thereon is the propert•yof Fundicion %Tipografica Neufville S. A. and Adobe Systems Incorporated, or its %licensors, and may notbe reproduced, used, displayed, modified, disclosed % ortransferred in any manner without the express written approval of % FundicionTipogra•fica Neufville S. A. and Adobe Systems Incorporated. %Futura is a registeredtrademark of Fundicion Tipografica Neufville S.A.FontDirectory/Futura-Boldknown{/Futura-BolDfindfont/UniqueIDget8863 eq{savetrue}{false}ifelse}{false}ifelse11 dictbegin•/FontInfo 10 dict dup begin/version (001.001)readonly def/Notice (Co-pyright (c) 1987 Adobe Systems Incorporated. All rightsreserved.Futura is a registeredtrademark of Fundicion Tipografica Neufville S. A.) readonlydef/Copyright ( Co-pyright (c) 198•7 Fundicion Tipografica Neufville S. A. This record materialand thedata recorded thereon is the property of Fundicion Tipogr•afica Neufville S. A. andAdobe Systems Incorporated, or its licensors, and may not be reproduced, used,displayed,modified,• disclosed or transferred in any manner without the expresswritten approval of Fundicion Tipografica Neufville S. A. and Adobe SystemsIncorporated. ) readonly def/FullName (Futura Bold) readonly def/FamilyName(Futura) readonly def/Weight (Bold) readonly def/ItalicAngle 0 def/isFixedPitch falsedef/UnderlinePosition -150 def/UnderlineThickness 75 defend readonly def/FontName/Futura-Bold def/Encoding StandardEncoding def/PaintType 0 def/FontType 1 def/FontMatrix [0.001 0 0 0.001 0 0] readonly def/UniqueID 8863 def/FontBBox{-171-264 1441 1070}readonly defcurrentdictendcurrentfile eexec5D9019DEFD1C3ABC2E04D323862D978108E42A8CC86274E9AA0FBA2D3B388A7CD0CB3160FEE780622CB36C1E7F789AA933324251AB4BC8520477D7EAD370CA089F0C91695A7845F6870800235A8D66E60F29A286B21BEC1C7388AB40A58FD697AC60CC559AAEDF1F46948166B28D478CCE98A00F5A5A907D287049371916F88B6F379324713DE7500C814B7F6C4BE7FD083CFC90B3E5F1DE456D0D3E7113FD80C77E9CD47FD98B9FB26542F433A4B51A4E07D833D09A2349 25709BC9 . . .. . .. . .. . .. . . A450CB2E9B8C529C0B4B686C0EAAAFFCE1515CC987C2DB748BA99BD172E4FF7834996179804BA3D50E2C96C9A1A4C85032241BA39255E28FE4CFC36B1DB0902DB0ADE7C9058AB825A0C1F9776D0026177E21945E26FF3A677F1B9D855530A684ECD234FEF5CFBA529E4C0A74F03B347DA63827A35894FAD89FA03258CDA36DFB6B1E1C89E64DE15897036F169D32EA692798466F26D271B9448A9D2A16A8DC3B4D8535BAC61F02496D4C4500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cleartomark {restore}if%%EndFont

Nom PostScript de la Font

Cap

çale

ra q

ue in

dica

l'in

ici d

e la

Fon

t

Milers de caràcters encriptats més

Comentari que indica el final de la Font

Page 57: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

57

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Les Trames: fonaments i manipulacions .10

La tècnica del tramat consisteix en imitar determinats tons de color per mitjàd'un conjunt de petites mostres d'un altre to de color/s. Per exemple: amb el colornegre imitem els tons de gris, amb els colors groc i cyan imitem tons verds, etc.

Un dels usos més corrents de la tècnica del tramat és la reproducció defotografies amb tècniques d'impressió offset. Tant en blanc i negre com en color l'úsde les trames permet adaptar-se als diferents sistemes de reproducció, oferint alhoraun ampli ventall de possibilitats creatives.

Cel·les versus Píxels 10.1

La trama la formen petites mostres de color, cada una d'aquestes petitesmostres és el que anomenem punt de trama. El punt de trama pot tenir formesdiverses (cercle, quadrat, el·lipse, línia, etc.).

El punt de trama es situa a l'espai dins una graella de cel·les quadrades. Cadacel.la genera un punt de trama. La freqüència de les cel·les quadrades per unitat(polzades o centímetres) és la que ens dóna el valor de freqüència de trama. L'anglede gir d'aquestes cel·les près des de l'horitzontal és la que ens dóna l'angulació dela trama. Observem la següent radiografia d'un punt de trama:

Exemple 58

cel·la amb punt píxelsde trama circular

angle de trama

(1,1)

(1,-1)(-1,-1)

(-1,1)

10 45 dot

pixelcount = 1139truedx = 0.0624993, truedy = 0.0true angle = 0, true frequency = 2.25

Marc Antoni Malagarriga i Picas
ShowTheCell, Tom Bernard
Aquesta simulació de com treballa una cel·la de punt de trama ha estat generada amb el codi PS ShowTheCell, de Tom Bernard, publicada a «Real World PostScript» de Stephen F. Roth (vegeu Bibliografia).
Page 58: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

58

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Per formar el punt de trama, com qualsevol altre objecte gràfic, el dispositiud'impressió el construeix a base de punts anomenats píxels (picture elements). Elnombre de píxels possibles per cada punt de trama dependrà principalment de laresolució del dispositiu d'impressió i la freqüència de trama escollida (línies detrama per unitat o grandària del punt de trama). D'una forma menys apreciable (alvoltant del 2%) també dependrà de l'angle de trama escollit.

El nombre de pixels per punt de trama (cel·la) és el que determina la capacitatque té una trama per a descriure grisos (matisos de color). Passem a un exemple perveure sobre la pràctica tots aquests conceptes:

Exemple 59

A Partim d'un dispositiu d'impressió amb una resolucióde 300 x 300 ppp (píxels per polzada)

B Amb una freqüència de trama de 150 cel·les (línies) perpolzada i zero graus de rotació, tindrem el següent tipus de cel·la:

300 ppp a 150 lpp21 = una cel·la de 2x2 píxels

0 % 25 % 50 % 75 % 100%1 setgray .75 setgray .50 setgray .25 setgray 0 setgray

C El nombre de nivells de gris que la nostra trama podràdescriure respon al següent raonament:

Nombre de píxels x cel·la + 1 = Nivells de gris4 + 1 = 5

D Encara hi cap una altra formulació interessant:

Nivell de gris x Píxels x cel·la = Píxels en Blanc.75 x 4 = 3

Es dóna per bo que l'ull humà no és capaç de distingir entre més de 256 nivellsde grisos (matisos d'un mateix color). Aquesta és també la limitació posada pelllenguatge PostScript (Nivell 1) en els algoritmes de tramat.

Saber destriar correctament entre el concepte de cel·la (punt de trama) i el depíxel és fonamental per una correcta comprensió de la mecànica del tramat(Halftoning) PostScript.

Page 59: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

59

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

L'operador setscreen 10.2

Si ens centrem en el mecanisme de tramat PostScript (Halftoning), hemd'estudiar el comportament de l'operador setscreen. És l'operador bàsic22 pergenerar una trama en qualsevol dels components de color que utilitzem.

Abans que res i sempre que treballem amb trames PostScript, hem de tenirpresents els següents preceptes fonamentals:

A Són un valor de l'estat gràficB Depenen del dispositiu d'impressió que utilitzemC No afecten a l'espai d'usuari (matriu de transformació CTM)

Exemple 60

A Ser un valor de l'Estat Gràfic significa ser un valor"per defecte" i per tant existent a l'iniciar una sessió en qualsevoldispositiu d'impressió:

% l'operador currentscreen ens dira la trama "per defecte"% que hi ha posada a l'iniciar la sessio

currentscreen

B Cada dispositiu disposa d'una trama "per defecte"òptima i adequada a la resolució d'impressió. Per tant l'operadorcurrentscreen tindrà resultats diferents segons l'apliquem a un oaltre tipus de dispositiu:

% Dispositiu Apple LaserWriter Pro 630 (600 ppp)85 45 { ... spot function ... }freqüència angle tipus de punt de trama% Dispositiu Acrobat Distiller60 0 { ... spot function ... }freqüència angle tipus de punt de trama% Dispositiu PS Tutor20 45 { ... spot function ... }freqüència angle tipus de punt de trama

C L'aspecte de la trama no varia, malgrat modifiquemalgun paràmetre de la CTM, per exemple l'escala:

.5 setgray % omplirem un cercle amb un 50% de trama100 100 50 0 360 arc fill showpage.5 setgray 2 2 scale % ara variem l'escala al doble100 100 50 0 360 arc fill showpage% el cercle ha doblat la seva mida pero la trama no

Marc Antoni Malagarriga i Picas
Exemple 60 Millorat...
A partir de PostScript2, les trames també poden estar definides per mitjà de diccionaris. Per exemple amb un Acrobat Distiller 6, la interrogació amb «currentscreen» donaria com a resultat... -dict- 45 60 ... on -dict- és el diccionari de trama i els altres dos valors corresponen a l'angle i la freqüència de trama. Treballant amb Nivell 2 i 3, hauriem d'utilizar, millor, la crida «currenthalftone», que ens retornaria el -dict- amb tota la informació de trama.
Page 60: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

60

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Per crear una nova trama, l'operador setscreen necessita tres paràmetres:freqüència linies de trama per unitat, expressada en línies per polzada (lpi)

angle angle de rotació de la trama respecte l'eix, descrit en grausfunció del punt procediment per definir la forma del punt

setscreen selecciona la nova trama

Freqüència 10.2.1

És el paràmetre que més influeix en l'aspecte final de la trama. Compta elnombre de files de cel.les (línies de trama) que hi han per polzada (també es potmesurar en centímetres). Aquest paràmetre determina la mida del punt de trama i pertan determina la capacitat de descripció de grisosDA8 que tindrà el tramat escollit.Completant el que ja hem explicat a l'exemple 59, veurem un exercici pràctic(simulador PSTutor) de modificació de la freqüència de trama existent:

Exemple 61

currentscreen % demanem quina trama te el dispositiul'aspecte de la pila serà:

spot functionanglefreqüència

3 -1 roll % posem la dada frequencia sobre la pilal'aspecte de la pila serà:

freqüènciaspot functionangle

pop 5 % esborrem la frequencia 20 i posem 53 1 roll % posem la nova frequencia al seu lloc

l'aspecte de la pila serà:

spot functionanglefreqüència

setscreen % escollim la nova trama.5 setgray % triem un 50% de color100 100 50 0 360 arc fill % dibuixem un cercle pleshowpage

{ /sf }4520

20{ /sf }

45

{ /sf }455

Marc Antoni Malagarriga i Picas
Exemple 61 Millorat...
En un intèrpret de Nivell2, l'exemple funcionaria igual de bé, però l'aspecte de la pila seria una mica diferent... -dict- 45.0 20.0 ... si treballessim amb «currenthalftone», per canviar la freqüència de trama, hauriem de fer... currenthalftone dup /Frequency 5 put setthalftone
Page 61: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

61

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Angle 10.2.2

El factor angle ens determina la rotació del conjunt de cel·les que formen latrama respecte a l'eix de coordenades de la pàgina (CTM). En impressores a baixaresolució (p.e. 300 ppp), el valor de l'angle queda condicionat per la freqüència detrama establerta. Això vol dir que una cosa és l'angle que demanem per soft i l'altrel'angle real que ens farà la impresora.

En descripció de color per quadricromia, l'angle triat per cada separació de colorés determinant per la qualitat final de la reproducció. Tots aquests paràmetres tenenunes configuracions per defecte adaptades a cada tipus d'impressora ( p.e. a travésdels arxius PPD). Aplicarem la mateixa tècnica del exemple anterior (simuladorPSTutor) per modificar l'angle de trama:

Exemple 62

currentscreen % demanem quina trama te el dispositiul'aspecte de la pila serà:

spot functionanglefreqüència

exch % posem l'angle sobre la pilal'aspecte de la pila serà:

anglespot functionfreqüència

pop 0 % esborrem l'angle 45 i posem 0exch % posem la nova frequencia al seu lloc

l'aspecte de la pila serà:

spot functionanglefreqüència

setscreen % escollim la nova trama.5 setgray % triem un 50% de color100 100 50 0 360 arc fill % dibuixem un cercle pleshowpage

{ /sf }4520

45{ /sf }

20

{ /sf }020

Marc Antoni Malagarriga i Picas
Exemple 62 Millorat...
... si treballessim amb «currenthalftone», per canviar l'angle de trama, hauriem de fer... currenthalftone dup /Angle 0 put setthalftone
Page 62: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

62

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Funció del Punt 10.2.3

Anomenada tècnicament en anglès Spot Function, té un objectiu molt clar:fabricar i donar forma al punt de trama. El que ja no és tan clar és el seufuncionament. M'explicaré:

Es tracta d'una funció que interroga un a un els píxels de la cel·la d'un puntde trama, segons la posició que tinguin dins l'espai de la cel·la, la funció del punt(spot function) els hi assignarà un valor entre 1 i -1. Aquest valor serà la prioritat quetindrà cada píxel al moment de ser pintat per construir el punt de trama. Tot aixòdóna com a resultat una determinada tendència en la forma del punt de tramaDA9.Són possibles tota mena de formes: la línia, el punt, el quadrat, una hèlix, etc.

Voleu una explicació més divertida? Aquí teniu en versió original com descriul'Spot Function el programador Bill Woodruff (un dels autors de Cricket Draw) :

"The spot function is a bartender in a seedy little watering hole called The HalftoneCell where pixels go after work. The light is dim, the hooch strong, the music digital and loud.Pixels come here'cause they know there's good chance they'll get turned on"

Intentem conservar l'humor i la imaginació passant a un exemple pràctic:

Exemple 63

A Definim 5 tipus de punt de trama (funció de punt):

/FAtriangle {{ 2 exch sub exch abs 2 mul sub 3 div }

} bind def/FAquadrat {

{ 180 mul cos exch 180 mul cos add 2 div }} bind def

/FAlinia {{ pop }

} bind def/FAhelix {

{ /y exch def /x exch def /theta y x .001 add atancvi def theta 72 mod 72 sub abs 72 div y y mulx x mul add 1 exch sub add 2 div }

} bind def/FAel.lipse {

{ dup 5 mul 8 div mul exch dup mul exch add sqrt 1 exch sub }

} bind defcontinua ...

Page 63: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

63

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Exemple 63

B Per poder veure bé la forma del punt de trama, escollimprimer una freqüència de trama ben baixa i deprés afegim el nomde la funció de punt que volguem experimentar:

5 % frequencia de trama de 5 linies per polzada

45 % angle de la trama

FAhelix % funcio de punt a experimentar

setscreen % selecciona els parametres de trama

.5 setgray % nivell de gris adequat per obsevar el punt250 250 150 0 360 arc fill % tramem un cercleshowpage

Observem un dels resultats possibles a la figura 11.

figura 11

Marc Antoni Malagarriga i Picas
Exemple 63 Millorat...
... si treballessim amb «currenthalftone», per canviar la freqüència i la funció del punt de trama, hauriem de fer... currenthalftone dup dup /Frequency 5 put /SpotFunction FAhelix put setthalftone
Marc Antoni Malagarriga i Picas
Figura 11
Aquesta figura és fruït d'una captura de pantalla del simulador PostScript PSTutor. Treballant directament amb una impressora o un altre simulador, els nivells de qualitat serien ben diferents.
Page 64: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

64

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Funcions de Calibrat 10.3

Per un òptim comportament de les trames cal ajustar en cada dispositiud'impressió la relació entre freqüència, angle i tipus de punt de trama. El factorresolució és el que mana. Però encara no n'hi ha prou. La maquinària PostScriptdisposa d'una mena de filtre o calibrador de nivell de gris23 anomenat en anglèstècnic transfer function, que es controla a través de l'operador settransfer. Cadavegada que l'intèrpret utilitza un nivell de gris (amb l'ús dels operadors setgray oimage) aquest passa pel filtre de la funció de calibrat.

És un paràmetre de l'estat gràfic, per tant és sempre actiu i podem saber el seuvalor a través de l'operador currenttransfer. La seva principal utilitat, sobretot endispositius a més baixa resolució, és com a funció d'ajustament entre el nivell de grissol·licitat a la impressora i el que realment ens imprimeixDA10 . D'una forma més subtiltambé pot actuar en el control de la sensació de gris (densitat), per exemple en ladescripció de degradats. També s'utilitza per produir negatius. És en aquesta funcióque, per la seva simplicitat, el veurem actuar en l'exemple:

Exemple 64

A Demanarem a l'intèrpret que ens posi la funció decalibrat sobre la pila:

currenttransfer

== % visualitzem el seu contingut

{ } % molts interprets tenen per defecte% una funcio de calibrat buida

B Eliminem l'actual funció de transferència i en preparemuna que resti de 1 el valor del nivell de gris (entre 0 i 1), o sigui quenegativi tots els valors de nivell de gris:

pop % eliminem de la pila la funcio actual{ 1 exch sub } % nova funcio de transferencia (negativa)

% resta de 1 el nivell de gris (entre 0 i 1)settransfer % donem d'alta la nova funcio

% utilitzem els objectes definits a l'exemple 36dos u tres copypage % imprimim sense eliminar la pagina{ } settransfer % tornem a una funcio de calibrat buida150 150 translate % nou punt d'origen de l'eixu dos tres % tornem a imprimir els tres objectesshowpage % fem la impressio definitiva

Marc Antoni Malagarriga i Picas
Funció de Transferència Nul·la
O amb un -null- a dins... {-null-}
Page 65: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

65

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

El Color, fonaments i manipulacions .11

El color és un valor afegit en tots els objectes gràfics PostScript, tret de lesimatges. No hi ha cap objecte gràfic del tipus: corba, recta, arc, trama o fonttipogràfica que intrínsicament en el mateix procés de construcció dugui cap menad'informació de color.

Les imatges en color (p.e. producte d'una digitalització) sí que duen la informacióde color lligada intrínsicament a la seva construcció (ho veurem en el proper capítol).No es pot destriar de la naturalesa de l'objecte imatge, la forma del color.

El color és un valor més de l'estat gràfic (vegeu capítol 5). El llenguatgePostScript el contempla d'una manera àmplia i altament elaborada. Parlar de colorPostScript és parlar d'Espais de ColorDA11 .

En la darrera ampliació del llenguatge (PostScript Nivell 2), l'apartat del colorha estat un dels més millorats. En el diagrama que segueix veurem quins són elsEspais de Color que contempla el llenguatge PostScript, els operadors que hi estanrelacionats i a quins nivells de llenguatge estan disponibles:

TIPUS I UTILITATS DELS NOM I NIVELL PRINCIPALS OPERADORS

ESPAIS DE COLOR POSTSCRIPT QUE HI SÓN RELACIONATS

SÍNTESI ADDITIVA DeviceRGB* setcolor*RODA DE COLOR setrbgcolorSistemes de Vídeo Nivell 1 sethsbcolorReproductors CRT image

colorimage*espais de colordepenents d'un SÍNTESI SUBSTRACTIVA DeviceCMYK* setcolor*dispositiu Reproducció Quadricromia Dispositius de setcmykcolor*

color a Nivell 1 imageNivell 2 colorimage*

BLANC I NEGRE DeviceGray* setcolor*Reproducció Monocrom setgray

Nivell 1 image

espai de color CIE ESPAI TRIDIMENSIONAL CIEBasedABC*(independència del O LINIAL DE MESURA Nivell 2 setcolor*dispositiu de reproducció) I CORRECCIÓ DEL COLOR image

SEGONS LA PERCEPCIÓ CIEBasedA*DE L'ULL HUMÀ Nivell 2

PER SEPARACIONS DE COLOR Separation* setcolor*espais de color Nivell 2 imageespecials PER TAULES DE COLOR Indexed* setcolor*

Nivell 2 imagePER INDIANES Pattern* setcolor*

Nivell 2 imagemask

Page 66: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

66

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

En el diagrama anterior, els noms i operadors seguits d'un asterisc (*) sónpropis només del PostScript Nivell 2. Donarem també per sabudes les teories delcolor additiva (de Llum o RGB) i sustractiva ( Quadricromia o CMYK ), doncs seran lesque centraran bàsicament la nostra atenció. Dit això, cal que tinguem en compte unprecepte fonamental a l'hora de treballar en color:

• Tots els colors PostScript tapen.

Per tant els efectes, com les transparències o la mescla de colors, seranmanipulacions posteriors del llenguatge. Això ho veurem més detalladament de lamà dels espais de color, que ens faran de guies en el nostre recorregut pelsfonaments del color PostScript.

L'espai de Color Acromàtic 11.1

És l'espai que va del blanc al negre en un màxim de 256 intèrvals (que és ellímit de nivells de gris tolerats pel llenguatge). Són els únics colors (blanc - grisos -negre)que hem vist aplicats fins ara en els exemples del temari i per tant ja coneixemuna mica el seu funcionament.

En el mercat hi han instal.lats molts més dispositius d'impressió PostScript enblanc i negre que en color, per tant és l'espai de color i sistema de reproducció mésutilitzat. Encara que un dispositiu d'impressió doni els seus resultats en blanc i negre,pot treballar internament en color. Un procés de conversió transforma el color alseu nivell de gris corresponent (ex. filmadores de fotòlits). En l'apartat 11.5 treballaremmés detalladament aquest procés.

L'espai de color acromàtic (blanc - grisos - negre) existeix en tots els dispositiusPostScript, tant per tipus de tecnologia utilitzada (ex. sublimació color, laser blanc inegre, vídeo color, etc.) com pel nivell de llenguatge (Nivell 1 o 2)

L'operador setgray 11.1.1

És l'operador bàsic24 per activar el treball en blanc i negre. Treballa entre elsvalors 0 (negre) i 1 (blanc). Donat que podem treure fins a 256 nivells de gris, voldir que podrem passar de 0 a 1 en increments de 0.0039062 (1/256) o sigui quedel blanc passem per 254 grisos fins el negre. Resolució més que suficient pera qualsevol sistema de reproducció.

Si d'aquests valors en volem extreure l'equivalència en tants per cent (%),només cal aplicar una senzilla fórmula:

1 - valor setgray x 100 = % de grisexemple

1 - 0.4 x 100 = 60 % de gris

Page 67: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

67

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Afecta a tots els objectes gràfics (línies, arcs, cercles, àrees, fonts) i a les imatgescreades amb imagemask. Passem a un exemple pràctic on demostrarem que elscolors PostScript tapen :

Exemple 65

A Dibuixarem dos cercles amb nivells de gris diferentssobreposats parcialment. Comprovarem que el sector coïncidentno és subjecte a cap tipus de transparència o mescla.

0.2 setgray % 80% de gris100 100 75 0 360 arc % primer cerclefill % omple amb el % de gris escollit

% el segon cercle tapara% completament la part coincident de l'anterior

0.8 setgray % 20% de gris200 100 75 0 360 arc % segon cerclefill % omple amb el % de gris escollitshowpage

Els efectes especials com la mescla de colors o les transparències s'han d'elaborarexpressament. Veiem com crear un senzill efecte de transparència (suma del dosnivells de gris coincidents) basats en l'exemple anterior:

Exemple 66

0.2 setgray % 80% de gris100 100 75 0 360 arc % primer cerclefill % omple amb el % de gris escollit0.8 setgray % 20% de gris200 100 75 0 360 arc % segon cerclefill % omple amb el % de gris escollit% efecte de transparencia% utilitzem el cami del primer cercle com a retallador100 100 75 0 360 arc clipnewpath % obrim un nou cami0 setgray % 80+20=100% de gris% utilitzem el cami del segon cercle com a emplenador200 100 75 0 360 arc % pintara un fus coincidentfill % omple amb el % de gris escollit per la transparenciashowpage

Page 68: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

68

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

L'espai de Color-Llum 11.2

Treballa amb els tres colors primaris: vermell, verd i blau imitant elfuncionament de l'ull humà. És l'anomenada síntesi additiva, doncs es sumen elsestímuls de color llumínic25 que capta el nostre ull (vermell, verd i blau) per donarcom a resultat una sensació de color.

Independentment de la tecnologia utilitzada o el nivell de llenguatge, tots elsdispositius PostScript existents al mercat poden treballar amb aquest espai decolor. El llenguatge PostScript l'anomena espai RGB (Red Green Blue). Aquestespai de color es traduït a nivells de gris en dispositius PostScript blanc i negre.

Tots els sistemes de video treballen amb la síntesi additiva (per això s'anomenendispositius RGB). Existeix però una variant, és l'anomenada roda de color, quetreballa també amb tres paràmetres: Color, Saturació i Brillantor. Veurem el seufuncionament en els apartats 11.2.2 i 11.2.3.

L'operador setrgbcolor 11.2.1

És l'operador bàsic de color ja que, com hem dit abans, existeix en tots elsintèrprets PostScript de qualsevol dispositiu. La seva sintaxi es deu a la síntesiadditiva dels colors primaris de llum i és la següent:

valors per cada color entre 0 (no color) i 1 (color)

vermell verd blau setrgbcolor

R G B

Veiem com obtenir tres cercles pintats amb els tres colors primaris:

Exemple 67

/roig { 1 0 0 setrgbcolor } def % definicio del vermell (R)/verd { 0 1 0 setrgbcolor } def % definicio del verd (G)/blau { 0 0 1 setrgbcolor } def % definicio del blau (B)% definim tres cercles/cercle1 {175 325 150 0 360 arc} def/cercle2 {325 325 150 0 360 arc} def/cercle3 {250 200 150 0 360 arc} def% omplim els tres cercles amb els tres colors primaris R G Broig cercle1 fillverd cercle2 fillblau cercle3 fillshowpage

Page 69: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

69

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Si hem enviat el codi PostScript de l'exemple anterior a una impressora odispositiu de blanc i negre l'intèrpret haurà traduït cada color al seu nivell de griscorresponent. També podrem comprobar en l'exemple anterior la no transparènciao mescla de colors diguem-ne que per generació espontània.

Posem atenció a l'exemple que vindrà, on programarem pas a pas el codiPostScript per mesclar els colors primaris, creant una síntesi additiva clàssica ambl'obtenció dels colors cyan, magenta, groc i blanc :

Exemple 68_1

A Definim els colors primaris, les mescles i els cercles :% colors primaris/roig { 1 0 0 setrgbcolor } def % R/verd { 0 1 0 setrgbcolor } def % G/blau { 0 0 1 setrgbcolor } def % B% les mescles del tres colors primaris/cyan { 0 1 1 setrgbcolor } def % verd+blau C/magenta { 1 0 1 setrgbcolor } def % vermell+blau M/groc { 1 1 0 setrgbcolor } def % vermell+verd Y/blanc { 1 1 1 setrgbcolor } def % tots els colors/negre { 0 0 0 setrgbcolor } def % no color K% els tres cercles/cercle1 { 175 325 150 0 360 arc } def/cercle2 { 325 325 150 0 360 arc } def/cercle3 { 250 200 150 0 360 arc } def

B Veiem com obtenir el groc mesclant verd i vermell:% vermell + verd (groc)roig cercle1 fill % cercle 1 pintat vermellverd cercle2 fill % cercle 2 pintat verd% utilitzem el cami del cercle 1 com a retalladorcercle1 clipnewpath % obrim un nou cami% utilitzem el cami del cercle 2 com a emplenadorgroc cercle2 fill % pintara groc el fus coincident

C Repetirem el procés per veure l'obtenció del magenta:% vermell + blau (magenta)% roig cercle1 fill% blau cercle3 fill% cercle1 clip% newpath% magenta cercle3 fillshowpagecontinua ...

Page 70: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

70

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Com haureu pogut notar, només hi ha activada una funció de mescla de colorper a cada exemple, la resta porten el % de comentari. Només caldrà eliminar el %de la funció mescla de color que vulgueu activar o a l'inrevés.

Exemple 68_2

D Continuem veient l'obtenció del cyan:% verd + blau (cyan)% verd cercle2 fill% blau cercle3 fill% cercle2 clip% newpath% cyan cercle3 fill

E Mescla els tres colors primaris per obtenir el color de lallum blanca en la zona del triangle central:% roig + verd + blau (blanc)roig cercle1 fill % cercle 1 pintat vermellverd cercle2 fill % cercle 2 pintat verdblau cercle3 fill % cercle 3 pintat blaugsave % salvem l'estat grafic% utilitzem el cami del cercle 1 com a primer retalladorcercle1 clipnewpath% utilitzem el cami del cercle 2 com a segon retalladorcercle2 clipnewpath% utilitzem el cami del cercle 3 com a tercer retalladorcercle3 clipnewpath% utilitzem el cami del cercle 1 com a emplenador finalblanc cercle1 fill % pintara un triangle corvat blancgrestore % restaurem l'estat grafic

F Finalment afegirem un text en negre:negre % pintara el text de negre/Helvetica findfont % triem la font35 scalefont setfont % escalem la font a 35 punts500 475 moveto % posicionem el text-90 rotate % rotem en el sentit de les agulles del rellotge(Mescla Additiva del Color) show % text a imprimir

showpagecontinua ...

Page 71: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

71

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Fins aquí hem vist un dels trucs que utilitza el llenguatge PostScript perproduir les mescles de colors. Just com treballen totes les aplicacions gràfiques. Enl'última etapa d'aquest llarg exemple agafarem tots els efectes de mescla que hemvist per separat i els empalmarem en una sola pàgina per imprimir la síntesiadditiva del color d'una forma completa.

Exemple 68_3

gsave % els tres cercles primaris sense mesclaroig cercle1 fillverd cercle2 fillblau cercle3 fillgrestoregsave % mescla del roig i el verd (groc)cercle1 clipnewpathgroc cercle2 fill % pinta el fus grocgrestoregsave % mescla del roig i el blau (magenta)cercle1 clipnewpathmagenta cercle3 fill % pinta el fus magentagrestoregsave % mescla del verd i el blau (cyan)cercle2 clipnewpathcyan cercle3 fill % pinta el fus cyangrestoregsave % mescla del roig, verd i blau (blanc)cercle1 clipnewpathcercle2 clipnewpathcercle3 clipnewpathblanc cercle1 fill % pinta el fus blancgrestorenegre % mescla del no color (negre)/Helvetica findfont35 scalefont setfont500 475 moveto-90 rotate(Mescla Additiva del Color) show % pinta el text negre

showpage

Page 72: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

72

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

La Roda de Color 11.2.2

No és considerat un espai de color en si mateix, doncs els seus valors sóninterpretats posteriorment com a valors RGB. S'anomena també hexàgon de colordoncs aquest espai geomètric té sis puntes que representen els sis colors elementals.

Moltes aplicacions que utililitzen color poden usar aquest sistema, quegràficament ve representat per un cercle de colors o un hexàgon. El color desitjates tria en el menú per un valor d'angle entre 0° i 360° (o bé intuïtivament amb el ratolí).Les diferents tonalitats de cada color es trien pels altres dos paràmetres, cap a negreamb la brillantor i cap a blanc amb la saturació de color.

L'operador sethsbcolor 11.2.3

Són tres també els valors que utilitza pel càlcul del color, però amb diferentsintaxi de l'RGB:

els valors per cada paràmetre van entre 0 i 1

color saturació brillantor sethsbcolor

escala de valors

0 vermell 0 blanc 0 negre.17 groc.33 verd.50 cyan.67 blau.83 magenta1 vermell 1 color 1 color

Aquest operador és subsidiari de l'espai de color-llum doncs un cop hementrat els valors d'un color amb sethsbcolor, immediatament l'intèrpret PostScriptels tradueix al model RGB.

Com els altres operadors de color que hem vist fins ara, sethsbcolor existeixen tots els dispositius PostScript existents al mercat.

Com a paràmetre de l'estat gràfic, afecta a tots els objectes gràfics (línies, arcs,corbes, àrees i tipografia) i a les imatges creades amb imagemask (les imatges creades ambimage o colorimage no).

En l'exemple de la pàgina següent veurem com treballa sethsbcolor amb totala gamma de colors elementals sobre un text on cada lletra tindrà un color diferent.Observarem que per l'obtenció dels colors elementals purs només modificarem elprimer paràmetre correponent al color i deixarem els paràmetres de saturació ibrillantor en els seus valos màxims 1 i 1. El blanc i el negre són casos aïllats.

cap

a bl

anc

cap

a ne

gre

Page 73: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

73

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Exemple 69

% definim els 8 colors elementals/roig { 0 1 1 sethsbcolor } def/groc { .17 1 1 sethsbcolor } def/verd { .33 1 1 sethsbcolor } def/cyan { .50 1 1 sethsbcolor } def/blau { .67 1 1 sethsbcolor } def/magenta { .83 1 1 sethsbcolor } def% per fer el blanc i el negre el parametre color es indiferent% el blanc s'obte posant la saturacio a 0/blanc { 0 0 1 sethsbcolor } def% el negre s'obte posant la saturacio i la brillantor a 0/negre { 0 0 0 sethsbcolor } def

% definim la font i el cos/Times-Roman findfont 140 scalefont setfont

100 100 moveto % punt d'inici del textroig % triem el color(G) show % posem la primera lletra de la paraulacurrentpoint moveto % posicio de la seguent lletragroc % triem el color(o) show % segona lletracurrentpoint moveto % posicio de la seguent lletraverd % triem el color(r) showcurrentpoint movetocyan % triem el color(e) showcurrentpoint movetoblau % triem el color(t) showcurrentpoint movetomagenta % triem el color(t) showcurrentpoint 2 copy moveto % copiem 2 cops els punts x, ynegre % triem el color(i) showblanc % triem el colormoveto % utilitzem la mateixa posicio que l'anterior(=) show % darrer caracter de color blanc

showpage

Page 74: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

74

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

L'espai de Color-Matèria 11.3

Treballa amb els quatre colors matèrics elementals: cyan, magenta, groc inegre (CMYK). És l'anomenada síntesi sustractiva, doncs els colors-matèria sónuna sensació producte de la substracció llumínica d'un color primari. Ho veuremcomparant els espais de color de llum i matèria:

Color primari que es sustrau R G B RGB

Colors matèrics C M Y K

El nostre ull veu Cyan quanno reb Vermell (es sustrau),només reb Verd i Blau.

El nostre ull veu Magentaquan no reb Verd (es sustrau),només reb Vermell i Blau.

El nostre ull veu Groc quanno reb Blau (es sustrau),només reb Vermell i Verd.

El nostre ull veu Negre quan no rebcap color (es sustrauen tots els colors)

Fixeu-vos que no és casual l'ordre RGB - CMYK. Aquest espai de color eltrobem en alguns dispositius PostScript de Nivell 1 (els de color) i en tots els deNivell 2. L'espai CMYK és traduït a nivells de gris en dispositius PostScript blanci negre. És l'espai per excel·lència de la reproducció a tot color en la indústria gràfica.

L'operador setcmykcolor 11.3.1

És l'operador que s'utilitza per treballar directament amb el sistema dereproducció gràfic de quadricromia. Només existeix en dispositius PostScriptcolor de Nivell 1 i en tots els de Nivell 2. Veiem-ne la sintaxi:

valors per cada color entre 0 (no color) i 1 (color)

cyan magenta groc negre setcmykcolor

C M Y K

En un exemple similar al 68_1 veurem en dues etapes com setcmykcolortreballarà la síntesi substractiva (en tricromia) per obtenir el verd, vermell, blau inegre. Tornarem a comprobar la no transparència dels colors i la necessitat deprogramar les mescles que es tinguin que produir.

Page 75: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

75

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Exemple 70_1

% definim els 8 colors elementals/cyan {1 0 0 0 setcmykcolor } def % cyan C/magenta{0 1 0 0 setcmykcolor } def % magenta M/groc {0 0 1 0 setcmykcolor } def % groc Y/negre {0 0 0 1 setcmykcolor } def % negre K/blanc {0 0 0 0 setcmykcolor } def % blanc/roig {0 1 1 0 setcmykcolor } def % M+Y = R/verd {1 0 1 0 setcmykcolor } def % C+Y = G/blau {1 1 0 0 setcmykcolor } def % C+M = B

% definim els tres quadrats/quadrat1 { 200 200 moveto 0 150 rlineto 150 0 rlineto

0 -150 rlineto closepath } def/quadrat2 { 250 150 moveto 0 150 rlineto 150 0 rlineto

0 -150 rlineto closepath } def/quadrat3 { 150 100 moveto 0 150 rlineto 150 0 rlineto

0 -150 rlineto closepath } def

% definim la tipografia/Helvetica findfont 30 scalefont setfont

gsave % quadrat cyancyanquadrat1 fillblanc % text en blanc225 320 moveto (de color) showgrestore

gsave % quadrat grocgrocquadrat2 fillblanc % text en blanc-90 rotate -297 370 moveto (substractiva) showgrestore

gsave % quadrat magentamagentaquadrat3 fillblanc % text en blanc90 rotate 130 -180 moveto (Mescla)showgrestore

showpage % elimineu-lo quan afegiu el codi de 70_2continua ...

Page 76: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

76

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Exemple 70_2

A En aquesta segona part de l'exemple produirem lesmescles de color substractives en les zones coïncidents dels tresquadrats que hem definit anteriorment.

% cyan + groc = verdgsavequadrat1 clip % mascara per la mescla verdanewpathverdquadrat2 fill % quadrat verdgrestore

% groc + magenta = vermellgsavequadrat2 clip % mascara per la mescla vermellanewpathroigquadrat3 fill % quadrat vermellgrestore

% magenta + cyan = blaugsavequadrat3 clip % mascara per la mescla blavanewpathblauquadrat1 fill % quadrat blaugrestore

% cyan + groc + magenta = negregsavequadrat1 clip % 1a mascara per la mescla negranewpathquadrat2 clip % 2a mascara per la mescla negranewpathquadrat3 clip % 3a mascara per la mescla negranewpathnegrequadrat3 fill % quadrat negregrestore

showpage

Page 77: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

77

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Els altres Espais de Color 11.4

La resta d'espais de color que el llenguatge PostScript pot utilitzar sóndisponibles exclusivament en intèrprets de Nivell 2. Els esmentarem breument,doncs el seu estudi detallat supera l'àmbit d'aquest curs.

Espai CIEBasedABC i CIEBasedA

Treballa en base al standard internacional de definició de color establerta perla Commission Internationale de l'Éclairage, en dues variants: l'espai CIE 1931 (XYZ)i l'espai CIE 1976 (L*a*b*).

Aquest model de color s'utilitza com a standard en la indústria gràfica(impressió i pre-impressió), televisió (PAL, SECAM, NTSC), dispositius RGB o laindústria dels tints. El seu referent és l'ull humà i es basa en una acurada mesurade cada component que intervé en la formació de la sensació de color.

És un sistema encara poc utilitzat, però la seva incorporació als intèrpretsPostScript li pot donar una gran empenta. La seva principal virtut consisteix que lamesura de color que utilitza és independent del dispositiu d'impressió, de formaque cada dispositiu que l'incorpora té un sistema de calibrat i traducció del colorpropi, la qual cosa permet que dispositius de marques o tecnologies diferentspuguin arribar a resultats molt idèntics.

Espai Separation

És un espai pensat per produir separacions de color especials, afegides alsstandards de quadricromia o tricromia. Relaciona un determinat color a un nom(filosofia de les tintes planes o colors directes), amb llibertat total per triar els noms o laquantitat de tintes (separacions). Un exemple del seu ús podria ser en quadricromiesque necessitin afegir colors Pantone metal.litzats, tintes fosforescents o barnissos.

Espai Indexed

S'utilitza sobretot pel treball amb imatges digitals. Mitjançant una taula decolor establerta, es relaciona un índex a un color i en conseqüència al seu valornumèric (p.e. hexadecimal). D'aquesta manera, per exemple, podem reduirconsiderablement la quantitat d'informació d'una imatge digital a tot color.

Espai Pattern

Facilita la reproducció de qualsevol tipus d'objecte gràfic o imatge digital(monocromàtica a 1 bit) de forma repetida o seriada (indianes o mostres tèxtils), a partird'una mostra-prototip que es repetirà de la forma seriada que es decideixi.

Page 78: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

78

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Conversions entre Espais de Color 11.5

Els dispositius d'impressió PostScript poden utilitzar en el seu sistema dereproducció final un dels tres espais de color que ja coneixem: Blanc i Negre(DeviceGray), Color-Llum (DeviceRGB) o Quadricromia (DeviceCMYK).

Tret que la informació (fitxer PS) que s'envii a un intèrpret PostScript estiguien el mateix espai de color que utilitzarà en la reproducció final, sempre s'haurà deproduir una conversió entre espais de color.

L'exemple més clar el tenim en les impressores laser de proves en blanc i negre.Els hi podrem enviar qualsevol tipus de fitxer a tot color (RGB o CMYK) i ellesinternament efectuaran les conversions corresponents a nivells de gris.

S'utilitzen un dels quatre operadors següents per efectuar les conversionsentre espais de color:

currentgray, currentrgbcolor, currenthsbcolor o currentcmykcolor.

Tret de currentcmykcolor (Nivell 2), la resta de conversions es suporten entots els dispositius PostScript. Veiem-ne un exemple:

Exemple 71

A Partint del model RGB pintarem un mateix cercle ensuccessives conversions d'espai de color:

/cercle { 0 0 75 0 360 arc} def % definim el cercle

0 1 0 setrgbcolor % definim el color verd RGBgsave100 200 translatecercle fillgrestorecurrenthsbcolor sethsbcolorgsave300 200 translatecercle fillgrestorecurrentgray setgraygsave400 200 translatecercle fillgrestore

showpage

Page 79: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

79

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Saber quina és la lògica utilitzada per efectuar les diverses conversionsd'espais de color possibles ens pot ajudar a entendre millor el treball en color. Faremun resum d'algunes de les tècniques utilitzades:

Conversió RGB a Nivells de Gris 11.5.1

Per realitzar aquesta conversió els intèrprets PostScript utilitzen unaequivalència utilitzada en els sistemes NTSC de la televisió americana:

Valor setgray = .3 x Vermell + .59 x Verd + .11 x Blau

Doncs si triem un valor com 1 0 1 setrgbcolor (el color magenta), tindremque el Nivell de Gris resultat de la conversió serà:

.3 x 1 + .59 x 0 + .11 x 1 = .41 de valor setgray o sigui un 59% de gris

Comprovem-ho amb l'intèrpret:

Exemple 72

A Definim el color magenta a partir dels valors de l'espaide color RGB:

1 0 1 setrgbcolor

B Demanarem a l'intèrpret que ens digui el valor setgray:

currentgray % operador de conversio a nivells de grisstack % ens ensenya el contingut de la pila.41 % valor setgray

Conversió CMYK a Nivells de Gris 11.5.2

El nivell de gris equivalent d'un color de quadricromia, és el complementdel valor de negre. El càlcul del valor de negre és similar al que hem efectuatanteriorment. Veiem-ne la fórmula:

Valor setgray = 1.0 - el mes petit de (1.0) o ( .3 x Cyan + .59 x Magenta + .11 x Groc+Negre)

Si experimentem sobre un valor .6 .9 .5 0 setcmykcolor (marró vermellós),tindrem:

1.0 - el mes petit de (1.0) o ( .3 x .6 + .59 x .9 + .11 x .5+0) = Valor setgray

1.0 - el mes petit de (1.0) o ( .18 +..531 + .055 ) = .234 de valor setgray o sigui un 76.6%

Page 80: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

80

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Per fer la comprovació amb l'intèrpret (en tots els exemples d'aquest apartat)haurem de treballar amb un dispositiu en color de Nivell 1 o qualsevol de Nivell 2:

Exemple 73

A Definim el color marronós en l'espai de color CMYK:

.6 .9 .5 0 setcmykcolor

B Demanarem a l'intèrpret que ens digui el valor setgray:

currentgray % operador de conversio a nivells de grisstack % ens ensenya el contingut de la pila.234 % valor setgray

Conversió RGB a CMYK 11.5.3

Aquesta és, sens dubte, la conversió més complexa. Una primera taulad'equivalències seria:

Cyan = 1.0 - VermellMagenta = 1.0 - Verd

Groc = 1.0 - Blau

Com a exemple, .9 .1 .8 setrgbcolor, tindria la següent equivalència:

Cyan = 1.0 - .9 = .1Magenta = 1.0 - .1 = .9

Groc = 1.0 - .8 = .2

Manca el càlcul del percentatge de negre. Com se sap, el negre en la síntesisustractiva s'obté per la suma dels tres color elementals cyan, magenta i groc.Respon, per tant, a la següent equivalència:

Negre = el valor més petit de ( Cyan, Magenta, Groc )

Aquest seria el càlcul normal26 de negre sense cap mena de correcció. Enl'exemple que ens ocupa l'equivalent de negre seria doncs: .1. A l'afegir-se com aquart component de la mescla per quadricromia, hem de compensar la sevapresència27 amb la resta del mateix percentatge en els tres colors cromàtics restants:

Cyan = ( 1.0 - Vermell ) - NegreMagenta = ( 1.0 - Verd ) - Negre

Groc = ( 1.0 - Blau ) - NegreNegre = el valor més petit de ( Cyan, Magenta, Groc )

Page 81: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

81

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Seguint amb l'exemple, els valors definitius de la conversió a CMYK, serien:

Cyan = .1 - .1 = 0Magenta = .9 - .1 = .8

Groc = .2 - .1 = .1Negre = .1

Fem la comprovació amb l'intèrpret:

Exemple 74

A Definim el color RGB:

.9 .1 .8 setrgbcolor

B Demanarem a l'intèrpret que ens digui el valor CMYK:

currentcmykcolor % operador de conversio a CMYKstack % ens ensenya el contingut de la pila0 .8 .1 .1 % valor CMYK

Conversió CMYK a RGB 11.5.4

És una conversió molt més simplificada que l'anterior, les igualtats per cadacolor són les següents:

Vermell = 1 - el valor més petit de ( 1.0 ) o ( Cyan + Negre )Verd = 1 - el valor més petit de ( 1.0 ) o ( Magenta + Negre )Blau = 1 - el valor més petit de ( 1.0 ) o ( Groc + Negre )

Si desfem la conversió de l'apartat anterior els valors resultants seran:

Vermell = 1 - ( 0 + .1 ) = .9Verd = 1 - ( .8 + .1 ) = .1Blau = 1 - ( .1 + .1 ) = .8

Fem la comprovació habitual amb l'intèrpret:

Exemple 75

0 .8 .1 .1 setcmykcolor % definim el color en CMYKcurrentrgbcolor % operador de conversio a RGBstack % ens ensenya el contingut de la pila.9 .1 .8 % valor RGB

Page 82: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

82

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Conversió CMYK a Separacions per Quadricromia 11.5.5

És la tècnica que utilitzen totes les aplicacions que són capaces de preparar undeterminat treball gràfic per la reproducció a quadricromia. Bàsicament, es tractade transformar el valor de cada color de l'espai CMYK, a valor setgray (vegeul'apartat 11.1). Un cop fet això, imprimirem separadament (en negre) els quatrecomponents de color (CMYK) de tots els objectes gràfics que formin part deldocument. El diagrama que segueix ens en dóna més detalls:

Cyan C M Y K setcmykcolorValor setgrayFreqüència iangle de trama

MagentaValor setgrayFreqüència iangle de trama

GrocValor setgrayFreqüència iangle de trama

NegreValor setgrayFreqüència iangle de trama

Transformem el diagrama en un exemple pràctic:

Exemple 76_1

/Times-Roman findfont 80 scalefont setfont % tipografia/text {(Quadricromia) show} def % text de treball/peli {/Helvetica findfont 9 scalefont setfont} def% primerament imprimim el text directament en color.75 .18 .10 .05 setcmykcolor % to blavos20 100 movetotextcontinua ...

Page 83: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

83

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Exemple 76_2

currentcmykcolor % posem a la pila els valors CMYK% separacio de color del Negre (K)gsave % salvem l'estat graficcurrentscreen exch pop 45 exch setscreen % angle de trama1 exch sub setgray % valor K a nivell de gris20 200 moveto text % text per Negrecurrentpoint exch 18 add exch moveto % posicio de peligsave % salvem l'estat grafic0 setgray peli (NEGRE) show % nom de la separaciogrestore grestore % restaurem l'estat grafic% separacio de color del Groc (Y)gsave % salvem l'estat graficcurrentscreen exch pop 0 exch setscreen % angle de trama1 exch sub setgray % valor Y a nivell de gris40 220 moveto text % text per Groccurrentpoint exch 18 add exch moveto % posicio de peligsave % salvem l'estat grafic0 setgray peli (GROC) show % nom de la separaciogrestore grestore % restaurem l'estat grafic% separacio de color del Magenta (M)gsave % salvem l'estat graficcurrentscreen exch pop 75 exch setscreen % angle de trama1 exch sub setgray % valor M a nivell de gris60 240 moveto text % text per Magentacurrentpoint exch 18 add exch moveto % posicio de peligsave % salvem l'estat grafic0 setgray peli (MAGENTA) show % nom de la separaciogrestore grestore % restaurem l'estat grafic% separacio de color del Cyan (C)gsave % salvem l'estat graficcurrentscreen exch pop 105 exch setscreen %angle de trama1 exch sub setgray % valor C a nivell de gris80 260 moveto text % text per Cyancurrentpoint exch 18 add exch moveto % posicio de peligsave % salvem l'estat grafic0 setgray peli (CYAN) show % nom de la separaciogrestore grestore % restaurem l'estat graficshowpage

Hem de tenir present que aquest exemple donarà error en intèrprets blanc inegre de Nivell 1. També cal esmentar que, en aquest simulacre de separacions de color,treballem amb la freqüència de trama per defecte del dispositiu d'impressió queutilitzem.

Page 84: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

84

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

La Imatge Digital .12

Tots els objectes gràfics que hem vist fins ara (gràfics primitius, fonts, trames,emplenadors i màscares) tenen una característica que els diferencia clarament del'objecte imatge:

No porten cap tipus d'informació de la resolució en que han estat creats(doncs aprofitaran tota la que els hi deixi el dispositiu d'impressió)

Per contra, les imatges:

Porten tota la informació de la resolució en que hauran de ser creades(la resolució del dispositiu d'impressió quedarà en un segon terme)

Punt a punt, dada rera dada, les imatges són un complexe mapa d'adrecesdins l'espai d'un gran mosaic digital.

Construcció de la Imatge 12.1

Per entendre correctament tots els secrets que amaguen les imatges, caltransformar-se en un digitalitzador (scanner) humà. I a escala humana crear unaimatge senzilla, per després llegir-la (digitalització) experimentant totes les varia-bles del seu comportament (impressió).

Una imatge senzilla té el mateix comportament i característiques que unaimatge amb una gran quantitat d'informació. Només difereixen en el nombre devegades que s'haurà de repetir el procés.

Per crear i digitalitzar una imatge a escala humana només cal una llibreta dequadrets i un llapis. Fem un rectangle de 8x8 quadrets i dibuixem una imatge-símbol(sempre treballarem amb la mateixa) com la de l'exemple:

Exemple 77

Columnes d'imatge

Punt d'imatge

Files d'imatge

1 2 3 4 5 6 7 8

1

2

3

4

5

6

7

8

Page 85: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

85

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Si mantenim la comparació del nostre exercici amb el d'un digitalitzador, enaquests moments hauríem fet una primera lectura enquadrant la imatge en unaretícula d'una resolució de 8x8 punts.

El següent pas no és gràfic, si no numèric. Cal decidir quanta informacióassignarem a cada punt d'imatge. Dit d'una altra manera, quants bits (binary digits)per cada punt d'imatge.

La informació mínima que pot dur un punt d'imatge és dual, o blanc o negre.Aixó significa 1 bit per cada punt d'imatge, és dir valor 0 o valor 1. Ens decidimdoncs per punts d'imatge blancs o negres (tal com està dibuixat). Zero és el valorpels punts negres, u és el valor pels punts blancs. Observem l'exemple:

Exemple 78

Aquest és el procés d'una digitalització (conversió a dígits)

lectura amb retícula numerització

La numerització (expressió molt adient i utilitzada pels francesos) és el darrerprocés que necessita una imatge abans de ser manipulada i impressa. És en aquestprocés d'impressió i manipulació on intervenen els operadors d'imatge PostScript.A través dels tres operadors: imagemask, image i colorimage, veurem tot unventall de conceptes importants que envolten el món de la imatge digital.

1 1 1 1 0 1 1 1

1 0 1 1 1 1 1 0

1 0 0 0 0 0 0 0

1 1 1 0 0 1 1 1

1 1 1 0 0 1 1 1

0 0 0 0 0 0 0 1

0 1 1 1 1 1 0 1

0 1 1 1 1 1 0 1

1 2 3 4 5 6 7 8

1

2

3

4

5

6

7

8

Page 86: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

86

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

L'operador imagemask 12.2

És el més simple dels tres operadors d'imatge. La seva sintaxi però, ésbàsicament la mateixa que la dels altres operadors més elaborats. Veiem-ho:

valor x de la imatge fa el contrari que false matriu de coordenadesvalor y cadena de dades

columnes files true [ columnes 0 0 - files 0 files ] { dades } imagemaskfalse

pinta els bits 0deixa transparents els bits 1 numerització

El present diagrama és vàlid per la generació d'imatges en qualsevol dels tresoperadors PostScript. Només hem de destacar la particular aplicació que en fal'operador imagemask.

Com el seu nom apunta, imagemask ens fabrica una imatge amb uncomportament28 de màscara. Pinta uns bits amb el color que haguem seleccionat al'estat gràfic i deixa transparents els contraris (segons utilitzem true o false). Per tantimagemask només treballa amb 1 bit d'informació per punt d'imatge.

Treballar amb dades hexadecimals 12.2.1

El darrer pas clau abans de poder generar la imatge, és l'expressió numèrica(numerització) del reticulat gràfic. El format hexadecimal és el majoritàriamentutilitzat en l'entorn PostScript. Observem quin és el procés de conversió:

0 1 2 3 4 5 6 7 8 9 A B C D E F FORMAT HEXADECIMAL (16 dígits)

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 EQUIVALÈNCIA DECIMAL

CADA 4 BITS (dígits binaris) LI CORRESPON 1 DÍGIT HEXADECIMAL, SEGUINT LA LÒGICA DE L'EXEMPLE:

seqüència binària 1 1 0 1 sumem només el valor decimal dels bits 1 s

patró d'equivalència decimal 8 4 2 1 = 13 ( valor decimal ) = D ( valor hexadecimal )

1 2 3 4 5 6 7 8

1

2

3

4

5

6

7

8

sentit de lectura1 1 1 1 0 1 1 1

1 0 1 1 1 1 1 0

1 0 0 0 0 0 0 0

1 1 1 0 0 1 1 1

1 1 1 0 0 1 1 1

0 0 0 0 0 0 0 1

0 1 1 1 1 1 0 1

0 1 1 1 1 1 0 1

Page 87: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

87

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

1 1 1 1 0 1 1 1

1 0 1 1 1 1 1 0

1 0 0 0 0 0 0 0

1 1 1 0 0 1 1 1

1 1 1 0 0 1 1 1

0 0 0 0 0 0 0 1

0 1 1 1 1 1 0 1

0 1 1 1 1 1 0 1

F 7

B E

8 0

E 7

E 7

0 1

7 D

7 D

num

erit

zaci

ó bi

nàri

a

traducció hexadecimal

Per tant la numerització de l'exemple 78 tidrà, línia a línia, la següenttraducció hexadecimal :

Escriurem finalment la traducció hexadecimal com una cadena de dades :

claus per indicar cadena hexadecimal

Treballar amb dades hexadecimals té dues grans avantatges de portabilitat:

• Utilitza caràcters ascii universals• Els lectors de dades hexadecimals ignoren tots els caràcters que no ho siguin

(evitant errors per la lectura d'altres caràcters, p.e. espais en blanc o tabuladors)

Proporció i situació dins l'espai 12.2.2

Són dos els conceptes fonamentals que relacionen la imatge amb l'espai onanirà situada :

• Una imatge PostScript, en el seu estat original, mesura sempre 1 punt(tipogràfic) pel seu costat més gran. Del que es dedueix que, per donar-li la dimensióque ens interessi, haurem d'escalar-la (scale) segons la relació proporcional decolumnes (columns) i files (rows) d'imatge que li correspongui.

• Una imatge PostScript es situa dins l'espai de la pàgina sempre en el puntd'origen (0,0) de l'eix de coordenades. Del que es dedueix que prèviament hauremde posicionar l'origen de l'eix de coordenades (translate) en el punt de la pàgina onens interessi situar la imatge.

Fins aquí hem fet un repàs exhaustiu de tots els paràmetres que intervenen enla creació d'una imatge a través de l'operador imagemask. Els posarem a la pràcticaper mitjà dels tres exemples seguits que venen a continuació.

< F 7 B E 8 0 E 7 E 7 0 1 7 D 7 D >

Page 88: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

88

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Exemple 79

Reproducció normal de la imatge-símbol:

100 100 translate % situem la imatge100 100 scale % proporcio 1:1, escalat a 100 x100 punts0 setgray % nivell de gris al 100%8 8 % 8 columnes i 8 files, relacio x,y = 1:1false % pinta els bits 0[8 0 0 -8 0 8] % sentit de lectura de dalt a baix{<F7BE80E7E7017D7D>} % dades hexadecimalsimagemask % operadorshowpage

Exemple 80

Reproducció jugant amb els factors escala i true-false:

100 100 translate % situem la imatge200 400 scale % desproporcio 1:2, escala 200x400 punts0.5 setgray % nivell de gris al 50%8 8 % 8 columnes i 8 files, relacio x,y = 1:1true % pinta els bits 1[8 0 0 -8 0 8] % sentit de lectura de dalt a baix{<F7BE80E7E7017D7D>} % dades hexadecimalsimagemask % operadorshowpage

Exemple 81

Reproducció jugant amb l'efecte transparència:

100 100 translate % punt de situacio de les dues imatges300 300 scale % proporcio 1:1, escalat a 300 x300 punts0 setgray % nivell de gris al 100%8 8 true % pinta els bits 1[8 0 0 -8 0 8] {<F7BE80E7E7017D7D>} imagemask

0.4 setgray % nivell de gris al 60%8 8 false % pinta els bits 0[8 0 0 -8 0 8] {<F7BE80E7E7017D7D>} imagemaskshowpage

Page 89: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

89

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

L'operador image 12.3

És l'operador de les imatges tramades tan en blanc i negre29 com en color. Laseva estructura sintàctica només difereix en una dada envers imagemask. Una dada,però que en marca clarament la diferència:

columnes files fondària [ columnes 0 0 - files 0 files ] { dades } image

nombre de bits per punt d'imatge

• L'operador image treballa normalment a 1, 2, 4, 8 o 12 bits en l'anomenadafondària d'imatge

La fondària o profunditat d'imatge indica la quantitat d'informació per puntd'imatge. La informació en aquest cas vol dir la quantitat màxima de nivells de grisque cada punt podrà descriure.

• L'operador image no queda influït pel nivell de gris escollit amb setgray al'estat gràfic

El nivell de gris de la imatge no és general per tots els punts d'imatge(imagemask), si no que pot ser diferent per cadascun d'ells. El nivell de gris de cadapunt d'imatge ve determinat pel valor dels bits i la fondària escollida.

• L'operador image no pot treballar amb punts d'imatge "transparents"

Els punts d'imatge buits són de color blanc i per tant tapen.

Nosaltres només el treballarem en blanc i negre. Mirem el comportament del'operador image en el seu ús més simplificat. Un exemple idèntic al núm. 79:

Exemple 82

Reproducció de la imatge-símbol a 1 bit d'informació perpunt d'imatge:

100 100 translate % situem la imatge100 100 scale % proporcio 1:1, escalat a 100 x100 punts8 8 % 8 columnes i 8 files, relacio x,y = 1:11 % pinta de blanc els bits 1 i de negre els bits 0[8 0 0 -8 0 8] % sentit de lectura de dalt a baix% les dades hexadecimals es corresponen a la fondaria{<F7BE80E7E7017D7D>}image % operadorshowpage

Page 90: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

90

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Treballar amb dades decimals 12.3.1

És com treballa directament l'intèrpret. L'intèrpret PostScript llegeix elsdígits binaris de 8 en 8 i n'obté el seu valor equivalent decimal que alhora equivala un caràcter gràfic segons la taula ASCII establerta30 . La taula d'equivalènciesbinari-decimal per la imatge que ens serveix d'exemple és la següent:

binari decimal equivalent ASCII

Els caràcters equivalents ASCII (que no les xifres decimals) del diagramaanterior són vàlids per un entorn amb sistema operatiu DOS versió 5.0. Més queper treballar-hi, conèixer aquest tema ens explica més coses de com manipula lesdades l'intèrpret PostScript. Passem a un didàctic exemple:

Exemple 83

Aquest exemple es basat en un entorn DOS (v.5.0) i sobreel simulador interactiu de llenguatge PS Tutor.

% entrem a la pila dels operants la cadena hexadecimal% corresponent a la imatge que utilitzem als exemples<F7BE80E7E7017D7D>== % observem el seu aspecte(¸¥Çþþ }})% l'interpret ha fet automaticament la conversio a decimal

En el proper apartat veurem que saber l'equivalència decimal del valor decada punt d'imatge és fonamental per determinar el seu nivell de gris.

CADA 8 BITS (dígits binaris) LI CORRESPON 1 XIFRA DECIMAL, SEGUINT LA LÒGICA DE L'EXEMPLE:

seqüència binària 0 1 1 1 1 1 0 1 sumem només el valor decimal dels bits 1 s

patró d'equivalència decimal 128 64 32 16 8 4 2 1 = 125 ( valor decimal ) = } ( caracter ASCII )

1 1 1 1 0 1 1 1

1 0 1 1 1 1 1 0

1 0 0 0 0 0 0 0

1 1 1 0 0 1 1 1

1 1 1 0 0 1 1 1

0 0 0 0 0 0 0 1

0 1 1 1 1 1 0 1

0 1 1 1 1 1 0 1

247 ¸190 ¥128 Ç231 þ231 þ1 o sense

125 }125 }

Page 91: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

91

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

1 BIT DE FONDÀRIA 1 1 + 1 = 2 nivells de gris

2 BITS DE FONDÀRIA 2 1 3 + 1 = 4 nivells de gris

4 BITS DE FONDÀRIA 8 4 2 1 15 + 1 = 16 nivells de gris

8 BITS DE FONDÀRIA 128 64 32 16 8 4 2 1 255+ 1 = 256 nivells de gris

Fondària d'Imatge 12.3.2

Fins ara hem treballat amb imatges pluma (1 bit de fondària), és a dir blancs(o transparents) i negres contrastats sense nivells de gris. Ara farem un pas més iexplorarem el món dels grisos o dit d'una forma més correcta, els nivells de color.

Tal com hem apuntat a l'inici de l'apartat 12.3, els nivells de gris que unaimatge pot descriure venen determinats pel valor de fondària, o sigui pel nombrede bits assignats a cada punt d'imatge. Quina és la relació que s'estableix entre bitsi nivell de gris ?

Valor Decimal de Fondària + 1 = Nivells de Gris Possibles

Veiem les equivalències:valor decimal de fondària

Iniciem-nos amb l'exemple més senzill. Una imatge de 2 bits de fondària perpunt d'imatge, és a dir amb la possibilitat de generar 4 nivells de gris. Treballaremprimer amb l'aspecte que tindrà la retícula binària de la imatge-símbol i la sevaposterior equivalència hexadecimal:

cada 4 bits 1 dígit hexadecimal100% de gris

0% de gris

66% de gris

33% de griscadena hexadecimal

< F F 3 F D F F E D 5 A A F D B F F D B F 5 5 A B 7 F F B 7 F F B >

11 11 11 11 00 11 11 11

11 01 11 11 11 11 11 10

11 01 01 01 10 10 10 10

11 11 11 01 10 11 11 11

11 11 11 01 10 11 11 11

01 01 01 01 10 10 10 11

01 11 11 11 11 11 10 11

01 11 11 11 11 11 10 11

F F 3 F

D F F E

D 5 A A

F D B F

F D B F

5 5 A B

7 F F B

7 F F B

Page 92: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

92

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Veiem la seva aplicació pràctica a través de l'exemple:

Exemple 84

Reproducció de la imatge-símbol a 2 bits d'informació perpunt d'imatge:

100 100 translate % situem la imatge100 100 scale % proporcio 1:1, escalat a 100 x100 punts8 8 % 8 columnes i 8 files, relacio x,y = 1:12 % fondaria de 2 bits = 4 nivells de gris possibles[8 0 0 -8 0 8] % sentit de lectura de dalt a baix% les dades hexadecimals es corresponen a la fondaria{<FF3FDFFED5AAFDBFFDBF55AB7FFB7FFB>}image % operadorshowpage

La fondària d'imatge no solament limita el nombre de nivells de gris si noque també decideix quins són. Tal com s'explica en el diagrama anterior, per 2 bitsde fondària els % de gris possibles no poden ser altres que: 0%, 33%, 66% i 100%.

Per saber d'on surten aquests % de gris (tal com hem dit a l'apartat 12.3.1) totes basa en saber l'equivalència decimal del valor de cada punt d'imatge. Unasenzilla fórmula aplicada a cada punt d'imatge ens permet fer el càlcul:

Nivell de gris possible = Valor decimal del punt d'imatge / Valor decimal de fondària

expressat com setgray entre per 1 bit = 1els valors 0 (no color) i 1 (color) per 2 bits = 3

per 4 bits = 15per 8 bits = 255

Veiem un exemple amb els 4 valors decimals possibles que pot tenir un puntd'imatge de 2 bits de fondària:

0 / 3 = 0 100% de gris 2 / 3 = 0.666 33.3% de gris

1 / 3 = 0.333 66.6% de gris 3 / 3 = 1 0% de gris

Estem en disposició de donar un pas més, per tal de veure com treballa unaimatge a 8 bits de fondària de punt. Els diagrames de la pàgina següent ens dónenun esquema exhaustiu dels mapes d'informació que la imatge-símbol generarà.

Page 93: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

93

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

0% 1% 0% 2% 100% 3% 0% 4%

5% 99% 6% 7% 0% 8% 9% 98%

0% 97% 96% 95% 94% 93% 92% 91%

10% 0% 11% 90% 89% 12% 13% 0%

0% 14% 15% 88% 87% 16% 0% 17%

86% 85% 84% 83% 82% 81% 80% 18%

79% 19% 0% 20% 0% 21% 78% 0%

77% 0% 22% 0% 23% 24% 76% 25%

%NIVELLS DE GRIS

1 .99 1 .98 0 .97 1 .96

.95 .01 .94 .93 1 .92 .91 .02

1 .03 .04 .05 .06 .07 .08 .09

.90 1 .89 .10 .11 .88 .87 1

1 .86 .85 .12 .13 .84 1 .83

.14 .15 .16 .17 .18 .19 .20 .82

.21 .81 1 .80 1 .79 .22 1

.23 1 .78 1 .77 .76 .24 .75

VALORS SETGRAY

VALORS BINARIS

255 252 255 249 0 247 255 244

242 2 239 237 255 234 232 5

255 7 10 12 15 17 20 22

229 255 226 25 28 224 221 255

255 219 216 30 33 214 255 211

35 38 40 43 45 48 51 209

53 206 255 204 255 201 56 255

58 255 198 255 196 193 61 191

VALORS DECIMALS

FF FC FF F9 00 F7 FF F4

F2 02 EF ED FF EA E8 05

FF 07 0A 0C 0F 11 14 16

E5 FF E2 19 1C E0 DD FF

FF DB D8 1E 21 D6 FF D3

23 26 28 2B 2D 30 33 D1

35 CE FF CC FF C9 38 FF

3A FF C6 FF C4 C1 3D BF

VALORS HEXADECIMALS IMATGE FINAL

1111 1111 1111 1111 0000 1111 1111 11111111 1100 1111 1001 0000 0111 1111 01001111 0000 1110 1110 1111 1110 1110 00000010 0010 1111 1101 1111 1010 1000 01011111 0000 0000 0000 0000 0001 0001 00011111 0111 1010 1100 1111 0001 0100 01101110 1111 1110 0001 0001 1110 1101 11110101 1111 0010 1001 1100 0000 1101 11111111 1101 1101 0001 0010 1101 1111 11011111 1011 1000 1110 0001 0110 1111 00110010 0010 0010 0010 0010 0011 0011 11010011 0110 1000 1011 1101 0000 0011 00010011 1100 1111 1100 1111 1100 0011 11110101 1110 1111 1100 1111 1001 1000 11110011 1111 1100 1111 1100 1100 0011 10111010 1111 0110 1111 0100 0001 1101 1111

Page 94: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

94

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Els diagrames anteriors mostren una possible lògica a seguir en el trànsit dedades que porten a reproduir una imatge de 8 bits. Una lògica que s'inicia en elmapa, punt a punt, de percentatges de gris. Continua amb la traducció d'aquestspercentatges a valors del tipus setgray (entre 0 i 1). I d'aquí s'avalua el valor decimalde cada punt multiplicant el nivell de gris per 255 (valor decimal corresponent a lafondària de 8 bits). El darrer pas és la traducció al sistema numèric que més ensconvingui (binari o hexadecimal). Aquest seria el procés de numerització o lectura.

La reproducció de la imatge arriba quan l'intèrpret té a la seva disposició lacadena de dades (normalment hexadecimals) que la descriuen. Aquest darrer pasens el descriu l'exemple:

Exemple 85

Reproducció de la imatge-símbol a 8 bits d'informació perpunt d'imatge:

100 100 translate % situem la imatge300 300 scale % proporcio 1:1, escalat a 300 x 300 punts8 8 % 8 columnes i 8 files, relacio x,y = 1:18 % fondaria de 8 bits = 256 nivells de gris possibles[8 0 0 -8 0 8] % sentit de lectura de dalt a baix% les dades hexadecimals es corresponen a la fondaria

{< FFFCFFF900F7FFF4F202EFEDFFEAE805FF070A0C0F111416 % 2 digits = 1 punt d'imatge*E5FFE2191CE0DDFFFFDBD81E21D6FFD3 % linia d'imatge*2326282B2D3033D135CEFFCCFFC938FF3AFFC6FFC4C13DBF >}

image % operador% per un bon funcionament els comentaris * s'han de suprimirshowpage

Hem descrit una imatge a 256 nivells de gris, però la que hem reproduïtnomés n'utilitza 51. Del 0% al 25% (saltant de 1% en 1%) en la zona clara del fonsi del 100% al 76% en la part fosca corresponent al personatge.

Per finalitzar no hem d'oblidar que la reproducció d'una imatge sempre estàsotmesa a la capacitat de descripció de grisos que tingui la trama del dispositiud'impressió que s'estigui utilitzant. Tal com hem explicat al capítol 10 i mésconcretament a l'exemple 59. Per una bona reproducció serà necessària una correctarelació entre la dimensió de la imatge (dimensió del punt d'imatge) i la freqüènciade trama utilitzada (nombre de pixels de resolució per unitat).

Page 95: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

95

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Sentit de lectura 12.3.3

L'intèrpret PostScript té la possibilitat de llegir les línies d'imatge de dalt abaix o de baix a dalt. Això significa que podem reproduir una imatge de formainvertida (en els dos eixos) sense necessitat de tocar cap paràmetre de l'espai decoordenades general de la pàgina o invertir la disposició de la cadena de dades dela imatge.

Les imatges disposen d'una matriu de transformació (6 dades) del seu propiespai de coordenades. Pel que fa als conceptes de dalt i baix obeeix al següentcomportament:

Lectura de dalt a baix [ columnes 0 0 - files 0 files ]

Lectura de baix a dalt [ columnes 0 0 files 0 0 ]

Fins ara sempre hem utilitzat el primer sistema per la reproducció d'imatges.Veiem un exemple de la utilització del segon:

Exemple 86

Reproducció de cap per avall de la imatge-símbol invertintel sentit de lectura de la matriu de transformació:

100 100 translate % situem la imatge300 300 scale % proporcio 1:1, escalat a 300 x 300 punts8 8 % 8 columnes i 8 files, relacio x,y = 1:18 % fondaria de 8 bits = 256 nivells de gris posssibles[8 0 0 8 0 0] % sentit de lectura de baix a dalt% les dades hexadecimals es corresponen a la fondaria

{< FFFCFFF900F7FFF4F202EFEDFFEAE805FF070A0C0F111416 % 2 digits = 1 punt d'imatge*E5FFE2191CE0DDFFFFDBD81E21D6FFD3 % linia d'imatge*2326282B2D3033D135CEFFCCFFC938FF3AFFC6FFC4C13DBF >}

image % operador% per un bon funcionament els comentaris * s'han de suprimirshowpage

Page 96: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

96

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

00 00 00 00 00 00 00 0010 10 10 10 01 10 10 1000 10 00 00 00 00 00 0110 00 10 10 10 10 10 0000 10 10 10 01 01 01 0110 00 00 00 00 00 00 0000 00 00 10 01 00 00 0010 10 10 00 00 10 10 1000 00 00 10 01 00 00 0010 10 10 00 00 10 10 1010 10 10 10 01 01 01 0000 00 00 00 00 00 00 1010 00 00 00 00 00 01 0000 10 10 10 10 10 00 1010 00 00 00 00 00 01 0000 10 10 10 10 10 00 10

VALORS BINARIS DE COLORCMYK A 1 BIT PER COLOR

VALORS HEXADECIMALS DE COLORCMYK A 1 BIT PER COLOR

L'operador colorimage 12.4

És l'operador PostScript especialitzat en color (tot i que també pot treballaren blanc i negre). Aquest operador només és disponible en els dispositius de colorque treballin en PostScript Nivell 1 o en qualsevol dispositiu d'impressió quetreballi a Nivell 2.

La seva sintaxi és molt similar a l'operador image, però amb uns afegits referitsal sistema de reproducció de color:

1 B/Ntota la informació de color en una sola font de dades 3 RGB

4 CMYK

columnes files fondària [ columnes 0 0 - files 0 files ] { dades } false components colorimagetrue de color

nombre de bits per punt d'imatgei component de color

tantes fonts de dadescom components de color

Quan tota la informació numèrica de la imatge en color es troba en una sola fontde dades, l'ordre dels dígits binaris segueix l'ordre del sistema de color escollit:

Pel sistema de síntesi additiva (llum, TV) RGB, l'ordre és:VERMELL VERD BLAU ...

exemple 1 1 0 ... dóna groc

El valor 0 és absència de color, el valor 1 és color (el que toqui)

Pel sistema de síntesi sustractiva (quadricromia) CMYK, l'ordre és:CYAN MAGENTA GROC NEGRE ...

exemple 0 0 1 0 ... dóna groc

cyan groc negre

magenta

2 2 2 2 1 2 2 2

2 8 2 2 2 2 2 4

2 8 8 8 4 4 4 4

2 2 2 8 4 2 2 2

2 2 2 8 4 2 2 2

8 8 8 8 4 4 4 2

8 2 2 2 2 2 4 2

8 2 2 2 2 2 4 2

Page 97: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

97

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Els dos diagrames anteriors il·lustren el nostre primer exemple d'una imatgeen color a quadricromia que agafa la informació d'una sola font de dades:

Exemple 87

Aquest codi només funcionarà en intèrprets de Nivell 1 enimpressores de color o en un intèrpret de Nivell 2.

100 100 translate % situem la imatge300 300 scale % escalat a 300 x 300 punts

8 8 % 8 columnes i 8 files d'imatge

1 % 1 bit de fondaria per component de color

[8 0 0 -8 0 8] % sentit de lectura de dalt a baix

{ < % ordre dels colors *22221222 % YYYYKYYY *28222224 % YCYYYYYM *28884444 % YCCCMMMM *22284222 % YYYCMYYY *22284222 % YYYCMYYY *88884442 % CCCCMMMY *82222242 % CYYYYYMY *82222242 % CYYYYYMY *

> } % la font de dades hexa

false % una sola font de dades

4 % sistema CMYK

colorimage % operador% per un bon funcionament els comentaris * s'han de suprimirshowpage

A la pàgina següent donem un exemple de la segona tècnica de descripciód'una imatge en color. Cada color tindrà la seva pròpia font de dades. Per fer-homés entenedor hem dibuixat els diagrames en binari de la imatge-símbol per cadacolor amb l'equivalència hexadecimal corresponent.

Page 98: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

98

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

0 0

4 0

7 0

1 0

1 0

f 0

8 0

8 0

Cyan binari Magenta binariEquivalent hexadecimal

Exemple 88

100 100 translate % situem la imatge300 300 scale % escalat a 300 x 300 punts

8 8 % 8 columnes i 8 files d'imatge1 % 1 bit de fondaria per component de color[8 0 0 -8 0 8] % sentit de lectura de dalt a baix

{< 0 0 4 0 7 0 1 0 1 0 f 0 8 0 8 0 >} % Cyan

{< 0 0 0 1 0 f 0 8 0 8 0 e 0 2 0 2 >} % Magenta

{< f 7 b e 8 0 e 7 e 7 0 1 7 d 7 d >} % Groc

{< 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 >} % Negre

true % una font de dades per cada color4 % sistema CMYKcolorimage % operador

showpage

Equivalent hexadecimalGroc binari Negre binari

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 1

0 0 0 0 1 1 1 1

0 0 0 0 1 0 0 0

0 0 0 0 1 0 0 0

0 0 0 0 1 1 1 0

0 0 0 0 0 0 1 0

0 0 0 0 0 0 1 0

0 0 0 0 0 0 0 0

0 1 0 0 0 0 0 0

0 1 1 1 0 0 0 0

0 0 0 1 0 0 0 0

0 0 0 1 0 0 0 0

1 1 1 1 0 0 0 0

1 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0

1 1 1 1 0 1 1 1

1 0 1 1 1 1 1 0

1 0 0 0 0 0 0 0

1 1 1 0 0 1 1 1

1 1 1 0 0 1 1 1

0 0 0 0 0 0 0 1

0 1 1 1 1 1 0 1

0 1 1 1 1 1 0 1

0 0 0 0 1 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0

0 1

0 f

0 8

0 8

0 e

0 2

0 2

f 7

b e

8 0

e 7

e 7

0 1

7 d

7 d

0 8

0 0

0 0

0 0

0 0

0 0

0 0

0 0

Page 99: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

99

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Treballar amb grans quantitats de dades 12.4.1

Normalment totes les aplicacions que treballen d'alguna manera amb imatgesutilitzen una tècnica de captura de dades numèriques que difereix una mica de la quehem explicat fins ara. És una tècnica que permet manegar grans quantitats de dadesa la màxima velocitat possible. La seva estratègia consisteix en no posar tota lainformació de cop a la Memòria Virtual (fet que minvaria molt la capacitat de treballde l'intèrpret), si no tibar-la de mica en mica al mateix ritme que l'intèrpret laprocessa.

Explicar més detalladament aquesta tècnica surt de l'àmbit d'aquest curs, peròés important esmentar-la doncs la trobem en tots els fitxers PostScript generats peraplicacions. D'altra banda també és un bon exemple per entendre la raó31 d'utilitzardades hexadecimals en la descripció numèrica d'una imatge.

Exemple 89

Aquest codi només funcionarà en intèrprets de Nivell 1 enimpressores de color o en un intèrpret de Nivell 2.

100 100 translate % situem la imatge300 300 scale % escalat a 300 x 300 punts

8 8 % 8 columnes i 8 files d'imatge8 % 8 bits per component = 16'7 milions de colors[8 0 0 -8 0 8] % lectura de dades de dalt a baix% el procediment que normalment contenia les dades hexa{ % ara conte una funcio de lectura de dades hexadecimalscurrentfile % fitxer on colorimage interpretara les dades8 string % cadena que actua de buffer d'entradareadhexstring pop % lector d'hexadecimal a binari } bind % tanca i activa el procedimentfalse % una sola font de dades de color3 % sistema de sintesi additiva RGBcolorimageFCFC00 F9F900 F6F600 FF0000 0000FF F0F000 ECEC00 E9E900F20000 0000FF EFEF00 FF0000 FF0000 EEEE00 D60000 0000FFF90000 00F900 00F600 00F300 00F000 00EE00 00EB00 00E800E50000 DB0000 E20000 00E500 00E200 E00000 DD0000 D60000DBDB00 E2E200 D80000 00DD00 00DA00 D0D000 D3D300 D0D00000D700 00D400 00D000 00CC00 00C900 00C600 00C300 D3D30000C000 CE0000 C60000 CC0000 C40000 C90000 00BB00 D1D1000000FF C6C600 CCCC00 C4C400 C9C900 C60000 0000FF BBBB00% ordre de les dades de color RRGGBB RRGGBB RRGGBB ...% noteu la situacio de les dades hexa darrera l'operadorshowpage

Page 100: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

100

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Rotacions i perspectives 12.4.2

Les imatges com qualsevol objecte gràfic estan subjectes a manipulacionsdiverses de l'espai de coordenades de la pàgina. Veiem el mateix exemple 87, peròamb un efecte de rotació de 45° (vegeu capítol 3.3.3) :

Exemple 90

300 100 translate % situem la imatge45 rotate % rotacio de l'espai a 45°300 300 scale % escalat a 300 x 300 punts8 8 % 8 columnes i 8 files d'imatge1 % 1 bit de fondaria per component de color[8 0 0 -8 0 8] % lectura d'imatge de dalt a baix% la font de dades hexa

{< 22221222 28222224 28884444 2228422222284222 88884442 82222242 822222420 >}

false % una sola font de dades4 % sistema CMYKcolorimage % operadorshowpage

Basant-nos amb el mateix exemple 87, observem un efecte de perspectivatcombinant un escalat amb una rotació (vegeu capítol 3.3.5) per aquest ordre:

Exemple 91

300 100 translate % situem la imatge280 140 scale % relacio d'escalat 2:145 rotate % rotacio de l'espai a 45°8 8 % 8 columnes i 8 files d'imatge1 % 1 bit de fondaria per component de color[ 8 0 0 -8 0 8 ] % lectura d'imatge de dalt a baix

{< 22221222 28222224 28884444 2228422222284222 88884442 82222242 82222242 >}% la font de dades hexa

false % una sola font de dades4 % sistema CMYKcolorimage % operadorshowpage

Page 101: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

101

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Bits i Bytes 12.4.3

Sobretot treballant amb aplicacions les imatges són uns objectes PostScript quecorren el risc de consumir una gran quantitat d'informació del tot innecessària. Peraquest motiu és molt important no malgastar els recursos i utilitzar només lainformació imprescindible per obtenir el resultat desitjat. Com calcular el nombrede bits que ocupa la informació numèrica d'una imatge és una tasca de càlculsenzill, com podreu veure:

BITS totals = Columnes x Files x Bits per Component x Nombre de Components(fondària)

BYTES totals = BITS totals / 8

Fem un càlcul real sobre l'exemple 77:

8 x 8 x 8 x 3 = 1536 bits 1536 / 8 = 192 bytes

columnes files fondària RGB

Generadors d'Imatge sintètica 12.5

Contraposats als digitalitzadors (scanners) i les aplicacions que els utilitzen,existeixen els anomenats generadors sintètics d'imatge que no llegeixen òpticamentcap imatge si no que l'escriuen (construeixen) a partir d'uns determinats algoritmeso funcions.

En aquest nivell tenim aplicacions com els generadors d'Imatges Fractals, elsgeneradors d'Estereogrames de Punt Aleatori (Ull Màgic), els programes de dibuixen format PICT o PCX, o simplement un senzill degradat en blanc i negre com elde l'exemple:

Exemple 92

Un degradat no és res més que una imatge sintètica simpleamb uns valors màxims i mínims de nivells de gris o de color

100 100 translate % posicionem la imatge300 300 scale % escalem la imatge a 300 x 300 punts% cadena buida amb 256 llocs de capacitat/cadena256 256 string def% farcim la cadena de valors decimals, de 0 a 2550 1 255 {cadena256 exch dup put} bind for1 256 8 [1 0 0 256 0 0] {cadena256} image% construim una imatge d'una columna x 256 filesshowpage

Page 102: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

102

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Introducció al format EPS .13

L'any 1987 les tres companyies: Altsys, Aldus i Adobe definiren el formatEncapsulated PostScript (EPS) o sigui PostScript Encapsulat. Des d'aleshores aquestformat de fitxer ha esdevingut un dels estàndars més utilitzats per a aqualsevoltipus d'informació gràfica. En el moment actual tots els grans fabricants d'aplicacionscontemplen aquest format tan a l'hora d'importar com a l'hora d'exportar informació.

Anem a veure quines són les característiques fonamentals d'un fitxer EPS:

• És un fitxer ASCII escrit en Llenguatge PostScript.

• La informació continguda pertany, com a màxim, a 1 sola pàgina.

• Tret de treballar en un entorn Display PostScript, la pre-visualitzacióper pantalla d'un fitxer EPS (a les aplicacions) no es correspon maial 100% de la informació que rep l'intèrpret PostScript.

• La informació continguda en un fitxer EPS pot ser de qualsevolnaturalesa: gràfics, trames, imatge o tipografia. Tot plegat tan enblanc i negre com en color.

• Un fitxer EPS sense pre-visualització, és un fitxer multi-plataforma(DOS, Mac, Windows, Unix, etc.)

• Un fitxer EPS pot ser auto-imprimible.

Anem a veure d'una forma pràctica algunes d'aquestes característiques:

Exemple 93

Demostrarem que qualsevol fitxer EPS està en format ASCII

A Agafeu un fitxer EPS generat per una aplicació iprocediu a fer la comprovació segons l'entorn que treballeu:

• Mac o Windows:Obriu el fitxer EPS des d'un Processador de Textes com afitxer ASCII (també anomenat Sols Text). Us podeu trobarque alguns programes, degut a l'extensió EPS del fitxer, nol'obrin com a text (sinó com a gràfic d'importació). Aleshoreselimineu l'extensió del fitxer.

• DOS:Des del Sistema Operatiu, féu un TYPE del fitxer EPS oobriu-lo des d'un processador de textes ASCII del Sistema(EDIT de MSDOS o EDITOR de DRDOS).

Page 103: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

103

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Exemple 94

Demostrarem que un fitxer EPS és auto-imprimible:

A Agafeu un fitxer EPS generat per una aplicació iprocediu a imprimir-lo des d'una utilitat per enviar arxiusPostScript a una impressora:

• Mac o Windows:Des d'un Adobe Printer Driver o qualsevol utilitat adjuntaal Sistema Operatiu o a una Filmadora.

• DOS:Des d'una utilitat d'Adobe com PCSEND o PSDOWN.També hi ha possibilitats d'imprimir-ho (no és el 100%segur) amb una ordre COPY o PRINT del Sistema Operatiu.

B Si no s'imprimeix, obriu el fitxer amb un Editor deTextes i afegiu al final del fitxer l'ordre: showpage. Torneu aenviar el fitxer a la impressora.

La pre-visualització 13.1

És la informació NO PostScript del fitxer EPS que s'utilitza per orientarvisualment a l'usuari d'una aplicació.

Quan importem un fitxer EPS a una aplicació i veiem el seu contingut, enrealitat el que estem veient és una imatge simulada (un bitmap) de la vertaderainformació que s'enviarà al dispositiu d'impressió. Aquesta imatge simulada (ScreenPreview) és annexe a la informació PostScript del fitxer (en format ASCII) i el seuformat depèn de l'entorn en que ha estat creada. Si es tracta d'un entorn Mac(QuickDraw) aquesta imatge tindrà format PICT, si estem en un entorn Windowso DOS la podrem tenir en format Windows Metafile o en format TIFF.

Si obrim un fitxer EPS (amb pre-visualització) amb un Editor de Textes, veuremque al principi del fitxer surten una sèrie de caràcters estranys. Corresponen a lainformació (en un dels formats esmentats anteriorment) de la pre-visualització delfitxer EPS.

Per això és bàsic eliminar la pre-visualització quan vulguem produir unfitxer EPS que sigui vàlid per a qualsevol plataforma de treball. L'existència d'unapre-visualització que no es correpongui a l'entorn de treball en que ha estat creada,ens pot fer invalidar el fitxer EPS.

Si no existeix la pre-visualització les aplicacions ensenyen un rectangle grison també normalment s'inclouen unes informacions de referència (el títol del fitxer,qui l'ha creat i la data de creació).

Page 104: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

104

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Ho veiem en la figura 12, extreta del procés de muntatge d'aquest mateixmanual. Correspon a l'apartat 10.2.3 i al resultat de l'exemple 63:

figura 12

Totes les aplicacions que poden generar fitxers d'exportació EPS informen odeixen triar, el fet d'incloure o no, la pre-visualització de pantalla.

En un intent d'establir un únic format de pre-visualització independent de laplataforma on es treballa, Adobe va crear l'any 1992 l'anomenat Device IndependentScreen Preview. És un fitxer anomenat EPSI32 que porta la pre-visualització enformat ASCII hexadecimal, la qual cosa li assegura la total portabilitat en tot tipusde plataformes informàtiques. En entorns Mac aquest fitxer agafa l'extensió *.EPSI,en entorns DOS i Windows té l'extensió *.EPI. A hores d'ara és encara difícil trobaralguna aplicació que suporti aquest format.

Hem de tenir present que sigui en el format que sigui, totes les pre-visualitzacions de pantalla estan en format d'imatge i això significa una resoluciódeterminada i limitada, que poques vegades es correspon a la resolució final del'objecte gràfic imprès. Pensem en l'exemple (sol passar de tant en tant) de quanimprimim un EPS en una impressora No PostScript o el sistema no ha trobat elfitxer EPS que es vol imprimir. Què passa ? doncs s'imprimeix la pre-visualització.

Només en entorns que treballin amb Display PostScript la informació de lapantalla s'extreurà del mateix codi PostScript que el fitxer EPS porta incorporat. Enaquest cas ja no podem parlar de pre-visualització, sinó d'un autèntic WYSIWYG.

Page 105: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

105

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Com crear un fitxer EPS 13.2

Qualsevol fitxer PS és potencialment convertible a fitxer EPS i, per tant potésser importable per una aplicació. Per crear un fitxer EPS ens hem d'adaptar a unaestructura de document mínima (DSC). Només són necessaris dos comentaris a lacapçalera del fitxer:

Versió del format EPS que s'utilitza

%!PS-Adobe-3.0 EPSF-3.0Coordenades X Y del xamfrà

%%BoundingBox: ieX ieY sdX sdY inferior esquerre (ie) i superiordret (sd) del rectangle que incloutota la informació gràfica.

Iniciem-nos convertint el codi PostScript de l'exemple 79 (corresponent a unaimatge digital) al format EPS:

Exemple 95

Afegim la capçalera EPS adequada a les coordenades de la imatge:

%!PS-Adobe-3.0 EPSF-3.0%%BoundingBox: 100 100 200 200% el calcul del BoundingBox es en funcio de les coordenades:100 100 translate % BoundingBox: 100 100 x y100 100 scale % BoundingBox: x y 100+100 100+1000 setgray8 8 false [8 0 0 -8 0 8] {<F7BE80E7E7017D7D>} imagemaskshowpage

Al tractar-se d'un format de document, des del 1987 el format EPS ha anatevolucionant mica en mica. Les versions s'han succeït al mateix ritme de les diversesrevisions d'intèrprets PostScript. Actualment anem per la versió 3.0 que és la quehem posat a l'exemple.

D'altra banda el %%BoundingBox juga un paper molt decisiu en laconfiguració del document. La teoria ens diu que ha de ser el rectangle més petitque inscrigui tot el contingut gràfic del fitxer. Hem de saber però, que aquestrectangle serà utilitzat com a retallador (clip) per l'aplicació que realitza la importació.La dificultat del càlcul del %%BoundingBox anirà en funció de la complexitat delfitxer o l'efecte que desitgem produir.

Existeixen tres comentaris més de capçalera, que no són obligatoris però sirecomanables: %%Creator:, %%Title: i %%CreationDate: , que és la informacióque apareix en el tac gris quan a l'EPS hi manca la pre-visualització.

Page 106: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

106

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Anem a experimentar amb un nou fitxer EPS, basat en l'anterior exemple 28D(capítol 6). Aquest cop treballarem amb tipografia, inclourem els tres comentarisrecomanables i farem tres observacions importants:

• Si imprimim directament el fitxer EPS s'imprimirà una A sencera.

• Si importem el fitxer a una aplicació, observarem que al no tenir pre-visualització apareixerà un tac gris i probablement també, els tres comentarisrecomanats d'una forma incompleta. Per resoldre el problema només caldrà variarl'escala del fitxer i els valors del %%BoundigBox de forma que tot el text hicàpiga correctament.

• Si imprimim el document on hem importat l'EPS, veurem com la lletra Aens apareixerà retallada just amb les dimensions del rectangle mesurat amb el%%BoundingBox.

Exemple 96

%!PS-Adobe-3.0 EPSF-3.0%%BoundingBox: 100 100 200 200%%Creator: El_Nostre_Nom%%Title: Exemple84%%CreationDate: El_Dia_D'avui% les dades posades al BoundingBox es corresponen amb% les del rectangle retallador de l'exemple 28D/Helvetica findfont 200 scalefont setfont % triem la tipografia85 85 moveto (A) show % posicionem la lletra Ashowpage % imprimeix la pagina

Les aplicacions que importen fitxers EPS, normalment poden realitzar lesmanipulacions següents: Posicionament, Duplicat, Escalat, Rotació i Retallat. Caldestacar també la importància que tenen les extensions dels fitxers EPS, a l'hora derealitzar automàticament una importació. Si treballem en DOS o Windows l'extensióreconeguda és *.EPS si treballem en Mac és també *.EPSF.

Cal esmentar una excepció dins el format EPS, es tracta dels EPS generatssegons el format de l'aplicació Adobe Illustrator33 (AI). La rígida estructura d'aquestsdocuments permet poder-los visualitzar sense pre-visualització i poder manipu-lar completament tots els seus elements. Per tan si una aplicació pot importar fitxersEPS només del format Adobe Illustrator, atenció! doncs podria ser que no poguésimportar els fitxers del format universal que hem vist en aquest mateix capítol.

Per acabar, cal saber que existeix una llista d'operadors PostScript que sónd'ús prohibit en fitxers EPS, entre els més coneguts tenim: clear, copypage,exitserver, initgraphics i quit. Tenim també una segona llista d'operadors pocrecomanables, hi destaquem: statusdict, userdict, setscreen i settransfer.

Page 107: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

107

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Galeria d'Exemples

Tots els exemples del manual que donen algún tipus de representació gràfica,els trobareu en aquest apartat ressenyats amb el mateix número. Aquests exempless'han imprès amb una impressora PostScript B/N de Nivell 2 a 600x600 ppp.

Exemple 5

Exemple 6

Exemple 17 (A)

A

Page 108: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

108

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Galeria d'Exemples

Exemple 17 (B)

Exemple 18

A

A

Page 109: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

109

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Galeria d'Exemples

Exemple 19 (A)

Exemple 19 (B)

Exemple 20 (A)

Acom esteu ?

bona tarda

Page 110: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

110

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

AEIOU

Galeria d'Exemples

Exemple 20 (B)

Exemple 26

Exemple 27 (A) Exemple 27 (B)

Llenguatge PostScript

Page 111: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

111

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Galeria d'Exemples

Exemple 28 (A B) Exemple 28 (C) Exemple 28 (D)

Exemple 30 (A)

A

Page 112: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

112

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Galeria d'Exemples

Exemple 30 (B)

Page 113: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

113

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Galeria d'Exemples

Exemple 31 (A)

Exemple 31 (B) Exemple 31 (C)

Page 114: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

114

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Galeria d'Exemples

Exemple 32

Exemple 33

Exemple 35

Page 115: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

115

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

123Galeria d'Exemples

Exemple 36

Exemple 37 (A) Exemple 37 (B)

Exemple 39

312231

Estic prima

Page 116: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

116

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Galeria d'Exemples

Exemple 40

Exemple 41

Exemple 46

AmpleA m p l e

Buida

aEiOuaEiOu

Page 117: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

117

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Hola bon dia !

Hola bon dia !

Galeria d'Exemples

Exemple 47

Exemple 48

Exemple 49

Blues

Hola bon dia !Hola bon dia !

Page 118: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

118

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Galeria d'Exemples

Exemple 50

Exemple 51

Exemple 52

Primera liniaSegona linia

Gris

Gruix

Page 119: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

119

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Galeria d'Exemples

Exemple 53

Exemple 54

Exemple 55

Llum

PostScriptPostScript

PostScri

pt

Post

Scrip

t

Pos

tScr

ipt

Pos

tScr

ipt

Post

Scrip

t

PostScri

pt

PostScript

PostScript PostScript

PostScript

PostScript

PostS

criptP

ostScript

PostScript

PostScript

PostScript

PostScript Language

GOLGOLGOLGOLGOLGOLGOLGOLGOLGOLGOLGOLGOLGOLGOLGOLGOLGOLGOLGOL

Page 120: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

120

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Galeria d'Exemples

Exemple 56

Exemple 60 (C)

Exemple 61

1 9 9 4

Marc Antoni Malagarriga i Picas
Exemple 61
Aquesta figura és fruït d'una captura de pantalla del simulador PostScript PSTutor. Treballant directament amb una impressora o un altre simulador, els nivells de qualitat serien ben diferents.
Marc Antoni Malagarriga i Picas
Exemple 60(C)
No oblideu que si treballeu en PDF, les trames no es veuen en el visualitzador (Acrobat, AdobeReader, GhostView, MacOSX Preview, etc.)
Page 121: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

121

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Galeria d'Exemples

Exemple 62

Exemple 63

Exemple 64

213123

Marc Antoni Malagarriga i Picas
Exemple 62
No oblideu que si treballeu en PDF, les trames no es veuen en el visualitzador (Acrobat, AdobeReader, GhostView, MacOSX Preview, etc.)
Marc Antoni Malagarriga i Picas
Exemple 63
Aquesta figura és fruït d'una captura de pantalla del simulador PostScript PSTutor. Treballant directament amb una impressora o un altre simulador, els nivells de qualitat serien ben diferents.
Page 122: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

122

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Galeria d'Exemples

Exemple 65

Exemple 66

Exemple 67(en color)

Page 123: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

123

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Mescla A

dditiva del Color

Galeria d'Exemples

Exemple 68_1 (B) (C)(en color)

Exemple 68_2 (D) (E F)(en color)

Exemple 68_3(en color)

Mescla A

dditiva del Color

Page 124: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

124

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Galeria d'Exemples

Exemple 69(en color)

Exemple 70_1 Exemple 70_2(en color) (en color)

Exemple 71(en color)

de color substractiva

Mes

cla

de color substractiva

Mes

cla

Goretti=

Page 125: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

125

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

QuadricromiaQuadricromia NEGRE

Quadricromia GROC

Quadricromia MAGENTA

Quadricromia CYAN

Galeria d'Exemples

Exemple 76(en color)

Exemple 79 Exemple 80

Page 126: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

126

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Galeria d'Exemples

Exemple 81

Exemple 82 Exemple 84

Exemple 85

Page 127: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

127

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Galeria d'Exemples

Exemple 86

Exemple 87 Exemple 88(en color) (en color)

Exemple 89(en color)

Page 128: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

128

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Galeria d'Exemples

Exemple 90(en color)

Exemple 91(en color)

Exemple 92

Page 129: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

129

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Galeria d'Exemples

Exemple 95

Exemple 96

A

Page 130: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

130

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Notes

1 Aconsellem afegir l'extensió PS a tots els programes que estiguin escrits en PostScript, siguingenerats per aplicacions (que per defecte hi posen l'extensió PRN) o per programació. D'aquestamanera facilitarem el treball d'algunes aplicacions (ex. Gestors de RIPS, Distiller, etc.) i podremidentificar aquest arxius dels altres formats (ex. EPS, TIF, etc.).

2 Els paràmetres més corrents de comunicacions amb una impressora PostScript són: 1200 o 9600(més aconsellable) bauds de velocitat, dades de 8 bits, paritat No i 1 stop bit. Si és possible tambés'aconsella utilitzar el protocol XON/XOFF.

3 El programa PSDOWN el facilita Adobe gratuïtament amb alguns paquets de fonts. Es tractad'una utilitat (que se sàpiga per entorns DOS) per operar amb impressores PostScript a través d'uncable sèrie. Quan s'engega obre uns menús i comprova el port de comunicacions interrogant a laimpressora l'existència de l'intèrpret 'PS i el model del fabricant. Amb aquest programet podemfer entre altres coses: imprimir arxius PostScript, carregar i descarregar fonts PostScript a la RAMi demanar el directori de fonts residents i carregades.

4 El programa PCSEND el facilita Adobe gratuïtament amb alguns paquets de fonts. Aquestautilitat treballa a través del port paral·lel i que se sàpiga només existeix per entorns DOS. Funcionasense menús, com si fós una instrucció d'un sistema operatiu. Per exemple per imprimir un arxiuPostScript: PCSEND -1 "nom de l'arxiu" . Amb ell podem: imprimir un arxiu PostScript,carregar i descarregar fonts PostScript a la RAM i a Disc Dur i treure per impressora el directoride fonts residents i carregades a la memòria.

4.1 Les utilitats WINDOWN (per Windows) i PSTOOL (per Mac) les facilita Adobe gratuïtamentamb els nous manejadors (drivers) d'impressores. La majoria de RIPS i algunes impressores,disposen d'utilitats pròpies per enviar arxius PostScript.

5 Existeixen al mercat gran quantitat d'intèrprets clònics de PostScript. Podrem distingir elsproductes clònics dels originals per l'ús correcte dels copyrigths: PostScript® i els següentslogotips: PostScript Logo Adobe Logo

6 Utilitzarem aquesta expressió quan ens referim al fet d'imprimir en una impressora PostScriptpròpiament (directe) o imprimir prèviament en un arxiu (indirecte) per després enviar-lo a laimpressora.

7 Extensions i tipus de fitxers que són ASCII i estan escrits en llenguatge PostScript: PS (fitxerPostScript "pur"), EPS (fitxer PostScript Encapsulat), PPD (fitxer de configuració d'un modeldeterminat d'impressora PostScript), AI (fitxer Adobe Illustrator).

8 Per definir aquest comportament també existeix l'acrònim anglès LIFO (Last In, Firts Out).

9 Podeu consultar tota la informació referent aquest tema a l'Apèndix G del PostScript LanguageReference Manual Second Edition.

10 Si obriu qualsevol arxiu PPD, podreu consultar aquestes dades en l'apartat corresponent a formatsde pàgina.

11 CTM és l'acrònim de Current Transformation Matrix. La matriu de transformació consta de siselements: [a b c d Tx Ty] (el llenguatge omet 3 elements més, que sempre són constants en una matriude 3x3 per a manipulacions bidimensionals).

postc

Page 131: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

131

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Notes

12 En l'ampliació del llenguatge PostScript Nivell 2, també podem crear diccionaris posant parellesde Clau/Valor entre els símbols << ... i ... >>.

13 En l'ampliació del llenguatge PostScript Nivell 2 existeix una altra tipus de cadena que s'utilitzaper transferir dades en format comprimit. És la cadena codificada en ASCII base-85 que va anelladaentre els símbols <~ ... i ... ~>.

14 La memòria virtual de l'intèrpret PostScript és la seva memòria de treball i va directament lligadaa la memòria RAM del dispositiu d'impressió. S'escriu també amb les inicials VM corresponentsa les paraules angleses Virtual Memory.

15 De l'operador stroke se'n deriven més operadors, alguns de Nivell 2: strokepath, ustrokepath,ustroke, rectstroke, instroke, inustroke.

16 De l'operador fill se'n deriven més operadors, alguns també de Nivell 2: eofill, ufill, ueofill, rectfill,infill, ineofill, inufill, inueofill.

17 De l'operador clip hi ha força variants que incorporen novetats a Nivell 2 i Display PostScript:viewclip, eoviewclip, rectviewclip, initviewclip, viewclippath, initclip, eoclip, rectclip,clippath.

18 També es poden anomenar algorismes. Exemples, relativament senzills, d'algoritmes de justificacióde text els podem trobar en l'exemple de la la pàgina 179 del "Llibre Blau" (PostScript LanguageTutorial and Cookbook) o en el capítol 7.3 del "Llibre Verd" (PostScript Language ProgramDesign).

19 Els sistemes disponibles en l'actualitat de Display PostScript van una mica més enllà de l'entornde l'ordinador personal (Minis i Estacions de Treball). Amb sistemes operatius com els VMS, Macho els derivats de l'UNIX (ULTRIX, AIX, o IRIX). Els entorns de treball s'assemblen als deWindows o System 7 (X Window System, NeXTSTEP o DECwindows).

20 L'Adobe Type Manager interpreta única i exclusivament fonts de Tipus 1.

21 En molts dels manuals tècnics d'impressores i programes s'utilitzen també les sigles angleses dpi(dots per inch) en la resolució d'impressores i lpi (lines per inch) en la freqüència de trama.

22 Hi ha dos operadors més que són generadors de trames: setcolorscreen i sethalftone. Existeixenen intèrprets de versions color i en l'ampliació de llenguatge Nivell 2 i Display PostScript.

23 L'expressió Nivell de Gris, s'ha d'entendre sempre en un concepte ampli de Nivell de Color, siguiquin sigui aquest.

24 El PostScript Nivell 2 pot utilitzar també el nom /DeviceGray i els operadors setcolorspace isetcolor per activar aquest espai de color.

25 La Commission Internationale de l'Éclairage (CIE) va establir el 1931 els valors de les longitutsd'ona (mesurats en nanòmetres) dels tres colors primaris que capta l'ull humà: Vermell = 700.0nm, Verd = 546.1 nm. i Blau = 435.8 nm

26 Existeix una funció anomenada setblackgeneration que recalcula el valor de negre de laquatricromia producte d'una conversió desde RGB. Aquest tipus de funció és particular a cadamodel de dispositiu d'impressió PostScript i el seu estudi ens surt de l'àmbit d'aquest curs.

Page 132: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

132

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Notes

27 Existeix una funció anomenada setundercolorremoval que ajusta la quantitat de color a reduir encada component cromàtic (Cyan, Magenta i Groc) d'una quadricromia producte d'una conversiódesde RGB. Aquest tipus de funció és particular a cada model de dispositiu d'impressió PostScripti el seu estudi ens surt de l'àmbit d'aquest curs.

28 Aquest operador treballa les imatges, que s'anomenen "plomes" en l'argot d'arts gràfiques. Blanco negre contrastat al màxim.

29 En PostScript Nivell 1 l'operador image només soporta blanc i negre, però en l'ampliació dellenguatge Nivell 2, pot treballar el color per mitjà d'un diccionari de dades. Aquest darrer aspecteno el tractarem, doncs s'escapa de l'àmbit de cobertura del present curs d'iniciació.

30 Cal recordar que la taula ASCII és universal per tots els ordinadors del caràcter 32 fins el caràcter127, el contingut de la resta de caràcters pot variar segons els entorns. D'aquí es dedueix que, deguta la limitada portabilitat de segons quins caràcters, el treball amb caràcter decimals (anomenatnormalment treballar en binari) queda restringit a entorns concrets.

31 Els caràcters hexadecimals, que com sabem van de 0 a 9 i de la A a la F, entren dins la taula ASCIIuniversal i aixó assegura la portabilitat de les dades d'una imatge en qualsevol Sistema Operatiu.

32 Trobareu més informació a l'Apèndix H del PostScript Language Reference Manual second edition.

33 Hem esmentat el format EPS d'Adobe Illustrator (AI), per què és un format gràfic acceptat pertothom. Malgrat això existeixen algunes aplicacions (p.e. Corel Draw) que han creat uns altresformats EPS estructurats de manera molt particular (p.e. l'EPS per Corel Trace).

Page 133: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

133

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Bibliografia

PostScript® Language Reference Manual. Third EditionAdobe Systems IncorporatedAddison Wesley 1990 ISBN 0-201-18127-4

Anomenat el llibre vermell. És “El Manual” oficial d'aquest llenguatge (Level3).http://partners.adobe.com/public/developer/en/ps/PLRM.pdf

PostScript® Language Tutorial and CookbookAdobe Systems IncorporatedAddison-Wesley 1985 ISBN 0-201-10179-3

Anomenat el llibre blau. De caràcter més didàctic, explica tècniques i dóna exemplescomentats pas a pas, de quasi bé tots els àmbits del llenguatge. Només de Nivell 1.

PostScript® Language Program DesignAdobe Systems IncorportedAddison-Wesley 1988 ISBN 0-201-14396-8

Anomenat el llibre verd. Molt més tècnic i orientat a programadors, però també ambmolts exemples. Només de Nivell 1.

Adobe Type 1 Font Format. Version 1.1Adobe Systems IncorportedAddison-Wesley 1990 ISBN 0-201-57044-0

Manual d'organització de les fonts en format PostScript Type 1. Molt especialitzat iorientat als tipògrafs constructors de lletres.

Introduction a PostScript®

David A. HolzgangSybex 1987 ISBN 2-7361-0322-X

Molt recomanable per iniciar-se a la programació. A través d'un exercici progressiuens introdueix en aspectes gràfics, tipogràfics i de composició de text.

Real World PostScript®

Stephen F. RothAddison-Wesley 1988 ISBN 0-201-06663-7

Fet d'aportacions diverses extretes de la pràctica diària de prestigiosos programadorsd'aplicacions. Didàctic, pràctic i de nivell.

Encapsulated PostScript®. Application Guide for the Macintosh and PCPeter VollenweiderCarl Hanser Verlag and Prentice Hall 1990 ISBN 0-13-275843-1

Ens introdueix a diversos aspectes del llenguatge a través del format EPS treballantamb diverses aplicacions gràfiques conegudes.

Page 134: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

134

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Bibliografia

PostScript® by ExampleHenry McGilton and Mary CampioneAddison-Wesley 1992 ISBN 0-201-63228-4

Amb molts exemples i gran quantitat d'il·lustracions. Contempla tots el àmbits delllenguatge, inclós el Nivell 2. Una bona eina per a programadors.

Thinking in PostScript®

Glenn C. ReidAddison-Wesley 1990 ISBN 0-201-52372-8

Una eina de suport per a programadors, amb exemples pràctics. Inclou tambéexercicis per sistemes Display PostScript.

La micro-édition selon SeyboldJ. Seybold & F. DresslerDunod 1987 ISBN 2-04-018614-X

Fa un repàs històric i tècnic del món de l'Edició Electrònica. Des dels anys 70 fins ala creació del Llenguatge PostScript i el PageMaker. Molt recomanable.

Fundamentos de la teoría de los coloresHarald KüppersEditorial Gustau Gili, S.A. 1980-85 Col.lecció GG DiseñoISBN 84-252-0978-1

Un llibre didàctic i eminentment pràctic sobre la teoria del color i la seva reproducció.

U&lc. Upper and Lower CaseInternational Typeface Corporation866 Second Avenue, New York. NY 10017. USA

Una de les millors revistes de tipografia i edició.http://www.itcfonts.com http://www.uandlc.com

PostScript Language JournalP.O. Box 5763, Parsippany, New Jersey 07602. USA

Una revista especialitzada en el llenguatge, escrita des de fora d'Adobe.

PostScript&Acrobat/PDFThomas MerzTal, 40 - 80331 München (Germany)Title of the Original German Edition: Die PostScript- & Acrobat-Bibel© Thomas Merz Verlag 1996

Una bona publicació (es pot trobar en PDF als CD de tipografies de Linotype), queaprofundeix sobretot en l'apartat de la tipografia i fa un repàs al Nivell 2, al formatPDF i al clònic Ghostscript.

Page 135: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

135

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Eines d'Utilitat

AdobeTM Type Manager. Windows i MacAdobe Systems Incorporated

És un intèrpret PostScript de pantalla, únicament per a fonts Type 1, que treballaconjuntament amb tot tipus d'aplicacions gràfiques. Gestiona també la impressió defonts en impressores No PostScript.

AdobeTM PostScript® Printer Driver. Windows i MacAdobe Systems Incorporated

El darrer i més complet manejador d'impressió PostScript. Gestiona totes lesfuncions d'impressió a través dels arxius PPD. Gestiona la càrrega i descàrrega defonts, així com la càrrega de fitxers PostScript.

PSDown. DOSAdobe Systems Incorporated

Gestiona el manteniment de fonts i carrega fitxers PostScript a través del port decomunicacions sèrie (RS-232) de la impressora.

PCSend. DOSAdobe Systems Incorporated

Gestiona el manteniment de fonts i carrega fitxers PostScript a través del port decomunicacions paral.lel (LPT) de la impressora.

Windown. Windows 3.0Adobe Systems Incorporated

Gestió de fonts i càrrega de fitxers PostScript a través de l'entorn Windows.

LasertalkTM. Windows i MacEmerald City Software - Adobe Systems Incorporated

Aplicació que, juntament amb la impressora, s'utilitza per desenvolupar i depurarprogrames escrits en PostScript.

PSTool. MacAdobe Systems Incorporated

Gestiona el manteniment de fonts i carrega fitxers PostScript a través del port decomunicacions Appletalk de la impressora.

ehandler.psAdobe Systems Incorporated

Fitxer PostScript (ASCII) carregable a la RAM de la impressora per la gestió d'errors.

AdobeTM Acrobat® Distiller. Windows, Mac, DOS i UNIXAdobe Systems Incorporated

És l'intèrpret PostScript de referència (Nivells 2 o 3 segons la versió). Transformafitxers *.PS i *.EPS a fitxers PDF (Portable Document Format).

Page 136: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

136

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Eines d'Utilitat

AdobeTM Acrobat® i AdobeReader®. Windows, Mac, Unix, Linux, etcAdobe Systems Incorporated

El millor gestor i visualitzador de fitxers PDF. Porta una amplíssima gamma d'einesper treballar el fitxer electrònic des de molts diversos àmbits.

PS Tutor/PSView. Mac, DOS i WinLincoln & Co.

Intèrpret simulador en blanc i negre/color de Llenguatge PostScript. Amb unaacceptable qualitat per pantalla, però de baixa resolució en impressora. Un eina moltúltil per aprendre el llenguatge i un bon suport de programació. Nivells 1 i 2.

Advanced PostScript Error HandlerSystems of Merritt

Gestiona errors PostScript treballant interactivament amb l'intèrpret.

Trap4eLifford IT Services Ltd.

Col.lecció de gestionadors d'errors i depurador de gràfics.

PostHaste. MacCreative Solutions, Inc.

Aplicació per programar interactivament amb l'intèrpret a través d'Appletalk.

Postility ToolkitPostCraft International, Inc.

Eina per desenvolupar, manipular i imprimir fitxers *.EPS.

Transverter ProTM. Windows.TechPool Software, Inc.

Aplicació per traduïr fitxers *.PS i *.EPS a d'altres formats gràfics (TGA, CGM, AI,WPG, WMF, TIF, GIF, BMP i PCX) intentant mantenir tota la qualitat de l'originaldins les possibilitats de cada format.

Ghostscript Windows, Mac, Unix, Linux, etcAladdin Free Public License http://www.cs.wisc.edu/~ghost/doc/AFPL/GNU Public License http://www.cs.wisc.edu/~ghost/doc/gnu/index.htm

Intèrpret PostScript de lliure distribució que ja ha arribat a la seva majoria d'edat (v.8.#) i que tècnicament no te res a envejar a d'altres productes comercials. Des desempre ha estat el motor gràfic fonamental per les distribucions Linux. Transformafitxers *.PS i *.EPS a fitxers PDF i d'altres formats.

PSAlterQuite Software http://www.quite.com/psalter/

Intèrpret PostScript per a Windows. Recomanat per facilitar la programació enaquest llenguatge i amb sortida a formats TIFF i BMP.

Page 137: MANUAL CURS 'I L

I N I C I A C I Ó

SEMINARIS DE POSTSCRIPT®

Marc Antoni Malagarriga i Picas

137

MANUAL DEL CURS D'INICIACIÓ AL LLENGUATGE POSTSCRIPT

Adreces d'Utilitat

Adobe Systems Incorporatedhttp://www.adobe.comAdobe Solutions Networkhttp://partners.adobe.com

Adobe Systems Ibérica, SLTorre Mapfre -Vila OlímpicaCarrer Marina, 16-18 planta 22 A08005 BarcelonaTel. 93 225 65 25 Suport Tècnic - Tel. 93 423 67 67 Fax 93 426 08 25http://www.adobe.es

Lincoln & Co., Inc.29 Domingo DriveConcord, MA 01742 U.S.A.Tel (508) 369-1441

Llibreria Hispano-AmericanaGran Via de les Corts Catalanes, 59408007 BarcelonaTel. (93) 317 53 37

Llibreria Herdercarrer Balmes, 2608007 BarcelonaTel. (93) 317 05 78

Llibreria Díaz de Santoscarrer Balmes, 417-41908022 BarcelonaTel. (93) 212 86 47

Marc Antoni Malagarriga i Picascarrer Ponent, 5 - 2on08242 ManresaTel . 938 721642<[email protected]>http://www.femfum.com