Hlavní navigace

Písma a jejich použití: formáty písem TrueType a OpenType

12. 9. 2024
Doba čtení: 15 minut

Sdílet

 Autor: Pavel Satrapa
Soubory s uloženým písmem mohou mít řadu různých formátů, v praxi se ale setkáme se dvěma: TrueType a OpenType. V dnešním článku si povíme o vlastnostech těchto formátů, jejich možnostech a podpoře češtiny.

Pro soubory s písmem existuje několik formátů, reálně se ale v distribuci setkáte se dvěma: TrueType a OpenType. Formát TrueType vyvinula firma Apple a oficiálně jej představila v roce 1991. Kromě jejích systémů jej podporují i Microsoft Windows, takže se etabloval jako běžný a často používaný formát.

Profesionální písmolijny mu ale nikdy příliš nefandily. Dávaly přednost staršímu formátu Type 1, který vyvinula firma Adobe pro PostScript. Jeho velkou slabinou bylo, že soubor mohl obsahovat jen 256 znaků. Komerční písma proto existovala v různých jazykových mutacích podle toho, jaké znaky byly v daném souboru obsaženy.

Formáty se liší použitým typem křivek. Type 1 používá kubické se dvěma řídicími body, zatímco TrueType kvadratické s jedním řídicím bodem. V 90. letech celkem neobvykle spojili síly dva významní kohouti na písemném smetišti: Adobe a Microsoft. Výsledkem jejich úsilí byl nový formát OpenType, který v sobě kombinoval křivky z Type 1 i TrueType a přidal k nim mnoho dalšího.

Jeho základem je kódování Unicode, takže znaků je k dispozici, co hrdlo ráčí. A jelikož umožňuje celou řadu typografických jemnůstek, ke kterým se ještě dostaneme, profesionálové svá písma obvykle distribuují v něm.

Nenechte se zmást příponami souborů. TrueType standardně používá příponu .ttf. U OpenType záleží na typu použitých křivek. Je-li písmo definováno pomocí kubických křivek, používá příponu .otf. Pro křivky kvadratické typicky mívá příponu .ttf.

Za zmínku stojí ještě webové formáty Web Open Font Format (WOFF1 a WOFF2). Jsou podporovány prohlížeči a umožňují, aby autor stránky používal písma podle svého výběru. Díky nim není omezen na písma, která jsou instalována v systémech čtenářů, o nichž nic neví a nemůže je ovlivnit. Nepoužívají se jako distribuční a operační systémy nenabízejí jejich jednoduchou instalaci. Tato písma by měla zůstat jen na webových stránkách.

Běžný postup je takový, že písmo pořídíte ve formátu OpenType nebo TrueType a následně konvertorem vytvoříte jeho verzi ve WOFF, pokud nebyla rovnou součástí distribučního balíčku. Konverze může zahrnovat i omezení znakové sady a různých pokročilých prvků, aby se vynecháním nepotřebných znaků zmenšila velikost WOFF souborů. Konvertory obvykle vytvoří i CSS pro použití písma na stránce.

Není žádnou výjimkou, že distribuční soubor s písmem obsahuje několik formátů. Například pro písmo Inter dostanete balíček, kde najdete otf, ttf i woff a navíc variabilní verzi písma (k variabilním písmům se ještě dostanu) a soubor ttc, což je rozšíření formátu TrueType zahrnující několik řezů do jednoho souboru.

Adresář se soubory distribučního balíčku Inter

Pro použití na webu ani nemusíte nic stahovat a instalovat. Google Fonts umožňují používat písmo rovnou od nich. Po kliknutí na Get Font dostanete na výběr dvě možnosti: klasické stažení (Download) a vložení na dálku (Get embeded code). Ta druhá vygeneruje HTML a CSS odkazující na písma umístěná zde. Soubory WOFF tedy nepotřebujete mít na svém serveru, prohlížeč si je bude stahovat přímo z Google Fonts.

Systémová písma – instalace a přehled

