如何免越狱且不内嵌更换 Kindle 电子书字体

Kindle 设备自 5.9.6 版本固件起已原生支持自定义字体,点击这里了解详情。

前两天发布了一篇名为“Kindle 中文字体推荐”的文章,列出了一些看起来不错且适合阅读的正文字体,没想到有很多小伙伴对其颇感兴趣,短短几天累积了百条留言,感谢热心小伙伴们的推荐补充。

之前 Kindle 伴侣曾在那篇文章中说 Kindle 换字体有两种方法,一种是通过越狱替换原生字体,另一种是将字体内嵌到电子书内。其实并不是很准确。在文末的留言中,小伙伴 Dummy-B 指出,其实还有另一种换字体的技巧,这种方法不需要越狱即可实现。经过测试验证后,在这里分享给大家。

其实这种方法的原理和把字体嵌入电子书的方法相似,只是不再需要把字体嵌入到每一本电子书中,而只需把字体拷贝一份到 Kindle 中,然后让电子书引用它即可。这样不仅可以大大减小电子书文件体积了,还能为不同的元素应用不同的字形,比如标题为一种黑体,正文内容是一种宋体,注释内容是一种楷体等,可以让排版更丰富。而且,不需要担心分享问题,当你把电子书分享给别人的时候,即便对方没有放入字体文件,也能使用系统原生字体替代,不会影响阅读。

一、把字体拷贝到 Kindle

用 USB 数据线把 Kindle 连到电脑,待出现 Kindle 磁盘后,进入 Kindle 的根目录(与 documents 文件夹同级)新建一个名为“fonts”的文件夹,然后把字体拷贝到该文件夹中。

需要注意的是,你需要记录一下放入“fonts”文件中的字体的真实名称,下面的步骤会用到。字体的真实名称获取方法为:如果是 Windows 系统,请安装“字体试衣间”之类的字体管理软件获取字体真实名称;如果是 Mac 系统,双击打开字体文件,窗口标题显示的即是字体的真实名称。

如果你不知道选用什么字体,可以前往《Kindle 中文字体推荐:更换一下字形口味》这篇文章中选用你喜欢的字形,每种字形都附上了字体的真实名称。如果你也有好的字体也欢迎留言推荐。

二、将字体引入 CSS 样式

接下来就需要修改电子书的 CSS 文件,使其引用我们放置到 Kindle 中的字体,从而实现字形的改变。需要注意的是,可以实现改变字形的电子书格式必须是 KF8 标准的 mobi 或 azw3 格式。

比如,本例想把一本电子书的标题替换为“方正悠黑”(真实名称为:MHei PRC);把正文内容替换为“方正新书宋简体”(真实名称为:FZNewShuSong-Z10S)。就可以在添加或修改电子书的 CSS 文件,添加以下代码,然后把修改后的电子书拷贝到 Kindle,本步骤就完成了。

/* 定义字体 */
@font-face {
    font-family: "youhei"; /* 引用名,可自定义 */
    src: local("MHei PRC"); /* 字的体真实名称 */
}
@font-face {
    font-family: "shusong";
    src: local("FZNewShuSong-Z10S");
}

/* 应用字体 */

/*
|
| 注意,下面的 .yh 和 .ss 只是随意写的 CSS 选择器,请根据具体情况自行修改。
| 比如你想把所有电子书改成某个字体,就直接使用 body { ... },如果想要分开
| 处理标题和正文,需要查看一下电子书源文件中实际的 CSS 选择器什么再修改。
|
*/

.yh {
    font-family: "youhei"; /* 定义字体中的引用名*/
}
.ss {
    font-family: "shusong", serif; /* serif 表示前一个字体无效就应用原生宋体*/
}

需要注意的是,如果应用了自定义字体且未生效的话,Kindle 会将自动调用原生黑体,代码中的 serif 可以理解为,如果前一个字体无效,就使用原生的“衬线字体”(中文可以理解为宋体)代替,这样在分享电子书的时候,就可以避免无法使用 Kindle 的字体设置进行设置的情况(正文会全部变成黑体)。

修改电子书的 CSS 有多种方法,比如通过 Calibre 转换、修改电子书源文件、把电子书转换成 epub 再修改等。下面简要说说三种修改电子书 CSS 的方法。

方法一:通过 Calibre 转换。在 Calibre 的转换面板中,切换到“界面外观”面板,然后在右侧标签中切换到“样式”,在下面的“Extra CSS”中填写上面提到的 CSS 代码即可。需要注意的是,如果选则的输出格式是 mobi 格式,还需要切换到“MOBI 输出”面板,把“MOBI 文件类型”改为“both”。最后开始转换。

方法二:修改电子书源文件。这种方法更简单,可以使用 KindleUnpack教程)这个小软件把 azw3 或 KF8 标准的 mobi 格式拆解成源文件,然后在拆解后的文件夹中找到 Styles 文件夹,修改里面的 CSS 文件即可。最后用 KindleGen 根据 opf 文件重新生成 mobi 文件。

方法三:转换成 epub 再修改。如果习惯使用 Sigil 修改电子书,也可以把电子书转换成 ePub 格式再修改。修改方法和方法二一样,打开 CSS 文件添加或修改以上代码即可。

三、重启 Kindle 查看效果

前面的步骤操作完成后,重新启动一下 Kindle,待重启完毕后打开那本修改后的电子书,就可以看到文本字体已经变成相应的自定义字体了。需要注意的是,重启后需要等待一会儿 Kindle 才能载入字体。如果较长时间字体无法载入,就通过 Kindle 的字体设置切换一下字体看是否能生效。

