Salta ai contenuti
getnextpdf.com

Colore, profili e perché il tuo rosso non è il mio rosso

Spec: ISO 32000-2, §8.6Spec: ISO 15930, PDF/X

Un colore in un PDF non è una sensazione fissa. È un’istruzione, e se quella istruzione produca lo stesso rosso sul tuo portatile, su un telefono e su una macchina da stampa dipende interamente da come il colore è stato descritto. Questa pagina parla della differenza tra un colore che si limita a dire a un dispositivo cosa fare e un colore che dice come dovrebbe effettivamente apparire.

Scegli un rosso di brand. Impostalo una volta. Ora guardalo su un monitor da ufficio scadente, poi su un telefono OLED in una stanza luminosa, poi tirato fuori da una stampa offset. Tre rossi. A volte tre rossi palesemente diversi. Nessuno ha cambiato il numero; il numero non ha mai detto tutto.

Per un documento qualsiasi questo è una scrollata di spalle. Per un logo, un’etichetta regolamentata, una fotografia in un catalogo o un documento destinato a sopravvivere per decenni, un colore che va alla deriva è un difetto. Il costo non è astratto: è una ristampa, una prova rifiutata o un archivio le cui pagine non corrispondono più agli originali. La soluzione non è un numero migliore. È dire la verità su cosa significa il numero.

  • Il colore di dispositivo nomina un colore in base ai valori di controllo che un dispositivo riceve, quindi il risultato è qualunque cosa quel dispositivo ne faccia (Spec: ISO 32000-2, §8.6.4). DeviceRGB, DeviceCMYK e DeviceGray sono spazi colore di dispositivo. Stessi numeri, hardware diverso, colore diverso.
  • Il colore calibrato e basato su ICC lega quei numeri a un riferimento misurato e indipendente dal dispositivo attraverso un profilo incorporato (Spec: ISO 32000-2, §8.6.5.5). Ora il documento porta con sé informazioni sufficienti a riprodurre il colore voluto, non solo una ricetta di valori di controllo.
  • Un profilo ICC è quella mappatura misurata: come i numeri di un dispositivo — o quelli di uno spazio colore standard o di una condizione di output — si relazionino al colore che l’occhio umano percepirebbe, ancorati a uno spazio di connessione indipendente dal dispositivo.
  • Un intento di rendering è la politica su cosa fare quando un colore è fuori dalla portata di un dispositivo, perché nessun dispositivo può mostrare ogni colore.
  • Un intento di output è il documento che dichiara, in anticipo, la condizione di output a cui è stato preparato (Spec: ISO 32000-2, §14.11.5). I flussi di lavoro di grado tipografico (PDF/X) e archivistico (PDF/A) ne dipendono.

Parti dalla versione onesta del problema. DeviceRGB non contiene un colore. Contiene tre numeri tra 0 e 1 e un presupposto non detto secondo cui qualche schermo li trasformerà in luce. Due schermi con retroilluminazioni diverse, pannelli diversi e calibrazioni diverse trasformeranno gli stessi tre numeri in luce visibilmente diversa. Non è un bug del PDF. È ciò che significa «colore di dispositivo», e lo standard è schietto al riguardo: gli spazi colore di dispositivo sono definiti dai valori che un dispositivo riceve, non da un’apparenza assoluta (Spec: ISO 32000-2, §8.6.4).

Il colore calibrato colma quel divario aggiungendo un riferimento. Un profilo ICC è il risultato della caratterizzazione di un dispositivo o di uno spazio colore — un monitor, una stampante, una macchina da stampa o uno spazio standard come sRGB — e registra come i suoi numeri grezzi si relazionino al colore in uno spazio di connessione indipendente dal dispositivo che approssima la visione umana. Incorpora quel profilo e i numeri smettono di essere un dialetto privato; diventano un’affermazione ancorata a qualcosa su cui tutti possono concordare. È esattamente ciò che porta con sé uno spazio colore basato su ICC (Spec: ISO 32000-2, §8.6.5.5): il colore, più la mappatura misurata che dice cosa significa.

