Mondi su mondi, sistemi di sistemi.

Dettagli sul font hinting

Friday, January 22nd, 2010

Nel mio post chilometrico su @font-face ho accennato alla questione del font hinting e alle differenze nel rendering delle font, in particolare, quello delle font OpenType CFF sotto Windows è nettamente peggiore di quelle TrueType 1.

PostScript vs TrueType

Il motivo di questa differenza è dovuto al fatto che il formato CFF eredita una serie di scelte fatte in pas­sato con il PostScript, in particolare la descrizione dell’outline e, appunto, il modello di hinting.

Questi modelli, però, erano creati per le stampanti a bassa risoluzione e non per il monitor; viceversa, il TrueType è stato pensato fin dall’inizio per il rendering a video.

Perché il CFF usa il modello del PostScript?

La scelta usata per il CFF è motivata dal fatto che il formato outline con le curve di Bézier cubiche del PostScript è quello usato quasi tutti i progettisti di font e soprattutto il modello di hinting è molto più semplice e può essere in larga parte automatizzato 2.

In questo momento, quindi, la scelta del TrueType per @font-face sembra praticamente obbligata, almeno fino al momento in cui il rendering tramite DirectWrite sarà sufficientemente diffuso su Windows 3.

  1. Fonts e il web: a che punto siamo
  2. Font Hinting Explained By A Font Design Master
  3. A typographic workbook. Le informazioni sui diversi formati si trovano alle pagg. 135–137.

Fonts e il web: a che punto siamo?

Saturday, January 2nd, 2010

Introduzione

Una dei temi ricorrenti dell’anno appena trascorso nell’ambito dello sviluppo web è stato sicuramente quello delle font. Ho pensato perciò di raccogliere alcuni articoli comparsi recentemente per dare una panoramica della questione.

In particolare, vedremo in cosa consiste a grandi linee l’uso di @font-face, i punti a cui fare attenzione, le implicazioni positive e negative. Ho cercato di estrarre gli aspetti più pratici, rimandando agli articoli originali (linkati nei titoli delle sezioni) per i dettagli teorici e le motivazioni che stanno dietro le varie soluzioni.

Per gli impazienti, comunque, ecco il rias­sunto. Anche se i passi in avanti sono stati significativi, credo sia prudente limitare @font-face a titoli e cose del genere, continuando ad usare le font clas­siche per tutto il resto, magari rivedendo con più attenzione gli stack delle font dichiarate nei fogli di stile.

How to use CSS @font-face #

Cominciamo con la domanda pratica: cosa bisogna fare per usare @font-face? Questo:

@font-face {
  font-family: "Kimberley";
  src: url(http://www.princexml.com/fonts/larabie/ »
  kimberle.ttf) format("truetype");
}

In altre parole, dobbiamo definire origine e formato per la font Kymberley in modo da poterla poi usare nelle stesse modalità delle font già installate.

Fin qui la teoria, in pratica dobbiamo risolvere la questione dei diversi formati delle font 1. La cosa più veloce per risolverle è generare tutti quelli che servono con Font Squirrel.

Una volta generati i formati bisogna irrobustire la dichiarazione che abbiamo visto prima per farla funzionare con i vari browser:

@font-face {
  font-family: "Your typeface";
  src: url("type/filename.eot");
  src: local("Alternate name"), local("Alternatename"),
    url("type/filename.woff") format("woff"),
    url("type/filename.otf") format("opentype"),
    url("type/filename.svg#filename") format("svg");
  }

La combinazione dei due src si prende cura di Explorer 2; i due local consentono al browser di cercare prima la font in locale, e sono due perché alcuni browser usano il nome Postscript e altri il nome del file; il resto sono elencati i formati in ordine di desiderabilità.

Anche se qui mostriamo una sola dichiarazione, bisogna tenere pre­sente che bisogna crearne: una per il roman e una per l’italico 3.

Real Web Type in Real Web Context #

Una volta che abbiamo impostato i nostri fogli di stile, per testare una font serve un qualche tipo di testo standard che ne metta in luce pregi e difetti.

Web Font Specimen fa esattamente questo. Possiamo scaricare la pagina campione in locale, impostarla con le nostre font e vedere come si comporta dal vivo, con i vari browser 4.

Designing For The Switch #

Rendering a parte, uno dei problemi principali nell’uso di @font-face è il peso, dovuto principalmente alle tabelle di hinting molto estese.

Il Georgia, ad esempio, è quasi 300 KB, sufficienti rovinare il primo impatto perché alcuni browser, come Opera e FireFox, pre­senteranno per un attimo la pagina senza la font corretta, il famigerato Flash of Unstyled Text (FOUT), mentre altri, come il WebKit, aspetteranno di aver scaricato tutta la font, non mostrando nes­sun testo durante l’operazione.

