解决 Kindle 无法修改字体、显示封面的问题

本文耗时三天,历经几十次实验,终于摸索出 Kindle 中字体、封面的有关规律,适用于以下情况:
Kindle 部分书籍无法修改字体
Kindle 部分书籍无法显示封面
Calibre 无法批量保存中文书名
Kindle 锁屏不显示书籍封面
Kindle 部分书籍无法生字注音
按本教程操作后,所有书籍都可支持切换字体、加粗、生字注音并正常显示封面


一、下载 Calibre

Windows 平台下载地址:calibre - Download for Windows
其他平台下载地址:calibre - Download calibre

二、设置 Calibre

  1. 打开「首选项-保存书籍至磁盘」;
    ① 取消勾选:分别保存封面(M)在独立的 OPF 文件中保存元数据
    ② [可选]保存模板(文件名默认格式为「爱的艺术 - 〔美〕弗洛姆」)可根据需要自行修改,如:

    日期格式:%Y,保存模板:{title}.{authors}.{publisher}.{pubdate}
    文件名将显示为:爱的艺术.〔美〕弗洛姆.上海译文出版社.2011
    注意事项:须确保变量所对应书籍元数据完整;文件名夹杂中文时,若超过 83 个字符,将导致 Kindle 无法读取书籍;解决方法参见「七、[可选]书籍文件名清洗」

  2. 打开「首选项-输出格式选项-MOBI 输出」,将「MOBI文件类型(T)」改为 both

  3. 打开「首选项-通用选项-界面外观-字体(F)」,勾选:关闭字号缩放(D)

  4. 打开「首选项-通用选项-结构检测」,取消勾选:移除无效的页边距(F)

三、[可选]补充书籍元数据

Calibre中文书元数据下载插件群晖NAS使用最新calibre-web并配置豆瓣元数据

四、清除书籍原字体样式

AZW3 格式为 KF8 标准,一定支持自定义字体,因此只需要转换 AZWMOBI 两种格式的书籍即可。

  1. 点击「添加书籍」,将全部图书添加进「Calibre 书库」中(Ctrl+A 可全选文件);
  2. 点击左侧分类栏中的「格式」,按下「Ctrl」同时选择 AZWMOBI,全选列表中所有书籍,点击「转换书籍」,点击「√确定」;
  3. 任务完成后,书籍原字体格式就被清除了。

五、导出书籍至 Kindle

  1. 将 Kindle 连接至电脑;
  2. 点击左侧分类栏中的「格式」,按下「Ctrl」同时选择 AZWMOBI,「Ctrl+A」全选列表中所有书籍,点击「保存到磁盘」旁下三角「▼」,选择「仅保存 MOBI 格式文件到磁盘」,点击「√确定」,选择 Kindle:\documents
  3. 点击左侧分类栏中的「格式」,选择 AZW3,全选列表中所有书籍,点击「保存到磁盘」旁下三角「▼」,选择「以单一格式保存到磁盘…」,选择 AZW3,点击「√确定」,选择 Kindle:\documents
  4. 任务完成后,书籍就以中文名导出到 Kindle 了。

六、更新书籍元数据

  经转换后的书籍将重新生成 mobi-asin,与原始文件不同,导致原封面无法匹配转换后书籍,因此需要更新书库列表中书籍的元数据。

  1. 点击左侧分类栏中的「格式」,按下「Ctrl」同时选择 AZWMOBI,「Ctrl+A」全选书库列表所有书籍,点击「编辑元数据-批量修改元数据」;
  2. 勾选 从电子书文件中设置元数据(除了封面)(M)
  3. 点击「√确定」,即可更新 mobi-asin

七、修复书籍封面

  Kindle 按 mobi-asin 下载封面,存放在 Kindle:\thumbnails,转换后书籍的 mobi-asin 已变更,无法自动下载,只能使用 Calibre 手动添加封面,但 Calibre 没有单独发送封面功能,必须同时发送「拼音命名的书籍文件」和「封面文件」,因此可以待发送后删除「拼音命名的书籍文件」以曲线救国,方法如下:

  1. 点击左侧分类栏中的「格式」,按下「Ctrl」同时选择 AZWMOBI,「Ctrl+A」全选列表中所有书籍,点击「发送到设备」;
  2. 待全部发送完毕后,打开 Kindle:\documents 文件夹,右键空白区域,选择 排序方式(O)-修改日期
  3. 根据修改日期,将刚才发送的以拼音命名的文件夹全部删除。

注意事项:若将 .mobi 文件以邮箱推送到设备上,也可尝试此补充封面方法,有效与否自测;部分 .azw3 文件因自带封面太小而无法识别,需要下载 325*500 分辨率封面按格式重命名存放在 Kindle:\thumbnails 内。

八、[可选]书籍文件名清洗

  若按 2.2 将保存模板设置为:{title}.{authors}.{publisher}.{pubdate}

  1. 可能因元数据缺失使分隔符冗余;
  2. 可能因文件名超过 83 个字符导致 Kindle 无法读取书籍,可在 Kindle:\documents 文件夹下新建文本文件,将以下代码粘贴至文件并保存,将文件扩展名改为 .bat,双击运行即可解决。
    1
    2
    3
    4
    5
    6
    7
    @echo off & setlocal enabledelayedexpansion
    set "dots=.."
    set "dot=."
    for /f "delims=" %%i in ('dir /b /a-d *.*') do (
    set "var=%%i" & ren "%%i" "!var:%dots%=%dot%!"
    set "str=%%~ni" & ren "%%i" "!str:~0,83!%%~xi
    )

九、[可选]修改 Calibre 源码以使「发送到设备」输出中文文件名

  如果按以下方式修改 Calibre 源码,可省略第五步「导出书籍至 Kindle」,直接将书籍以中文名发送至 Kindle。

十、[可选]Kindle 锁屏显示书籍封面

关于启用 kindle「显示封面」功能的补充

十一、参考资料

为什么 Kindle 里有些书换不了字体? - 彭祎的回答 - 知乎
Calibre管理电子书怎样和原来的命名规则相结合? - Bowman Church的回答 - 知乎
用 calibre 将书籍发送到kindlepaperwhite后如何显示中文书名? - wh ddouble的回答 - 知乎
为什么我使用Calibre为azw3排版后不显示封面了? - wh ddouble的回答 - 知乎
文件名和文件夹的bat批量重命名替换关键字和删除关键字
怎样用批处理将文件名长度超过166个字节后的部分删掉?