Lettere in una griglia di pixel

Ho preso il font Slabo 13px in corpo 10 e ho scritto “Il Tornado” in OpenOffice, visualizzando il testo in grandezza 200%. Ed ecco un effetto indesiderato: la r e la n sullo schermo appaiono unite tra di loro. Se però scrivo “Tornado” senza l’articolo le due lettere restano separate. Che è successo?



I font moderni sono scalabili: la forma delle lettere viene memorizzata come un’insieme di formule che impostano alcuni punti di controllo e la curvatura delle linee che arrivano lì e partono da lì. Insomma nel disegno di ogni lettera non c’è nessun riferimento alla grandezza effettiva che dovrà avere sullo schermo. Ma un monitor è fatto di pixel, quindi ogni lettera deve essere per forza di cose ricondotta ad una griglia di un numero di pixel ben preciso. Quest’operazione è eseguita dal software che stiamo usando per visualizzare il testo. Ed evidentemente è basata su formule che possono creare problemi, come in questo caso. Immagino che tutto è collegato col modo in cui è arrotondata la parte decimale della larghezza dei font.
Se vediamo le metriche delle lettere in FontForge troviamo che le lettere T-o sono larghe 480 unità, la r solo 300, e bisogna sottrarre 60 unità tra la T e la o per effetto della crenatura (kerning).
Dall’estremità sinistra della T all’estremità sinistra della n della parola Tornado abbiamo 480-60+480+300=1200 unità. Il tutto viene ricondotto sul mio monitor in 43 pixel circa (più qualcosa nei subpixel).
La parola “Il” più lo spazio occupa 240+240+180=660 unità. Circa 22 pixel sullo schermo (più subpixel).
L’inizio della n ha a sinistra 1200 unità nella parola “Tornado”, 1860 nelle parole “Il Tornado”. Che viene ricondotto a 43 pixel nel primo caso, 65 nel secondo (di meno se contiamo anche i subpixel).
Nel secondo caso la distanza dall’inizio della T è di 42 pixel. Uno in meno. Ci manca appunto quell’unico pixel che serviva a distanziare le due lettere r-n.
C’è un rapporto fisso che lega i punti e i pixel? In realtà mi pare proprio di no. In FontForge 10 volte la lettera I occupa 2340 unità (240*10-60 di ultima spalla destra). Sul monitor sono 82 pixel. Il rapporto è di circa 28 e mezzo. Dieci volte la lettera M in Fontforge occupa 7140 unità (720*10-60). Sul monitor sono 247 pixel. Il rapporto è di circa 28.9. Insomma non mi pare che sia prevedibile il numero di pixel che una lettera occuperà sullo schermo conoscendo le sue dimensioni assolute in FontForge. La discrepanza tra i dati supera qualsiasi margine di errore, mi sembra.
Certo è che programmi diversi devono avere formule diverse per risolvere il problema. Se imposto lo Slabo 13px in Wordpad in corpo 10 con zoom al 200% e scrivo “Il Tornado”, la r e la n non si uniscono. Insomma. Lo stesso testo viene visualizzato in maniera leggermente diversa a seconda di quale programma uso per visualizzarlo sul monitor, a parità di tutti gli altri parametri.
E se stampassimo il testo dai due programmi? Ah non lo so. Non ho ancora fatto la prova. Di sicuro, visto che stiamo parlando di differenze molto piccole (un solo pixel sullo schermo), a complicare il tutto ci si metterebbero le irregolarità della carta nonché quelle derivanti dalla stampante (la mia è una vecchia stampante a getto d’inchiostro che normalmente disegna i bordi delle lettere in maniera molto approssimativa).

Commenti

Post più popolari