Da un punto di vista strettamente procedurale, non c’è nes­suna alternativa: la font dev’essere scaricata e fino a quando l’operazione non è terminata le scelte pos­sibili sono quelle viste prima 5.

Fighting the @font-face FOUT — Quicken the load time #

Tuttavia ci sono alcuni trucchi utilizzabili. Il primo consiste nel ridurre all’osso il file della font, eliminando tutto quello che non è strettamente indispensabile 6; il secondo consiste nel calibrare attentamente l’elenco delle font nel foglio di stile per minimizzare il FOUT; poi lo pos­siamo zippare, guadagnando fino al 40%; infine dovremo fare in modo che la font scaricata rimanga in cache.

L’arma nucleare tattica 7è però quella di forzare il caricamento della font prima che la pagina venga mostrata, in modo da averla pronta quando serve.

Better font stacks #

Come accennavo all’inizio, l’estensione dello stack delle font dichiarate può essere usato per questo scopo (combattere il FOUT) ma anche semplicemente per usare combinazione meno scontate.

La pre­messa fondamentale è che, in realtà, il browser ha a disposizione molte più font di quelle di solito considerate. Inoltre, è pos­sibile individuare delle combinazioni accettabili per coprire i casi in cui la font ideale non è presente.

Questo lavoraccio è già stato fatto e il campionario in pdf allegato all’articolo citato è utilis­simo per prendere una decisione 8.

Real Fonts and Rendering: The New Elephant in the Room #

E ora veniamo al vero problema emerso nei primi usi sul campo: il rendering delle font, dovuto ai comportamenti molto eterogenei dei motori di rendering in combinazione con i diversi sistemi operativi. 9.

Browser Choice vs Font Rendering #

L’analisi di Zeldman difetta forse di pre­cisione, visto che si limita a constatare il problema, anche se posso capirlo: i dettagli sono un po’ da mal di testa. Comunque, guardando le cose con più attenzione il panorama sembra meno preoccupante.

L’attuale sistema di rendering sotto Windows, il GDI, che fornisce la base per l’anti-aliasing in ClearType, funziona in modo adeguato solo le font TrueType.

Le nuove versioni dei browser useranno però un’altro motore, il DirectWrite, più sofisticato, in grado di fornire un rendering adeguato anche per i PostScript e gli OpenType. Ci saranno ancora delle differenze rispetto a Mac OS X ma saranno “solo” diversi.

In conclusione

Dopo tante attese e false partenze l’uso di @font-face non è più solo una pos­sibilità teorica. Tuttavia, anche se la voglia di usarlo sembra contagiare tutti, allo stato attuale va usato con attenzione: mi limiterei alle titolazioni; per i testi estesi ci vuole più prudenza.

Questi sono problemi che verranno comunque risolti. Più importanti, invece, i mes­saggi per chi si occupa di design web.

In primo luogo bisogna superare la fissa di fare in modo che una pagina si veda esattamente allo stesso modo ovunque 10. Il fatto di avere più font a disposizione ha fatto emergere differenze enormi fra le varie piattaforme e, a complicare ulteriormente le cose, le piattaforme stesse sono in continua diversificazione11. Inseguire l’assoluta omogeneità è futile, però bisognerà essere più rigorosi nei test: le sorprese del rendering sono saltate fuori in modo clamoroso anche perché, a dispetto delle dichiarazioni ufficiali, alcuni siti sono “usciti” con versioni testate solo su Mac.

Inoltre e cosa più importante, l’espansione dell’offerta di font utilizzabili significa che è neces­saria una maggiore competenza (tipo)grafica. Ci vorranno più gusto e più competenza per la scelta e la combinazione giuste.

Può darsi che quella dell’anno scorso sia stata solo una fiammata destinata a spegnersi e rimanere dormiente per altri anni ma non ci scommetterei: meglio prepararsi.

  1. Sono stati proprio i formati a fermare l’uso di @font-face fino ad oggi, alimentando fra l’altro l’errata convinzione che fosse una pos­sibilità introdotta con CSS3.
  2. che userà comunque il primo
  3. altri dettagli sul percorso che ha portato a questa soluzione li trovate in Bulletproof @font-face syntax
  4. questione spinosa su cui torneremo più avanti
  5. Per quanto riguarda i motori di rendering, non escludo che gli sviluppatori si inventino qualche stratagemma per mitigare almeno il problema.
  6. Font Squirrel, di cui abbiamo parlato prima, rende questa parte molto semplice
  7. anche a costo di rendere l’HTML non valido? Beh, a voi la scelta dell’escalation
  8. queste informazioni le ho ricavate da font-face e Webfonts: come usarli, un post completis­simo, in particolare sulla succes­sione degli eventi che ha portato alla situazione attuale
  9. Fra l’altro la questione non è limitata al rendering del singolo carattere ma si estende anche alla spaziatura fra i caratteri. In particolare, le tabelle di kerning non vengono rispettate
  10. Ignorance is bliss
  11. quante versioni di WebKit ci sono in giro? Io ho perso il conto…

