{"id":784,"date":"2017-11-20T14:00:13","date_gmt":"2017-11-20T13:00:13","guid":{"rendered":"https:\/\/alistapart.com\/it\/article\/usare-i-webfont\/"},"modified":"2017-11-20T14:00:13","modified_gmt":"2017-11-20T13:00:13","slug":"usare-i-webfont","status":"publish","type":"article","link":"https:\/\/alistapart.com\/it\/article\/usare-i-webfont\/","title":{"rendered":"Usare i webfont"},"content":{"rendered":"<div class=\"main-content pre-article\">\n<p class=\"editors-note\"><strong>Nota degli editori:<\/strong> Siamo lieti di condividere un estratto dal Chapter 2 (\u201cUsing Webfonts&#8221;) del nuovo libro di <a href=\"https:\/\/alistapart.com\/author\/bramstein\">Bram Stein<\/a>, <a href=\"https:\/\/abookapart.com\/products\/webfont-handbook\"><cite>Webfont Handbook<\/cite><\/a>, disponibile adesso da <a href=\"https:\/\/abookapart.com\/\">A Book Apart<\/a>.<\/p>\n<\/div>\n<div class=\"paragrafo\">\n<p>Adesso che abbiamo selezionato un font, mettiamolo nel sito web. I webfont sono definiti in CSS con la regola <code>@font-face<\/code>. Se siete web developer, molto probabilmente avrete scritto, copiato e incollato, o almeno visto una regola <code>@font-face<\/code>. Tuttavia, per completezza, vediamone un esempio di base:<\/p>\n<p>Questo crea una nuova famiglia di webfont a cui si pu\u00f2 far riferimento con <code>font-family<\/code> o con la propriet\u00e0 shorthand <code>font<\/code>. Ma qui manca qualcosa. Quando si fa riferimento a un webfont in un font stack, dovete sempre essere sicuri di includere almeno un fallback font nel caso che il webfont non venga caricato. Qui, se Elena non viene caricato, il browser ripiegher\u00e0 sulla famiglia <code>serif<\/code>:<\/p>\n<pre id=\"snippet2\" class=\" language-css\"><code class=\" language-css\"><span class=\"token selector\">p <\/span><span class=\"token punctuation\">{<\/span>\n    <span class=\"token property\">font-family<\/span><span class=\"token punctuation\">:<\/span> Elena, serif<span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<p>Parleremo ancora dei fallback font e di come possano essere usati per far sembrare che il vostro sito si carichi pi\u00f9 velocemente nel Capitolo 3. Per ora, lasciamo che il nostro fallback stack sia semplice includendo solo famiglie di font <code>serif<\/code> e <code>sans-serif<\/code>.<\/p>\n<\/div>\n<div class=\"paragrafo\">\n<h2 id=\"section1\">Font Family<\/h2>\n<p>Si crea una font family con pi\u00f9 stili creando una regola <code>@font-face<\/code> per ogni stile e usando lo stesso nome di <code>font-family<\/code>. Le seguenti regole <code>@font-face<\/code> creano una famiglia con uno stile normal e uno bold:<\/p>\n<pre id=\"snippet3\" class=\" language-css\"><code class=\" language-css\"><span class=\"token atrule\">@font-face<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token property\">font-family<\/span><span class=\"token punctuation\">:<\/span> Elena<span class=\"token punctuation\">;<\/span>\n    <span class=\"token property\">src<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token url\">url(elena-regular.woff)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token property\">font-weight<\/span><span class=\"token punctuation\">:<\/span> normal<span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token atrule\">@font-face<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token property\">font-family<\/span><span class=\"token punctuation\">:<\/span> Elena<span class=\"token punctuation\">;<\/span>\n    <span class=\"token property\">src<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token url\">url(elena-bold.woff)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token property\">font-weight<\/span><span class=\"token punctuation\">:<\/span> bold<span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<p>Potete usare questa font family nel vostro CSS facendo riferimento al nome della famiglia e al font-weight nei vostri selettori. Questo applica lo stile regular ai paragrafi e quello bold ai paragrafi <code>strong<\/code>:<\/p>\n<pre id=\"snippet4\" class=\" language-css\"><code class=\" language-css\"><span class=\"token selector\">p <\/span><span class=\"token punctuation\">{<\/span>\n    <span class=\"token property\">font-family<\/span><span class=\"token punctuation\">:<\/span> Elena, serif<span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token selector\">p strong <\/span><span class=\"token punctuation\">{<\/span>\n    <span class=\"token property\">font-weight<\/span><span class=\"token punctuation\">:<\/span> bold<span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<p>Oltre a <code>font-weight<\/code>, <code>@font-face<\/code> accetta anche i descrittori di propriet\u00e0 <code>font-style<\/code> e <code>font-stretch<\/code>, che definiscono gli stili quali italic e condensed. Tutti e tre i property descriptor possono essere usati per creare una singola font family con pi\u00f9 stili. In teoria, questo ci permette di creare una famiglia contenente 243 stili individuali (nove <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/font-weight\">valori<\/a> di <code>font-weight<\/code> \u00d7 tre <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/font-style\">valori<\/a> di <code>font-style<\/code> \u00d7 nove <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/font-stretch\">valori<\/a> di <code>font-stretch<\/code>). In pratica, tuttavia, siamo limitati a ventisette valori, dal momento che alcuni browser non supportano <code>font-stretch<\/code> (<strong>Fig 2.1<\/strong>).<\/p>\n<div id=\"figure1\" style=\"text-align: center;\">\n<table style=\"width: 100%;\" border=\"0\">\n<thead>\n<tr style=\"font-size:10px;font-weight:normal;\" align=\"center\" valign=\"middle\">\n<th scope=\"col\">Internet Explorer 8<\/th>\n<th scope=\"col\">Internet Explorer 9-11<\/th>\n<th scope=\"col\">Edge<\/th>\n<th scope=\"col\">Chrome<\/th>\n<th scope=\"col\">Firefox<\/th>\n<th scope=\"col\">Safari<\/th>\n<th scope=\"col\">Opera<\/th>\n<th scope=\"col\">Android System<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>No<\/td>\n<td>S\u00ec<\/td>\n<td>S\u00ec<\/td>\n<td>S\u00ec<\/td>\n<td>S\u00ec<\/td>\n<td>No<\/td>\n<td>S\u00ec<\/td>\n<td>No<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Fig 2.1<\/strong>: Browser support per font-stretch nel momento in cui scrivo. (Controllate <a href=\"http:\/\/caniuse.com\/#feat=font-variant-alternates\">caniuse.com per l&#8217;attuale supporto dei browser per per il supporto specifico di ogni versione di un browser<\/a>.)<\/p>\n<\/div>\n<p>Con un po&#8217; di fortuna, i restanti browser implementeranno presto la propriet\u00e0 <code>font-stretch<\/code> e potrete usare tutte le 243 classificazioni del font.<\/p>\n<\/div>\n<div class=\"paragrafo\">\n<h2 id=\"section2\">Formati del font<\/h2>\n<p>Il descrittore <code>src<\/code> dice al browser dove trovare il font file. Gli esempi precedenti usavano un solo formato di font, ma spesso vedrete URL a formati di font multipli combinati a suggerimenti di formato, che vengono appesi dopo l&#8217;URL usando la sintassi <code>format(\"value\")<\/code>. I format hint dicono al browser qual \u00e8 il formato del font file a un dato URL.<\/p>\n<pre id=\"snippet5\" class=\" language-css\"><code class=\" language-css\"><span class=\"token atrule\">@font-face<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token property\">font-family<\/span><span class=\"token punctuation\">:<\/span> Elena<span class=\"token punctuation\">;<\/span>\n    <span class=\"token property\">src<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token url\">url(elena-regular.woff2)<\/span> format(<span class=\"token string\">\"woff2\"<\/span>),\n        <span class=\"token url\">url(elena-regular.woff)<\/span> format(<span class=\"token string\">\"woff\"<\/span>)<span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<p>Se elencate formati multipli, i browser moderni sceglieranno il primo formato che supportano basandosi sui format hint. Pertanto, \u00e8 importante elencare i formati del webfont ordinati dalla miglior compressione alla peggiore. Anche se i format hint sono opzionali, includeteli sempre: permettono al browser di conoscere il formato senza dover scaricare il font. Per esempio, se un browser non supporta WOFF2, ma supporta WOFF, pu\u00f2 saltare il font file WOFF2 basandosi sul format hint.<\/p>\n<p>I browser supportano svariati formati di webfont: OpenType (TrueType), EOT, WOFF e WOFF2. Alcuni browser supportano anche i font SVG, ma sono deprecati e non dovrebbero pi\u00f9 essere usati (e non dovrebbero essere confusi con il nuovo <a href=\"https:\/\/helpx.adobe.com\/typekit\/using\/ot-svg-color-fonts.html\">formato OpenType-SVG<\/a>). EOT, WOFF e WOFF2 non sono tecnicamente formati di font. Sono files OpenType compressi con vari gradi di compressione. WOFF2 offre la miglior compressione, seguito da WOFF e EOT (<strong>Fig 2.2<\/strong>).<\/p>\n<div id=\"figure2\">\n<table style=\"width: 100%;\" border=\"0\">\n<tbody>\n<tr>\n<td><strong>FORMATO<\/strong><\/td>\n<td><strong>WOFF2<\/strong><\/td>\n<td><strong>WOFF<\/strong><\/td>\n<td><strong>OpenType<\/strong><\/td>\n<td><strong>EOT<\/strong><\/td>\n<\/tr>\n<tr>\n<td>INTERNET EXPLORER 8<\/td>\n<td>No<\/td>\n<td>No<\/td>\n<td>No<\/td>\n<td>Si<\/td>\n<\/tr>\n<tr>\n<td>INTERNET EXPLORER 9-11<\/td>\n<td>No<\/td>\n<td>Si<\/td>\n<td>Si<\/td>\n<td>Si<\/td>\n<\/tr>\n<tr>\n<td>EDGE<\/td>\n<td>Si<\/td>\n<td>Si<\/td>\n<td>Si<\/td>\n<td>No<\/td>\n<\/tr>\n<tr>\n<td>CHROME<\/td>\n<td>Si<\/td>\n<td>Si<\/td>\n<td>Si<\/td>\n<td>No<\/td>\n<\/tr>\n<tr>\n<td>FIREFOX<\/td>\n<td>Si<\/td>\n<td>Si<\/td>\n<td>Si<\/td>\n<td>No<\/td>\n<\/tr>\n<tr>\n<td>SAFARI<\/td>\n<td>Si<\/td>\n<td>Si<\/td>\n<td>Si<\/td>\n<td>No<\/td>\n<\/tr>\n<tr>\n<td>OPERA<\/td>\n<td>Si<\/td>\n<td>Si<\/td>\n<td>Si<\/td>\n<td>No<\/td>\n<\/tr>\n<tr>\n<td>ANDROID SYSTEM<\/td>\n<td>No<\/td>\n<td>Si<\/td>\n<td>Si<\/td>\n<td>No<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Fig 2.2: Supporto dei browser per i formati di font nel momento in cui scrivo. Cercate delle versioni aggiornate e specifiche per browser per formato di font su <a href=\"http:\/\/caniuse.com\/#feat=font-variant-alternates\">caniuse.com<\/a>.<\/p>\n<\/div>\n<p>Nel cercare copertura per tutti i browser, potreste esservi imbattuti in qualcosa chiamato <a href=\"http:\/\/blog.fontspring.com\/2011\/02\/the-new-bulletproof-font-face-syntax\/\">bulletproof <code>@font-face<\/code> syntax<\/a> di Fontspring. La bulletproof syntax usa i font file EOT, WOFF2, WOFF, raw OpenType e SVG per coprire il maggior numero di browser:<\/p>\n<pre id=\"snippet6\" class=\" language-css\"><code class=\" language-css\"><span class=\"token atrule\">@font-face<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token property\">font-family<\/span><span class=\"token punctuation\">:<\/span> Elena<span class=\"token punctuation\">;<\/span>\n    <span class=\"token property\">src<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token url\">url(elena.eot?#iefix)<\/span> format(<span class=\"token string\">\"embedded-opentype\"<\/span>),\n         <span class=\"token url\">url(elena.woff2)<\/span> format(<span class=\"token string\">\"woff2\"<\/span>),\n         <span class=\"token url\">url(elena.woff)<\/span> format(<span class=\"token string\">\"woff\"<\/span>),\n         <span class=\"token url\">url(elena.otf)<\/span> format(<span class=\"token string\">\"opentype\"<\/span>),\n         <span class=\"token url\">url(elena.svg#elena)<\/span> format(<span class=\"token string\">\"svg\"<\/span>)<span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<p>La prima riga dell&#8217;URL potrebbe sembrarvi un po&#8217; strana. Le versioni di Internet Explorer 8 e precedenti non supportano la sintassi per formati di font multipli e trattano l&#8217;intero valore della propriet\u00e0 <code>src<\/code> come URL. La bulletproof syntax inganna Internet Explorer 8 e precedenti facendogli credere che i restanti URL siano parte del fragment identifier del primo URL. Dal momento che i fragment identifier vengono ignorati quando si scaricano i files, Internet Explorer 8 e precedenti usano semplicemente il primo URL. I browser diversi da Internet Explorer salteranno tale riga perch\u00e9 non supportano EOT. Il resto delle entry sono quello che vi aspettate: formati di font elencati in ordine di preferenza.<\/p>\n<p>Ma la bulletproof syntax \u00e8 ancora rilevante? No. In effetti, penso che sia dannosa. I font SVG sono deprecati e supportati solo da browser che non sono pi\u00f9 in uso. La maggior parte dei siti web supporta Internet Explorer 9 e successivi, ciononostante la sintassi elenca EOT come primo formato di font preferito. Anche se Internet Explorer 9 e successivi supportano WOFF, queste versioni scaricano ancora il file EOT, semplicemente perch\u00e9 \u00e8 elencato per primo.<\/p>\n<p>Dal momento che la maggior parte dei siti web non supporta pi\u00f9 i vecchi browser, raccomando caldamente di usare una sintassi semplificata, che copre tutti i browser moderni, compresi quelli leggermente pi\u00f9 vecchi che sono ancora in uso, come Android 4.4 e precedenti:<\/p>\n<pre id=\"snippet7\" class=\" language-css\"><code class=\" language-css\"><span class=\"token atrule\">@font-face<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token property\">font-family<\/span><span class=\"token punctuation\">:<\/span> Elena<span class=\"token punctuation\">;<\/span>\n    <span class=\"token property\">src<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token url\">url(elena.woff2)<\/span> format(<span class=\"token string\">\"woff2\"<\/span>),\n         <span class=\"token url\">url(elena.woff)<\/span> format(<span class=\"token string\">\"woff\"<\/span>),\n         <span class=\"token url\">url(elena.otf)<\/span> format(<span class=\"token string\">\"opentype\"<\/span>)<span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<p>Sebbene siano ancora in uso delle versioni pi\u00f9 vecchie di Android, l&#8217;uso mondiale di questi browser sta rapidamente diminuendo. Presto sarete probabilmente in grado di eliminare del tutto anche il formato raw OpenType e semplificare ulteriormente la sintassi:<\/p>\n<pre id=\"snippet8\" class=\" language-css\"><code class=\" language-css\"><span class=\"token atrule\">@font-face<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token property\">font-family<\/span><span class=\"token punctuation\">:<\/span> Elena<span class=\"token punctuation\">;<\/span>\n    <span class=\"token property\">src<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token url\">url(elena.woff2)<\/span> format(<span class=\"token string\">\"woff2\"<\/span>),\n         <span class=\"token url\">url(elena.woff)<\/span> format(<span class=\"token string\">\"woff\"<\/span>)<span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<p>In questo caso, qualcuno che usa un browser pi\u00f9 vecchio vedr\u00e0 semplicemente i fallback font invece del webfont. Va bene: possono ancora leggere il contenuto con il fallback font. (Dar\u00f2 ulteriori dettagli sui fallback font pi\u00f9 tardi).<\/p>\n<p>C&#8217;\u00e8 un altro possibile valore per il descrittore <code>src<\/code>. La funzione <code>local<\/code> prende il nome di una font family locale. Se per caso il font \u00e8 installato sul sistema, il browser user\u00e0 quello, evitando cos\u00ec un download extra.<\/p>\n<pre id=\"snippet9\" class=\" language-css\"><code class=\" language-css\"><span class=\"token atrule\">@font-face<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token property\">font-family<\/span><span class=\"token punctuation\">:<\/span> Elena<span class=\"token punctuation\">;<\/span>\n    <span class=\"token property\">src<\/span><span class=\"token punctuation\">:<\/span> local(<span class=\"token string\">\"Elena\"<\/span>),\n         <span class=\"token url\">url(elena-regular.woff2)<\/span> format(<span class=\"token string\">\"woff2\"<\/span>),\n         <span class=\"token url\">url(elena-regular.woff)<\/span> format(<span class=\"token string\">\"woff\"<\/span>)<span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<p>Anche se questa pu\u00f2 sembrare una grande ottimizzazione, niente garantisce che il font locale si abbini al vostro webfont. Potreste ottenere una versione diversa del font, un font con un supporto diverso per le lingue o un font completamente diverso. Per questo motivo, solitamente raccomando di non usare la funzione <code>local<\/code> a meno che non troviate accettabili questi svantaggi.<\/p>\n<\/div>\n<div class=\"paragrafo\">\n<h2 id=\"section3\">Volete saperne di pi\u00f9?<\/h2>\n<p>Questo estratto da <cite>Webfont Handbook<\/cite> vi aiuta a cominciare. <a href=\"https:\/\/abookapart.com\/products\/webfont-handbook\">Ordinate l&#8217;intera versione<\/a> oggi, insieme ad altri eccellenti titoli da <a href=\"https:\/\/abookapart.com\/\">A Book Apart<\/a>.<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>L&#8217;utilizzo dei webfont comincia con una semplice dichiarazione CSS, ma creare un font stack usabile e dei fallback non \u00e8 cos\u00ec semplice come sembra. Bram Stein ci spiega come avere successo in un esclusivo estratto dal Chapter 2 del suo nuovissimo Webfont Handbook, disponibile adesso da A Book Apart.<\/p>\n","protected":false},"author":818,"featured_media":7000827,"comment_status":"open","ping_status":"open","template":"","categories":[200,275],"tags":[],"coauthors":[518],"class_list":["post-784","article","type-article","status-publish","has-post-thumbnail","hentry","category-numero-222-6-ottobre-2017","category-tipografia-web-font"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/article\/784","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/article"}],"about":[{"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/types\/article"}],"author":[{"embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/users\/818"}],"replies":[{"embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/comments?post=784"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/media\/7000827"}],"wp:attachment":[{"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/media?parent=784"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/categories?post=784"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/tags?post=784"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/coauthors?post=784"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}