Kobo 系统使用和修改综述

2018-06-15

激活

  • Kobo 首次开机需要联机登录账号来激活。
    • Kobo 的激活服务器在中国大陆无法访问,需要连接可以正常访问互联网的电脑,使用 Kobo Desktop 客户端来激活。
    • 大量指南提出通过向 .kobo 目录拷贝其他用户已激活设备中的 KoboReader.sqlite 文件来绕过激活,原理是该文件中的 user 表中存储了用户登录信息。显然,这是极其错误的做法。
  • 登出账号会抹掉 Kobo 上的内容,并且需要重新激活。
    • Kobo 的登出操作实质上是对一系列目录执行 rm -rf 命令,其中包括上述 .kobo 目录。

系统与修改

  • 与 Kindle 等阅读器类似,Kobo 的系统软件是一个高度定制化的 Linux。
    • USB 模式下的根目录挂载在 Kobo 系统的 /mnt/onboard/ 下。
    • 根目录下的 .kobo 目录存储了 Kobo 系统对外暴露的重要配置文件。
  • Kobo 系统软件的桌面环境称为 Nickel。
  • Kobo 系统默认停用了截图功能。若要启用,需要手动编辑 USB 目录下的 .kobo/Kobo/Kobo eReader.conf,并在其中的 [FeatureSettings] 段后加入 Screenshots=true,然后就可以通过按电源键来截图。电源键的原始功能在删除这条配置前会失效。
  • 系统升级可以通过设备自动下载或 Kobo Desktop 软件进行。
    • 在国内网络环境下,最快捷的方法是直接下载对应版本升级包,将其中所有文件解压到 /.kobo 目录,然后弹出 Kobo 磁盘。设备会自动开始升级。
    • 事实上,Kobo 系统会在检测到 /.kobo 目录下的任何 KoboRoot.tgz 文件时,自动重启并将其中文件拷贝或替换到系统分区中。因此,可以通过自制 KoboUpdate.tgz 文件来达到修改系统文件的目的。
    • 像早期的 Kindle 一样,Kobo 升级时不检查升级包版本是否大于当前系统版本,即可以任意降级到偏好的版本
    • Settings > Device information > Factory Reset 会将系统版本回滚到出厂版本。
  • 民间对 Kobo 系统的主要修改(patching)工具来自 MobileRead 论坛上的 GeoffR
    • 该 patching 工具为版本特定,每次升级系统需要等待放出针对该版本的 patching 工具,重新修改。
    • 工具的原理是:修改升级包中的 /usr/local/Kobo 中的配置文件,并将经修改的文件重新打包成升级包,然后通过 Kobo 的升级机制替换到系统中。
    • 工具的使用方法是:将对应版本的原版升级包(.zip 文件)拷贝到 patching 工具中的 $systemVersion_source 目录下,然后用文本编辑器打开同目录下几个 .patch 文件,根据其中注释部分的提示修改文件内容来启用希望作出的修改。完成后,运行 $systemVersion.sh 脚本,获得 $systemVersion_target 目录下的 KoboRoot.tgz 文件;用手动更新系统的方式安装该文件。
    • 用户 oren64 额外提供了基于 GeoffR 方法的大量修改脚本,例如修改主屏幕布局。
  • Kobo 安装 KOReader 非常简单。
    • 与很多在其他嵌入系统上运行自制软件类似,在 Kobo 上运行 KOReader 需要两步:安装一个启动器(launcher),和安装 KOReader 本身。
    • 目前民间流行的启动器是 KSM (Kobo Start Menu) 09,其同样通过引导系统安装一个自制的升级包来安装,并且通过在原生桌面环境 Nickel 下浏览特殊的自制图片来启动(非常类似 PSP 3000 下运行 Prometheus 自制系统,表明原理应该同样是利用内存溢出。)
    • 安装 KSM 后,系统每次启动会首先进入到 KSM 菜单;同时,当检测到存在 /.kobo/KoboRoot.tgz 文件时,KSM 也会首先接管系统引导并询问是否安装该升级包。
    • 安装 KSM 后,将 KOReader 安装包拷贝到根目录下的 .add 目录中,然后即可在 KSM 菜单中启动 KOReader。
  • MobileRead 论坛上的一个帖子列举了其他对系统的各种修改。

