Calibre 使用教程之为电子书添加更换字体

Kindle 设备自 5.9.6 版本固件起已原生支持自定义字体,点击这里了解详情。

昨天有一位小伙伴在许愿区求助,刚入手一部 KPW2,固件版本是 5.6.1.0.2,但是想要更换电子书字体该怎么办?在这种无法通过越狱安装插件实现更换字体的需求还是有一个方法实现更换字体的,那就是使用 Calibre 把想要用的字体嵌入到电子书中。

这种方法不依赖设备,但是会增加电子书的大小,而且必须转换成 AZW3 格式或 MOBI 格式。如果输出格式选择的是 MOBI 格式,由于 Calibre 的默认输出设置是“old”类型,转换后的是不支持嵌入自定义字体的老版本 MOBI 格式,所以为了实现嵌入自定义字体,需要在“MOBI输出”中把“MOBI输出类型”选择为“both”或“new”,生成新版本的 MOBI 格式。

用 Calibre 为电子书嵌入字体方法很简单,如何转换电子书可以参见《Calibre使用教程之转换电子书格式》这篇文章,在转换的设置界面分别设置以下四项:

  1. 输出格式:AZW3MOBI(注意选择MOBI文件类型为 both);
  2. 在“界面外观”的“内嵌字体”项选择想要嵌入的字体,如果列表中没有想要的字体,可以先去字体下载网站下载想要使用的字体文件,然后通过左下角的【添加字体】按钮添加进来;
  3. 勾选上“嵌入使用到的字体”;
  4. 选择“过滤样式信息”选项卡,勾选上“字体”。
  5. 设置完毕后点击“确定”开始转换。

Kindle 更换字体

转换完毕后,将 Kindle 通过 USB 数据线连接到电脑,将转换后的 AZW3 格式的电子书通过 Calibre 发送到 Kindle 或直接拷贝到 Kindle 中。打开电子书,选择字体,会发现多出来一个“出版方字体”这就是你刚才嵌入的字体了,选中它即可更换这本电子书的字体了。

Kindle 更换字体

转换后的 AZW3 可以直接拷贝到 Kindle 中阅读,但无法推送到云端。由于推送不支持嵌入字体,所以即便转换成 MOBI 格式也无济于事。另外,在嵌入微软雅黑字体时,可能会出现无法转换的错误,暂无解决办法,请选用其他相似字体如信黑、冬青黑、旗黑替代。

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

发表评论

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

