Hlavní navigace

Opravte si e-defekt svépomocí

6. 3. 2014 13:42 (aktualizováno) | Ondřej Caletka

Nedávno jsem si v jistém českém e-obchodu pořídíl e-knihu pro svou e-čtečku Amazon Kindle. Přestože jsem knihu stáhnul ve formátu mobi, který je určen právě pro čtečku, kterou vlastním, ukázalo se, že jsem na místo e-knihy pořídil e-defekt. Veškerý text knihy byl totiž napsán titěrným a především neproporcionálním písmem. Titěrné písmo je s mírnými obtížemi řešitelné přímo ve čtečce. Nastavení velikosti písma ale ovlivňuje všechny knihy, takže pokud jich čtete víc najednou, musíte velikost neustále přepínat. S neproporcionálním písmem ale ve čtečce nic neuděláte.

[caption id=„attachment749“ align=„aligncenter“ width=„300“ caption=„Porovnání defektní a obyčejné knihy“][/caption]

Napsal jsem na zákaznickou podporu e-obchodu s požadavkem na opravu. Ten byl předán vydavatelství a od té doby se už víc než týden nic neděje. Než číst strojopisné písmo, rozhodl jsem se, že se knihu pokusím opravit svépomocí.

Rozborka a sborka Kindle formátu

Kdysi dávno byl Kindle formát jen obyčejným PKZIP archivem s definovanou vnitřní strukturou, podobně jako třeba Java archivy nebo dokumenty ODF. Před určitou dobou ale došlo ke změně a Amazon začal používat proprietární Kindle Format 8. Formát byl ale naštěstí poměrně podrobně analyzován a vznikl tak projekt KindleUnpack, který dokáže nešifrovaný MOBI soubor rozbalit:

$ mkdir outdir
$ python2 ./KindleUnpack_v62/lib/kindleunpack.py input.mobi outdir 

V cílovém adresáři se po rozbalení objeví adresáře mobi7 a mobi8 reprezentující jednotlivá zpracovaná data pro čtečku a také soubor kindlegensrc.zip po jehož rozbalení se objeví zdrojová struktura, ze které byl daný archiv sestaven programem Kindlegen. To je originální nástroj od Amazonu určený pro publikování knih v jeho ekosystému. Po nezbytných úpravách zdrojových souborů archiv znovu sestavíme zavoláním tohoto nástroje:

$ kindlegen content.opf 

Docela zajímavé přitom je sledovat varování, která Kindlegen při sestavování archivu hlásí. Je tak možné odhalit prohřešky proti pravidlům pro publikování, které často stojí za tím, že z e-knihy je e-defekt.

Prohřešky proti pravidlům

Asi největší vliv na zážitek ze čtení má kromě obsahu samotného také kaskádový styl. V něm je tedy nejlepší hledat případné nedostatky:

p{font-family:"GFS Didot",monospace;}
div{font-family:"GFS Didot",monospace;}
@page {margin-top: 5px}
p{text-indent:1.6em;margin-left:0;margin-right:0;text-align:justify;widows:1;
  orphans:1;margin-top:0;margin-bottom:0;
  font-family:"GFS Didot",monospace;font-size:82%;line-height:115%} 

Povšimněte si prosím zejména na konci uvedené vlastnosti font-size: 82%. Dost by mě zajímalo kdo se cítil být takovou autoritou, že si může dovolit rozhodovat o tom, jakou velikostí bude vysázen základní text knihy. Redundantně zadaná rodina písma pak vnucuje vydavatelský font, na který je odkaz v jiné části CSS. Vydavatelé českých e-knih údajně vždy přidávají vlastní font, protože některé čtečky nemají ve vestavěném fontu glyfy pro české znaky. To však není případ čteček od Amazonu. Nejjednodušší opravou proto je odstranění všech výskytů CSS vlastnosti font-family, spolu s dalšími nonsensy. Takto sestavená kniha se zobrazí fontem dle uživatelské preference v základním řezu dle uživatelské preference.

S trochou snahy je možné sestavit knihu tak, že si její čtenář může zvolit jak font od vydavatele, tak i standardní font čtečky. Bohužel, naivní přístup, spočívající v přepsání obecného fontu monospace za serif, nefunguje. Kindle zřejmě všechny druhé a další definované fonty ignoruje. Podle pravidel pro publikování je také zapotřebí základní font knihy nenastavovat pro jednotlivé odstavce knihy ale nastavit jej jednou pro tag <body>:

body{font-family:"GFS Didot";}
p{text-indent:1.6em;} 

Takto sestavená kniha (je třeba odstranit všechny vlastnosti font-family z dalších řádků CSS souboru) je zobrazitelná jak standardním písmem čtečky (což je výchozí chování) tak i fontem vydavatele, na který je možné přepnout přímo ve čtečce. Podle mého subjektivního názoru je ale vydavatelský font v tomto případě mnohem hůře čitelný:

[caption id=„attachment748“ align=„aligncenter“ width=„300“ caption=„Kniha po úpravě v obou variantách fontu“][/caption]

Tiket v obchodě je stále otevřený a jelikož se jedná o bestseller, předpokládám, že knihu vydavatelé opraví. Jsem proto zvědav, jak bude vypadat oficiální oprava a do jaké míry se bude lišit od té mé.