Zaujalo vás nějaké písmo a chtěli byste je používat? V každém systému jsou samozřejmě nějaká písma předinstalována. Problém je, že jejich nabídka nebývá nijak oslnivá a mezi systémy je bolestně nekonzistentní. Pro její prohlížení bývají k dispozici grafické nástroje. Jmenují se různě – Nastavení písem ve Windows, Kniha písem v macOS, Správa písem v KDE. Obvykle stačí při vyhledávání aplikací zadat „pís“ a v nabídce se objeví. Možná své vyvolené už v systému najdete, ale pravděpodobně si je budete muset opatřit v některém z výše zmiňovaných formátů a instalovat.

V grafickém uživatelském rozhraní to bývá triviální. Snad ve všech systémech stačí klepnout na soubor s písmem pravým tlačítkem myši a z nabídnutého menu vybrat Instalovat. Pokud si chcete zpestřit život tu a tam nějakým novým písmem, asi nepotřebujete vědět víc.

Jestliže písma sbíráte a máte jich hromady, nebo prostě jen máte rádi ve věcech pořádek, možná dáte přednost ruční práci. V Linuxu bývají systémová písma umístěna v adresáři /usr/share/fonts. Pod ním obvykle najdete adresáře podle formátů a v nich podadresáře s konkrétními rodinami.

K instalaci většího počtu písem stačí je nakopírovat na vhodné místo této adresářové struktury a následně spustit fc-cache, aby se s nimi systém seznámil. Přehled o instalovaných písmech poskytne příkaz fc-list. Standardně vypisuje všechna, pomocí parametrů lze jeho výstup omezit.

Třeba po zadání jména rodiny vybere jen její členy. Obsahuje-li jméno mezeru, nezapomeňte je na příkazovém řádku uzavřít do uvozovek. Osobně pro tento účel dávám přednost filtrování výstupu fc-list pomocí grep. Můžete ale požadovat i konkrétní vlastnosti písma. Například :spacing=mono vypíše neproporcionální písma dostupná ve vašem systému, zatímco :width=condensed zobrazí písma zúžená. Podmínky lze kombinovat, takže :spacing=mono:weight=bold:lang=cs vypíše neproporcionální tučná písma, která podporují češtinu.

Za těmito příkazy se skrývá knihovna fontconfig, v jejíž dokumentaci najdete přehled dostupných vlastností a jejich hodnot.

Možnosti formátu OpenType

Když už je řeč o vlastnostech písma, pojďme se podívat, co všechno dovede formát OpenType a proč jej mají autoři písem tak rádi. Už jen velký počet znaků, které lze do písma vložit, je sám o sobě dost přitažlivý. Dříve se vytvářely různé jazykové varianty stejného písma, v OpenType mohou být v jednom souboru. Také kapitálky se distribuovaly v samostatném souboru se zkratkou SC v názvu řezu, dnes bývají zahrnuty.

Možnosti formátu OpenType

Navíc ale může písmo obsahovat celou řadu různých typografických specialit, kterými lze text vylepšit či ozvláštnit. Oficiálně se nazývají typografické vlastnosti (typographic features) a jsou identifikovány čtyřpísmennými zkratkami. Dostupných vlastností je hodně přes stovku a záleží jen na autorovi písma, které z nich do něj zařadí. Pojďme se podívat na ty nejzajímavější.

Ligatury neboli slitky možná znáte. Dvojice nebo trojice znaků, která by nevypadala dobře (typicky fi, fl, ffi a další), se nahradí jedním kombinovaným znakem. Tohle se provádělo už v tradiční sazbě. U digitálních dokumentů je důležité, že náhrada se provádí jen pro zobrazení. Textová vrstva zůstává beze změny, aby fungovalo vyhledávání.

Ukázka ligatur

Ligatury podporovaly i starší formáty, ovšem OpenType umožňuje se opravdu rozmáchnout. Kromě základních (liga) podporuje i volitelné ligatury (dlig), historické (hlig) či kontextové (clig), jejichž použití závisí na okolních znacích. Pro náš obor jsou zajímavé programátorské ligatury (spadají pod dlig), které nahrazují kombinace znaků používané v programovacích jazycích, jako jsou<= === a podobně.

