
Ваш EPUB у порядку — Kobo заперечує, і винна Adobe
Книжку, яка пройшла еталонний валідатор EPUB, читалки Kobo відкинули як «пошкоджену». Причина — рушій Adobe RMSDK, чий CSS-парсер заморожений приблизно з 2013 року, а стандартні EPUB Kobo віддає саме йому.
Цілком валідний файл EPUB електронні читалки Kobo відкинули як «пошкоджений», і слід веде до рушія, який Adobe написала близько 2010 року й відтоді не модернізувала. Автор, який публікує цифрові книжки без DRM, описав цей випадок у розборі після того, як читач повідомив, що нова книжка не відкривається на жодному з його пристроїв Kobo кількох поколінь.
Файл не був недбалим: він пройшов epubcheck 3.3 — еталонний валідатор стандарту EPUB — і без проблем відкривався на Amazon Kindle, Apple Books та Thorium. Не спрацювала на Kobo й версія, зібрана за старішими правилами EPUB2.
Один рядок CSS
Перелом стався, коли автор вимкнув таблицю стилів книжки — і текст раптово завантажився. Звузивши файл, він вийшов на одну декларацію: .copyright img { max-width: min(150px, 30vw); } — цілком валідний CSS Level 4. Після переписування на старіший max-width: 150px Adobe Digital Editions відкрила файл нормально. Читалки Kobo використовують RMSDK, Reader Mobile Software Development Kit — власницький рушій Adobe і серце Adobe Digital Editions. Створений для EPUB2 і лише трохи оновлений для EPUB3, він має CSS-парсер, фактично заморожений приблизно на 2013 році: без flexbox, grid, математичних функцій і custom properties, із тихим збоєм на всьому незнайомому. За словами автора, Adobe Digital Editions не показала жодної помилки — лише білий екран.
Два рушії, які розрізняє розширення файлу
Оновлення до посту додає: Kobo насправді має два шляхи рендерингу. Стандартні файли EPUB потрапляють до Adobe RMSDK, а KEPUB — власний формат Kobo — працює на рушії на базі WebKit, який активно підтримують. Що саме ви отримаєте, вирішує лише розширення: перейменування книжки на «.kepub.epub» перемикає її на WebKit, свідчить документація KoWiki, на яку посилається автор.
Чому epubcheck цього не бачить
epubcheck перевіряє CSS, але зіставляє файл зі специфікацією, а не з обмеженнями конкретного рушія, тож книжка може бути повністю відповідною і все одно «вмерти» на пристрої. Коментатори на Hacker News поглибили діагноз: CSS вимагає від парсерів тихо ігнорувати невідомі декларації ще з 1996 року, отже проблема не в сучасності, а в базових речах. Тим, хто натрапив на ту саму стіну, автор радить сторонній інструмент, який сканує таблицю стилів на правила, що ламають Kobo, і виправляє їх автоматично. Книжку вже перевидано у виправленій версії.
SiTech — веброзробка з підтримкою AI
Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.