字体与字典

  • Kobo 原生支持更换自定义字体。自定义字体存放于根目录下的 fonts 目录。
    • 字体格式可以是 OpenType 或 TrueType。
    • 要让粗体和斜体正常显示,拷入的属于同一家族的字体文件,其 PostScript Name 中的 Font Family 必须具有相同的值。否则,Kobo 将认为其属于不同的字体家族。
      • 可以通过 FontForge 来修改字体文件的 PostScript Name。在 macOS 上运行 FontForge 需要安装 XQuartz 框架。
  • Kobo 的字典位于 /.kobo/dict
    • 英文字典的文件名为 dicthtml.zip,其他语言的字典名形如 dicthtml-$sourceLang-$targetLang.zip,如英日字典名为 dicthtml-en-ja.zip
    • 要修改字典,只要用下载得到的字典文件替换那些不常用的内建字典。
    • 应当将内建的英日字典替换为中文字典。如果将其他字典替换为中文字典,会出现汉字过小的显示问题。

CJK 支持

  • Kobo 由于被日本企业乐天(Rakuten)收购,对日文支持较好。其系统内建了三个日文字体,两个来自森泽(Morisawa):Gothic MB101(ゴシック MB101,PostScript Name 为 A-OTF Gothic MB101 Pr6N R),和 UD Kakugo(UD 角ゴ,PostScript Name 为 KBJ-UDKakugo Pr6N M,这也是任天堂 Switch 的 UI 字体);另一个来自 FONTWORKS,著名的筑紫明朝(TsukuMinPr6N)。
    • 很奇怪的是,Kobo 西文界面全部使用衬线体 Georgia 作为界面字体,而日文界面却选用了两个无衬线体,又因为其 list view 中大量使用的斜体,显示效果非常扎眼,可以认为是典型的失败 l10n 案例。
  • Kobo 原生系统没有任何中文支持。随附的日文字体可以显示部分汉字,未包含的汉字在主界面中显示为方框,在阅读界面中显示为空白。
  • 可以通过拷入中文字体解决阅读中文书籍的问题。
  • 要在 UI 上正确显示中文,需要修改系统文件,并拷入伪装为系统内建日文字体的中文字体。
    • 首先,制作一个 KoboRoot.tgz 升级包,在其中的 ./usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/fonts 路径下放入两个虚假的空字体文件 Gothic MB101.otfRyumin.otf,安装该升级包,从而使系统内建的日文界面字体失效。
    • 其次,用 FontForge 将欲作为界面字体的中文字体的 PostScript Name 改为 KBJ-UDKakugo Pr6N M,然后拷入 fonts 目录。
      • 应当使用 GBK 字符集的中文字体来修改。
    • 最后,任意打开一本电子书,唤出字体菜单,使 Kobo 系统发现 font 目录中的「内建字体」。这时 UI 中的中文已经可以显示。
      • 每次重启系统(更准确地说是启动 Nickel 图形界面),都需要重复该步骤以显示中文。

电子书格式

  • Kobo 宣称支持的格式有 14 种,即:EPUB, EPUB3, PDF, MOBI, JPEG, GIF, PNG, BMP, TIFF, TXT, HTML, RTF, CBZ, CBR。
  • Kobo 使用的主力电子书格式是 ePub,不支持 Amazon 的 .azw/.azw3 格式。
    • 但是,Kobo 对标准的 ePub(.epub) 文件支持较差,许多高级特性(例如阅读时间统计、快速翻页)等只在阅读其私有的 Kobo ePub(.kepub) 格式时可用。
    • 可以用 Calibre 将标准的 ePub 文件转换为 Kobo ePub 格式;为此,需要先在 Preferences > Plugins 搜索安装 KePub Input 和 kePub Output 插件。也可以使用命令行工具 kepubify
    • 转换好的 .kepub 文件可能不会被 Kobo 正确识别,需要手动将后缀名改为 .kepub.epub。
      • 一个简单的方法是用 Automator Service 或 Hazel 监控 Kobo 的根目录,规则为当有文件的后缀名是 .kepub 时,自动追加 .epub。
  • Kobo 对 PDF 的支持非常差,几乎不可用。KOReader 下表现良好,表明并非性能问题。