PRS-505: Čeština v EPUBu

Před časem jsem tu psal o tom, jak dostat do čtečky knihy v češtině. Věnoval jsem se primárně formátům TXT, RTF a LRF (protože LRF mi z čtečkou podporovaných formátů vyhovuje nejvíc a zprovozněním češtiny u něj ji zprovozním i u druhých dvou), u EPUBu jsem to spíš jen naznačil a dál nepitval. Protože se ale množí dotazy na to, jak rozchodit češtinu v EPUBových knihách, je zjevně na čase sepsat k tomu podrobnější návod. Tady ho tedy máte.

Hned na úvod je třeba upozornit, že EPUB je hodně nový a málo vyzkoušený formát. Je sice založen na starých a dostatečně prověřených technologiích, ale jeho implementace není vždy ideální – ani na straně producentů obsahu, ani na straně konzumentů. V případě Sony Readeru to znamená, že i když jde všechno dobře, neobejdete se bez ručních zásahů do knihy – nestačí ji jen stáhnout, nahrát do čtečky a pustit se do ní, musíte ji napřed upravit. Tomu bude věnována stěžejní část tohoto článku, než se k tomu ale dostanu, rád bych se vypořádal s prvním problémem – zdaleka ne každá kniha, kterou v EPUBu stáhnete, je opravdu v pořádku.

Konkrétně mě to postihlo na příkladu, který jsem chtěl pro práci s češtinou použít: stáhnul jsem si ze serveru Palmknihy.cz knížku Válka s mloky od Karla Čapka, nahrál ji pro kontrolu do Readeru a zjistil, že Reader ji sice zobrazí v seznamu knížek, ale už ji nedovolí otevřít (tvrdí, že obsahuje jedinou stránku, a na té stránce zobrazí jen chybu „page not found“). Proč to tak je se můžu jen dohadovat, velmi pravděpodobně ale stažený soubor neodpovídá specifikacím (už pouhým pohledem do vnitřností knihy vidím, že hlavní text je v jediném souboru dlouhém přes 400 KB, což specifikace nedovoluje; je tudíž vcelku oprávněný předpoklad, že kniha obsahuje i další odchylky od standardu, kvůli kterým ji Adobe Digital Editions, jenž na Sony zajišťuje prohlížení EPUBů, odmítá zobrazit). Otázka je, co dělat v takovém případě. Můžete se pochopitelně ponořit do hlubin specifikací a hledat, co je blbě, ale pokud to zvládnete, asi nebudete číst tento článek. Můžete knihu zkonvertovat do jiného formátu a pak zase zpátky do EPUBu, například pomocí Calibre (zajímavé je, že „konverze“ z EPUBu do EPUBu nepomůže, je třeba jít přes jiný formát, například přes LIT). No a nebo můžete zkusit stáhnout knihu odjinud, kde třeba bude udělaná správně – v mém případě jsem využil služeb Městské knihovny v Praze a stáhl si Válku s mloky z jejích stránek Karla Čapka.

V okamžiku, kdy nahrajete specifikacím odpovídající český EPUB do čtečky, zjistíte, že se kniha zobrazí, ale češtiny si neužijete – mnohá písmena (ě, č, ř, ů a další) budou nahrazena otazníky. A tím se dostáváme k druhému problému, totiž ne zcela vyhovující implementaci. V případě Sony Readeru to znamená, že pokud chcete české znaky, musíte každé jednotlivé knize vnutit české fonty. Cest k tomu vedoucích je několik, všechny přitom principielně vycházejí z toho, co jsem napsal v původním článku o češtině na Sony Readeru. Všechny také vyžadují určité množství ruční práce a nabízí se otázka, jestli vůbec stojí za to trvat na formátu EPUB a jestli nebude jednodušší zkonvertovat knihu třeba do LRF, který češtinu zobrazí okamžitě (za předpokladu, že jste do čtečky nahráli české fonty); pokud je kniha tvořena takřka čistým textem a případně nějakou tou kurzívou, tak konverzí nic neztratíte. Ale dejme tomu, že opravdu trváte na použití EPUBu. Jak do něj tedy dostat české fonty?

