Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 12 di 49
  • livello principiante
Indice lezioni

Font personalizzati con @font-face

Usare font anche non presenti sul PC dell'utente
Usare font anche non presenti sul PC dell'utente
Link copiato negli appunti

Nella precedente lezione abbiamo visto quali sono le famiglie di font ed abbiamo accennato ai font web-safe, ovvero quei set di caratteri visualizzabili su ogni sistema.

In questa lezione vedremo, invece, come visualizzare font non standard all’interno delle nostre pagine web garantendo la compatibilità su tutti i browser.

La proprietà di cui abbiamo bisogno è @font-face, una delle regole appartenenti alle @-rules. Con questa proprietà è possibile, infatti, caricare all’interno delle pagine web font non standard salvati fisicamente all’interno della directory del sito web. Questo ci consente, quindi, di visualizzare correttamente il font su tutti i browser anche quando esso non è installato all’interno del PC dell’utente.

Tipologie di fonts

Prima di vedere insieme come integrare font personalizzati nelle nostre pagine, bisogna fare una precisazione sul formato di font accettato dai vari browser. Tale precisazione è d’obbligo perché, come di consueto, Internet Explorer non supporta il formato classico TTF.

La tabella di Figura 1 contiene le tipologie di caratteri e i browser che supportano il formato.

Figura 1 - Supporto dei browser
Supporto dei browser

Come abbiamo visto dalla tabella, Internet Explorer, nonostante sia stato il primo browser a supportare i font personalizzati, non fornisce supporto ai TrueType ma solo ai file Embedded OpenType.

Per rendere del tutto cross-browser le nostre pagine web, abbiamo quindi bisogno di due file: un file True Type (.ttf) e un file Embedded OpenType (.eot). Il problema è che quando scarichiamo un font ci viene fornito solo il file .ttf (o Open Type) ma non il file .eot. Per ovviare a questo problema dobbiamo convertire i file .ttf in .eot. Online è disponibile una semplicissima applicazione, ttf2eot, che attraverso il terminale ci consente di effettuare in soli due passi la conversione.

@font-face

Il funzionamento della regola è molto semplice. Nella sua forma base necessita di due parametri:

  • font-family: con cui si definisce il nome del font;
  • src: contenente il path del font.

La forma base della regola, quindi, è la seguente:

@font-face {
   font-family: 'font_name';
   src: url('font_name.ttf') format('truetype');;
}

Bisogna però modificare questa forma per renderla compatibile con Internet Explorer e per evitare il caricamento del font nel caso fosse già presente sul PC dell’utente.

Grazie alla caratteristica a cascata del CSS possiamo includere le proprietà all’interno della stessa regola evitando fogli di stile aggiuntivi.

La proprietà per Internet Explorer è del tutto simile alla precedente con solo l’estensione del carattere differente:

src: url(font_name.eot);

Per consentire il caricamento del font dal pc stesso nel caso fosse installato bisogna modificare la proprietà src della regola iniziale nel seguente modo:

src: local('font_name'), url('font_name.ttf') format('truetype');

Utilizzare la direttiva local con all’interno il nome del carattere consente al browser di cercare all’interno del PC il font prima di scaricarlo dal server.

Il codice finale, compatibile con tutti i browser, è il seguente:

@font-face {
   font-family: 'font_name';
   src: url(font_name.eot);
   src: local('font_name'), url('font_name.ttf') format('truetype');
}

Le due regole src, inserite in questo ordine, evitano inutili richieste HTTP ad Internet Explorer. Se avessimo invertito le regole, infatti, IE avrebbe caricato inutilmente il file .ttf per poi caricare l’unico file di cui effettivamente necessita, l’eot.

Una volta definito il font con la proprietà @font-face, è sufficiente richiamarlo all’interno delle normali regole CSS per farlo funzionare correttamente. Un semplice esempio di utilizzo potrebbe essere il seguente:

body{
   font-family: font_name, Verdana, sans-serif;
   font-size: 12px;
}

È possibile vedere l’esempio completo su questa pagina.

Ti consigliamo anche