Kindle 4 第三课:完美中文字体

好,通过上两讲相信你已经基本熟悉修改 Kindle 系统文件的方法了。这一讲我闲话不多说,直接进入重点:如何完美显示中文字体(包括粗体、斜体和斜粗体)。

用过 Kindle 4 的人都知道有时候中文显示会呈现文字一粗一细,一大一小,甚至出现很别扭的笔画等等情况,而且当文章中出现斜体和粗斜体的时候,中文完全无法显示为这两种字体形式,最明显的莫过于当目录中 Collections 的名字同时含有中文和英文的时候,就会出现中文不斜,有时候还不粗的情况。

其实想要在 Kindle 里面完美显示中文,必须达成“Kindle 完美中文的三位一体”(好吧,我承认是我编撰的= =,不过一点不夸张哦):

- 完美的中文字体
- 完备的配置文件
- 完善的默认编码

下面且听我我一一道来……

第一位:完美的中文字体

感谢这个帖子的作者对 Kindle 3 完美中文显示的不懈努力,完美的字体有了保障。在他的帖子里面提供的几种字体(方正兰亭黑+方正兰亭中黑和方正准雅宋+方正粗雅宋几种组合)我们都可以按照自己喜好下载并更换到 Kindle 里面。

P.S. *nix 文件系统区分大小写,请注意文中各处大小写不要错位,否则可能会引起砖机等严重后果!

这些字体包解开后会看到四个文件,分别为:CJK.ttf(对应一般字体)、CJK_Bold.ttf(对应粗体)、CJK_Italic.ttf(对应斜体)和CJK_BoldItalic.ttf(对应斜粗体)。通过 SSH 登录到 Kindle,将文件放入主分区的下列文件夹中。(所有系统字体都在这里)

/usr/java/lib/fonts/

当然,光把文件放进去怎么行呢?所以就有了下一位……

第二位:完备的配置文件

Kindle 字体的配置文件位置在:

/usr/java/lib/font.properties

接下来,为了安全起见,我们需要备份这个文件:

cp /usr/java/lib/font.properties /usr/java/lib/font.properties.bak

然后就可以打开 font.properties 文件进行修改了。

首先,找到下面的部分:

1
2
3
4
hans.0=MHeiM18030_E.ttf
hans.plain=MHeiM18030_E.ttf
hans.1=MHeiM18030_E_Bold.ttf
hans.bold=MHeiM18030_E_Bold.ttf

很明显,其中 hans 代表简体中文、0/1 和 plain/bold 代表一般字体和粗体。通过分析其他字体的情况,我们还能找到:

0/plain      =  一般字体
1/bold       =  粗体
2/italic     =  斜体
3/bolditalic =  斜粗体

但是默认的配置文件中,CJK 字体都只含有一般和粗体两种。所以,将这部分修改为:

1
2
3
4
5
6
7
8
hans.0=CJK.ttf
hans.1=CJK_Bold.ttf
hans.2=CJK_Italic.ttf
hans.3=CJK_BoldItalic.ttf
hans.plain=CJK.ttf
hans.bold=CJK_Bold.ttf
hans.italic=CJK_Italic.ttf
hans.bolditalic=CJK_BoldItalic.ttf

然后保存,再加上之前已经复制到机器里面的中文字体,显示就会很完美了:目录粗/斜体、期刊的页眉页脚、文中的斜体都可以正常显示了。

第三位:完善的默认编码

由于 Kindle 的默认编码是英语,所以在显示 CJK 文字的时候,由于在配置表(不是“第二位”提到的那一个,详见这里的“Linux的字体管理机制”一章)里面日语比中文靠前所以日文汉字总是被优先显示;而我们看的文章中有相当一部分文字并不是日语汉字,所以才被渲染成了中文,造成了字体粗细和大小不一的问题。

将 Kindle 的字体编码切换为中文很简单,只要在正常开机、在书籍目录的情况下,按下键盘键(从左至右第二个键)调出搜索栏,一次一行输入:

1
2
3
;debugOn
~changelocale zh-CN.utf8
;debugOff

注意大小写,在每一行输入完毕后按下五向键中间的确认键完成输入,即可继续进行下一行的输入。

在调整编码后请重新启动 Kindle。

结语

到这里,Kindle 的中文显示应该已经基本完美了。不过遇到metadata语言标定为非中文的书籍,字体还是会乱成一锅粥= =(残念啊)。为了减轻(似乎还无法完全解决)影响可以考虑将日文字体指向中文字体。在“第二位”中提到的配置文件里查找:

1
2
3
4
jpan.0=HeiSeiMaruGoth213_E.ttf
jpan.plain=HeiSeiMaruGoth213_E.ttf
jpan.1=HeiSeiMaruGoth213_E_Bold.ttf
jpan.bold=HeiSeiMaruGoth213_E_Bold.ttf

替换为:

1
2
3
4
5
6
7
8
jpan.0=CJK.ttf
jpan.1=CJK_Bold.ttf
jpan.2=CJK_Italic.ttf
jpan.3=CJK_BoldItalic.ttf
jpan.plain=CJK.ttf
jpan.bold=CJK_Bold.ttf
jpan.italic=CJK_Italic.ttf
jpan.bolditalic=CJK_BoldItalic.ttf

即可。不过要注意的是,请不要将韩语和繁体中文替换为 CJK 字体,否则会导致无法显示韩语和国际音标显示错误的问题。

P.S. 题图中的OALD辞典可以在这里下载

5 Comments

  1. elxy says:

    非常感谢博主的文章,在wzyboy的基础之上,解决了音标乱码的问题~

  2. James Kang says:

    在搜索kindle中文支持的时候无意中看到你的博客,想不到你也是在澳洲。好巧啊。
    不知道你用过paperwhite没, 如果用过的话,你知道paperwhite对中文的显示怎么样啊?

  3. James says:

    Kindle 4 第三课:完美中文字体 https://b.billgong.com/2248.a
    请教一下这个帖子中截图的英汉字典是哪个?谢谢 🙂

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.