Podle okolí se může měnit i tvar jednotlivých znaků. Jedná se o tak zvané kontextové alternativy (calt). V následujícím obrázku je zvýrazněno několik znaků písma Leander Script Pro, jejichž tvar se mění v závislosti na sousedech.

Kontextové alternativy

Alternativní tvary znaků jsou obecně silnou stránkou formátu OpenType. V písmu mohou existovat jejich ozdobné varianty (swsh, cswh), stylistické sady (ss01 až ss20), alternativy jednotlivých znaků (cv01 až cv99), historické (hist) či lokalizované (locl) tvary.

Speciální a velmi významný případ představují číslice, které v některých písmech najdete ve čtyřech variantách. Dnes jsme zvyklí na tak zvané verzálkové číslice (lnum), které jsou všechny stejně vysoké. Zejména ve starších textech ale běžně potkáte číslice minuskové (onum), též skákavé, které jsou různě vysoké a navíc mají odlišné pozice na řádku. Více připomínají běžný text a méně z něj trčí, poslední dobou se k nim typografové rádi vracejí.

Druhé významné kritérium je šířka. Obvyklejší jsou tak zvané tabulkové číslice (tnum), které jsou všechny stejně široké. Díky tomu stačí sloupec v tabulce jednoduše zarovnat doprava a máte jistotu, že číslice ve stejných řádech budou přesně pod sebou. Protipólem jsou proporcionální číslice (pnum) s proměnlivými šířkami. Největší rozdíl je samozřejmě u jedničky.

Různé varianty číslic

Některá písma obsahují jen jednu sadu číslic. Pokud je ale na výběr, do běžného textu jsou ideální proporcionální minuskové číslice, zatímco v tabulkách by měly dostat přednost tabulkové verzálkové. Což nás přivádí ke dvěma důležitým otázkám ohledně používání typografických specialit:

  1. Jak poznat, které vlastnosti dané písmo zahrnuje?
  2. Jak je využívat?

Odpověď na první z nich poskytne v Linuxu program otfinfo. Zadejte mu volbu -f, protože vás zajímají vlastnosti (features), přidejte název souboru s písmem a program vypíše, co všechno tento soubor nabízí. Nebo si otevřete web Wakamai Fondue, vhoďte soubor s písmem a dostanete velmi názorný přehled, co dokáže, včetně kaskádového stylu s definicemi tříd pro aktivaci jednotlivých vlastností.

Na používání neexistuje univerzální recept. Některé vlastnosti, jako třeba základní ligatury, se používají automaticky. Jiné musíte aktivovat, například chcete-li použít jiné než výchozí číslice. Záleží vždy na konkrétní aplikaci, zda danou vlastnost podporuje a jak se dá případně zapnout nebo vypnout. U programů ze sady LibreOffice je například najdete v dialogu s vlastnostmi znaků (zvolte Formát/Znak a na kartě Písmo použijte tlačítko Vlastnosti). Jeho obsah se přizpůsobuje podle aktuálního písma – nabídne vám ty vlastnosti, které v něm najde.

Leckteré typografické laskominy se už naučily i webové prohlížeče, takže se mohou vyskytovat na stránkách. Slouží k tomu v CSS vlastnost font-feature-settings. Její hodnotou je čárkami oddělovaný seznam čtyřpísmenných zkratek vlastností OpenType, které chcete aktivovat. Například výše uvedené nastavení číslic (v textu minuskové proporcionální, v tabulkách verzálkové tabulkové) by zařídilo:

:root {
    font-feature-settings: "onum", "pnum";
}

table {
    font-feature-settings: "lnum", "tnum";
}