小伙伴们发表了 68 条评论

  1. 您好,请问您用的是什么版本的carlibre呢?我用的最新版本嵌入字体那里的选项特别少,制作了一下在kindle里面找不到出版方字体,您能告知一下吗?十分感谢

    • 伟der 您好。如果列表中没有想要的字体,可以先去字体下载网站下载想要使用的字体文件,然后通过左下角的【添加字体】按钮添加进来

  2. 您好,我按照您说的方法为电子书更换了字体,但是在更换字体之后在kindle操作中想要选中某个单字的时候就会选中一句话,请问应该如何解决?

  3. 您好,请问下为什么照此方法设置了想要的英文字体后,打开电子书选择字体却没有显示“出版方字体”?想请问如何才能转换英文字体?我是KPW3最新版固件,给的英文字体很蛋疼。

  4. 我把内嵌转换完的mobi文件通过推送到kindle,选择“出版方字体”,发现部分文字缺失,文字所占位置变成了空白,数量不少,选择自带的字体则可以正常显示。奇怪的是,在电脑上用kindle preview预览可以正常显示出版方字体,推送文件用手机kindle软件显示出版方字体,也完全正常,难道我的kindle有问题?设备是kpw2,固件是5.8.1,内嵌字体为小米兰亭

    • 李颖峰 您好。如文中第一张图片所示,您可以在通过设置“基准字体大小”和“字体大小Key”来更改字体大小。需要注意的是,如果要转换成 mobi 格式,需要把“MOBI文件类型”为 both。不过,一般情况下,不建议更改电子书的字体大小,而用 Kindle 的字体设置调整字体大小。

  5. 请教个问题,我换了冬青黑体,但是标题,注释啥的都变成一样的字体了,没有加粗,没有倾斜,而且文件超大(源文件700kb,嵌入之后20M),有没有改善的方法?或者说只要用这个软件嵌入字体之后,文件体积都会变大?

  6. 请问如果书中有部分章节想嵌入特定字体应该怎样操作?如果原PC文件中有造字,在mobi中怎么处理才能显示出来?

    • xiao hua 您好。如果你想让部分章节使用特定字体,可能需要手动修改电子书的 CSS。“PC文件中有造字”是指什么?

      • 您好!
        “PC文件中有造字”是说原word或TXT文件中有GBK以外的自己造的字。

  7. 你好。我按照上面的方法转换后,如果直接发送设备或者通过邮箱发送都不会出现出版方字体,必须要把文件拷贝到kindle 磁盘里,请问这是什么原因呢?有解决办法吗?谢谢。

  8. 我按照此方法嵌入字体,很正常,显示也很完美,可是某些我在miui论坛下的一些字体嵌入后,文章中文全变成乱码了,请问是怎么回事?

    • xiaoyaochou 您好。此方法并非所有字体都能正常嵌入,比如“微软雅黑”这款字体,就经常有人反映无法正常嵌入。至于嵌入字体文本变乱码,您可以自己对比测试一下,如果嵌入其它字体不会乱码,那就很有可能是字体本身导致的,您可以尝试换一个字体版本,或者使用其它字体替代。

  9. 知网上下载的pdf在kindle中不显示中文,看其他论坛说要改成内嵌字体,尝试过几个字体依然不行,请问要改成什么字体

    • 阿良 您好。请问您下载的 PDF 是推送到 Kindle 中还是直接拷贝到 Kindle 里的?另外,为方便排查问题,请将在 Kindle 中不显示中文的 PDF 文件发送到 bookfere@gmail.com。:)

  10. 您好,我有一本pdf无法转换为epub,可以帮忙看下吗?最近要做电子书,刚接触这一块。

    • 林娟 您好。请问你要转换的 PDF 是文字版的还是扫描版的。文字版的可以通过邮件附件推送到到亚马逊云端,注意邮件标题要填写“convert”,亚马逊云端会自动帮你转换成适合 Kindle 阅读的格式。至于扫描版,目前没有什么特别有效的办法。

      • 文字版的,我在calibre工具里无法转换。然后我使用calibre命令行转换,可以转换,但是内容没有全部转换,只转换了目录那块。

    • joycc52 您好。使用 KPW3 测试本文的方法,并没有出现您所说的的“运行发生错误”的情况。如果您在使用时出现错误,请排查下是否是那本电子书自身的问题。比如用其他的电子书嵌入字体测试,看是否都会出现相同的错误。

      • 试了7、8本都是这样,您有没有做好的内嵌字体的书,能否发我一本试试?我的邮箱py423@sina.com,非常感谢!

  11. 上述推送后的文件里,已经没有出版方字体的问题,我认为是云端将mobi转换成AZW的进程中,造成了一部分信息的缺失和错位,我再举一个例子:
    我用sigil制作epub电子书时,定义了书籍的起始位置,也就是在kindle中直接打开此书时的起始页面(或调出目录,然后点击“开始”时跳转到的章节),然后将此epub转换成mobi,这时有意思的事出现了。
    当我把这个mobi直接拷到kindle中时,上述开始页的设置是没有问题的,但是通过云端推送的方法,则开始页出现了偏移。
    我尝试了几种解决方法,均没有成功,包括分别使用kindlegen和cailber进行转换,或是用不同的压缩方式(C0、C1、C2)转换,均不行,都是直接拷贝进kindle没问题,但同一本书通过网上推送就不对,只能认为是云端的mobi转AZW时出了问题,如果真是这样,那这个问题就不可解了。

    • redeva 您好。这个现象一直都存在,不仅是推送的电子书,在亚马逊购买的正版书籍也是如此,打开书本的时候一般都会略过封面、目录、前言等,直接定位到正文部分,可能在转换的时候亚马逊按照他的标准给“标准化”了。其实这也算不上是“错位”,而是亚马逊为优化阅读有意为之。

      • 呃,我说的定位开始页,是在epub的OPF文件中的guide段定义书本的开始页面,可以是封面,可以是文章介绍,可以是第一章,可以定义成书本中的任意一页,诡异的是,这个定义在mobi云端转换成AZW后就失效了。

        • redeva 您好。今天在研究制作电子书的时候发现了你曾经遇到的这个问题:当把 mobi 文件直接拷到 kindle 中,开始页的设置是没有问题,但是通过云端推送,开始页出现了偏移,比如开始页应该是在“第一章”,实际上却“偏移”到目录页上了。

        • 非常抱歉,引起“偏移”的问题非上述原因导致的,经过再次测试排查,确定是 CSS 中的属性引起的。我将电子书 CSS 中的下列所示代码全部删除后,“偏移”的问题就解决了。

          font-size: xx-small;
          font-size: xx-large;

          你也可以检查下你的出现“偏移”的电子书的 CSS 是否也有上列类似的代码,如果有的话删除后再推送试试看,是否能解决该问题。

          目前只知道这样做可以解决问题,至于是什么原因引起的暂未可知。

          • 很高兴,这么久的文章坛主还回复了,坛主真是一个认真负责的人,赞一下先~
            言归正传,我常用的CSS很简单,如下 :
            p {
            font-size: 1.0em;
            line-height: 1.5;
            margin: 0.5em 0;
            text-align: left;
            text-indent: 2em;
            }
            h2 {
            text-align: center;
            }
            里面貌似也没有font-size: xx-small;font-size: xx-large;之类的东西。
            ——————-
            我上一次提出这个问题,也已经有好几个月了,现在早已经不纠结这个了。我的经验是,只有目录很长的时候(也就是正文“开始”前有很多文字),才会出现定位不准的情况,而且目录越长,定位偏移越大。我后来的解决方法,是直接把目录放在书本最后面,这样正文前的文字就很少,定位就不会有问题。
            反正一个五、六页的目录,放在书本最前面,也不会有人看的,还占地方。

  12. 文章有一处错误,我有一个疑问:
    1、文中错误:
    “好办,只需要在转换的时候选择“输入格式”为“ePub”。
    这里不是输入格式,应为输出格式。
    2、我的疑问:
    转换完毕后再用 KindleGen(教程)转换成 mobi 格式就可以推送到云端了。
    这样是可以推送了,但推送后的文件里,已经没有出版方字体了,亲测。不知道可有解决的办法?

    • redeva 您好.1、感谢指正,错误已修改;2、对于您说的第二个问题,特地测试了下,推送是没有问题的。您出现这种情况是否是在用 Calibre 嵌入字体的时候缺少了某设置呢?

      • 电子书用这种方法添加字体后,是不是全文同一时间只能使用一种字体了?
        原先的AZW3或epub文件,有多种字体的,如何转换成mobi推送到云端后,仍能保持原有多种字体?

        • redeva 您好,如果 azw3 或 epub 格式电子书原本就带有内嵌字体,就不要用本文的方法了,请移步这篇文章提供的方法:https://bookfere.com/post/102.html

          • 你好,不好意思给你添了这么多麻烦,那篇文章我也看了,用那里面的方法确实可以生成原汁原味的mobi文件,但问题是,这个mobi文件直接拷贝进kindle是可行的,但通过云端推送就没有内嵌字体了,我不知道是我设置有问题,还是亚马逊的bug,求测试。

    • Zuyang 您好,这应该是通过 Calibre 转换导致排版格式丢失了。一种方法是通过调节 Kindle 的行距到最大;还有一种方法就是重新用 Calibre 转换成 epub 格式,在转换设置中的“界面外观”的“行高”中设置一个较大的行距,如“24pt”(可以自己多试几次找到最适合自己的),然后再用 KindleGen 转换成 mobi 格式就可以了。过程虽然稍显繁琐,但这种方法确实能有效保持排版样式。

      • 您好!我转换总是失败,麻烦您帮忙给看一下是怎么回事好吗?谢谢您了!
        这是错误代码:(win8 64位)
        calibre, version 2.38.0 (win32, isfrozen: True)

        转换错误: 失败: 转换书籍 第 1 本,共 1 本 (理性乐观派:一部人类经济进步史)

        转换书籍 第 1 本,共 1 本 (理性乐观派:一部人类经济进步史)
        D:\Program Files (x86)\Calibre2\pylib.zip\dateutil\parser.py:339: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode – interpreting them as being unequal
        Resolved conversion options
        calibre version: 2.38.0
        {‘asciiize’: False,
        ‘author_sort’: None,
        ‘authors’: None,
        ‘base_font_size’: 0.0,
        ‘book_producer’: None,
        ‘change_justification’: u’original’,
        ‘chapter’: u”//*[((name()=’h1′ or name()=’h2′) and re:test(., ‘\\s*((chapter|book|section|part)\\s+)|((prolog|prologue|epilogue)(\\s+|$))’, ‘i’)) or @class = ‘chapter’]”,
        ‘chapter_mark’: u’pagebreak’,
        ‘comments’: None,
        ‘cover’: u’C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\calibre__nw6kb\\xotlbw.jpeg’,
        ‘debug_pipeline’: None,
        ‘dehyphenate’: True,
        ‘delete_blank_paragraphs’: True,
        ‘disable_font_rescaling’: False,
        ‘dont_split_on_page_breaks’: False,
        ‘duplicate_links_in_toc’: False,
        ’embed_all_fonts’: True,
        ’embed_font_family’: u’Microsoft YaHei’,
        ‘enable_heuristics’: False,
        ‘epub_flatten’: False,
        ‘epub_inline_toc’: False,
        ‘epub_toc_at_end’: False,
        ‘expand_css’: False,
        ‘extra_css’: None,
        ‘extract_to’: None,
        ‘filter_css’: u”,
        ‘fix_indents’: True,
        ‘flow_size’: 260,
        ‘font_size_mapping’: None,
        ‘format_scene_breaks’: True,
        ‘html_unwrap_factor’: 0.4,
        ‘input_encoding’: None,
        ‘input_profile’: ,
        ‘insert_blank_line’: False,
        ‘insert_blank_line_size’: 0.5,
        ‘insert_metadata’: False,
        ‘isbn’: None,
        ‘italicize_common_cases’: True,
        ‘keep_ligatures’: False,
        ‘language’: None,
        ‘level1_toc’: None,
        ‘level2_toc’: None,
        ‘level3_toc’: None,
        ‘line_height’: 0.0,
        ‘linearize_tables’: False,
        ‘margin_bottom’: 5.0,
        ‘margin_left’: 2.0,
        ‘margin_right’: 2.0,
        ‘margin_top’: 5.0,
        ‘markup_chapter_headings’: True,
        ‘max_toc_links’: 50,
        ‘minimum_line_height’: 150.0,
        ‘no_chapters_in_toc’: False,
        ‘no_default_epub_cover’: False,
        ‘no_inline_navbars’: False,
        ‘no_svg_cover’: False,
        ‘output_profile’: ,
        ‘page_breaks_before’: u”//*[name()=’h1′ or name()=’h2′]”,
        ‘prefer_metadata_cover’: False,
        ‘preserve_cover_aspect_ratio’: False,
        ‘pretty_print’: True,
        ‘pubdate’: None,
        ‘publisher’: None,
        ‘rating’: None,
        ‘read_metadata_from_opf’: u’C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\calibre__nw6kb\\vmgyof.opf’,
        ‘remove_fake_margins’: True,
        ‘remove_first_image’: False,
        ‘remove_paragraph_spacing’: False,
        ‘remove_paragraph_spacing_indent_size’: 1.5,
        ‘renumber_headings’: True,
        ‘replace_scene_breaks’: u”,
        ‘search_replace’: ‘[]’,
        ‘series’: None,
        ‘series_index’: None,
        ‘smarten_punctuation’: False,
        ‘sr1_replace’: None,
        ‘sr1_search’: None,
        ‘sr2_replace’: None,
        ‘sr2_search’: None,
        ‘sr3_replace’: None,
        ‘sr3_search’: None,
        ‘start_reading_at’: None,
        ‘subset_embedded_fonts’: True,
        ‘tags’: None,
        ‘timestamp’: None,
        ‘title’: None,
        ‘title_sort’: None,
        ‘toc_filter’: None,
        ‘toc_threshold’: 6,
        ‘toc_title’: None,
        ‘unsmarten_punctuation’: False,
        ‘unwrap_lines’: True,
        ‘use_auto_toc’: False,
        ‘verbose’: 2}
        InputFormatPlugin: MOBI Input running
        on C:\Users\ADMINI~1\AppData\Local\Temp\calibre__nw6kb\8akfrt.mobi
        Extracting text…
        Adding anchors…
        Extracting images…
        Cleaning up HTML…
        Parsing HTML…
        Converting style information to CSS…
        Creating OPF…
        Parsing all content…
        Parsing styles.css …
        Parsing index.html …
        Forcing index.html into XHTML namespace
        Reading TOC from NCX…
        Merging user specified metadata…
        Detecting structure…
        Flattening CSS and remapping font sizes…
        Embedding font: Microsoft YaHei
        Property: Unknown Property name. [1:81: panose-1]
        Source base font size is 12.00000pt
        Removing fake margins…
        Found 20 items of level: div_1
        Found 118 items of level: p_3
        Found 850 items of level: p_1
        div_1 left margin stats: Counter()
        div_1 right margin stats: Counter()
        p_3 left margin stats: Counter({u’0′: 118})
        p_3 right margin stats: Counter({u’0′: 118})
        Negative text indent detected at level p_1, ignoring this level
        Python function terminated unexpectedly
        ‘h’ format requires -32768 <= number <= 32767 (Error Code: 1)
        Traceback (most recent call last):
        File "site.py", line 132, in main
        File "site.py", line 109, in run_entry_point
        File "site-packages\calibre\utils\ipc\worker.py", line 193, in main
        File "site-packages\calibre\gui2\convert\gui_conversion.py", line 31, in gui_convert_override
        File "site-packages\calibre\gui2\convert\gui_conversion.py", line 25, in gui_convert
        File "site-packages\calibre\ebooks\conversion\plumber.py", line 1172, in run
        File "site-packages\calibre\ebooks\oeb\transforms\subset.py", line 158, in __call__
        File "site-packages\calibre\utils\fonts\sfnt\subset.py", line 164, in subset
        File "site-packages\calibre\utils\fonts\sfnt\cmap.py", line 277, in set_character_map
        struct.error: 'h' format requires -32768 <= number <= 32767

        • zhqkaka 您好。根据代码中的片段“Embedding font: Microsoft YaHei”看出,您想要嵌入的应该是“微软雅黑”这一款字体。在之前也曾有小伙伴遇到过这个问题,经过反复试验,不知道是因为字体还是 Calibre 的原因,总会出现这个错误,暂时找不到解决方法。所以,建议您选用其他相似的黑体替代,如信黑、冬青黑、旗黑都是很不错的字体。