如何免越狱且不内嵌更换 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 并对此感兴趣的小伙伴。如果您发现了文中的谬误,也欢迎留言指正。
© 「书伴」原创文章,转载请注明出处及原文链接:https://bookfere.com/post/426.html
感谢Kindle伴侣,找到了一个踏实读书的地方,从网站也学了很多东西。
按本篇文章所写的方法把字体放入Kindle根目录fonts文件夹,编写以下代码:
@font-face {
font-family: “FZBeiWeiKai”; /* 引用名,可自定义 */
src: local(“FZBeiWeiKaiShu-S19”); /* 字的体真实名称 */
}
body {
font-family: “FZBeiWeiKai”!important; /* 定义字体中的引用名*/
}
使用Calibre转换为azw3格式(原文件是azw3格式),在Calibre中打开时,已经显示为新的自定义字体。但是导入到Kindle并重启,试了几次都无法显示为自定义的字体。尝试更换不同的自定义字体,以及转换为mobi格式等,Kindle都是显示原生字体。能帮忙看下是哪里出错了吗?
另外,文章提到电子书格式“必须是 KF8 标准的 mobi 或 azw3 格式”,想问下怎么检查电子书是不是KF8标准。另外,如果不是KF8标准,怎么转换为KF8标准。
非常感谢!
补充一下:
使用Calibre自带的电子书查看器打开书时,原文件名后缀着[KF8],应该可以理解为这个文件是KF8标准吧。
另外,我的Kindle固件版本是Kindle 5.8.9 (3164600017),会不会是Kindle版本的问题导致不能显示自定义字体呢。
字体不出来 跟固定版本有关系吗?
转换后拷贝过去并没有效果,css代码是上面这样吗 替换全书。输入是azw,输出选的azw3,求帮忙看看
yk 您好。如果步骤都没错的话,就可能是 body 标签的优先级太低了,可以尝试添加一个
!importent
,如下:好的,回头试试,谢谢!
另外问一下支持什么格式的字体?ttc ttf otf都支持吗
ttc 是字体包,不能直接引用的。其它两个都是支持的。
对CC这类型完全不懂,能否稍微详解下,字体没出来 我都不知道是哪个问题, 谢谢
用calibre肥肠成功!但是不知道为什么,明明只换了几本书,所有书的字体都变了(意外)
哥们能否详细的探讨下
想问个小问题,代码里的san-serif和sans-serif是一样的吗?
阅读成瘾综合症候群重度晚期患者 您好。这是一处错误,现已改正。另外,只有 sans-serif 没有 san-serif 这个属性。
能够一个文件只能放到一个收藏夹就好了,同一个文件可以同时放到几个收藏夹里,管理不方便。如果能够批量删除本机书籍,还有一个文件只能放到一个收藏夹里就好了
用了这个方法之后卡大树了QAQ
我是499的
咋办呀
咖喱猪 您好。本文提供的方法没有对 Kindle 系统做任何操作,应该不是导致此问题的原因。
试了,不行
也担心邮箱推送被重新修改的可能
用的USB直接拷入
5.8.2,越狱,已装linkfonts
因为这种方法相当于替换系统默认的四种中文字体中的一种的定义
缺点是只能换一个字体
想能用楼主的新方法补充一个字体选择进去
可惜一直不成功
另外,越狱换字体的方法,能不能把宋黑楷圆四个字体的定义都换了?
xmchx239 您好。linkfonts 是可以替换所有默认字体的,包括简体中文四个字体、繁体中文两个字体以及所有英文字体。
感谢朋友回复。我是按照教程中“使用文本编辑器(不要用记事本,推荐使用 Sublime Text 等专门的代码编辑器)打开重命名后的文件,将其中的 %TO_OVERRIDE% 替换成 STSong、STKai、STHeiti、STYuan 中的一个(分别对应系统字体中的 宋体、楷体、黑体、圆体);把 %TO_USE% 改成要使用的字体的字体名称 (注意要用真实字体名,而不是 .ttf 文件的文件名),修改完毕后保存文件。”做的,替换了STHeiti,如果还想替换其它的怎么做?我试过,比如用相同的语句换STSong,然后宋体变我想要的字体了,黑体又变回去了。
说是本书被DRM 锁定。。。。。无法转换。。用的第一种方法
hanking 您好。如果这本书是您自己购买的,需要先去除 DRM 才能修改电子书。
终于找到我想要的不内嵌换字体了!每本都内嵌,书体积不是爆炸了。
您好~ 我用了上述的方法(一),但不管是用usb傳送,還是一鍵推送
皆沒有顯示已經存在calibre裡fonts文件夾的字體,我的版本是5.8.1
是因為版本問題嗎?謝謝~
我也没有成功。
我也沒有成功。kindle OASIS,5.8.2
同,我也没成功
ze 您好。首先,字体文件需要放到根目录下 fonts 文件夹中;然后需要注意,不要直接复制示例中的应用字体的 CSS 代码,因为每一本电子书的 CSS 选择器并不一样,所以需要根据实际情况引用。
我也没成功,在calibre里看转换的mobi已经改对了
但是send to kindle后发现,转成的azw3里,相应的css偏偏在font-family那里空了一行,如下
请教下应该怎么搞定?
czz 您好。推送后,电子书会被亚马逊服务器重新处理,这可能是 font-family 被移除的原因。所以如果想要使用自定义字体,还是建议本地传输电子。
Kindle官方能做的跟电脑系统类似,让用户自由选择使用系统字体或者安装自己喜欢的字体就好了.
这方法好!!!有机会定要试试……第一次忍不住发言。
好,这样只为了换字体的同学可以不用越狱了。听说kwp3没有开发多看版本,是因为程序员自制了andriod for kindle并且不卡,可以安装kindle版京东阅读和新浪微博等,问了下价格刷一次手工费要接近百元,好眼馋啊。
看到你才知道有Android for kindle 这个神器,改天我试一下
学习了,记得在某论坛或某吧里 行者老路 分享的书 就是需要拷贝他提供的“fonts”的文件夹到kindle中