C’è una seconda complicazione, inevitabile. L’insieme dei colori che una macchina da stampa può stampare non è l’insieme che un telefono può mostrare, e nessuno dei due è l’insieme completo che l’occhio umano può vedere. Quando un colore cade fuori da ciò che un dispositivo di destinazione può riprodurre, bisogna fare una scelta: ritagliarlo al colore raggiungibile più vicino, oppure spostare insieme un’intera gamma di colori così che le loro relazioni restino intatte. Quella scelta è l’intento di rendering — una politica deliberata, scelta per il compito, non un incidente di arrotondamento. Una fotografia e un logo aziendale spesso vogliono intenti diversi, perché una tiene ai gradienti fluidi e l’altro a centrare una tinta esatta.

Infine, un documento che è diretto da qualche parte di preciso può dirlo. Un intento di output è il file che dichiara la condizione di output a cui è stato preparato — tipicamente un profilo ICC di destinazione incorporato che nomina una condizione di stampa o un dispositivo (Spec: ISO 32000-2, §14.11.5). È la differenza tra consegnare a uno stampatore un file e consegnargli un file che dice «sono stato costruito per questa macchina da stampa». I profili di scambio per la stampa lo rendono obbligatorio: un file PDF/X (la famiglia ISO 15930) è tenuto a portare un intento di output (Spec: ISO 15930, PDF/X), e PDF/A si affida allo stesso meccanismo affinché i colori dipendenti dal dispositivo di un file archiviato restino interpretabili nel tempo, molto dopo che l’ambiente di origine sia scomparso.

  1. Nomina il coloreScegli uno spazio colore. DeviceRGB/CMYK/Gray nominano valori di controllo; uno spazio basato su ICC li ancora a un riferimento indipendente dal dispositivo (ISO 32000-2 §8.6).
  2. Ancoralo (opzionale ma decisivo)Incorpora un profilo ICC affinché i numeri portino con sé il loro significato misurato, non solo una ricetta di dispositivo (ISO 32000-2 §8.6.5.5).
  3. Riconcilia con il dispositivoUn intento di rendering decide cosa accade ai colori che il dispositivo di destinazione non può riprodurre — ritagliare il più vicino, o spostare la gamma per preservare le relazioni.
  4. Dichiara la destinazioneUn intento di output indica la condizione di output a cui il documento è stato preparato, come richiedono i flussi di lavoro PDF/X e PDF/A (ISO 32000-2 §14.11.5).
Come un colore viaggia dal tuo codice a un risultato fedele: viene nominato in uno spazio colore, opzionalmente ancorato a un riferimento misurato da un profilo ICC, riconciliato con il dispositivo di destinazione attraverso un intento di rendering e interpretato rispetto alla condizione di output che il documento dichiara.

Il compito di NextPDF in questa catena è essere conforme agli standard: scrivere gli spazi colore, i profili incorporati e gli intenti di output nel modo in cui il formato li definisce, così che uno strumento a valle — il RIP di uno stampatore, un validatore archivistico, un visualizzatore — legga esattamente ciò che era previsto. Produce le dichiarazioni; non finge di essere il dispositivo.

La forma qui sotto abbozza la decisione, non un’API specifica. Il punto è che la destinazione viene dichiarata, non indovinata.

<?php
declare(strict_types=1);
use NextPDF\Contracts\PdfDocumentInterface;
/**
* Prepare a print-bound document that declares its intended output condition.
*
* The colour numbers alone do not fix the appearance. Declaring the output
* intent — the print condition the file was built for — is what lets a press
* interpret those numbers faithfully (ISO 32000-2 §14.11.5).
*
* @param PdfDocumentInterface $doc A composed document.
* @param string $iccProfileBytes The destination ICC profile for the
* target print condition.
*
* @return string The document bytes, carrying a declared output intent.
*/
function prepareForPress(
PdfDocumentInterface $doc,
string $iccProfileBytes,
): string {
// Declare the output condition explicitly. The document now states the
// device/print condition it was prepared for, instead of leaving its
// device colours open to interpretation.
$doc->setOutputIntent(
identifier: 'Custom press condition',
iccProfile: $iccProfileBytes,
);
return $doc->output();
}