另外,越狱并安装了 Fonts Hack 的 Kindle 也可使用此方法,但是简单的重启是无效的。可能是插件接管了系统字体的原因,需要通过 KUAL 菜单依次点击 Fonts -> Fonts Hack Behavior -> Update fontconfig cache 重新生成字体缓存。当然,既然越狱了再在根目录新建 Fonts 目录有点儿多此一举,可以通过菜单 * Migrate your fonts directory * 把根目录的字体文件合并到 Fonts Hack 的字体文件夹中,或者直接把字体拷贝到 linkfonts/fonts 文件夹中,就可以在 CSS 中引用它们了。

再次感谢小伙伴 Dummy-B 提供的方法,并耐心回复邮件排查问题。如果本文对您有帮助,欢迎分享给其它使用 Kindle 并对此感兴趣的小伙伴。如果您发现了文中的谬误,也欢迎留言指正。

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

发表评论

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

小伙伴们发表了 46 条评论

  1. KPW3 5.9.7测试了一下午,无效。鼓捣了半天,经测试只有src: local(“STSong”)等默认字体才有效。否则的话只能内嵌src: url(“../Fonts/MyFont.ttf”),但这样会导致文件体积巨大,而且不方便(因为得一个个字体找好)。很遗憾,期待未来能回到像之前一样自由调用Fonts文件夹内的字体的状态。

  2. 升级之后,kindle似乎会再分配family name给字体,可能就是这个原因导致css调用不再正常。
    从 /var/local/font/userfonts/userFontsConfig.json 这个文件可以看到分配的family name

    https://i.loli.net/2018/11/03/5bdd097974e78.png
    https://i.loli.net/2018/11/03/5bdd097955702.png

    • 升到5.9.6.1后无效了,升级前可以正常调用fonts文件夹中的字体。

      请问如何查看userFontsConfig.json以找到分配的family name?

      • 我试过了,userFontsConfig.json里的user_21这样的family name照样无法调用,Kindle这一升级 断了css自定义字体的路子,一下子看书的排版就糟糕了很多.

        • 确实无法调用。
          可能中英混排/多字体的实现只能通过内嵌字体或拆机降级了。

  3. Kindle 设备升级到 5.9.6 版本后,这种方法已经失效了,CSS调用字体无效。
    注:升级前可以正常调用fonts文件夹中的字体。

  4. 这几天很认真的尝试了这个方法,阅读此文好几遍,代码看了又看,我只能说,现在KV 5.8.11(未越狱)搭配easypub(看旧评论,作者也是从此软件获得灵感,想必用此软改字完全可行)完全无效。
    无论如何调整,卡在“如果应用了自定义字体且未生效的话,Kindle 会将自动调用原生黑体”这一步就无声无息了。
    在菜单里切各种自带字体,全部显示黑体,说明css抛出的“钩子”是有效的,但是钩子没挂住字体。
    当然,那个“真实名称”我绝没有填错。输出的也是KF8版本mobi。

    想了又想,不知道哪里出问题了。原文评论和此文评论我都认真阅读,自诩没有犯错。
    唉,找bug需要灵感呀。

    • 兄台,我买到的二手KV,直接就是5.8.11系统,一直也没办法降级、越狱。想更改系统字体一直没思路,顿觉好心痛!

      • 经过NNNN次尝试,终于成功了(未降级未越狱),但是付出的代价很大——必须要重置才能生效。

        首先,我保证字体、书、重启都是正确的,完整操作过的,在这样的立场下:

        重置之后,第一次放入的字体,会生效。
        如果你对第一次放入字体不满意,想再换一个字体,那么新放入的字体无效,无论你重启多少次!
        只有再次重置,重新拖一批字体进去,重新拖入的才会生效。
        强制重启无效,静置1小时等待载入也无效(要是有效,1分钟内就会出效果;无效就是无效,等待再久也是黑体)。你们不用试了。【只有】重置才有效果。

        明白不?就是说系统【只认】重置后第一次拖入的字体(不可拖延!重置后直接塞字体,如果你看看书,做点无关的事情,又会出现永远是黑体的情况了)

        看到这,肯定会有人建议我一口吃个胖子,在第一次时塞一堆字体慢慢换,我也的确这么做了——我一口气放了17个字体,150MB——于是出现了启动速度、打开书的速度爆慢、爆卡的情况,卡到你怀疑人生。

        这就是我的折腾经验,供你参考。不是不可行,只是代价大。
        建议你先内嵌字体供预览测试,精选到5个字体内,再一口气重置并外挂。否则来来回回重启是非常浪费时间的。

        • 此方法仅限kv5.8.11,未越狱,序列号9013开头。
          我知道肯定有人不屑的说自己无需重置一次成功——你一次成功不代表我也能一次成功,反正我是经过五六次重置、二三十次的重启后得来的教训。
          我在论坛里也看到不少人轻松成功,无需重置。只是我出现了这样的情况。
          不知道是个例还是通例。

          • 兄台,我只有一个字体(方正行黑),以前在KPW+多看上已经看习惯了,也只用这个。你意思是我的5.8.11的KV使用本文的方法做字体替换,至少也要先进行一次重置操作么?然后依旧是每一次都要把mobi格式的电子书进行css字体引用修改才能生效?

            • 我说,能不能先动手操作了再来问?看你的言辞,你根本没试过就开始纠结了。
              就这么跟你说,不要重置,先严格照着教程走一遍,填对字体family name–书写代码–编辑输出mobi–放置字体和mobi–重启,都不要出错,然后看效果。
              如果你照着教程,只能得到无法切换的黑体的话,再就按照我的方法重置,明白?
              我已经说了我也许是特例,也许别人没有这样的情况。你都不动手怎么知道自己是不是特例呢?

              另外,不要用亚马逊邮箱推送,用usb传书。至少我编辑过css的书统统被退件了,前面的留言有说他们没有退件,但是被亚马逊服务器篡改css了。搞得我最近都是usb传书了。