Utilia

Zmenšení fontu – subsetting písma

Zmenši písmo na potřebné znaky pomocí HarfBuzz přímo v prohlížeči. Získáš menší TTF/OTF a WOFF, náhled a pravidlo @font-face s unicode-range.

Nejdřív zkontroluj licenci písma

Subsetting soubor písma upravuje. Mnoho komerčních licencí zakazuje písma upravovat nebo převádět, nebo to povoluje jen pro web za určitých podmínek. Otevřené licence, jako SIL Open Font License (OFL) a Apache 2.0, to povolují (u OFL se podmnožina, která si ponechává vyhrazený název písma, musí přejmenovat). Než výsledek zveřejníš, přečti si licenci svého písma.

Znaky k ponechání

Vybrané znaky: 0

Jak zmenšit písmo

  1. Zkontroluj licenci. Subsetting vytváří upravenou kopii písma. Otevřené licence, například SIL Open Font License (OFL) a Apache 2.0, to povolují; mnoho komerčních desktopových i webových licencí ne, nebo jen za určitých podmínek. Nejdřív si přečti licenci svého písma.
  2. Přetáhni soubor TTF, OTF nebo WOFF do zóny pro přetažení, nebo na ni klikni a vyber ho. Panel Původní písmo ukazuje rodinu, formát, velikost souboru, počet glyfů a počet znaků, které písmo mapuje.
  3. Vyber Znaky k ponechání: Základní latinku, Latin-1, Latinku jako v Google Fonts, Francouzštinu a Číslice a znaky čísel lze kombinovat. Vlastní znaky přidáš do pole Znaky z textu (ponechá se každý odlišný znak textu) nebo do Rozsahů Unicode, zapsaných jako v CSS: U+0020-007E, U+2013, U+04??.
  4. Pokud chceš co nejmenší soubor, zaškrtni Odstranit hinting.
  5. Klikni na Zmenšit písmo. Engine (asi 650 KB) se načte při prvním použití a poté se písmo zpracuje ve tvém zařízení.
  6. Porovnej velikosti ve Výsledku, prohlédni si Náhled zmenšeného písma, pak použij Stáhnout TTF (nebo OTF) a Stáhnout WOFF a zkopíruj pravidlo CSS @font-face.

Na českých stránkách jsou ve výchozím stavu zaškrtnuté Latinka jako v Google Fonts a rozšířená latinka (Latin Extended-A/B, U+0100–024F…), která obsahuje české znaky jako ě, š, č, ř, ž, ů a ď, ť, ň. Pokud tyto znaky odškrtneš, česká diakritika se v písmu nezachová.

Soubor písma tvoje zařízení neopouští: čte se, zmenšuje a balí znovu ve tvém prohlížeči. Nic, co zadáš, se neodesílá na server.

Co subsetting dělá

Písmo často obsahuje stovky či tisíce glyfů: cyrilici, řečtinu, vietnamštinu, symboly, alternativní tvary. Stránka psaná česky nebo anglicky využije jen zlomek z nich. Tento nástroj spouští hb-subset, subsetter textového enginu HarfBuzz (stejný kód používají Google Fonts a mnoho sestavovacích nástrojů), přeložený do WebAssembly. Ponechá glyfy pro vybrané znaky plus glyfy, které OpenTypové funkce potřebují k jejich zobrazení (ligatury jako „fi“, kapitálky a akcentované tvary, pokud jsou z tvých znaků dosažitelné), a zbytek odstraní. Kerning a další tabulky rozložení se zkrátí odpovídajícím způsobem.

Typické výsledky: úplné písmo s latinkou, cyrilicí a řečtinou o velikosti 300 KB se u českého textu může zmenšit na 20 až 30 KB a logotypové písmo zmenšené na písmena jediného slova často váží jen několik kilobajtů.

Řádek Chybí v písmu uvádí znaky, které sis vyžádal, ale písmo je nemá. Prohlížeče je vykreslí záložním písmem.

Výstupní formáty a unicode-range

  • TTF/OTF: podmnožina zachovává typ obrysů původního písma (TrueType nebo CFF).
  • WOFF: totéž písmo s každou tabulkou komprimovanou zlib. Čte ho každý současný prohlížeč. Vstup WOFF se nejprve dekomprimuje.
  • WOFF2 není k dispozici: jeho kompresi Brotli a transformace tabulek nelze v prohlížeči kódovat a soubory WOFF2 tady nejde ani číst. Nejdřív převeď WOFF2 na TTF (například pomocí fontTools). Server také může TTF/OTF za běhu komprimovat pomocí gzip nebo Brotli.

Pravidlo CSS @font-face uvádí soubor WOFF jako první, nastavuje font-display: swap a přidává unicode-range sestavený ze znaků, které v podmnožině skutečně jsou. Díky unicode-range prohlížeč soubor stáhne, jen když stránka některý z těchto znaků použije, takže rodinu můžeš rozdělit na několik souborů (například latinku a cyrilici) a každý návštěvník si načte jen to, co potřebuje. Uprav Název font-family tak, aby odpovídal názvu používanému ve tvém stylopisu.

Časté dotazy

Je legální zmenšovat písmo?

Záleží na licenci, ne na nástroji. SIL Open Font License úpravy výslovně povoluje; pokud písmo deklaruje vyhrazený název, musí se upravená verze šířit pod jiným názvem. Mnoho komerčních licencí zakazuje písmo upravovat, převádět nebo hostovat na vlastním serveru. Pokud si nejsi jistý, zeptej se tvůrce písma.

Proč je podmnožina větší, než jsem čekal?

Funkce rozložení OpenType přitahují další glyfy (ligatury, alternativy, kapitálky) a instrukce hintingu mohou být u písem TrueType velké. Zkus Odstranit hinting a zkontroluj, že jsi omylem nezaškrtl velkou předvolbu.

Mám hinting odstranit?

Hinting zlepšuje vykreslování malých velikostí ve Windows se staršími rasterizéry. V macOS, iOS, Androidu a moderním Windows při běžných velikostech je rozdíl malý. U nadpisů a log je odstranění obvykle v pořádku.

Mohu zmenšit proměnné písmo?

Ano. Osy variací se zachovají, takže podmnožina zůstane proměnná; zmenší se jen počet znaků.

A co kolekce písem (.ttc)?

Zmenší se jen první písmo z kolekce.