Vai al contenuto

Ridurre un font ai caratteri usati

Font Subsetter

Taglia un font TrueType lasciando solo i glifi che il tuo testo usa davvero e può impacchettare il risultato in WOFF: è la differenza fra un webfont da 4 MB e uno da 90 KB.

Riduce un font TrueType ai caratteri che una pagina usa davvero e ricostruisce un file valido con quello che resta. Per il coreano è la differenza fra uno scaricamento di parecchi megabyte e un paio di centinaia di kilobyte, perché un font hangul completo porta 11.172 sillabe e una pagina ne usa qualche centinaio. Può emettere il WOFF accanto al TTF, e rilegge il proprio output prima di offrirlo.

🔒 Funziona interamente nel tuo browserfontsubsetperformancewebfont

Trascina qui un file TTF

Solo contorni TrueType (.ttf, oppure un .otf con la tabella glyf). Tutto avviene in questa scheda.

Come taglia

  • · Tiene i glifi dei caratteri che hai chiesto e i glifi componenti a cui rimandano (la chiusura dei glifi compositi), poi riscrive glyf·loca·hmtx·hhea·maxp·cmap (formati 4 e 12) e post. I checksum delle tabelle e head.checkSumAdjustment vengono ricalcolati.
  • · Il file prodotto viene riletto con lo stesso parser e viene offerto solo se passa. I programmi di hinting (fpgm·prep·cvt) restano come sono.
  • · Un carattere che lasci fuori compare come una casella vuota. Incolla il testo vero della pagina oppure, per il coreano, attiva il set KS X 1001 da 2.350 sillabe.

Per guardare prima il font, l’ispettore di font; per cambiare solo il formato, il convertitore di formati di font.

Come si usa

  1. Trascinare un file TrueType

    Un `.ttf`, oppure un `.otf` che dentro ha contorni TrueType. Il pannello dice di che tipo è il file appena lo apre, perché un font CFF qui non si può ridurre.

  2. Incollare il testo che la pagina usa

    Va copiato il testo reale: titoli, etichette, testo dei pulsanti, messaggi di errore. I doppioni vengono eliminati automaticamente. Tutto ciò che si lascia fuori comparirà come un quadratino vuoto nella pagina finale, quindi conviene sbagliare per eccesso.

  3. Scegliere fra il proprio testo e l’insieme standard

    È questa la decisione vera. Incollare solo il proprio testo dà il file più piccolo e si rompe nell’istante in cui qualcuno digita un nome in un campo. Attivare l’insieme KS X 1001 di 2.350 sillabe dà un file più grande che sopravvive a un input coreano qualsiasi. Un testo promozionale statico vuole la prima soluzione; qualunque cosa con contenuti scritti dagli utenti vuole la seconda.

  4. Costruirlo e leggere i numeri

    Glifi prima e dopo, byte prima e dopo e la percentuale risparmiata. Se un carattere richiesto manca dal font, viene elencato invece di essere scartato in silenzio.

  5. Prendere il file e l’@font-face che gli sta accanto

    La dichiarazione è generata con il peso e il flag corsivo letti dalle tabelle OS/2 e post del font stesso, quindi corrisponde al file invece di essere un’ipotesi.

Domande frequenti

Rifiuta il mio OTF. Perché?

Perché quel file ha contorni CFF (PostScript), e ridurli significa riscrivere le charstring in un formato di contorno diverso: è un programma a sé rispetto al taglio dei record `glyf` di TrueType, che è quello che si fa qui. La pagina lo dichiara invece di produrre un file rotto. Su un computer si usa pyftsubset di fonttools. L’ispezione del font continua a funzionare.

Crenatura e legature sopravvivono?

No. `GPOS` e `GSUB` vengono eliminate, e la pagina lo elenca quando lo fa. Per il testo in alfabeto latino significa nessuna coppia di crenatura e nessuna legatura nel subset; per il coreano conta di rado, dato che la composizione dell’hangul sta nei glifi stessi. Se la crenatura è determinante, conviene ridurre il font con fonttools, che sa riscrivere quelle tabelle.

Che ne è di un font variabile?

Esce come istanza predefinita: le tabelle di variazione non vengono portate avanti. Di solito per un subset va bene, dato che un subset è un artefatto di distribuzione e non un file di lavoro, ma se si contava su un asse conviene ridurre l’istanza statica che si usa davvero.

Può produrre il WOFF2?

No. Il WOFF2 ha bisogno di Brotli e il browser non ne dà uno a una pagina. Il WOFF è disponibile ed è prodotto con `CompressionStream("deflate")`: toglie di norma un altro 40–50% rispetto al TTF. Il WOFF2 toglierebbe all’incirca un altro 20–30% oltre a quello, e per questo serve uno strumento da computer.

Alcuni caratteri sono usciti come quadratini vuoti.

Non erano nell’elenco dei caratteri quando il subset è stato costruito. È tutto qui il compromesso del subsetting: il file contiene solo quello che è stato richiesto. Va ricostruito aggiungendo i caratteri mancanti, oppure attivato l’insieme KS X 1001 così che un input coreano qualsiasi abbia dove atterrare.

Può ricevere da

Dopo

Questi accettano ciò che produce questo strumento, così il risultato può passare direttamente.