PB029 Elektronická příprava dokumentů Anyone who would letterspace the lowercase would steal sheep. Frederick Goudy (1865 1947), when looking on a prize winner certificate You cannot not communicate. Paul Watzlawick (1921 2007), in Pragmatics of Human Communication Lidé komunikují prostřednictvím dokumentů připravovaných elektronicky. Petr Sojka PB029 Od autora ke čtenáři podzim 2018 1 / 210
PB029 Elektronická příprava dokumentů PB029 Elektronická příprava dokumentů Petr Sojka podzim 2018 Petr Sojka PB029 Od autora ke čtenáři podzim 2018 2 / 210
Osnova dnešní přednášky a demopřednášky I Agenda Blížící se odevzdávání zápočtových příkladů, zkoušky, přednáška CSTUGu. Přednáška Rozcvička. Terminologie a modely: box-glue-penalty model, skyline model. Algoritmy zlomu: first fit, best fit, optimum fit. Rozšíření HZ Hermanna Zapfa. Mikrotypografie znaky. Mikrotypografie algoritmy a principy. HZ algoritmus. Algoritmy v jiných systémech (InDesign). Petr Sojka PB029 Sazba: řádkový zlom a mikrotypografie podzim 2018 163 / 210
Osnova dnešní přednášky a demopřednášky II Stránkový zlom. Umísťování obrázků. Dělení slov. Demopřednáška Obrázky v T E Xu. Nástroje pro WYSIWYG DTP. Petr Sojka PB029 Sazba: řádkový zlom a mikrotypografie podzim 2018 164 / 210
Zlom terminologie a modely I Znak reprezentace jako ohraničující obdélník (bounding box) mající referenční bod, výšku, šířku a hloubku. Slitky, ligatury, ligatura FI, šéflékař vs. šéflékař, mezipísmenný proklad (kerning). Mezera: pevná a proměnná, nedělitelná. \,, ~ Petr Sojka PB029 Sazba: řádkový zlom a mikrotypografie podzim 2018 165 / 210
Zlom terminologie a modely II Dle fontu: \fontdimen 1: italická korekce (slant per pt, italic correction), 2: základní velikost, 3: roztažitelnost (interword stretch, stretchability), 4: stažitelnost (interword shrink, shrinkability), 5: střední výška (x-height, 1ex). 6: čtverčíková mezera (quad width), \quad, 7: mezera za interpunkcí (extra space) \nonfrenchspacing. Další pro sazbu matematiky. Petr Sojka PB029 Sazba: řádkový zlom a mikrotypografie podzim 2018 166 / 210
Zlom terminologie a modely III Box: ohraničující obdélník (krabice) sady znaků, textu. Horizontální \hbox, vertikální \vbox. Lepidlo (glue): přirozená šířka a vlastnosti jako mezera. \hskip 1em plus 0.5em minus 0.2em Penalta (penalty), míra škaredosti. \penalty 10000 Box-glue-penalty model (TEX), Skyline model. Petr Sojka PB029 Sazba: řádkový zlom a mikrotypografie podzim 2018 167 / 210
Algoritmus First fit Horizontální seznam, šířka w, roztažitelnost w +, stažitelnost w, požadovaná šířka L. Poměr roztažení r (adjustment ratio) (L w)/w +. Výběr prvního možného zlomu takového, že r < 1. r > 1, pak řádek přetečený (overfull), nebo podtečený (underfull). Nenáročné na výpočetní kapacitu. Petr Sojka PB029 Sazba: řádkový zlom a mikrotypografie podzim 2018 168 / 210
Algoritmus Best fit Zlom po řádcích, výběr nejlepšího zlomu na řádku bez přihlédnutí k předchozím řádkům a možnostem. Míra optimality řádku je měřena mírou odchylky b od ideální velikosti mezislovní mezery a penalty na místě zlomu p, tedy b + p. V TEXu je míra škaredosti resp. špatnosti (badness) b = 100 r 3, kde r je poměr rozdílu požadované a přirozené délky řádku ku součtu roztažitelných resp. stlačitelných složek lepidla (glue). Petr Sojka PB029 Sazba: řádkový zlom a mikrotypografie podzim 2018 169 / 210
Algoritmus Optimum fit I Optimalizace zlomu v rámci celého odstavce naráz s využitím modelu box, glue a penalty. Zvažovat úplně všechny kombinace zlomu slov na řádcích má exponenciální složitost. Naštěstí netřeba zvažovat úplně všechny kombinace, jen ty, které mají škaredost menší než \pretolerance resp. \tolerance. Úloha podobná hledání nejkratší cesty v grafu metodou dynamického programování: každé cestě odpovídá škaredost, která se minimalizuje. Petr Sojka PB029 Sazba: řádkový zlom a mikrotypografie podzim 2018 170 / 210
Parametry algoritmů zlomu v TEXu I Až tři průchody: první bez dělení slov, limit škaredosti je \pretolerance. Pak jsou rozdělena všechna slova v odstavci a proveden druhý pokus s limitem škaredosti \tolerance. Pokud je nastaven registr \emergencystretch na kladnou délku (zvětšení roztažitelnosti mezislovní mezery) a jde o TEX3.0 či vyšší, provede se třetí pokus o zlom s těmito limity roztažitelností. Petr Sojka PB029 Sazba: řádkový zlom a mikrotypografie podzim 2018 171 / 210
Parametry algoritmů zlomu v TEXu II Další parametry ovlivňující algoritmy zlomu: řádkového: vada řádku demerits d \adjdemerits, \finalhyphendemerits l \linepenalty, \hyphenpenalty, \exhyphenpenalty, \looseness a stránkového: \interlinepenalty, \clubpenalty, \widowpenalty, \brokenpenalty,... d = (l + b) 2 + p 2 pro 0 p 10000, (l + b) 2 p 2 pro 10000 p 0 Ladění parametrů zlomu pro daný projekt (Diderot). Petr Sojka PB029 Sazba: řádkový zlom a mikrotypografie podzim 2018 172 / 210
Parametry algoritmů zlomu v TEXu III Detailní český popis variant algoritmů zlomu je k nalezení v DP FI MU Jana Pazdziory (v materiálech předmětu v ISu). Petr Sojka PB029 Sazba: řádkový zlom a mikrotypografie podzim 2018 173 / 210
Mikrotypografická rozšíření TEXu a InDesignu, hz-algoritmus 1. Motivace: Gutenbergova 42řádková Bible měla stejné mezislovní mezery. 2. Karrow, Zapf (URW, 1980+): natahovací znaky a fonty neměly úspěch (fonty). 3. Principy: kerning, scaling, composing. 4. Implementace v pdftexu (Thành, FI MU, 2001): dizertace na téma řádkový proklad. 5. Rozšíření na úrovní znaků. 6. Rozšíření na úrovní principů. 7. Rozšíření na úrovní algoritmů HZ algoritmus. Petr Sojka PB029 Sazba: řádkový zlom a mikrotypografie podzim 2018 174 / 210
Implementace v InDesignu (Karrow). Detailní český popis modifikací zlomového algoritmu písem je k nalezení v DP Mirky Misákové a v dizertaci Hàn Th ê Thànha. \usepackage[protrusion,expansion]{microtype} v L A TEXu. Petr Sojka PB029 Sazba: řádkový zlom a mikrotypografie podzim 2018 175 / 210
InDesign I Komerční program firmy Adobe pro WYSIWYG počítačovou sazbu. Zlomový algoritmus (převzat z TEXu) s pomocí Davida Karrowa (URW). Škálování znaků. Optický proklad (David Kindersley: Optical letter spacing for new printing systems, 1976). Příklady zlomu a chyb na stránce cvičení o mikrotypografii. Petr Sojka PB029 Sazba: řádkový zlom a mikrotypografie podzim 2018 176 / 210
Date: Wed, 22 Nov 2017 16:55:09 +0100 From amsoft@profimailing.cz Wed Nov 22 16:55:11 2017 From: Amos Software <amsoft@profimailing.cz> To: sojka@fi.muni.cz Subject: Nový InDesign CC2018. A nové Jednoznakovky. Reply-To: Novinky Amsoft <novinky@amsoft.cz> Nový Adobe Creative Cloud 2018. Včetně vylepšeného InDesignu a Jednoznakových předložek 2018 Online verze (http://www.amsoft.cz/mailings/2017-11-22-cc2018/web/index. Petr Sojka PB029 Sazba: řádkový zlom a mikrotypografie podzim 2018 177 / 210
Algoritmus stránkového zlomu Podobné či stejné algoritmy jako u řádkového zlomu, při optimalizaci na celou kapitolu optimum fit, na jedné stránce stačí best fit, případně u dvoustrany. TEX optimalizuje jen jednu stranu. Plovoucí objekty: obrázky, poznámky pod čarou. Stačí zvažovat pouze možnosti hezčí než zadaná tolerance, při nedodržení se použije první (nekonečně) škaredý zlom. Kombinace algoritmu stránkového a řádkového zlomu. Možné experimenty v NTS, Even,... texlive.js A L A TEX Compiler for Javascript Petr Sojka PB029 Sazba: řádkový zlom a mikrotypografie podzim 2018 178 / 210
Algoritmus stránkového zlomu Frank Mittelbach: článek ve sborníku DocEng 2017 Petr Sojka PB029 Sazba: řádkový zlom a mikrotypografie podzim 2018 179 / 210
Implementace algoritmu dělení slov Dizertace a program PatGen Franka Lianga. Princip soutěživých vzorů, nezávislost na jazyce. Vytváření a generování vzorů. OPatGen, knihovna PatLib, upatgen. Detailní popis algoritmu dělení slov je k nalezení v DP FI MU Davida Antoše. Petr Sojka PB029 Sazba dělení slov podzim 2018 180 / 210
TEXové okénko: výstup do alternativních formátů PDF, E-book,... Formát pro elektronické knihy firmy od Adobe. Otevřenost TEXu: pdftex Hàn Th ê Thành. Kalkulačka v PDF (+JavaScript): dříve než Adobe. AcroTEX. PDF není až tak portabilní jak říká název místo pro DVI3? Petr Sojka PB029 Sazba dělení slov podzim 2018 181 / 210
TEX dnes II: Internet (HTML/XML/MathML) TEX4ht, konverze přes \special do DVI a [X]HTML. LaTeXML: konvertor do XML/HTML/MathML. TTH: konvertor TEXu do HTML. MathType pro psaní matematiky ve Windows. MathFlow sada komponent a programů pro práci s matematikou. Texi2html: konverze Texinfo formátu do html. Word2TeX: konfigurovatelný konvertor z rozšířeného měnícího se formátu do stabilního. ASTER čtení L A T E Xového zápisu a dokumentů pro nevidomé Petr Sojka PB029 Sazba dělení slov podzim 2018 182 / 210
TEX dnes III: Java, Unicode, OpenType NTS: reimplementace T E Xu bez optimalizací v Javě (Karel Skoupý, FI MU), a následný výzkum. Omega: mnohem více než šestnáctibitový TEX; konverze L A TEXu do MathML. XeTEX, LuaTEX. texlive.js A L A TEX Compiler for Javascript Petr Sojka PB029 Sazba dělení slov podzim 2018 183 / 210