I colori non sono cambiati. Ciò che è cambiato è che il file ora dice come dovevano apparire, che è l’unica cosa su cui una macchina da stampa o un validatore può agire.

«È lo stesso valore esadecimale, quindi è lo stesso colore.» Il valore esadecimale è un insieme di valori di controllo del dispositivo. Senza un profilo o un intento di output, è una ricetta senza cucina specificata — risulterà diverso in ognuna. Due file possono portare numeri RGB identici ed essere onestamente colori diversi, perché uno dichiara il contesto che dà significato ai numeri e l’altro lo lascia al caso.

Una seconda trappola: presumere che DeviceCMYK significhi automaticamente «pronto per la stampa». Non è così. CMYK è ancora colore di dispositivo; è modellato per la stampa, ma non è calibrato finché un profilo o un intento di output non nomina la condizione di stampa effettiva.

NextPDF produce colore conforme agli standard: scrive spazi colore di dispositivo e basati su ICC e dichiara intenti di output per i flussi di lavoro in stile PDF/X e PDF/A, nel modo in cui il formato li definisce. Questa è la metà produttiva del compito, ed è la metà che un documento può possedere.

Ciò che NextPDF non è, è un sistema di prova colore. Non misura il tuo monitor, non simula a schermo una macchina da stampa, né certifica che il risultato stampato corrisponda a una tinta voluta entro una tolleranza. Quelle cose appartengono a una catena di prova a gestione colore e alle persone che la conducono. Il motore fa sì che il file dica la cosa giusta; se il dispositivo finale la onori è deciso a valle, dal dispositivo, dai profili ICC in gioco e — per PDF/X e PDF/A — da un validatore, non dal produttore.

  • What a PDF actually is — il modello a oggetti dentro cui vivono questi spazi colore e intenti di output.
  • Archival and PDF/A — perché la conservazione a lungo termine si appoggia al colore indipendente dal dispositivo e agli intenti di output.
  • The standards landscape — dove si collocano ISO 32000-2, PDF/X (ISO 15930) e PDF/A (ISO 19005) l’uno rispetto all’altro.
  • PDF 2.0: what changed — come l’edizione attuale del formato inquadra il colore e la conformità.
  • Spazio colore di dispositivo — un colore nominato dai valori di controllo che un dispositivo riceve (DeviceRGB, DeviceCMYK, DeviceGray); l’apparenza dipende dal dispositivo che interpreta (ISO 32000-2 §8.6.4).
  • Colore calibrato / basato su ICC — colore ancorato a un riferimento indipendente dal dispositivo attraverso un profilo ICC incorporato, così che l’apparenza voluta sia riproducibile tra dispositivi (ISO 32000-2 §8.6.5.5).
  • Profilo ICC — una mappatura misurata tra i numeri di uno specifico dispositivo e un riferimento indipendente dal dispositivo che approssima la visione umana.
  • Intento di rendering — la politica per gestire i colori che un dispositivo di destinazione non può riprodurre: ritagliare al colore raggiungibile più vicino, o spostare una gamma per preservare le relazioni di colore.
  • Intento di output — la dichiarazione del documento sulla condizione di output a cui è stato preparato, tipicamente tramite un profilo ICC di destinazione incorporato (ISO 32000-2 §14.11.5); richiesta da PDF/X e usata da PDF/A.
  • PDF/X — la famiglia di profili di scambio per la stampa ISO 15930 del PDF; un file PDF/X deve portare un intento di output che ne nomini la condizione di stampa di destinazione.