První krok spočívá v nahrání českých fontů do interní paměti Readeru. Připojte čtečku k počítači, vytvořte si v její interní paměti adresář fonty a nakopírujte do něj požadované soubory fontů; já v tomto návodu budu předpokládat standardní písma Times New Roman, Arial a Courier New z Windows, která najdete v adresáři Windows\Fonts v souborech arial.ttf, arialbd.ttf, arialbi.ttf, ariali.ttf, cour.ttf, courbd.ttf, courbi.ttf, couri.ttf, times.ttf, timesbd.ttf, timesbi.ttf, timesi.ttf (vystačíte si případně i jen se třemi soubory arial.ttf, cour.ttf a times.ttf, ale tučné písmo a kurzíva pak nebudou vypadat tak hezky).

Tím je přípravná fáze skončena a můžeme přistoupit k vlastní úpravě knih. Možností je několik, asi nejjednodušší je použít Calibre a udělat „konverzi z EPUBu do EPUBu“ s tím, že nahradíme CSS (styly knihy) vlastními. Toto řešení má ovšem tu nevýhodu, že dojde k dalším nechtěným změnám zejména v oblasti detekce kapitol a metadat obecně. Druhá cesta vede přes ruční úpravu souborů, která je pracnější (zvlášť pokud si zrovna netykáte se správci souborů a s programátorskými editory), ale zato dovolí zachovat vzhled knihy nezměněn a opravit jenom fonty.

