10. Ghostscript

Ghostscript è un programma incredibilmente importante per la stampa ottenuta tramite driver liberi. La maggior parte del software di stampa per Unix genera PostScript, che è una scelta da oltre mezzo milione su una stampante. Ghostscript, comunque, è gratuito, e genera il linguaggio adatto per la stampante dal PostScript.

Ghostscript è disponibile in diverse forme. La versione commerciale di Ghostscript, detta Aladdin Ghostscript, può essere usata liberamente per scopi personali, ma non può essere distribuita da entità commerciali. È almeno un anno avanti rispetto alla versione libera di Ghostscript; al momento, per esempio, supporta molte più stampanti a getto d'inchiostro a colori rispetto al vecchio Ghostscript, e fornisce un supporto migliore per il formato PDF.

La principale versione libera di Ghostscript è il Ghostscript GNU, ed è semplicemente una versione vecchia del ghostscript Alladin. Questo accordo alquanto delicato ha permesso alla Aladdin di diventare un progetto di software libero totalmente autonomo; le versioni principali sono fatte da L Peter e da alcuni impiegati, e vengono fornite con una licenza ai produttori di software e hardware per poter essere usate in prodotti commerciali. Sfortunatamente, anche se questo schema ha permesso a L Peter di portare avanti il suo lavoro per anni, nello stesso tempo ha inibito la partecipazione dell'intera comunità di software libero. Gli autori dei driver, in modo particolare, trovano questo accordo poco utile. I piani di pensionamento di L Peter danno mandato ad una maggior partecipazione della comunità nel progetto, e per questo egli sta prendendo in considerazione cambiamenti nella licenza, ed ha creato un progetto SourceForge.

La terza versione di Ghostscript è ESP Ghostscript, mantenuta da Easy Software Products (gli autori di CUPS) che ha stipulato un contratto con la Epson. ESP Ghostscript combina i driver del progetto gimp-print con quelli GNU Ghostscript, più un assortimento di patch. Questa versione non è ancora in pieno corso, ma sarà presto disponibile, e si spera che possa semplificare la vita per chi possiede stampanti che usano driver Gimp.

Qualsiasi cosa si faccia con gs, ci si assicuri di eseguirlo con l'opzione che disabilita l'accesso ai file (-dSAFER). PostScript è un linguaggio pienamente funzionale, ed un programma PostScript difettoso può procurare più di un mal di testa.

Parlando di PDF, il Portable Document Format di Adobe (almeno dalla 1.3) è al momento poco meno di un PostScript organizzato in un file compresso. Ghostscript può trattare input di tipo PDF come fa con i Postscript. Potreste essere i primi dell'isolato ad usare una stampante in grado di gestire file PDF.

10.1. Richiamare Ghostscript

Tipicamente, Ghostscript funzionerà tramite qualunque filtro venga impostato (si raccomanda Foomatic se il venditore non ha fornito strumenti adatti), ma per effettuare un debug è spesso più utile usarlo direttamente.

gs -help darà un breve elenco di opzioni e di driver disponibili (questa lista indicherà i driver compilati, non la lista principale di tutti i driver disponibili).

Si può far partire gs per scopi di test con: «gs <options> -q -dSAFER -sOutputFile=/dev/lp1 test.ps».

10.2. Regolazione dell'output di Ghostscript

Ci sono un sacco di cose che si possono fare se l'output di gs non è soddisfacente (in realtà si può fare qualsiasi cosa, avendo i sorgenti).

Alcune di queste opzioni, e anche altre, sono descritte nella guida utente di Ghostscript (il file Use.htm nella distribuzione Ghostscript; probabilmente sarà installato sotto /usr/doc o /usr/share/doc ) sono tutti ottimi candidati come opzioni per i driver nel sistema di filtri.

10.2.1. Dimensioni e posizione dell'output

La posizione, la dimensione ed il rapporto altezza-larghezza dell'immagine sulla pagina dipendono dal driver specifico della stampante di ghostscript. Se ci si accorge che le pagine sono troppo corte, o troppo lunghe, o troppo grandi di un fattore due, si dovrebbe controllare il sorgente del driver della stampante e modificare i parametri che sembrano pertinenti. Sfortunatamente ciascun driver è diverso dall'altro, e quindi non si può dire esattamente cosa modificare, ma la maggior parte è ragionevolmente ben commentata.

10.2.2. Gamma, dotsize, etc.

Molte stampanti non laser hanno il problema che i singoli punti sono troppo grandi. Ciò dà luogo a stampe troppo scure. Avendo questo problema con un driver non regolabile in altri modi, si dovrà usare una funzione di trasferimento. Semplicemente si crei il seguente file nella directory lib di ghostscript e si aggiunga il suo nome alle chiamate di gs, appena prima del file vero e proprio. Si potrebbe aver bisogno di modificare i valori per adeguarli alla stampante: valori più bassi daranno stampe più chiare. Specialmente se il driver usa l'algoritmo di Floyd-Steinberg per rasterizzare i colori, i valori più bassi (0.2-0.15) sono una buona scelta.


%!
%transfer functions for cyan magenta yellow black
{0.3 exp} {0.3 exp} {0.3 exp} {0.3 exp} setcolortransfer


È anche possibile rimettere a posto stampanti che hanno qualche problema con il colore modificando questi valori. Nel fare questo tipo di cose si raccomanda l'uso del file colorcir.ps, che viene fornito con ghostscript (nella sottodirectory example/), come pagina di prova.

Per molti dei nuovi driver per stampanti a getto d'inchiostro a colori sono presenti opzioni da linea di comando, o diversi driver upp, che implementano gamma e altri cambiamenti per adattare la stampante a diversi tipi di carta. Si dovrebbe guardare anche questo prima di fare tentativi con Postscript per sistemare i problemi.

10.2.3. Stampa a colori con Ghostscript

Il dithering predefinito dei colori in Ghostscript è ottimizzato per dispositivi a bassa risoluzione. Il dithering sarà effettuato in maniera piuttosto grossolana nel tentativo di ottenere un output a 60ppi (non dpi, ppi: l'"apparente" colore dei pixel che si otterrà dopo il dithering). Questo produrrà, sulle moderne stampanti a colore, un output piuttosto povero; in particolare, stampanti a getto d'inchiostro con carta fotografica sono in grado di ottenere impostazioni ppi molto più fini.

Per le regolazioni necessarie, si usi l'opzione di Ghostscript -dDITHERPPI=x, nella quale x è il valore da usare. Questo potrebbe, o non potrebbe, avere effetto con tutti i driver; molti nuovi driver (per esempio il driver stp delle Epson Stylus) implementano un loro dither e non danno importanza a questa impostazione. Alcuni driver possono usare sia il normale driver Ghostscript che un driver specifico per il dithering (per esempio, il driver bjc600 delle Canon Bubblejet).

In effetti il dithering di Ghostscript è piuttosto rudimentale. Molte delle cose necessarie per ottenere un buon output con le stampanti moderne semplicemente in Ghostscript non sono disponibili. La licenza di Ghostscript, e il risultante tipo di sviluppo "a cattedrale", impedisce a vari progetti di sistemare questa situazione (e il mondo del software libero avrebbe pronto e in attesa tutto il software necessario per farlo). Comunque, a partire dall' Open Source Printing Summit 2000, tutte le persone coinvolte si stanno parlando, così ci si può aspettare un miglioramento della situazione in tempi brevi.