Trochu jsem to zjednodušil. Za zkratkou vlastnosti může totiž následovat ještě číselná hodnota, případně klíčové slovo on (synonymum pro 1) nebo off (synonymum pro 0). Výchozí hodnotou je 1, čili „zapnout“. Například potlačení standardních ligatur zajistí:

.bezligatur {
    font-feature-settings: "liga" off;
}

Mějte ale na paměti, že při exportu do WOFF se běžně kvůli úspoře místa ořezávají obsažené znaky až na nezbytné minimum. Výše zmiňované dobroty proto nemusí být k dispozici, přestože je písmo původně obsahovalo.

Variabilní a vícebarevná písma

Novější verze formátu OpenType přinesly dvě radikální inovace: variabilní a vícebarevná písma. Variabilní písmo obsahuje jednu či několik tak zvaných os, které ovlivňují jeho vzhled. Osa může například řídit duktus, což je určitě nejčastější případ. Máte k dispozici určité rozmezí hodnot, jejichž nastavením plynule měníte duktus od nejštíhlejšího po nejtučnější. Existují i binární osy (například pro kurzívu), které mají jen dva stavy: vypnuto a zapnuto.

Je na čase si opět připomenout písmo Noto Serif, jehož 72 řezů jsem tu popisoval. Ve skutečnosti je jich mnohem více, protože existuje jako variabilní písmo se třemi osami. Jedna řídí duktus, druhá šířku a třetí kurzívu. Jeho 72 řezů vzniklo nastavením konkrétních hodnot pro duktus a šířku (všimněte si menu u ovladačů jednotlivých os) a exportem do podoby statického řezu.

Volba os záleží jen na autorovi. Mnohá písma mají jen jednu (typicky duktus), jinde jich najdete více. Rekordmanem je myslím písmo Nunito Sans s pěti osami. Kromě duktu, šířky a kurzívy v něm můžete plynule měnit střední výšku a zapnout/vypnout optimalizaci podle stupně.

Moderní operační systémy podporují variabilní písma a umožňují jejich instalaci. Variabilní písmo zpravidla obsahuje virtuální řezy – přednastavené pojmenované hodnoty os, například Bold. Objevují se v nabídkách aplikací, stejně jako řezy běžných písem. Plnohodnotná podpora variabilních písem s možností nastavovat libovolné hodnoty os je v aplikacích zatím spíše vzácná. Výjimkou je například Inkscape, který po výběru řezu písma zobrazí jeho dostupné osy a umožní je ovládat. Ukázku nastavení os písma Nunito Sans v Inkscape vidíte na následujícím obrázku.

Ovládací panel písma v programu Inkscape

Variabilní písma jsou zajímavá pro web. Jejich soubory jsou sice delší než běžné statické řezy, ale stačí jen jeden. V porovnání se čtyřmi řezy pro základní a tučné písmo a totéž v kurzívě ušetříte s jedním variabilním souborem na objemu dat i počtu HTTP požadavků.

Osy se na webu ovládají pomocí CSS. Některé jsou registrovány a navázány na konkrétní vlastnosti. Například osu pro duktus řídíte standardní vlastností font-weight. Všechny lze pak řídit vlastností font-variation-settings, jejíž hodnotu tvoří čárkami oddělované dvojice  "zkratka" hodnota.

Písmo mívá jednu barvu. Samozřejmě můžete páchat různé speciální efekty, kdy obrysy vykreslíte jinou barvou nebo nápis použijete jako ořezovou masku a vyříznete jej z obrázku. Návodů na tyto efekty je plný web, nicméně šetřete s nimi, prosím.

OpenType ve verzi 1.9 přišel s podporou vícebarevných písem, jejichž znaky jsou vykreslovány několika barvami. Může to sloužit k různým prostorovým efektům (Nabla) nebo prostě jen dodat písmu určitý charakter (Multicolore). Nastavení barvy pro takové písmo nemá žádný efekt, barevnost je řízena jeho vnitřní paletou. Přesněji řečeno palet může být několik, dá se mezi nimi přepínat a dají se i měnit jejich jednotlivé barvy, musí to ale umět daná aplikace.

