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

“转换电子书格式”相关阅读

给这篇文章写一条留言

提示:带 * 标记的是必填项。您填写的邮箱地址将会被保密。首次留言将会在通过人工审核后显示。如果是提出问题,请务必提供尽可能多信息,这有助于他人更好地理解你所提出的问题。

小伙伴们写下了 70 条留言

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

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

      • 你好,添加ttf字体失败是为什么呢,提示
        calibre, version 5.40.0
        错误: 未处理的异常: TypeError:Not a unicode string

        calibre 5.40 [64bit] embedded-python: True is64bit: True
        Windows-10-10.0.19041 Windows (’64bit’, ‘WindowsPE’)
        (‘Windows’, ’10’, ‘10.0.19041’)
        Python 3.8.5
        Windows: (’10’, ‘10.0.19041’, ”, ‘Multiprocessor Free’)
        Interface language: zh_CN
        Traceback (most recent call last):
        File “calibre\gui2\font_family_chooser.py”, line 308, in add_fonts
        File “calibre\utils\icu.py”, line 180, in change_case
        TypeError: Not a unicode string

  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 的原因,总会出现这个错误,暂时找不到解决方法。所以,建议您选用其他相似的黑体替代,如信黑、冬青黑、旗黑都是很不错的字体。