Kindle Paperwhite 添加中文字体

入手了国行的Kindle Paperwhite,相比Kindle 3有了更好的中文字体支持,原生的“宋体“效果已经相当不错了。
不过以前按照《Kindle 中文阅读终极优化指南》看习惯了“方正准雅宋”,KPW自带的宋体显得有点淡,于是我又开始折腾字体了。。。

The Precondition
首先,KPW添加字体是很简单的一件事情,也不需要越狱:

  1. 用USB线连接KPW到电脑;
  2. 在Kindle的根目录上创建一个空文件 USE_ALT_FONTS (注意不要有扩展名);
  3. 在Kindle的根目录上创建目录 fonts;
  4. 把想要的字体拷到那个fonts目录,如果字体是一个系列的,粗体/斜体按如下命名:
    • Fontname-Regular.ttf     # 普通
    • Fontname-Italic.ttf          # 斜体
    • Fontname-Bold.ttf          # 粗体
    • Fontname-BoldItalic.ttf   # 又粗又斜
  5. 拔掉USB线,重启KPW (菜单->设置->菜单->重启);
  6. 在字体菜单里选择上面添加的字体.

The Problem
但是如果用《优化指南》里提到的这四个字体:

会发现,KPW会把它们认成4个不同的字体,选择“方正准雅宋”之后,也没办法自动使用对应粗体。其实这也很正常,上面的四个字体根本就不是一个Font Family的,KPW自然不认了。

The Solution
解决办法是,用字体编辑器把它们变成同一个Font Family!
在Ubuntu下我试过FontForge, TTFEdit, Ttx这些工具。
FontForge功能太强而且似乎生成的font文件会有问题;
TTFEdit对utf8或者gbk编码的字符串支持有问题;
Ttx其实是一个把TTF转换成xml文件,然后把xml文件转回成ttf的工具。

最后我用ttx搞定了。
1.

ttx -o CJK_Regular.ttx CJK_Regular.ttf  # 把ttf转换成ttx文件(本质就是个xml)

2.

编辑CJK_Regular.ttx
在<name>里,nameID=1是FontFamily,把它改成FZYaSong-GBK
在<OS_2>里,usWeightClass是指字体的Weight,把它改成500 (Medium),顺便把bWeight改成“6”(也许这个改动没有必要)

2.x.

同样的,把另外三个ttx文件里的FontFamily都改成FZYaSong-GBK
CJK_Bold.ttx,CJK_BoldItalic的usWeightClass改成700,bWeight改成8;
CJK_Italic的usWeightClass改成400,bWeight改成6;

3.

ttx -o FZYaSongMod-Regular.ttf CJK_Regular.ttx # 重新生成ttf字体
 另外三个文件同理

这样就生成了FZYaSongMod的四个ttf文件,FontFamily都是FZYaSong-GBK, Weight都是对应的值。然后把这四个文件拷到KPW的fonts文件夹里,重启,搞定!
KPW的显示效果终于和Kindle3一样了,内牛满面啊…

The Last
这四个文件已经打包好,有需求的可以直接用。下载在此: FZYaSongMod.tar.bz2
声明: 更改字体信息仅限学习用,不得作为商业用途。

p.s. 感谢@wzyboy同学《优化指南》 本文修改的字体来源于他的博客。
p.p.s. 推荐越狱之后安装kindlepdfviewer,完美集成于KPW,看PDF效果更好~

Share
  • Mr. Cool

    非常感谢。还提供下载联系,太方便了。谢了亲!

  • 沈 劲阳

    非常感谢
    lz你的英文字体是怎么解决的呢?

    • 英文就没管了,原生的字体就ok了;主要是我很少看英文书吧

      • 沈 劲阳

        使用报告… 我的kpw使用你提供的字体后大部分书都变成斜体,有几本是正常的准雅宋,不知道为什么。 还有,有些书中英文混排,雅宋的英文非常糟糕(我的狗耳朵订阅为了查词所以设置为英文版

        • a) 呃,我的KPW上很正常啊。。。 等我明天看看上传的文件是不是有问题。。。 p.s. 可以试一下@wzyboy的这本测试用mobi: https://wzyboy.im/wordpress/wp-content/uploads/2012/03/Lorem-ipsum-wzyboy.mobi_.tar.gz
          b) 中英文混排的书确实是个问题,这种书暂时还是用原生的字体吧;其实我觉得原生字体不错的,就是有点太淡了。

          • 沈 劲阳
          • 看了一下,dropbox上的文件没错,跟我KPW里面的是一样的;
            然后在KPW的字体选择里,选中的字体是 FZYaSong-GBK,能确认一下不?

          • Guest

            就是这样的,问题是字体全为斜体,字形正常显示

          • 沈 劲阳

            确认操作正确,字形正常,就是全部为斜体

          • 你的kindle上的fonts目录里有哪些文件?要不试试只保留我提供的那四个文件,然后重启一下kindle,再看看效果?

            p.s. 这个现象我在折腾中遇到过,发现是由于字体的Weight值不对造成的,把Weight值改了就好了,但是不知道为什么在你的Kindle上还是有问题。。。
            p.p.s 你的Kindle版本是?

          • 沈 劲阳

            5。3。6 语言为英文

  • 潇洒哥

    下载文件里面只有三个字体,好像少了主字体“方正准雅宋”

  • Tommy

    同样问题,全部变成斜体了。。。

  • nofoghu

    kpw1升级到5.4后,这办法好像不行了,怎么把这四个字体替换原来系统自带的宋体呢?

    • 在字体选择里直接选宋体就行了啊。
      另外,如果不想用自制的字体了,可以把USE_ALT_FONTS这个文件删掉,重启kindle,就变成只有系统默认的字体了。

  • nofoghu

    楼主能用这个方法把这几个字体推送到KPW1代 5.4.4后的固件吗?

    • 不知道了。我的KPW1代给我老爸了,没法测试。
      KPW2的话,用USE_ALT_FONTS的方法也没法添加自己的字体,所以没去研究怎么换字体

      • nofoghu

        http://bbs.xiaomi.cn/thread-8853279-1-1.html 刚才忘了放链接了,这里有个方法,但是太深奥,我非常喜欢你的字体,可是5.4.4后降级不能啊。

        • 这个链接里的是一种方法,相当于更新了系统字体;还有一种方法是这样的:http://www.mobileread.com/forums/showthread.php?t=219405,用起来可能会更方便一点。
          等有空了再折腾了,暂时用默认的字体其实也不错的,就是淡了点。。。