如何修改 Kindle 原生系统的页面边距(需越狱)

为了使用户在阅读时能取得视觉上的均衡,和纸质书一样,Kindle 设备在显示电子书时,也在内容四周填充了边距(Margins),并且允许用户通过页面设置功能调节左右边距的大小。但是即便选择了最小边距,电子书内容也不会贴边,这是因为 Kindle 在系统级别保留了一部分边距,无法通过设置调整。

相当长一段时间以来,书伴留意到有很多小伙伴抱怨 Kindle 预留的边距过大浪费空间。由于原生系统没有提供相关设置项,想要修改边距就得通过修改 Kindle 系统文件来达到目的,大概的思路为:先把含有页面边距参数的配置文件从系统中复制出来,然后修改其中的相关参数,最后替换原文件。

▲ Kindle 页面边距调整前后对比

该方法源自网友“gygz”在 HiPDA 论坛发布的帖子(感谢书伴交流群中小伙伴“Damon”的推荐),原帖称适用于 KPW 1/2/3、KV,理论上也适用于 KO 1/2 和 KPW4。书伴用已越狱的 KPW3 验证了原帖步骤,并在本文中对其做了简化,以方便小伙伴们用最少的步骤达到修改 Kindle 页面边距的目的。

目录

一、准备相关工具
二、提取配置文件
三、修改配置文件
方法 1、使用现成文件
方法 2、手动修改文件
四、打包配置文件
五、替换配置文件
六、查看修改效果

在开始以下步骤前,请确保你的 Kindle 已越狱并安装了 MRPIKUAL 两个插件。本文同时适用于 Windows 系统和 macOS 系统,在阅读时请留意本文对两个系统操作有差异的地方所做的说明。

一、准备相关工具

以下是本文中的步骤所需要用到的全部工具,请全部下载下来备用:

为了简化步骤,书伴将可自动化的操作都写进了 KUAL 插件 BookFere Tools 中,请下载 bookfere-tools.zip 并解压缩,把 bookfere-tools 插件文件夹拷贝到 Kindle 根目录的 extensions 文件夹中。

Kindle 页面边距配置参数存放在 Java 压缩包 ReaderSDK-impl-zh.jar 的 Java 类文件 ReaderResources_zh.class 中,而修改这个文件我们需要用到名为 Java Bytecode Editor 的工具。

由于需要修改的代码较长,在 Java Bytecode Editor 中不好查找定位,所以建议把代码复制到代码编辑器中进行修改,改好之后再复制回去保存。你可以选用包括 Sublime Text 在内的任意代码编辑器。

二、提取配置文件

不同的系统语言所对应的含有配置文件的 .jar 文件不同,它们在 Kindle 系统中的对应关系如下:

/opt/amazon/ebook/lib/ReaderSDK-impl-zh.jar (Chinese)
/opt/amazon/ebook/lib/ReaderSDK-impl-en_GB.jar (English)
/opt/amazon/ebook/lib/ReaderSDK-impl-de.jar (Germany) 
/opt/amazon/ebook/lib/ReaderSDK-impl-es.jar (Spain)
/opt/amazon/ebook/lib/ReaderSDK-impl-fr.jar (France)
/opt/amazon/ebook/lib/ReaderSDK-impl-it.jar (Italy)
/opt/amazon/ebook/lib/ReaderSDK-impl-ja.jar (Japan)
/opt/amazon/ebook/lib/ReaderSDK-impl-nl.jar (Netherlands)
/opt/amazon/ebook/lib/ReaderSDK-impl-pt.jar (Portugal)
/opt/amazon/ebook/lib/ReaderSDK-impl-ru.jar (Russian Federation)
/opt/amazon/ebook/lib/ReaderSDK-impl-sq.jar (Albanian)

你无须关心这些细节,KUAL 插件 BookFere Tools 会帮你自动提取配置文件,你只需要打开 KUAL,点击菜单中的【BookFere Tools】→【Change Margins】→ 【Get Config File】,插件就会把与当前系统语言相对应的 .jar 包提取到 Kindle 的根目录下,提取的文件夹名带有 margins-config-temp 字样。

▲ BookFere Tools 辅助修改页面边距界面

以中文系统语言为例,所需要修改的配置文件 ReaderResources_zh.class 会被存放到如下路径:

margins-config-temp-zh/com/amazon/ebook/booklet/reader/resources/ReaderResources_zh.class

* 提示:如果你想要修改与其它语言相对应的配置文件,请点击菜单中的【BookFere Tools】→【Change Margins】→ 【Select Language】选择目标语言,然后再点击【Get Config File】提取一次即可。

三、修改配置文件

用 USB 数据线将 Kindle 设备连到电脑上,确认可以找到文件 ReaderResources_zh.class,对此文件,你可以使用已修改好现成的 .class 文件直接替换,也可以自行使用工具 Java Bytecode Editor 手动修改。

方法 1、使用现成文件

如果你不方便修改 ReaderResources_zh.class 文件,可以直接下载已修改好的文件覆盖原文件,注意型号和版本号要对应。配置中的数值使用的是“手动修改文件”步骤中提供的样例数值。

  • Kindle Paperwhite 3(固件版本:5.11.1.1):百度网盘【提取码:bfc2】
  • 更多配置文件,期待你的分享……

目前现成的 .class 文件还不全,如果你愿意,可以把修改好的 .class 文件或没有修改的文件以附件的形式(务必附上 Kindle 型号、固件版本以及是否已修改)发送到书伴的邮箱(页面底部联系处获取)。

方法 2、手动修改文件

将下载到的 jbe_mt.zip 解压缩并进入 jbe_mt 目录。Windows 系统双击 jbe.bat 启动软件;macOS 系统打开“终端”,把 jbe.sh 文件拖到终端按回车启动(或在终端中输入 jbe.sh 路径按回车启动)。

点击软件左上角“带放大镜的图标”,选择并打开提取到 Kindle 中的文件 ReaderResources_zh.class。如下图所示,在左栏依次展开 “Methods<init>” 选中 “[0] Code”,然后点击右侧【Code Editor】标签。把下方代码框全选并剪贴到代码编辑器中,Java Bytecode Editor 保持清空状态备用。

在代码编辑器中,我们需要依次修改下面列出的参数(请从代码顶部依次向下搜索替换)。为了方便显示,以下示例代码省略了不相关的信息,只显示了要修改的参数,带删除线的是修改前的数值。注意,可能不同的 Kindle 设备或固件版本显示的参数名不太一样,但应该都带有 idc 字样(如 idc_w)。

* 提示:这些修改的数值系原帖提供,但是不太清楚变动依据是什么,虽然原帖提了一句:6 寸 300PPI 可用 0.4245 的倍数进行调整,但还是太明白其中含义,如果有小伙伴知道是如何换算还请留言指点。

① 搜索:font.wordsperline.margin.list(约 5818 行)

ldc_w "font.wordsperline.margin.list"
...
ldc 50.94
ldc 8.94
...
ldc 33.96
ldc 6.38
...
ldc 16.98
ldc 3.396
...

② 搜索:reader.progressbar.footer.height(约 7167 行)

ldc_w "reader.progressbar.footer.height"
...
ldc 13.58
ldc 8.49
...

③ 搜索:reader.progressbar.margin(约 7218 行)

ldc_w "reader.progressbar.margin"
...
ldc 13.58
ldc 8.49
...

④ 搜索:reader.progressbar.footer.height(约 7364 行)

ldc_w "reader.progressbar.footer.height"
...
ldc 13.58
ldc 8.49
...

⑤ 搜索:reader.progressbar.margin(约 7398 行)

ldc_w "reader.progressbar.margin"
...
ldc 13.58
ldc 8.49
...

⑥ 搜索:reader.content.topMargin(约 7724 行)

ldc_w "reader.content.topMargin"
...
ldc 13.58
ldc 6.7925
...

⑦ 搜索:reader.content.bottomMargin(约 7758 行)

ldc_w "reader.content.bottomMargin"
...
ldc 13.58
ldc 5.5185
...

以上所有参数修改完毕后,全选代码,复制并粘贴到之前已清空备用的 Java Bytecode Editor 编辑框中,然后点击【Save method】按钮保存一下文件。至此 ReaderResources_zh.class 就修改完成了。

四、打包配置文件