Náhrada CSS pomocí Calibre

  1. Spusťte Calibre a přidejte do něj knihu, kterou chcete upravit.

  2. V okénku „output“ vyberte formát EPUB.

  3. Vyberte knihu a klikněte na tlačítko Convert E-books

    První tři kroky úpravy
  4. Zobrazí se okno s parametry konverze. Přepněte se na stránku Look & Feel a do okna Override CSS napište následující kód:

    @font-face {
      font-family: serif;
      font-weight: normal;
      font-style: normal;
      src: url(res:///Data/fonty/times.ttf);
    }
    @font-face {
      font-family: serif;
      font-weight: bold;
      font-style: normal;
      src: url(res:///Data/fonty/timesbd.ttf);
    }
    @font-face {
      font-family: serif;
      font-weight: normal;
      font-style: italic;
      src: url(res:///Data/fonty/timesi.ttf);
    }
    @font-face {
      font-family: serif;
      font-weight: bold;
      font-style: italic;
      src: url(res:///Data/fonty/timesbi.ttf);
    }
    body, p { font-family: serif !important; }

    Části fonty/... přitom nahraďte skutečnými cestami k fontům, které jste si nahráli do paměti čtečky. Pozor, musíte dodržet velikost písmenek (a pokud ho používáte, nenechte se zmást vychytralostí Průzkumníka, který zdaleka ne vždy zobrazí skutečně použitá písmena).

    Pokud se vyznáte v CSS, nic vám nebrání si se stylováním trochu pohrát a různým částem textu přiřadit jiný font (je například zvykem, že tagy <pre> a <code> jsou vyvedeny neproporcionálním písmem jako Courier New). Princip je stejný jako v příkladu výše, nadefinujete prostě další písmo jako novou font-family a pak ho použijete pro ten který tag (nebo tu kterou třídu). Jak přesně na to už přesahuje záměr tohoto článku, podívejte se případně na Jak psát web.

    Pozn.: Ti z vás, co CSS znají, se možná diví, proč styluji body, p a ne proste a jednoduše hvězdičku, která by fungovala mnohem spolehlivěji. Důvod je ten, že při použití hvězdičky jako selectoru se čtečka vždy zakousne – prostě nějaká chybka Adobe Digital Editions…

    Vyplněné okno Override CSS
  5. Ve Calibre verze 0.5.1, kterou jsem použil pro testování toho návodu, jsem narazil na chybku – Calibre se při konverzi z EPUBu do EPUBu zakousne, pokud nezměníte titulek knihy na něco jiného, než tam bylo předtím. To uděláte na stránce Metadata – můžete například za název knihy připsat [CZ].

    Změna titulku knihy
  6. Teď už můžete knihu zkonvertovat kliknutím na tlačítko OK.

  7. Až operace proběhne, můžete knihu nahrát do čtečky (tlačítkem Send to device) nebo jako soubor na disk (Save to disk), odkud už si ji do čtečky nahrajete ručně.

Ruční oprava CSS

Ruční oprava CSS je podstatně složitější, pracnější, ale také spolehlivější, protože kniha zůstane, jak byla, a změní se právě jen fonty. Předem však podotýkám, že pokud nemáte žádné zkušenosti s tvorbou webových stránek, s největší pravděpodobností si fonty změnit nedokážete. Postup je zhruba následující:

  1. Otevřete si knihu jako archív ZIP. V souborových manažerech (FAR Manager, Total Commander, Altap Salamander a podobné) toho obvykle dosáhnete klávesovou zkratkou CTRL+PageDown stisknutou na souboru knihy, v závislosti na nastavení manažeru může fungovat i pouhý ENTER. Pokud používáte čisté Windows (XP a vyšší), je asi nejjednodušší přejmenovat kniha.epub na kniha.zip a pak ji otevřít normálně dvojklikem.

  2. V knize potřebujete najít XHTML soubory pro úpravu. Tady jakýkoliv návod selhává, protože ty soubory se mohou jmenovat zcela libovolně a také se mohou nacházet v různých adresářích. Pravděpodobně budou mít příponu .xhtml a budou ležet v adresáři content nebo OEBPS, ale nutné to není. Tady musíte trochu experimentovat. Nejsnáze je ale poznáte podle obsahu a délky – budou obsahovat víceméně čitelný text a délka bude pravděpodobně v desítkách KB. Dá se očekávat, že jich bude několik.

  3. XHTML soubory budeme upravovat. Zde mají opět výhodu uživatelé lepších souborových manažerů, kteří prostě zmáčknou F4 (nebo jinou klávesu sloužící pro vyvolání editoru) a mohou upravovat; ostatní si soubory napřed vykopírují ven a pak teprve je otevřou ve svém oblíbeném editoru.

  4. Možností, jak změnit nastavení fontů, je celá řada a já se tady nechci pouštět do popisu toho, jak se v (X)HTML pracuje s kaskádovými styly. Zůstanu tedy u nejjednodušší možnosti: Najděte si konec hlavičky HTML dokumentu (</head>) a těsně před něj dopište <style type="text/css">*</style>. Místo hvězdičky přitom napište kód použitý v Override CSS výše. Také je vhodné upravit všechny výskyty font-family: něco; odkazem na svoje fonty, tzn. např. font-family: serif;.

  5. Po úpravě soubor(y) zase nahrajte zpátky do archívu s knihou.

    Pozn.: Tady teoreticky může dojít k určitým problémům, protože specifikace EPUB vyžaduje, aby soubory uvnitř knihy byly uložené v určitém pořadí a může se stát, že program použitý k aktualizaci archívu to pořadí změní. Pokud vím, Sony Readeru na tom nezáleží a soubory takto upravené stejně nebudou fungovat nikde jinde, takže tento problém zanedbávám.

  6. Pokud jste měnili příponu na .zip, změňte ji zase zpátky na .epub.

  7. Tím je úprava knihy dokončena.

Závěr

Jak vidíte, není to zrovna málo kroků a nejsou všechny zrovna jednoduché. A to jsem ještě zvolil jednodušší metodu, kdy jsou fonty nahrané do čtečky – jistější by bylo integrovat fonty přímo do EPUB souboru, protože pak by tento soubor zůstal univerzálním (fungoval by na každé čtečce, zatímco takhle bude fungovat jen na Sony Readeru, který má na správné místo nahrané správné fonty). Když k tomu přidáme zatím ne zcela dokonalou podporu EPUBu v Sony Readerech (neexistence zarovnání do bloku, problematické počítání stránek apod.), je skutečně otázka, jestli se na celou složitou úpravu EPUBů raději nevykašlat a knihu zkonvertovat třeba do LRF, který si češtinu vezme bez problémů. Ale to už je na zvážení každého uživatele.

Pokud v návodu nebylo něco zcela jasné, napište to do komentářů a já se to pak pokusím opravit.

Podobné příspěvky:

9 Responses to “PRS-505: Čeština v EPUBu”

  1. avatar me napsal:

    Take nemam rad ePUB, protoze nezobrazuje cestinu spravne. A ne kazda ctecka umoznuje nahrat vlastni fonty. Ale prekvapilo me, ze ukazkove ePUB soubory pro PocketBook ctecky se zobrazuji k spravne i na cteckach, kde ePUB s PalmKnih maji misto ceskych znaku otazniky. Je to proto, ze ceske fonty jsou zabaleny primo do ePUB souboru. Tady jsou ukazky takovych knizek:

    http://download.pocketbook-int.com/Book_collection/E_Ink/Czech.zip

    A tady jsem nasel postup, jak takovy ePUB vytvorit:
    http://www.pantata.net/2010/10/vytvoreni-epub-s-cz-fonty.html

  2. avatar pepak napsal:

    JaS: Pokud vím, ADE nemá se spojovníkem potíže. Zkus použít jiný font, je možné, že ten, co používáš teď, nemá pro spojovník příslušný symbol a ADE tak nemá co zobrazit.

  3. avatar JaS napsal:

    Ahoj,
    tento blog mi velmi pomohol v prvych krokoch s mojou PRS-650, vdaka za skvelu pracu. Pri hrani sa s EPUBom sa mi ale nepodarilo v citacke zobrazit spojovnik. ADE viewer ma asi nejaky bug. Podarilo sa ti tento problem nejako vyriesit?

  4. avatar Jiri Stepan napsal:

    Díky! Vynikající práce.

    Mám teď novou PRS600 a bez problémů jsem vše rozběhal, včetně flashnutí.

  5. avatar Rudla napsal:

    Nevim, zdalo se mne to z tveho predchoziho psani. Nicmene dnes jsem si nahral tuto krasne udelanou knizku:

    http://www.mobileread.com/forums/showthread.php?t=48377

    Musim rict, ze se mne docela libi jak si treba Calibre pohral s prevodem knizek Karla Capka z PRC do LRF. Treba u Hovoru s T.G.Masarykem moc dobre prevedl odrazky a je to pekne zformatovane.

  6. avatar pepak napsal:

    Tak to nevím, jak jsi k tomu přišel – v současné době jednoznačně preferuju LRF. Důvody jsou:

    1) Čtečka je u LRF mnohem stabilnější než u EPUBu.

    2) EPUB na Readeru zatím nepodporuje zarovnání do bloku.

    3) LRF má mnohem rychlejší přesun mezi částmi dokumentu (protože si stránkování udělá jednou na začátku a pak se ho drží, ne jako EPUB, kde se stránkování provede vždy při přechodu do nové části dokumentu).

    4) Pokud chci číst knihu v češtině, tak u LRF mi stačí upravit čtečku a mám české znaky ve všech knihách najednou. U EPUBu bych musel upravovat každou zvlášť.

    Výhody EPUBu (jsou, to nepopírám) pro mě z větší části nejsou podstatné:

    1) Jeho výhled do budoucna je lepší díky využití standardního XHTML. (Neřeším, protože mám vyhovující konvertory)

    2) Dokáže daleko lépe formátovat text. (Neřeším, protože většina mých knih by si vystačila s prostým textem)

    3) Knihy v něm jsou lépe dostupné. (Neřeším, protože konvertory a protože e-booky nekupuji)

  7. avatar Rudla napsal:

    Dekuju za hezky navod, tohle je presne co mne chybelo. Otazka dne? Vim, ze mas radeji EPub nez LRF – je to tim, ze ePUB ma lepsi formatovani nebo jenom proste tim, ze ten format je vic „otevrenejsi“?

    R.

  8. avatar pepak napsal:

    Problém vyřešen, viz zde.

  9. avatar Josef napsal:

    Hezký článek, díky. Mám dotaz na ostatní. Mě tento postup nefunguje a nefuguje anipřevod ePub na LRF v Calibre. Najde se ještě někdo, komu toto funguje?

Leave a Reply

Themocracy iconWordPress Themes

css.php