为什么 Kindle 调用的字体和电子书语言不匹配

在设置切换 Kindle 电子书字体的时候,你可能会遇到这样一个问题,如下图所示,明明是一本中文电子书,设置字体时 Kindle 调取的却是英文字体,反之亦然。为何电子书语言和字体不匹配呢?

chinese-ebook-english-font english-ebook-chinese-font

一、问题分析

Kindle 内置了三套字体,分别应用于“简体”、“繁体”和“英文”,对它们的调用是由电子书中的一条定义语言的元数据决定的,一般就是这里出现了差错。制作过 Kindle 电子书的小伙伴可能留意过,在电子书源文件的 .opf 配置文件中,头部 <metadata> 标签内有类似下面这样一行代码:

<dc:language>zh</dc:language>

这就是那条元数据了,<dc:language> 中的语言代号指定的是哪个语言,Kindle 就会调用和此语言相匹配的那套字体。下面是常用的三种语言代号和语言的对应关系:

  • zhzh-cn:对应“简体中文”,调用简体中文字体
  • zh-twzh-hk:对应“繁体中文”,调用繁体中文字体
  • en:对应“英文”,调用英文字体

二、如何修改

了解了原理就容易修改了。这里提供两种修改方法,可以根据自己的具体需求选用。

方法 1、使用 Calibre 修改

首先,把需要修改的电子书拖入 Calibre 书库,鼠标右键单击这本电子书,在弹出的菜单中依次选择“编辑元数据 -> 逐个修改元数据”,在弹出的“编辑元数据”窗口底部找到“语言”这一项,点击其后的下拉框,在弹出的列表中即可选择想要改成的语言(当然也可以直接输入“中文”或“英文”)。

然后,再次鼠标右键单击这本电子书,在弹出的菜单中依次选择“转换书籍 → 逐个转换”,在弹出的“转换”窗口中选择输出格式,如 azw3 或 mobi。注意,如果选择了 mobi 格式且想要尽可能保持原有排版样式,别忘了进入“MOBI输出”设置项,把里面的“MOBI文件类型”更改为“both”。

最后,点击【确定】按钮开始转换,得到的电子书就能调用相匹配的那套字体了。

* 注意,对于中英文的修改,使用此方法没有问题,但是若想修改简繁体中文,就行不通了,因为 Calibre 貌似不支持直接输入语言代码,这就需要使用下面这种修改电子书源码的方法了。

方法 2、修改电子书源码

在开始下面的步骤之前请先下载 KindleUnpack教程)和 KindleGen教程)这两款软件。

首先,用 KindleGen 把 Kindle 电子书拆解成源文件,使用代码编辑器(如 Sublime Text、Editplus 之类)打开 content.opf 文件(如果是拆解的 azw3 或 mobi8 格式的电子书,此文件的路径在“电子书文件名/mobi8/OEBPS/content.opf”,mobi7 格式的电子书此文件的路径在“电子书文件名/mobi7/content.opf”)。

然后,在代码的头部找到 <dc:language> 标签,然后参考本文前面提到的语言代号对应关系,把其中的语言代号改成和电子书实际语言相匹配的,然后保存一下文件。

<dc:language>zh</dc:language>

最后,使用 KindleGen 通过配置文件 content.opf 把源代码转换成 mobi 文件即可。生成的 mobi 格式和 azw3 格式没区别。当然如果你就是喜欢 azw3 后缀,也可以用 Calibre 软件再转换一次。

有帮助,分享给其他小伙伴:

发表评论

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

小伙伴们发表了 14 条评论

  1. 你好,題主。我有個類似問題。自從去年更新了kindle韌體後,所有之前的書籍都無法選擇宋體、黑體等正體字,轉而變作了宋体、黑体等簡化字字庫,雖然文字能夠顯示,但所有標點符號均出現了問題。不知該如何解決?謝謝!

    • 这应该是一个 BUG,原来 SC 和 TC 是分离的,Kindle 可以根据电子书中的元数据自动识别,分别调用各自的字体,但是现在貌似合并在一起了。

      这个问题有两种解决方案。一种是利用 Kindle 的自定义字体功能,把 Kindle 中的四种 TC 字体(下载)拷贝一份到 Kindle 根目录的 Fonts 文件夹中并重启一下 Kindle,然后在字体设置中选用该字体,这样使用的就是真正的 TC 字体,不会出现标点符号的问题了。另一种需要越狱 Kindle 并安裝 Font Hack 插件,将 Kindle 的字体配置成 TC 字体(参考)。

      以上只是变通的做法,想要彻底解决这个问题,还是需要 Kindle 团队来修正,或许他们没有意识到中文是有差别的,你可以通过 Kindle 设置中的“帮助和用户指南”向他们反馈这个问题。

        • 版主,根據您提供的方法,將原生字庫複製入kindle,可以解決這個問題,當然這也帶來了其它問題。看簡體書時要切換回SC,否則會有系統黑体替換缺失的簡體字現象。再換回繁體書籍又要手動切換一下,只能說是權宜之計。非常感謝版主!看來要徹底解決還得靠亞馬遜官方了。發反饋給他們也沒有回應,唉!

      • 但是我還有一個小發現!我在商店下載了兩本繁體書籍,水滸和三國,都是青蘋果數據中心製作的,兩本書的上冊識別為TC字庫,下冊識別為SC字庫,不知作何解釋?

        • 我测试了一下青苹果数据中心的水浒传(ASIN:上 B00BLYZTVE,下 B00BLYZTZA)和三国演义(ASIN:上 B00BLYZTV4,下 B00BLYZTUU)这两部书,结果是 Kindle 系统调用的都是 SC。

          确定你看到的“宋体”显示的是“宋體”嗎?可以把 Kindle 界面截图存到网盘,然后贴到这里来看看。

          • 沒問題,下面是四張螢幕截圖,各對應以上書籍。
            链接:https://pan.baidu.com/s/1PGlKMNjVoPaUdTHwxsSdsA 密码:42sv

          • 我懷疑在元數據裡是否有個什麼參數,新版固件可以識別到,但是他們製作的時候並沒有注意到這個參數。但新版固件卻有差別的識別了。

  2. 我有一本中文书azw3,用kindlegen转完格式会乱码;如果用epubee转格式不会乱码,但是打开后字体设置只能用英文字体。按照您介绍的方法,把最先的没有经过任何转换的文档unpack以后,dc:language那行代码果然是en,改成zh再用kindlegen转换还是变乱码。请问怎么解决?

  3. 使用calibre修改时出现“calibre, version 3.34.0
    錯誤: 不明的語言: 無法識別語言:中文”没有办法修改成中文……该如何解决呢?

    • 这个问题只有在把 Calibre 的界面语言设置为“正体中文”时才会出现,设置成“简体中文”就正常了。这好像是 Calibre 的一个 BUG。