A máme tu zase stejnou písničku: operační systémy vícebarevná písma zvládají, záleží ale na podpoře v koncových aplikacích. Jelikož je tato technologie dost nová, stojí vesměs za starou bačkoru. Písmo lze obvykle použít v základní podobě, na hrátky s barvami si zatím musíme nechat zajít chuť.

Lepší je situace na webu. CSS umožňuje vytvářet pravidla @font-palette-values, ve kterých si vyberete některou z vestavěných palet ( base-palette), případně nastavíte barvy podle sebe ( override-colors). Větším problémem bude, že vícebarevných písem je zatím k dispozici jen velmi málo a vesměs jsou na štíru s podporou češtiny.

Podpora češtiny

Píšeme převážně česky, takže po písmu budeme chtít, aby nám to umožňovalo. Toto bývá při procházení nabídky významný požadavek a zdaleka ne každé písmo mu vyhoví. Co znamená, že písmo podporuje češtinu? Zejména dvě věci. Ta první je viditelná na první pohled: musí obsahovat všechny potřebné znaky, včetně těch méně obvyklých, jako je ď, ř nebo ů. Tohle ve Font Squirrel pohlídá jazykový filtr, v Google Fonts nasaďte v náhledu oblíbené „příliš žluťoučký kůň úpěl ďábelské ódy“ a máte hned jasno.

Druhá součást podpory češtiny je ezoteričtější, jedná se o kerningové páry. Kerning neboli vyrovnání je proces, kdy se u vybraných znaků změní jejich rozestupy. Když totiž program skládá z písmen slova a ze slov řádky, nepracuje s konkrétními tvary znaků. To by bylo příliš pomalé. V této fázi jsou znaky nahrazeny obdélníky, jejichž výška, šířka a hloubka odpovídá rozměrům znaku. Tímto způsobem se vypočte jeho poloha a teprve úplně na závěr se vykreslí.

Obdélníček kromě vlastního znaku zahrnuje i drobné mezery po jeho stranách, aby se mohly na řádek jednoduše rovnat jeden vedle druhého. Vlastně úplně stejně jako sazeč rovnal vedle sebe kovové kvádříky při tradiční sazbě. Tyto postranní mezery počítají s průměrným sousedním znakem. U některých konkrétních dvojic ale nevycházejí dobře. Typickým příkladem jsou dvojice verzálek AV nebo AT, jejichž široká a úzká část jsou na opačných koncích a při běžném rovnání vedle sebe by mezera mezi nimi byla příliš velká. Ideálem je, aby prázdná plocha mezi sousedními znaky byla všude stejně velká.

Kvalitní písmo proto obsahuje tak zvané kerningové páry, které říkají „pokud se vedle sebe vyskytnou tyto dva znaky, je třeba druhý posunout o tolik“. Jejich účinek vidíte na následujícím obrázku, kde je nápis SAVO se zapnutým a vypnutým vyrovnáním.

Ukázka vyrovnání

Je třeba, aby písmo obsahovalo kerningové páry i pro znaky s diakritikou. Bez nich by slovo SAVO bylo dobře, ale třeba MÁVÁ by bylo řídké. Mé oblíbené testovací slovo je „ďolíček“, jehož úvodní dvojice dává autorům písem dost zabrat.

Na následující ukázce vidíte, že v písmu Nanum Gothic je viditelně menší mezera mezi AV než mezi ÁV. Ovšem je to jeho menší problém, protože kromě chybějících kerningových párů pro češtinu chybí i znaky ď a č. Písmo Josefin Sans zvládá vyrovnání ÁV dobře, ale kombinace „ďo“ mu zjevně činí potíže.

Vyrovnání u písem Nanum Gothic, Noto Sans a Josefin Sans

