Questrial e i subpixel

La didascalia del Questrial, uno dei font di Google, dice che è pesantemente influenzato dal disegno svizzero, “simile a uno stile grottesco che si trova nell’Helvetica”. E però è fin troppo evidente che due delle caratteristiche fondamentali del font si allontanano nettamente dall’Helvetica: la a e la t. La prima è ad un solo livello, praticamente circolare; la seconda è a forma di croce. Tipiche caratteristiche del Futura, ma in queste proporzioni è un altro carattere a venire in mente per primo: l’Avant Garde, che pure fa le stesse scelte, in questi due campi, ma alla fine crea un’atmosfera completamente diversa. Mentre il Futura ha la C con le estremità tagliate in verticale, nell’Avant Garde le estremità sono tagliate in orizzontale, a fronteggiarsi. Taglio orizzontale anche per l’estremità della e e della s, mentre nel Futura è obliquo.
Grazie a Identifont, i vari caratteri possono essere confrontati al volo, visivamente visto che il Questrial non è ancora stato catalogato. A parte la Q, che non è quella inconfondibile dell’Avant Garde, si nota una larghezza maggiore di alcune lettere come la B o la S, mentre nella R la gamba inizia da un tratto rettilineo a una certa distanza dall’asta verticale. La j invece riprende dal Futura, che non curva in basso.
Ricordavo di avere trovato una interpretazione libera dell’Avant Garde, il Tex Gyre Adventor, e l’ho caricata in OpenOffice per dare un’occhiata alle differenze. E, guarda un po’, i tratti obliqui del Questrial erano molto più morbidi di quelli dell’Adventor, che invece procedono a scalini e sono più seghettati.

Sopra il Questrial, sotto l'Adventor, così come appaiono da lontano. Si nota che l'effetto scalettatura è maggiore nel secondo caso.

Come mai? Perché mai in un font basato su una formula che traccia una retta tra due punti, la retta deve procedere a scalini?
In realtà quello che entra in funzione qui è il meccanismo dei subpixel, poco conosciuto visto che neanche Wikipedia ha una voce in italiano che ne parla (in altre lingue sì, però, e fornisce anche le dimostrazioni visive).
In pratica, su un monitor ogni pixel è composto di tre parti: una rossa, una verde e una blu, che si succedono sempre nello stesso ordine. Quando bisogna visualizzare una lettera dell’alfabeto sul monitor, il software prende dalla memoria del computer la forma di quella lettera, che nel caso della V è composta dai sette vertici del bordo esterno inseriti in un piano cartesiano che stabilisce le distanze relative, e la deve inserire in una griglia, ossia quella dei pixel del monitor o del display.
Un’operazione abbastanza delicata, tenuto conto che ogni asta si ritrova ad essere larga tre pixel, o anche meno.
Il risultato è che, per forza di cose, la linea retta del bordo viene ricondotta ad una linea che procede a scalini.
Quando si disegna il font si ragiona in termini binari: ciò che si trova fuori dalla linea di contorno resta trasparente, ciò che si trova dentro assume il colore scelto dall’utente finale. Ma i pixel del monitor non sono binari, permettono di regolare la luminosità a piacimento. Questo permette di attivare un meccanismo chiamato antialiasing che regola i pixel che si vengono a trovare sugli scalini, in maniera tale da creare delle sfumature a vari livelli di grigio che attutiscono l’effetto seghettato. E questo meccanismo scatta appunto nell’Adventor.
Ma passare gradualmente dal nero al bianco attraverso varie gradazioni di grigio non dà necessariamente il risultato migliore in assoluto, perché significa agire tre volte nello stesso modo, su tutte e tre le componenti del pixel. Per aumentare ulteriormente la risoluzione, si può lavorare su ciascuna delle componenti. Appunto quello che avviene nel subpixel rendering usato dal Questrial.
Se andiamo a fare uno screenshot al bitmap dello schermo, e poi lo ingrandiamo (senza che si attivi il meccanismo di antialiasing previsto in certi programmi standard di visualizzazione delle immagini) vediamo che ai bordi delle lettere, ma solo in orizzontale, sono presenti vari altri colori: tendenti al rosso o al giallo a sinistra delle aste, tendenti al blu o all’azzurro a destra delle aste.
Appunto perché per passare dal bianco al nero si procede gradualmente: bianco vuol dire che rosso verde e blu valgono 255; nel pixel successivo si possono lasciare i primi due valori a 255, abbassando il blu a 182, ottenendo così un pixel che visto da solo sembrerebbe giallino; nel pixel successivo si abbassa il valore del rosso a 102, mentre verde e blu scendono a zero, e si ottiene un colore rossiccio. Il pixel successivo è tutto a zero, il nero dell’asta, appunto. Fenomeno opposto dall’altro lato, dove si inizia a riaccendere prima il subpixel di destra, ossia il blu, da cui la sfumatura che si vede nello screenshot e che appare come un unico quadrato bluastro (in realtà sul monitor sono tre subpixel diversi, a piccole dimensioni).

Sopra il Questrial, sotto l'Adventor, nella mappa dei pixel catturata da uno screenshot. Si nota come nel primo caso ci sono delle sfumature colorate a destra e a sinistra delle aste, mentre nel secondo caso la scalettatura è attutita solo utilizzando toni di grigio.

Ma cos’è che attiva questa funzione nel Questrial e non nell’Adventor?
E poi c’è un altro problema: non è detto che questa funzione sia per forza di cose migliore: confrontiamo la C del Questrial con quella dell’Adventor, e lasciamo stare il fatto che l’alone che smussa i bordi destro e sinistro delle lettere è colorato nel primo caso, mentre è grigio nel secondo. Il pasticcio avviene in verticale, ossia ai bordi del tratto quando questo è orizzontale. Guardiamo la sommità della lettera: il tratto è totalmente rettilineo, sia all’interno che all’esterno, nel Questrial. Nell’Adventor invece sfruttando le sfumature di grigio la curvatura è stata assecondata. E guardiamo anche le estremità della lettera: nel primo caso il taglio è netto, nel secondo è sfumato.
Tutto questo, in piccole dimensioni, può creare uno sfarfallio fastidioso.
Sbirciando un po’ nel file mi pare di avere capito cos’è che scatta: il Questrial, nella scheda Grid Fitting della finestra Font Information di FontForge ha una riga dove c’è scritto: “65535 (for pixels per Em<Value; Grid Fit; Anti-Alias; Symmetric-Smoothing; Grid Fit w/ Sym-Smooth)”. FontForge dà la possibilità di impostare le stesse opzioni anche in Adventor, cliccando sul pulsante New (ma compaiono solo le prime tre possibilità). A quel punto, anche la C dell’Adventor appare a colori. Ma peggiora, proprio per mancanza di smussatura in verticale.


Questrial, Adventor, Adventor modificato. Mentre nella V la formula che lavora sui subpixel dà un risultato migliore, quando va a lavorare sui tratti curvi non tiene conto delle curvature in orizzontale. Non effettua nessun tipo di smussamento (anti-aliasing) creando un risultato sgradevole (nella prima lettera e nell'ultima).

Insomma, per tratti come quelli della V è meglio un sistema, per la C è meglio l’altro. C’è qualcuno che sta lavorando alla soluzione del problema? O magari l’hanno già risolto e nessuno ci ha avvisato?

Commenti

Post più popolari