Archive for Říjen, 2010

Bitstream Charter alternative 0

Kingova Temná věž (nakladatelství Beta Dobrovský, sazba SF-PRINT) je sága vázaná v sedmi knihách s pevnou vazbou o celkovém počtu stran přesahujícím tři a půl tisíce. Tento magnum opus je tak rozsáhlý, že nároky na hygieničnost četby exponenciálně vzrůstají.

Neznámá a nenalezitelná firma SF-PRINT tyto nároky splnila excelentně. Po estetické stránce je sazba velmi nadprůměrná (jedna ze sedmi knih dokonce dodržuje řádkový rejstřík). Obzvláště jsem byl nadšen použitým písmem. Pokud jsem dříve říkal, že je téměř nemožné vymyslet nové a zároveň použitelné patkové písmo, potom firma Bitstream Inc. dokázala téměř nemožné.

Když se začtete do nějaké beletrie psané tímto písmem, připadá vám čtení téměř fyzicky měkké, příjemné, komfortní. Ještě se mi nestalo, že bych měl ze čtení podobný zážitek, proto jsem se vydal ono písmo hledat. Vskutku není jednoduché najít jedno konkrétní písmo ve statisících. K výsledku mě po měsících dovedla náhoda. Při brouzdání internetem (po stránkách s problematikou TeXu) jsem si v jednom nápisu povšimnul hranatého písmene „r“. Právě nezvyklý a nezvykle hezký tvar písmene „r“ mi při čtení Temné věže utkvěl v paměti… a tak jsem poznal, že jsem po měsících skutečně došel k cíli.

Je to Bitstream Charter.

Protože v roce 1992, jak jsem se dočetl, věnoval Bitstream toto písmo X konsorciu s licencí umožňující volně distribuovat upravená písma, vznikla velice kvalitní alternativa známá jako Charis SIL. Zkušebně jsem si v tomto písmu vysázel jednu kapitolu z poslední knihy Temné věže, na kterou se můžete podívat. Zdůrazňuji, že dokument musíte vytisknout, abyste dostali pravdivý výsledek. Písmo navrhované pro tisk na tiskárnách s vysokým rozlišením nelze korektně zobrazit na LCD dispalyi. Pro ty, kterým se nechce klikat, mám aspoň obrázek:

Charis SIL

TeX tutorial: II. Znakové sady 3

V minulém díle jste se naučili vyjádřit své sbohem krutému světu, ve kterém žijete. Stačila vám na to tři slova. Dnes se pokusíte rozloučit o něco lépe a s o něco větší grácií. Již vám nepostačí pouhá tři slova a budete chtít celou větu, celý odstavec nebo rovnou celou stránku.

Z předchozího odstavce (nebo z titulku) jste si jistě domysleli, že se dnes budeme bavit o znakových sadách (fontech či písmech, chcete-li). Znakové sady existují od doby, co si lidé vyvinuli první písmo, jehož jednotlivé znaky nosili v hlavách a při nejbližší příležitosti je sázeli do nejprve kamenů, potom na papyrus, na papír, na promítací plátno a na obrazovku počítače. Za Guttenberga lidé naučili umění uchovávat a kopírovat znakové sady dřevo. Následně se tímto materiálem stalo železo, poté snadno odlévatelný tiskařský kov, poté na malou chvíli materiál podobný filmu. V posledních letech lidé pokročili a naučili uchovávat znakové sady energii v jejích nejrůznějších nehmotných formách (magnetismus, elektrický náboj, parasitní kapacity).

Jak tedy nyní sedíte u vašeho počítače a třímáte v rukou myš, měli byste si uvědomit, že pokaždé, když stisknutím klávesy zobrazujete nějaký znak, provádíte činnost, která je nepředstavitelně stará a tak nadčasová, že přetrvá i samotné lidstvo. Úctyhodné, že? A proto byste měli i k elektronické sazbě přistupovat s úctou. Pokud vytisknete dokument a objevíte nějakou hrubici… ať už gramatickou, typografickou nebo estetickou, měli byste ji opravit a dokument vytisknout znovu. Když jsem sázel svůj první domácí úkol na DSA v TeXu (se spoustou matematiky), tiskl jsem ho šestkrát. Člověk, který nějaký dokument píše, v něm potom velice obtížně hledá chyby, které by byly pro jiného očividné.

K věci. Původní plain TeX funguje tak, že máte v adresářové struktuře distribuce TeXu rozházeny tisíce souborů se znakovými sadami (ve formátu t1 – Adobe Type1 a metafontovém mf) a k nim na úplně jiných místech soubory s odpovídající metrikou (ve formátu tfm – TeX Font Metric). K tomu, aby TeX nějakou znakovou sadu použil, bezpodmínečně tyto soubory s metrikou potřebuje. Ono jeden by řekl, že by to nemusel být zas až takový problém, ale vezměte v úvahu, že souborů k jedné rodině musíte posbírat v jednom případě hned 10. V jiném připadě třeba přes 40. Vysvětlím.

