Кирилица в Nook и ePub

Публикувано на 21.02.2011 от в Полезно Остави коментар

Преди известно време в ръцете ми попадна нов Nook, на който трябваше да реша проблема с четенето на книги на кирилица в ePub формат. Публикувам решението на проблема и тук.

***
За да можем да четем текстове на кирилица в epub формат на  B&N Nook, трябва да накараме четеца на epub да използва шрифтове, различни от вградените си. Има 2 начина да се направи това:

  1. Да се използва функцията на epub формата за използване на избрани шрифтове. Недостатък на метода е, че трябва да се прави за всяка книга поотделно.
  2. Да се редактира програмата ReaderEpub.apk да използва друг шрифт на мястото на съществуващите, който чете кирилица (иска се хакнат Nook).

Подмяна на шрифтовете в ePub файл

EPub формата всъщност представлява един zip архив с файлове. Отваря се файла с любимия ви архиватор и се редактира .css файлa (обикновено в OPS\css с име main.css или style.css).
За да използваме вградения в Android шрифт, който поддържа кирилица,  се добавят следните редове:

@font-face {
font-family: “DroidFont”, serif, sans-serif;
font-weight: normal;
font-style: normal;
src: url(‘res:///system/fonts/DroidSerif-Regular.ttf’);
}
@font-face {
font-family: “DroidFont”, serif, sans-serif;
font-weight: bold;
font-style: normal;
src: url(‘res:///system/fonts/DroidSerif-Bold.ttf’);
}
@font-face {
font-family: “DroidFont”, serif, sans-serif;
font-weight: normal; font-style: italic;
src: url(‘res:///system/fonts/DroidSerif-Italic.ttf’);
}
@font-face {
font-family: “DroidFont”, serif, sans-serif;
font-weight: bold;
font-style: italic;
src: url(‘res:///system/fonts/DroidSerif-BoldItalic.ttf’);
}
body {
margin-right: 8pt;
font-family: ‘DroidFont’, serif;
}

Аналогично може да се ползват и други шрифтове, стига да ги има на устройството. Например шрифтовете в директория “my fonts” може да се използват, като се смени src: url(‘res:///system/media/sdcard/my fonts/{име на фонт.ttf}’)

Преимуществото на този метод е, че не трябва да се правят промени по устройството за да работи, но пък трябва да се редактира всеки ePub поотделно.

Промяна на приложението за четене на ePub файлове ReaderEpub.apk

За този метод трябва да имаме руутнат Nook. Целта е да се промени програмата, която отваря epub, така че да използва шрифт, който ние сме сложили или го има и който поддържа кирлица.

  1. Изтегля се чрез adb програмата за четене на epub файлове от Nook:
    adb pull /system/app/ReaderEpub.apk /some/where
  2. Отваряте .apk файла с архиватор (той всъщност е .zip архив). В него заменяте .css файловете в assets/styleSheets/ с променените от вас.
    Всеки .css файл отговаря на шрифт, като за да се ползва вградения DroidSerif вместо HelveticaNeue редактирате HelveticaNeue.css:

    @font-face { font-family: -ua-default; font-style: normal; font-weight: normal; src: url(“res:///system/fonts/DroidSerif-Regular.ttf”)}
    @font-face { font-family: serif; font-style: italic, oblique; font-weight: normal; src: url(“res:///system/fonts/DroidSerif-Italic.ttf”)}
    @font-face { font-family: serif; font-style: normal; font-weight: bold; src: url(“res:///system/fonts/DroidSerif-Regular.ttf”)}
    @font-face { font-family: serif; font-style: italic, oblique; font-weight: bold; src: url(“res:///system/fonts/DroidSerif-BoldItalic.ttf”)}
    dtbook { display:block; }
    #body { margin-left: 12px; margin-right: 12px; }

    Може би забелязвате, че за болд използвам нормалния шрифт и това е, защото всички книги ми излизаха в болд и това беше решението на проблема.

  3. Трябва да се заменят чексумите на .css файловете, които са променени в META-INF/BRAVO.CF и META-INF/MANIFEST.MF .
    На линукс може да се генерират SHA1 чексуми със следната команда:
    openssl dgst -binary -sha1 YourFile.css |base64
    ( Например sha1 за HelveticaNeue.css в горния случай е: tWMQICVxCzIo3hRg/G4qyRoOlwI= ).
  4. Остава да върнем новия ReaderEpub.apk обратно в Nook със следната команда:
    adb push /път/до/ReaderEpub.apk /system/app
  5. Рестартирайте Nook, за да се активират промените.

Забележка: Шрифтът Light Classic не може да бъде променен, също така той се ползва за някой заглавия и думи в италик при някои epub книги.


Leave a Reply