最后我们需要把 margins-config-temp-zh 文件夹中的两个文件夹重打包成 ZIP 文件,具体步骤如下:

  • Windows 系统:进入 margins-config-temp-zh 文件夹,同时选中 comMETA-INF 两个文件夹,点击鼠标右键,在弹出的菜单中点选“发送到压缩(zipped)文件夹”,然后重命名为 a.zip
  • macOS 系统:margins-config-temp-zh 文件夹,同时选中 comMETA-INF 两个文件夹,点击鼠标右键,在弹出的菜单中点选“压缩 2 项”,然后重命名为 a.zip

* 提示:为方便操作,你只需要将两个文件夹打包成 zip 文件并重命名为 a.zip 即可,在接下来的步骤中,插件会自动把文件重命名为 ReaderSDK-impl-zh.jar 并替换到系统相应的路径中。

以上操作完成后即可断开 Kindle 的 USB 连接。在 Kindle 中打开 KUAL 继续以下步骤。

五、替换配置文件

打开 KUAL,点击菜单中的【BookFere Tools】→【Change Margins】→【Replace Config File】,插件会自动备份系统的原配置文件,并替换成你修改好的配置文件,接着 Kindle 会自动重启。

* 提示:如果今后你想要还原系统的原页面边距配置文件,只需要点击插件中的【Restore Config File】即可,插件会自动删除替换的文件,并还原系统的原配置文件(还原操作也会重启 Kindle)。另外,如果你不再需要提取到 Kindle 根目录的配置文件,可以点击【Delete Config File】删掉它。

六、查看修改效果

Kindle 重启完毕后,修改的配置还未完全生效,你需要打开一本书,点屏幕上方调出控制条,然后依次点击“页面显示字体和页面设置页面设置”,来回切换一下“页面边距”,即可让修改的配置生效。

以上是通过修改系统文件更改页面边距的全部步骤。辅助修改页面边距的 KUAL 插件目前仅在 KPW3 设备上测试过,如遇到不可用的情况欢迎留言反馈。对于本文可能存在的谬误也欢迎留言指正。

有帮助,[ 捐助本站 ] 或分享给小伙伴:

发表评论

标注为 * 的是必填项。您填写的邮箱地址将会被保密。如果是在本站首次留言,审核后才能显示。
若提问,请务必描述清楚该问题的前因后果,提供尽可能多的对分析该问题有帮助的线索。

小伙伴们发表了 13 条评论

  1. KPW4
    点击获得get config之后连上电脑看到生成margins-config-temp-zh文件夹,但是个空文件夹,没有二级目录或者文件。

  2. 这种方法改的页边距感觉不持久啊,退出再打开就会恢复原样,需要再次来回切换页边距才能让设置身生效。

  3. 点击获得get config之后连上电脑看到生成margins-config-temp-zh文件夹,但是个空文件夹,没有二级目录或者文件,PW2。

    • 把下面这段代码保存为 RUNME.sh 放到 Kindle 根目录,然后在搜索框输入 ;log runme,看看生成的 TXT 文件中有没有配置文件列表。

      #!/bin/bash
      
      CONFIG_PATH=/opt/amazon/ebook/lib/ReaderSDK-impl*
      DOCUMENT_PATH=/mnt/us/documents/config-file-list.txt
      /bin/ls ${CONFIG_PATH} > ${DOCUMENT_PATH}
  4. 【不】越狱也有办法。需要在【每本书】添加以下css。
    数值自定义,推荐-42~-45,保持了适度的留白,又尽可能的吃尽6寸屏。

    注意:只能裁左右白边,【不能】裁上下。强裁上下会让首行/尾行字重叠、粘连。

    当然,希望有识之士能提供成功裁上下的css。

    @media amzn-kf8 {
        p {
            margin-left: -44px;
            margin-right: -44px;
        }
    }
    • 补充,添加此代码的书,邮箱推书一律退件。需要U盘拉进机器,或者登网盘下书。

      可能是添加的位置不对?
      希望有人能告诉我有什么方法可以推过去。

      • 直接为内容标签添加样式

        p {
            margin-left: -1em;
            margin-right: -1em;
        }

        不需要加什么@media amzn-kf8,具体是p还是div还是其他需要根据html内容的标签,直接邮箱可以推送

        • 砍掉media,再推,失败了……又被退件。
          我是用easyPub软件,在“定制css”里添加的。