Totéž platí i pro ostatní pokročilé typografické vlastnosti, jako jsou exotické ligatury, alternativní tvary znaků a podobně. U nich je ale potřeba lokalizace méně akutní. Zatímco chybějící kerning je okamžitě vidět, typografické laskominy nemusíte zapínat. Někde navíc nedávají smysl, například neobvyklé ligatury ct a st na následujícím obrázku by kolidovaly s háčkem nad písmenem, takže u čt a št chybí záměrně.

Ukázka ligatur ct, st, čt a št

Další žádoucí vlastnosti

Podpora češtiny by měla být samozřejmostí, pokud si nejste jisti, že budete písmo používat jen pro anglické texty. Obecně je dobré podívat se na sortiment znaků, které jsou v něm obsaženy. Většina evropských států píše latinkou, často s různými akcenty, ale vyskytuje se i azbuka nebo řecké písmo. Pokud lze předpokládat, že bude třeba oslovovat i čtenáře v těchto zemích, potřebujete, aby písmo obsahovalo příslušné znaky.

Kromě písmen a číslic písmo obsahuje celou řadu dalších znaků: interpunkční znaménka, uvozovky, závorky, matematické symboly, ale i zcela netextové znaky, jakou jsou různé šipky, srdíčka, rámečky či vyloženě dekorativní prvky. Existují i písma složená jen z dekorativních symbolů, kterým se v angličtině říká dingbats. V nabídkách písem na webu bývají zobrazeny obsažené znaky, ale nemusí být všechny. Spolehlivý přehled získáte, když například ve Writeru otevřete dialog pro vložení libovolného znaku (Vložit/Speciální znak).

Z hlediska kresby písma je důležitou vlastností rozlišitelnost znaků. Některé jsou si totiž z principu podobné, například písmeno O a číslice 0. Nebo malé l, číslice 1 a velké I. Problém mají zejména bezserifová písma, kde odlišit l a I je tvrdý oříšek. Ta moderní často mívají l dole zahnuté doprava (Source Sans, Fira Sans). Na následujícím obrázku vidíte, že třeba v postarším písmu Gill Sans vypadají všechny tři znaky stejně a ve všudypřítomném Arialu nepoznáte I od l.

Ukázky podobných znaků v různých písmech

Rozlišitelnost O a 0 bývá méně problematická, 0 je je skoro vždy znatelně užší. Některá písma navíc nabízejí i nulu přeškrtnutou nebo s tečkou uvnitř (zero), je-li třeba ji opravdu výrazně odlišit.

Všimněte si také, že u několika písem je l vyšší než I. Je zažitou představou, že vysoké minusky mají stejnou výšku jako verzálky. Ve skutečnosti je ale docela běžné, že jsou vyšší. Rozdíl může být i dost výrazný (Alegreya).

Představuje slabší rozlišitelnost znaků problém? Záleží na použití. V běžném textu zpravidla ne, protože si znak domyslíte z kontextu. V čísle 512 bude jistě jednička, zatímco ve slově „lilek“ budou malá l a „Ihned“ na začátku věty začíná velkým I. Pokud ale mají být písmem zobrazovány identifikátory, hesla nebo podobné texty, kde jsou znaky nepředvídatelné, hraje jejich rozlišitelnost klíčovou úlohu.

CS24 tip temata

Co musí písmo splnit

Shrňme si doposud řečené do stručného seznamu požadavků, které musí písmo splnit, aby bylo pro danou úlohu reálně použitelné:

  • charakter jeho kresby odpovídá účelu použití,
  • licence umožňuje daný způsob použití,
  • obsahuje všechny potřebné znaky včetně kerningu,
  • obsahuje všechny potřebné řezy,
  • jeho znaky jsou dostatečně rozlišitelné.

(Autorem obrázků je Pavel Satrapa.)

ikonka

Zajímá vás toto téma? Chcete se o něm dozvědět víc?

Objednejte si upozornění na nově vydané články do vašeho mailu. Žádný článek vám tak neuteče.

Autor článku

Pavel Satrapa působí na Ústavu nových technologií a aplikované informatiky na Technické univerzitě v Liberci, píše knihy a motá se kolem tuzemské akademické sítě CESNET.