Poscritto
| poscritto | |
|---|---|
| Corso di lingua | multiparadigma , stack -based , procedurale |
| Apparso in | 1982 |
| Autore | John Warnock , Charles Geschke |
| Sviluppatore | Adobe |
| Estensione del file |
.ps |
| Pubblicazione | PostScript 3 (1997) |
| Sistema di tipo | rigoroso , dinamico |
| Principali implementazioni | Adobe PostScript, TrueImage, Ghostscript , InterPress |
| stato influenzato | Via |
| influenzato | PDF , PostScript incapsulato |
PostScript è un linguaggio di descrizione delle pagine utilizzato principalmente nel desktop publishing .
Ideologia
Postscript è stato sviluppato da John Warnock e Chuck Geschke di Adobe Systems all'inizio degli anni '80 . Postscript è stato originariamente utilizzato come il nucleo del motore di stampa del computer Apple , ma presto si è diffuso sulla maggior parte dei sistemi informatici. Gli interpreti Postscript (sotto forma di componenti software o hardware) per la stampa di documenti sono presenti in quasi tutti i moderni sistemi informatici.
Postscript utilizza un modello di visualizzazione di testo (o immagini) su una pagina vuota. Quando la pagina è pronta, viene stampata e inizia il “disegno” dell'immagine della pagina successiva. Non è altro che un metodo di compilazione. Ogni documento Postscript è solitamente un programma che stampa ( o visualizza su uno schermo monitor ) pagine consecutive.
Storia
Il linguaggio PostScript è stato concepito nel 1976 da John Warnock di Evans e Sutherland Computer Corporation .. Il suo collega John Gaffney , che allora era l' interprete per il grande database di grafica 3D del porto di New York , creò il linguaggio Design System (molto simile a Forth ). Successivamente, John Warnock si trasferì al centro di ricerca Xerox PARC a Palo Alto e nel 1978, insieme a Martin Newellha creato un nuovo sistema JaM (John e Martin) basato sul Design System, utilizzato nella ricerca sulla stampa e successivamente sviluppato in InterPress- Protocollo di stampa Xerox .
Nel 1982, John Warnock lasciò Xerox e fondò Adobe Systems Inc. con Chuck Geschke . Inizialmente, il loro obiettivo era creare una workstation di stampa specializzata, che doveva essere chiamata PostScript, ma presto si resero conto che era meglio concentrare i propri sforzi sullo sviluppo di strumenti per la gestione di stampanti di terze parti.
Nel 1984, PostScript ha visto la luce del giorno (il livello 1 è stato successivamente aggiunto al nome per distinguerlo dal livello 2). Postscript aveva una serie di vantaggi rispetto ad altri sistemi dell'epoca:
- indipendenza dalla piattaforma. Lo stesso file poteva essere stampato sia su una stampante laser, che poi produceva 300 dpi , sia su una fotocomposizione a 2400 dpi, con la migliore qualità in ogni caso;
- qualsiasi produttore può concedere in licenza un interprete PostScript e utilizzare PostScript con il proprio dispositivo;
- le specifiche PostScript erano pubblicamente disponibili, quindi qualsiasi sviluppatore poteva scrivere programmi che supportassero PostScript.
Adobe ha corso un rischio con PostScript e potrebbe non essere stata in grado di convincere il mercato della necessità di un tale linguaggio se non fosse stato per Steve Jobs di Apple Computer . Nel 1985, le vendite di computer Macintosh iniziarono a diminuire e Apple aveva bisogno di una "killer app", qualcosa che solo il suo computer poteva fare. Steve Jobs ha investito 2,5 milioni di dollari in Adobe, che ha creato un controller PostScript per la stampante Apple LaserWriter , e in Aldus , che ha creato PageMaker , che ha sfruttato appieno Macintosh e LaserWriter. L'avvento della prestampa sul computer ha poi salvato Apple e trasformato Adobe e Aldus in grandi aziende. Altri fotocommettitori, a cominciare da Linotype , apprezzarono PostScript e presto equipaggiarono i loro fotocompositori con interpreti PostScript. PostScript è diventato lo standard nella prestampa.
Nel 1991 , Adobe ha rilasciato la successiva revisione di PostScript, PostScript Level 2. Questa è stata una revisione significativa, tanto attesa dalla comunità editoriale. I miglioramenti principali sono stati:
- maggiore velocità e affidabilità (principalmente gestione della memoria);
- supporto per la separazione dei colori nel controller stesso;
- decomprimere le immagini compresse nel controller stesso ( JPEG e CCITT gruppo 4);
- supporto per set di caratteri di grandi dimensioni (per i paesi asiatici);
- memorizzazione nella cache di caratteri e immagini;
- driver migliorati ;
- algoritmi di stampa delle immagini migliorati (Accurate Screening).
Adobe ha commesso l'errore di rilasciare le specifiche PostScript Level 2 prima di iniziare a lavorare sulla sua implementazione hardware. I concorrenti sono entrati inaspettatamente nel mercato con emulatori PostScript di livello 2 prima della stessa Adobe. Di conseguenza, le applicazioni hanno impiegato molto tempo per iniziare a utilizzare tutte le nuove funzionalità PostScript di livello 2.
Nel 1998, Adobe ha introdotto il nuovo standard PostScript 3. Le modifiche rispetto al livello 2 sono minori. Ciò è comprensibile dato che molte applicazioni non sono ancora in grado di supportare completamente PostScript Livello 2. I principali vantaggi di PostScript 3 sono:
- supporto per 4096 livelli per colore (12 bit per colore, prima c'erano 256 sfumature - 8 bit per colore);
- Supporto PDF (i controller PS Level 3 possono generare PDF insieme a file PS Level 2);
- supporto migliorato per la separazione dei colori (i controller PS 3 possono colorare immagini separate specificate in scala di grigi o sei colori);
- è stata aggiunta la funzionalità di stampa pronta per il Web, finora nessuno dei partner OEM di Adobe l'ha implementata.
Ambito
Come i plotter, PostScript fornisce output di grafica vettoriale di alta qualità e un unico linguaggio di controllo che può essere utilizzato da qualsiasi produttore di stampanti. Come le stampanti ad aghi, PostScript offre comode opzioni per la stampa di grafica e testo bitmap. A differenza di entrambi, PostScript può combinare tutti questi tipi di output su un'unica pagina, offrendoti molta più flessibilità rispetto a qualsiasi stampante o plotter prima.
PostScript è più di un tipico linguaggio di controllo della stampante, è un linguaggio di programmazione completo. Molti programmi applicativi possono convertire un documento in un programma PostScript che produrrà il documento originale una volta eseguito. Questo programma può essere inviato direttamente a una stampante abilitata per PostScript, o convertito da un interprete PostScript in un altro formato (per stampanti non PostScript), oppure il risultato della sua esecuzione da parte dell'interprete può essere visualizzato sullo schermo. Poiché il programma PostScript originale è lo stesso, PostScript è chiamato indipendente dal dispositivo .
La maggior parte delle stampanti e dei plotter ad alte prestazioni dispone di un interprete PostScript integrato. Allo stesso tempo, le semplici stampanti di classe home supportano solo operazioni grafiche elementari, quindi il compito di creare un'immagine bitmap è assegnato all'unità di elaborazione centrale . Esistono interpreti del linguaggio PostScript per vari sistemi operativi , il più noto dei quali è il programma gratuito Ghostscript .
Esiste una versione commerciale del sistema TeX - BaKoMa TeX, scritta dal programmatore sovietico e russo V. Malyshev interamente in PostScript.
Lingua
PostScript è un linguaggio di programmazione completo di Turing completo . Sebbene i programmi PostScript siano creati principalmente non da persone, ma da altri programmi, in linea di principio, nulla impedisce di scrivere programmi su di esso [1] per calcolare la grafica, implementare metodi numerici per risolvere problemi matematici, ecc.
PostScript è un linguaggio stack interpretato simile a Forth . La sintassi della lingua utilizza la notazione polacca inversa , che rende superfluo l'uso delle parentesi, ma richiede un po' di pratica per leggere il testo del programma a causa della necessità di tenere a mente il contenuto dello stack. La maggior parte degli operatori prende gli operandi dallo stack e inserisce il risultato del calcolo nello stack. I valori letterali (stringhe e numeri) mettono una copia di se stessi nello stack.
PostScript disegna utilizzando un sistema di coordinate rettangolare bidimensionale , la cui origine è nell'angolo inferiore sinistro della pagina ; l' asse x predefinito è orizzontale (ovvero la larghezza della pagina), l'asse y è verticale. L'unità di misura delle coordinate lineari è il punto tipografico . Con l'ausilio di operatori linguistici [6, pp. 517-518] l'origine del sistema di coordinate può essere spostata in qualsiasi punto (operatore translate) e il sistema stesso può essere ruotato di un angolo arbitrario nel piano della pagina (operatore rotate); scalela scala lungo ciascuno dei due assi può essere modificata anche tramite l'operatore . Ad esempio, l'output dell'immagine "speculare" su pellicola (il cosiddetto " Emulsion down ") nelle stampanti PostScript viene eseguito utilizzando un unico operatore scaleche imposta una scala negativa lungo uno degli assi del sistema di coordinate: ad esempio, -1.0 1.0 scale.
PostScript ha le caratteristiche di un metafile, combinando il supporto per immagini vettoriali e bitmap. I caratteri in PostScript sono solo vettoriali. Un po' distanti sono i cosiddetti. Font Type3 in cui qualsiasi procedura formulata in termini di linguaggio PostScript può essere utilizzata per disegnare glifi (procedura ) [6, pp. 337-342]. Dal rilascio di SP4 per Windows NT 4.0 nel 1998 (vedi anche http://support.microsoft.com/gp/lifesupsps ) con Adobe Type Manager 4.0 e il driver AdobePS 5 installato sul sistema , tutti i font sono in caratteri non romani codifica, in particolare i caratteri cirillici sono stati caricati in un file PostScript sotto forma di caratteri Type3 , in cui ogni glifo era rappresentato come un'immagine bitmap della risoluzione appropriata. Scaricare i font come bitmap ha creato molti problemi in preparazione per la fotocomposizione e la prestampa in generale. Questo bug è stato corretto in AdobePS 5.1 e Adobe Type Manager 4.1 , che sono stati poi inclusi nella distribuzione di Windows 2000 .
/BuildGlyph
Struttura del documento
La struttura di un file PostScript è formata da commenti strutturali. I commenti strutturali iniziano con una sequenza di caratteri " %%" all'inizio di una riga.
Un file PostScript è composto da quattro parti: intestazione, prologo, corpo ed epilogo.
L'intestazione inizia con la riga " %!PS-Adobe-N.M" dove NM è la versione della specifica, seguita da commenti strutturali con le proprietà generali del documento e l'intestazione termina con la riga " %%EndComments".
%!PS-Adobe-2.0
%%Creatore: dvips(k) 5.78 Copyright 1998 Radical Eye Software
%%Titolo: rep.dvi
%%Pages: 9%%PageOrder: Ascend
%%BoundingBox: 0 0 596 842
%%EndComments
Il prologo di solito contiene descrizioni di subroutine e dati necessari per stampare il documento, come procedure e caratteri. Il prologo si conclude con il commento " %%EndProlog".
Il corpo del programma contiene i comandi responsabili del rendering di ogni pagina, preceduti dalla stringa " %%Page: <метка> <номер>", dove <label> è l'etichetta della pagina che non viene stampata e <number> è il numero di serie della pagina nel file, Per esempio,%%Page: iii 3
Dopo i comandi per il rendering di tutte le pagine, c'è un commento strutturale “ %%Trailer”, dopo il quale inizia l'epilogo.
Nell'epilogo, puoi duplicare i commenti dall'intestazione (questo è implementato nel caso in cui il programma non conosca ancora, ad esempio, il numero di pagine all'inizio dell'output) - in questo caso, al posto dei valori numerici dei parametri nell'intestazione, è necessario scrivere " (atend)".
Il file termina con la stringa " %%EOF".
Panoramica degli elementi linguistici
- Pile
PostScript utilizza quattro stack per memorizzare diversi tipi di dati: lo stack degli operandi, lo stack del contesto grafico, lo stack di esecuzione e lo stack del dizionario.
- Tipi di dati
I tipi di dati di base del linguaggio PostScript sono: intero con segno, numero reale, espressione booleana ( trueo false), stringa di caratteri ( ( … ) ), array ( [ … ] ), procedura ( { … } ), dizionario, nome.
- Operatori
Gli operatori in PostScript prendono gli operandi (parametri) facendoli spuntare dallo stack e inviano anche i risultati delle azioni (se presenti) nello stack. Questo stile di programmazione, in cui gli operandi sono specificati prima dell'operazione su di essi (operatore), è chiamato notazione postfissa. Ad esempio, per aggiungere due numeri dati, devi prima metterli in cima allo stack degli operandi, quindi eseguire il comando add, che farà apparire gli ultimi due elementi (cioè i numeri dati) dallo stack, aggiungerli e scrivere il risultato nello stack, da dove può essere estratto da un'altra operazione come operando. Si scrive così:4 5 add
Le istruzioni PostScript possono essere suddivise in diversi gruppi. Questi sono operatori per lavorare con il contenuto dello stack (indipendentemente dal tipo), operazioni aritmetiche, operatori per lavorare con array, lavorare con dizionari, lavorare con stringhe, confronto, controllo del flusso di comandi, lavorare con il tipo di argomenti e conversione, accedere e lavorare con i file, lavorare con la memoria virtuale, lo stato grafico e altri.
Una breve panoramica del meccanismo di disegno dell'immagine
Il processo di disegno (rasterizzazione) durante l'esecuzione ( interpretazione ) di un programma PostScript consiste nel calcolare per ogni pixel del dispositivo di output uno (per monocromatico) o più (ad esempio quattro per un dispositivo CMYK o sei per CMYKOrGr ) valori di parametro (-s) nell'intervallo da 0 a 1,0. Il valore calcolato del parametro (s) viene utilizzato come argomento per un'altra importante funzione : funzione di trasferimento ( sinonimo in lingua russa - visualizzazione ). Per impostazione predefinita, nella stragrande maggioranza dei casi, questa funzione è la funzione più semplice y(x)=x e il suo valore è identico al valore dell'argomento. Tuttavia, in un certo numero di casi, ad esempio , vengono utilizzate dipendenze non lineari y(x) piuttosto complesse per compensare il guadagno di punti , dato da un'approssimazione a tratti o tabulare . L' approssimazione lineare a tratti della funzione di trasferimento viene utilizzata, ad esempio, nei file Adobe Photoshop EPS e PS - per l'approssimazione, l'area di definizione [0; 1.0] è divisa in quaranta sezioni con un passo di 0,025 (2,5% del punto raster ) ; su ciascuna delle quaranta sezioni, la funzione di trasferimento ha la forma y(x)=b x+a. La funzione di trasferimento della forma y(x)=1-x (in termini di linguaggio PostScript ) inverte l'immagine, rendendola un negativo : ecco come le stampanti PostScript stampano un negativo .
{1 sub neg} settransfer
Per i dispositivi monocromatici, ad esempio per la fotocomposizione , la decisione di riempire (evidenziare) un pixel può essere presa a seguito del confronto tra il valore della funzione di trasferimento calcolato per un dato pixel e il valore del cosiddetto. Matrice di soglia della funzione Spot o dell'array bidimensionale : se il valore della funzione di trasferimento è maggiore del valore della funzione Spot o dell'elemento della matrice di soglia per questo pixel, quest'ultimo viene dipinto (evidenziato).
Una speciale selezione della funzione di trasferimento e della funzione Spot o dell'array Threshold consente di ottenere il rapporto tra il numero di pixel ombreggiati e non riempiti del dispositivo di output per ogni pixel dell'immagine sorgente (rasterizzata) in modo che la luminosità media dell'immagine l'area dell'immagine corrispondente sulla stampa (stampa) è quasi proporzionale al valore del parametro calcolato (vedi Fig. sopra).
In modo simile, si formano punti di varie dimensioni, che compongono un'immagine a mezzitoni su stampe tipografiche: su giornali, riviste, libri.
Esempio di programma
%!ps-adobe-1.0 % Per impostazione predefinita, PostScript utilizza l'unità di misura 1 punto = 1/72 pollici . % e ci piacciono i millimetri. 72 25,4 div % 1 mm = 72/25,4 punti dup % duplica il valore in cima allo stack scala % allunga questo numero di volte su entrambe le coordinate 100 100 traslazione % imposta l'origine su (100 mm, 100 mm) /Times-Roman findfont % ottieni il carattere Times-Roman 10 scalefont % allungamento alla dimensione 10 (abbiamo mm!) setfont % imposta il carattere selezionato 0 30 330 { ciclo % per angoli da 0 a 330 con incrementi di 30 gsave % salva la trasformazione delle coordinate correnti ruota % ruota il sistema di coordinate (l'angolo in gradi è preso dalla cima della pila) 15 0 sposta a % sposta a punto (15 mm, 0 mm) (Wikipedia) mostra la % di scrittura della parola nel carattere corrente grestore % restituisce la trasformazione delle coordinate } per % di fine ciclo for mostra pagina % mostra pagina
Output del programma
Gestione dei caratteri
Complessa quasi quanto lo stesso PostScript è la gestione dei caratteri . Il sistema di caratteri utilizza le primitive grafiche PS per disegnare glifi con linee curve, che possono quindi essere visualizzati a qualsiasi risoluzione . Con questo approccio sorgono una serie di problemi tipografici .
Uno dei problemi - che i caratteri non scalano linearmente a piccole dimensioni - viene risolto includendo suggerimenti . In un momento in cui la tecnologia per includere i suggerimenti nei caratteri era fortemente protetta, i caratteri "suggeriti" venivano codificati e compressi in ciò che Adobe chiamava Font Type 1 (noto anche come PS1 , T1 o Adobe Type 1 ). Il tipo 1 era più una struttura di archiviazione per informazioni puramente di contorno dei caratteri che un linguaggio completo (il PDF è simile a questo riguardo). Adobe ha quindi iniziato a concedere in licenza la tecnologia di tipo 1 a coloro che desideravano aggiungere suggerimenti ai propri caratteri. Coloro che non hanno concesso in licenza la tecnologia sono stati lasciati con il carattere di tipo 3. I caratteri di tipo 3 hanno consentito l'intera complessità del linguaggio PostScript, ma senza un approccio standard ai suggerimenti.
Il tipo di carattere 2, destinato all'uso con il formato Compact Font (CFF), è stato implementato per ridurre la dimensione complessiva del file del carattere. In seguito divenne la base per la gestione dei caratteri OpenType .
Per competere con il sistema di Adobe, Apple ha sviluppato i propri sistemi TrueType nel 1991 . Immediatamente dopo l'annuncio di TrueType, Adobe ha pubblicato le specifiche per il formato Type 1 . Da allora sono apparsi molti font gratuiti di tipo 1. Ad esempio, i font utilizzati dal sistema di layout TeX sono disponibili in questo formato.
Alla fine degli anni '90, Adobe si unì a Microsoft nello sviluppo di OpenType . In sostanza, era una fusione e un'estensione dei formati Type 1 e TrueType. Quando si stampa sull'output di un dispositivo PostScript, le parti ridondanti del carattere OpenType vengono omesse e ciò che viene inviato al driver della stampante non è diverso da ciò che viene prodotto dai caratteri TrueType o Type 1.
Caratteri indicizzati CID
Il formato del carattere CID-Indexed (abbreviazione di Character Identified) è stato sviluppato per risolvere il problema dell'indirizzamento dei glifi nelle lingue geroglifiche con conteggi di caratteri molto grandi (cinese, coreano, giapponese). Questo formato può essere utilizzato con il Tipo 1 per i caratteri standard con indicizzazione CID o il Tipo 2 per i caratteri OpenType con indicizzazione CID .
Ogni glifo di un elemento in una raccolta di caratteri è identificato da un indice di carattere univoco (CID) in tale codifica, che potrebbe non essere uguale al codice per il carattere corrispondente, ad esempio in Unicode .
Le raccolte di caratteri hanno nomi univoci di maiuscole e minuscole, ordinamento e riempimento, ad esempio "Adobe-Japan1-6". Il registro indica lo sviluppatore (ad esempio Adobe). L'ordine rivela lo scopo del set di caratteri (ad esempio, "Giappone1"). Un numero aggiuntivo (ad esempio 6) indica spesso la dimensione della raccolta. Ad esempio, la raccolta Adobe-Japan1-0 è 8284 glifi e Adobe-Japan1-6 è 23058 glifi.
I caratteri con una chiave CID possono essere creati senza riferimento a una raccolta di caratteri, utilizzando una codifica "identity" come Identity-H (per la scrittura orizzontale) o Identity-V (per la scrittura verticale). Tali caratteri possono avere un set di caratteri univoco, nel qual caso il numero CID del glifo non è informativo; di solito viene utilizzata invece la codifica Unicode , potenzialmente con informazioni aggiuntive.
La tecnologia Adobe ClearScan crea font Type1-CID personalizzati per abbinare l'aspetto visivo di un documento scansionato dopo il riconoscimento ottico dei caratteri (OCR). ClearScan (in Acrobat 9) non sostituisce i font con font di sistema o Type1-MM (come in Acrobat 8 e precedenti), ma utilizza questi font personalizzati appena creati. I caratteri personalizzati sono incorporati nel file PDF.
Tendenze e prospettive
Oltre a PostScript , il linguaggio di controllo della stampante PCL di Hewlett-Packard si è diffuso nel mercato delle stampanti laser . PCL originariamente era destinato ad attività diverse da PostScript (controllo della stampante anziché descrizione della pagina) e non può fornire la portabilità . Tuttavia, per l'uso in ufficio è in alcuni casi più conveniente. PCL utilizza i font TrueType di Windows standard ( al contrario di PostScript). Inoltre, l'ultima versione (PCL6) è stata sviluppata da HP in stretta collaborazione con Microsoft e fornisce quindi una risposta più rapida all'applicazione, una stampa rapida di grafica complessa, una migliore qualità di stampa e una maggiore precisione durante l'output dei documenti.
Inoltre, PostScript è concesso in licenza e royalty- free da Adobe per controller RIP (Raster Image Processor), mentre PCL può essere utilizzato da terze parti gratuitamente. Pertanto, i plotter RIP PostScript 3 con licenza per HP costano circa $ 500, mentre i controller di "emulazione PS2" OKI senza licenza costano $ 30-70.
Praticamente tutte le stampanti laser negli anni '90 supportavano PostScript come linguaggio principale; dagli anni 2000, molte stampanti laser di classe SOHO non sono state dotate del supporto PostScript per ridurre i costi. Pertanto, PostScript viene cacciato dall'ufficio da PCL, pur rimanendo, tuttavia, uno standard praticamente incontrastato nel campo della prestampa.
Note
- ^ Evan Danaher. La vita in PostScript . - Il gioco "Life" in linguaggio PostScript ( GPL ). - " Inglese. Ho imparato che Postscript è un vero linguaggio, non solo per la grafica. Così ho passato un po' di tempo ad impararlo e volevo farci qualcosa di interessante. Quindi, ovviamente, la scelta più ovvia era il gioco della vita di John Conway. ". Estratto il 9 aprile 2012 . Archiviato dall'originale il 15 maggio 2012.
Letteratura
- Roberto Shimonsky. Impara Unix da solo. 10 minuti per lezione = Sams Teach Yourself Unix in 10 minuti. - M .: "Williams" , 2006. - S. 272. - ISBN 0-672-32764-3 .
- S. Nemnyugin, M. Chaunin, A. Komolkin. Lavoro efficiente in UNIX. San Pietroburgo: "Piter", 2001. ISBN 5-272-00197-4
- Romanovsky IV, Stolyar SE "Stacks and Stack Languages" . Esercitazione. - San Pietroburgo: "Informatizzazione dell'istruzione", 2002. - 35 p.
- Glenn C. Reid. Pensare in PostScript , Addison-Wesley, 1990.
Collegamenti
- Linguaggio di programmazione PostScript
- La storia di PostScript
- Storia del PostScript
- Prima guida al PostScript
- Riferimento al linguaggio PostScript, 3a ed. Pubblicato da Addison-Wesley ISBN 0-201-37922-8
- Esercitazione sul linguaggio PostScript e ricettario
- PostScript o PDF? (Inglese)
- Linguaggi PCL e PostScript Archiviati il 6 gennaio 2012 in Wayback Machine
- Specifica delle convenzioni di strutturazione dei documenti in linguaggio PostScript. Versione 3. 25 settembre 1992
- Mezzitoni e retini. Associazione degli sviluppatori Adobe. 9 ottobre 1997 (link non disponibile)