Každý řez písma (roman, kurzíva, tučný, polotučný) vyžaduje vlastní t1 (popř. mf) a tfm. U precizních písmových rodin má každý řez dobrých 5 různých velikostí – čili to máme 4 soubory pro velikost 5, 4 pro 7, 4 pro 10, 4 pro 11, 4 pro 12. 4 soubory je ale mnohdy číslo značně podhodnocené. Mnoho rodin písma obsahuje vlastní znakové sady pro matematické symboly (opět v různých velikostech) a další vlastní znakové sady pro rozšířenou matematiku. Šílenství, že? Další nepříjemná věc je, že podle názvu souboru začátečník nepozná, o jaký font se vlastně jedná. Například cs-qcsr je znaková sada Century Schoolbook roman :). Tyto názvy potřebujete přesně znát, pokud chcete onen font použít.

Proto je to v XeTeXu uděláno jinak. Fonty se identifikují systémovými názvy a jsou brány (zejména jejich tvar) ze systémové banky fontů (v MS Windows jsou to všechny „nainstalované“ fonty). Obrovskou výhodou je, že to nemusí být pouze Type1 (nebo mf) fonty, ale mohou být i TrueType, OpenType nebo AAT. Ono pokud jste dostatečně šikovní, dokážete TeX donutit spolupracovat se zcela libovolným formátem písma, protože ve skutečnosti TeX znaky jako takové vůbec nezajímají. Zajímá ho pouze metrika (tfm). To je ale první liga, kterou zatím ani nesledujete.

Jak tedy nějaký vámi vybraný font „nahrát“?

\font\a = "Jmeno:mapping=tex-text:+liga" at 10dd

XeTeX se pokusí najít v systému font Jmeno. Pokud ho nenajde, pochopitně vám začne nadávat. Pokud najde, pokusí se u nich aktivovat prvky, které specifikujete za dvojtečkami. „mapping=tex-text“ znamená, že se budou v textu tradičně nahrazovat dva spojovníky za sebou za en-pomlčku a tři spojovníky za em-pomlčku (čtverčíkovou). „+liga“ aktivuje opentypovou featuru (nevím, jak bych to česky nazval) liga (což jsou běžné ligatury – fi, fl, ffl). Slovy „at 10dd“ nebo „at10dd“ říkáte, že chcete kuželku písma o velikosti deseti bodů. Míru si můžete zvolit libovolně (některé známé míry jsou cc (Cicero=12dd), pt, pc (Pica=12pt), mm). XeTeX si následně vygeneruje tfm metriku a tu potom používá.

Písmo si samozřejmě můžete vybrat jaké chcete. Nejlépe byste udělali s Baskervillem nebo Jannonem, ale pravděpodobně je nemáte k disposici. Zde nabízím malý vzorník ucházejících volně dostupných písem a porovnání s Baskervillem (kde je jasně nejhezčí):

Vzorník písem
Vzorník písem

Jsou seřazeny podle jejich kvality (souzeno mnou). Kdybych neměl Baskerville, stále bych používal Century Schoolbook – je výborně čitelný. Následující výpis uvádí celé definice. Stačí si jen vybrat.

\font\schola = "TeX Gyre Schola:mapping=% tex-text:+liga" at 10dd \font\pagella = "TeX Gyre Pagella:mapping=% tex-text:+liga" at 10dd \font\bonum = "TeX Gyre Bonum:mapping=% tex-text:+liga" at 10dd \font\termes = "TeX Gyre Termes:mapping=% tex-text:+liga" at 10dd \font\century = "Century Schoolbook:mapping=% tex-text:+liga" at 10dd

Tyto fonty bohužel neobsahují žádné nadstandardní opentype featury, jako volitelné ligatury (:+dlig), vzácné ligatury (:+rlig), historické ligatury (:+hlig), stylistické alternativy (:+salt), skákavé číslice (:+onum), proporcionální číslice, tabulkové číslice, apod. Baskerville ale všechno toto obsahuje, takže definice by mohly vypadat následovně.

\font\bask = "Baskerville10Pro:mapping=tex-text% :+dlig:+hlig:+liga:+rlig:+clig:+salt:+onum" at 10dd \font\baskk = "Baskerville10Pro:mapping=tex-text:% -liga" at 10dd

Kdybychom použili každou zvlášť, výstup by vypadal následovně.