Alcuni consigli basati sull’eye–tracking

Saturday, November 24th, 2007

Questo articolo elenca una serie di consigli basati sui risultati degli study di eye–tracking alcuni dei quali mi suonano piuttosto inaspettati.

  1. il testo attira l’attenzione più velocemente della grafica;
  2. la formattazione fantasiosa tende ad essere ignorata;
  3. le dimensioni del testo influenzano il modo di leggere;
  4. le parti inferiori della pagina vengono guardate;
  5. gli utenti pas­sano molto tempo a guardare gli elementi dell’interfaccia grafica, come pulsanti e menu (questa me la devono proprio spiegare…).

Safari: supporto per le font scaricabili

Thursday, October 11th, 2007

Dalla versione r26183, Safari supporta il download delle font, attraverso il selector @font-face. Ecco un esempio:


@font-face {
font-family: "Abandoned Bitplane";
src: url(http://www.princexml.com/fonts/larabie/abandone.ttf) format("truetype");
}

Semplice, no? E il risultato è abbastanza eloquente. Ecco il rendering di Safari r26183:

picture-1.png

rispetto alla versione standard:

picture-2.png

(Gli screenshot sono tratti dagli esempi di questo articolo su A List Apart).

Ovviamente, il fatto che le font siano liberamente scaricabili pone degli ovvi problemi, di licenza e di uso improprio delle font; sia perché il web designer medio non ha conoscenze tipografiche sufficienti per selezionare adeguatamente le font da usare, sia perché è difficile trovare delle font gratis di qualità .

Ancora sul rendering delle font

Friday, August 24th, 2007

Per proseguire dal post pre­cedente, ecco un’altra analisi molto approfondita – e un po’ troppo lunga – sulla visualizzazione delle font. Vorrei scriverne io di articoli così…

Rendering delle font: differenze fra Windows e Mac

Thursday, August 23rd, 2007

Post sulle differenze di fondo nel rendering dei caratteri fra Windows e Mac OS X, anche per l’apprezzabile tentativo di mettere le due filosofie in una prospettiva di costi / benefici.

Troubleshooting: crash del Finder con i .textClipping

Monday, July 9th, 2007

Non so se vi sia mai capitato di vederlo ma in certe condizioni il Finder continua ad andare in crash a ripetizione, rendendo praticamente impos­sibile lavorare. Lo stack trace sembra indicare qualcosa legato ai font.

Tuttavia, prima di buttarvi a corpo morto – come ho fatto io – su pre­ferenze, caches, controlli di font e loro disattivazione, verificate che sul Desktop non siano pre­senti dei file .textClipping. A quanto pare la pre­senza di questi tipi di file, in combinazione con font non attivati o assenti per le lingue asiatiche – e forse anche con il contenuto del text clipping – manda il Finder in crash fino a quando non ha esaurito la lista di font attivi in quel momento e, in ambito publishing, può volere dire stare in attesa per un bel po’!!

Ovviamente non potrete usare l’account problematico per eliminare il text clipping. Se avete a disposizione un altro utente con privilegi amministrativi, potete usare quello per lanciare il terminale; in alternativa avviate in single user mode.

Altre info:
Recover from a constantly restarting Finder loop. Fra l’altro, da quanto in questa pagina, sembra che questo tipo di crash ciclici possa essere causato anche da altre circostanze, come la pre­senza di .plist corrotte.

Come installare i font di Vista

Wednesday, April 25th, 2007

Quasi tutti i nuovi font di Windows Vista sono distribuiti anche con il viewer di PowerPoint. Le istruzioni per estrarli e installarli dovrebbero essere abbastanza chiare.

Cabextract, la utility citata per estrarre i font dal pacchetto d’installazione è installabile anche con MacPorts.

viaLetter

Thursday, February 22nd, 2007

A-Bauer BodoniviaLetter è un sito per creare dei mes­saggi da spedire fatti di lettere fisiche.Se sceglie un carattere – sono disponibili Helvetica, Bauer Bodoni, Rockwell Condesed, Frankfurter –, si compone il mes­saggio e lo si compra.

Vale la pena di darci un’occhiata anche solo per il sistema di selezione del messaggio.

Certo fa un po’ specie comporre una parola e scoprire che la “r” in Helvetica è esaurita!

Font gratis da Apple

Wednesday, January 31st, 2007

Trovare font gratis e di qualità non è facile, per cui è meglio non lasciarseli scappare se arrivano direttamente da Apple. Sono nella pagina dedicata allo scripting di iTunes. Basta scaricare la collezione di script.

I font si trovano in “iTunes Scripts for Mac OS X/AppleWorks 6.2.2 Stuff/ITC Fonts” e sono inclusi perché servivano per i templates in AppleWorks.

Fonte: MacWorld