Kobo 與 Adobe RMSDK:為何有效的 EPUB 在電子閱讀器上會失敗

現代 CSS 可能導致有效的 EPUB 檔案發生靜默失敗

即使通過了業界標準 epubcheck 驗證的 EPUB 檔案,在 Kobo 電子閱讀器上仍可能被報告為「損壞」。這是因為 Kobo 使用了 Adobe 的專有 RMSDK (Reader Mobile Software Development Kit) 渲染引擎,而該引擎缺乏對現代 CSS 規範的支持。當 RMSDK 遇到它無法識別的 CSS 屬性或函數時——例如 CSS Level 4 的 min() 函數——它可能會靜默地導致整個書籍渲染失敗,而不是忽略該不支持的樣式。

根本原因:Adobe RMSDK 的舊版 CSS 解析器

雖然 epubcheck 確保了 EPUB 符合國際數位出版論壇 (IDPF) 的規則,但它並不會針對每個專有渲染器的特定限制來驗證 CSS。

在一個有記錄的案例中,一本通過了 epubcheck 規則集 3.3 的書籍在多台 Kobo 設備上無法加載。罪魁禍首是單行 CSS:

.copyright img {
    max-width: min(150px, 30vw);
}

將此現代 CSS 函數替換為靜態值 (max-width: 150px;) 解決了問題。RMSDK 引擎的 CSS 解析器實際上凍結在 2013 年左右,缺乏對以下內容的支持:

  • Flexbox
  • CSS Grid
  • Math functions (如 min(), max(), clamp())
  • Custom properties (CSS 變數)

「檔案損壞」的謬誤

當 RMSDK 遇到觸發崩潰的不支持 CSS 時,使用者介面通常會將檔案報告為「損壞」。這是一個誤導性的錯誤訊息;該檔案在結構上是健全且符合開放標準的,但渲染引擎無法處理該樣式表。由於 Adobe Digital Editions (ADE)——其核心與 RMSDK 相同——通常會在不提供特定錯誤日誌的情況下靜默失敗,因此調試這些問題需要一個乏味的排除法過程(例如,完全禁用樣式表以隔離問題)。

業界觀點與解決方案

出版商與開發者之間的技術討論突顯了開放標準與專注於 DRM 的專有引擎之間的系統性緊張關係。

渲染替代方案與工具

  • KoReader: 一個受歡迎的開源替代渲染器,可以安裝在 Kobo 設備上以繞過預設的 Adobe 引擎。
  • Kepubify: 一個用於將標準 EPUB 轉換為 .kepub.epub 檔案的工具,部分使用者建議這可能利用了 Kobo 設備上更先進的渲染路徑。
  • Basic HTML/CSS: 一些開發者主張針對「最低公分母」進行開發(類似於早期網頁開發中針對 IE6 的做法),以確保在所有舊版設備上的最大相容性。

EPUB 標準的現狀

批評者指出,將 EPUB 維護權移交給 W3C 後,導致了對「活標準」(living standards,如 WHATWG HTML) 的依賴。這可能會造成一種落差:一個檔案根據不斷變動的網頁標準是「有效」的,但對於不像常青網頁瀏覽器那樣頻繁更新的電子墨水屏設備來說,卻是完全無法閱讀的。

市場變動

最近的報告指出 Adobe Digital Editions 和 RMSDK 已被出售給 Wipro Engineering。此外,一些使用者報告 Kobo 在歐盟正在進行其電子閱讀器軟體的全面重寫測試,這可能最終會讓該平台擺脫對老舊 RMSDK 引擎的依賴。

Sources