Ligatury
S a bez OpenType Fetures

Definiční řádky jsou zlomeny komentářem (znak %), aby nepřelezly řádku. Ve vašem kódu procento odmažte a definici napište na jeden řádek. Lámání řádků komentářem je TeXový fenomén a určitě jste se s ním nesetkali naposledy. Dělá se to proto, že TeX bere znak pro nový řádek jako součást textu určeného k sazbě a může se vám stát, že když budete vaše makra lámat „enterem“, objeví se vám v dokumentech nežádoucí mezery, které se posléze těžko hledají. Pokud před enterem napíšete znak pro uvození komentáře (%), je znak pro odřádkování zakomentován a nemůže se tudíž objevit v sazbě.

Jak definované fonty používat? Na to už jste zřejmě přišli během článku (užitím \jmeno). Uvedu ale ještě pár dobrých zvyklostí.

V TeXu se vyskytují skupiny (bloky kódu), které vytvářejí obory názvů (namespaces) a platnosti. Skupina je uvozena znaky „{“ a „}“. Vše, co se mezi těmito znaky stane (s mnoha a mnoha výjimkami :) ) mezi nimi zůstává. Čili změníte-li aktuální font v jednom oboru názvů, který skončí, změna už nebude platit. Je dobré definovat si font v oboru názvů nejvyšší úrovně – čili ihned na začátku – a veškeré změny fontů realizovat ve skupinách. Mohli byste sice napsat

\hlavnifont Ahoj, \jinyfont jak to jde? \hlavnifont Měj se.

,ale lépe je napsat

\hlavnifont Ahoj, {\jinyfont jak to jde?} Měj se.

, což vyprodukuje naprosto stejný výstup.

Existuje věc, kterou musíte udělat okamžitě po nastavení písma s velikostí kuželky n. Pokud to neuděláte, vaše sazba bude ošklivá a zcela nepoužitelná. Musíte nastavit vzálenost účaří jednotlivých řádek (laicky řečeno nastavit řádkový proklad). Pokud použijete kuželku písma 10dd a ponecháte standardní vzdálenost účaří, budou na sobě řádky sedět a v tomto nastavení ještě nepravidelně, takže výsledek bude opravdu ošklivý. Potřebujete nastavit registr \baselineskip. Hodnota tohoto registru by u běžné literatury standardní velikosti písma nikdy neměla být větší než n+3, spíše by měla být n+2. Pokud máte kuželku písma 10dd, musíte nastavit \baselineskip=12dd!

Nyní, když už si umíte vybrat znakovou sadu dle vašich představ, vás to svádí k produkování celých vět… odstavců… stránek, či dokonce kapitol! To ale ještě nemůžete. Váš výstup by neodpovídal normě a v horším případě by ani nebyl hezký. Vzpomínáte, jak jsem v prvním díle psal o dělení slov?

\uselanguage{czech}

Nebylo to úplně všechno, co potřebujete k tomu, abyste dodrželi standardy a tradice. Za tento řádek je bezpodmínečně nutné vložit ještě tyto:

\frenchspacing \lefthyphenmin=2 \righthyphenmin=3

Makro \frenchspacing nastaví evropské „mezerování“ za interpunkčními znaménky. Podle americké typografické normy (kterou TeX pochopitelně rád svým uživatelům vnucuje) se za interpunkčními znaménky nechávají mírně větší mezery než jak je tomu zvyklostí v evropě, kde se naopak používají mezery kratší. Protože my dodržujeme tradice za každou cenu, pochopitelně \frenchspacing zapneme. \righthyphenmin určuje kolikapísmenný zbytek minimálně musí po dělení slova zůstat na vrchní řádce, zatímco \lefthyphenmin určuje, kolikapísmenný zbytek minimálně musí pokračovat na řádce nové. Podle české normy jsou tato čísla 3 a 2.

Dále ještě musíme definovat české uvozovky, protože v XeTeXu nemáme tu možnost používat styl czech.sty, který je výsadou csTeXu (a i kdybychom měli, stejně by nám nefungovaly, protože v unicode jsou namapovány jinde).

\def\uv#1{{}\char8222{}#1{}\char8220{}}

Tímto kódem trochu předbíhám tento díl tutoriálu, ale chci, aby vaše následující pokusy již měly nějakou úroveň. Vždy, když při psaní budete chtít dát nějaký text do uvozovek, vložíte jej jako parametr makru \uv například takto – \uv{Sbohem, krutý světe,} řekl a následně stiskl tlačítko, které spustilo sazbu.

Dnešní díl byl poněkud delší, za to se omlouvám, ale stále mám pocit, že bych mohl psát dál. To, co jsem v dnešním článku popsal, vystihuje danou problematiku jenom nekonečně malým kouskem… jako jedno dx v určitém integrálu nebo podobně :).

Na závěr bych si dovolil uvést úplný dokument složený z toho, co jsme se zatím naučili (a pár… inu… dost věcí, které ještě neumíme, abych vám dal příležitost hrát si a zkoumat). Zdrůrazňuji, že dokument je určen ke zpracování XeTeXem a zdůrazňuji, že musíte použít kvalitní distribuci (například TeXlive), která obsahuje použitý font (TeX Gyre Schola).

Zdrojový soubor lze stáhnout zde: basker.tex.
Výstup by měl (bude) vypadat takto: basker.pdf.

Dejte se do toho :). Experimentujte, nastavujte různé hodnoty, přepisujte podle vaší libosti :).

Intermezzo: Baskerville ze Střešovic 6

Není možné bavit se o kvalitní typografii bez účasti kvalitní znakové sady (písma nebo fontu, chcete-li). Pokud vezmete do ruky kvalitní (nikoli co do obsahu) knihu a otevřete ji, téměř nikdy neuvidíte jeden z fontů, které znáte a které běžně používáte v té variantě, kterou máte v počítači. To pouze ministerstvo školství vydává otřesně vypadající příručky a dokumenty psané dvěma fonty, které jsou nastaveny jako výchozí v každé instalaci MS Office 2007. Ministerstvo školství vůbec nezajímá, že tyto fonty absolutně nejsou navrženy pro tisk, nýbrž pro zobrazování na LCD obrazovkách (zvláště po letošních volbách sedí na ministerstvech amatéři a lidé z ulice (nejvíce mě baví ministr dopravy, co se v tomto oboru začal vzdělávat až poté, co byl do této funkce obsazen)).

Baskerville typeface
Nestandardní ligatura fk

Návrh znakových sad je precizní umělecká práce, která však musí mít určitou formu (písmeno ‘a’ musí velmi blízce připomínat původní podobu minusky z roku 800 A.D.) a musí být optimalisovaná nejen esteticky, ale i hygienicky (je velice jednoduché přijít o dobrý zrak jeho namáháním). Právě proto je vytvořit nové a zároveň prakticky použitelné písmo téměř nemožné a designeři tak stále znovuoživují standardy, které položili géniové svého oboru, jako byli William Caslon, John Baskerville, G. Bodoni a F. Didot. W. Caslon jako zástupce písem, kterým se říká renesanční antikva (dnešní zástupce je např. Palatino), Baskerville jako zástupce barokní antikvy (např. dnešní Times) a poslední jako zástupce moderní antikvy (např. Computer Modern).

Long s in Baskerville typeface
Dlouhé s

Některé dnes zdarma dostupné znakové sady jsou výsledkem přílišného zjednodušování na úkor pohody při čtení (groteska Arial). Jiná písma jsou tak nadužívaná ve všem možném, včetně běžných dokumentů, že nevybuzují estetický prožitek z čtení a naopak vyvolávají pocit amatérismu (Times New Roman). Zvláště v poslední době se ale objevují i písma velmi kvalitní (Adobe Garamond Pro), na které lze získat určitou licenci dohromady se zakoupením nějakého produktu firmy Adobe (například Photoshopu, InDesignu). I když jsou tato písma velmi propracovaná a obsahují české akcenty, nejsou česká, a tedy se v některých důležitých detailech mohou lišit od tradičního českého stylu sazby. Kvalitní zahraniční písma mi nevyhovují ještě v jednom ohledu. Mnohdy totiž postrádají dnes již řídce používané znaky, které by se dle mého názoru měly co nejdříve opět běžně objevovat v tisku (jinými slovy, nejsou až tak ortodoxní, co se týče typografie, jak bych si přál).

Discretionary ligatures in Baskerville typeface
Volitelné ligatury

Písmo, které vidíte na všech obrázcích v tomto článku, je Baskerville 10 Pro od pana Štorma ze Střešovické písmolijny, které jsem si od prvního pohledu zamiloval. Je to nejhezčí a nejobsáhlejší klasické písmo, jaké jsem kdy viděl. Uspokojuje mě po stránce češtiny a zejména po stránce ligatur a zapomenutých znaků. Obsahuje dokonce ligatury pro dlouhé s (viz druhý obrázek)! Kdo a proč by dnes dělal ligatury pro dlouhé s? Když jsem viděl kompletní znakovou sadu, nemohl jsem věřit svým očím.

Toto ladné a detailně propracované písmo samozřejmě není k disposici zdarma. Licenci lze zakoupit na Storm Type Foundry.

Příští díl: TeX tutorial: II. Znakové sady