kobo吧 关注:10,503贴子:91,883

教程 - 想要多字体却不想打补丁?内嵌字体轻松实现多字体

只看楼主收藏回复

本教程有些步骤需要一点点基础的HTML和CSS知识。大部分内容即使不会CSS和HTML也可以跟着做。
熟练之后,每本书大概五分钟就可以完美实现多字体。
本文目的是使绝大多数读者都可以跟着学会如果内嵌字体,某些地方可能会显得比较啰嗦冗余,请大神轻喷。
我的惯用正文字体是仓耳今楷03-W04,即文件包中的Jinkai-w04文件,读者可自行替换为自己喜欢的字体。
本教程需要的所有文件可以从以下链接获取
链接: https://pan.baidu.com/s/1DC0A2qYYlSffy-b5iDRHkQ?pwd=2x5g 提取码: 2x5g
先上一些前后对比图:均不使用多字体补丁,字体均为“出版社默认值”




IP属地:加拿大1楼2023-08-18 13:28回复
    教程文件:史蒂夫 乔布斯传 (修订版)中信出版社
    本教程需要用到两个软件 – Sigil 和 Calibre,请自行安装,此处不做赘述。


    IP属地:加拿大2楼2023-08-18 13:31
    回复
      第一步:将Epub文件导入Calibre。将文件拖拽至Calibre主窗口即可。


      IP属地:加拿大3楼2023-08-18 13:32
      回复
        第二步:点击封面下方的 Book files,或使用快捷键o打开文件所在文件夹


        IP属地:加拿大4楼2023-08-18 13:34
        回复
          第三步:使用Sigil打开epub文件。如果打开过程中出现弹窗,选择“是”或者“否”应该不会对结果产生什么影响。建议选“是”(Yes)。


          IP属地:加拿大5楼2023-08-18 13:35
          回复
            第四步:将Epub文件按照Sigil格式重建
            选择菜单栏的 工具 – 按Sigil格式重建Epub

            弹窗选择OK

            Ctrl+S 保存文件,或者使用菜单栏的 文件 – 保存。关闭Sigil。


            IP属地:加拿大6楼2023-08-18 13:37
            回复
              第五步:在Calibre 中编辑文件
              回到Calibre,右键要编辑的书,选择 Edit Book,或使用快捷键T

              出现编辑图书的工具


              IP属地:加拿大7楼2023-08-18 13:39
              回复
                第六步:添加各种中文字体
                请添加附件中的所有字体。应包含以下字体文件
                - Fangsong.ttf
                - HeiTi.ttf
                - KaiTi.ttf
                - MSYaHei.ttf
                - Song.ttf
                - YouYuan.ttf
                - Jinkai-w04.ttf
                分别对应为:
                - 仿宋
                - 黑体
                - 楷体
                - 微软雅黑
                - 宋体
                - 幼圆
                - 仓耳今楷03-W04(我所选择的正文字体)
                添加方法如下:
                首先,一开始一定要点击New File来添加一个字体文件
                在上一步打开的编辑页面,点击File – New file,或者工具栏的对应按钮


                在出现的弹窗中,选择左下角这个按钮

                选中第一个字体文件FangSong.ttf后,一定要将文本框内的内容改为OEBPS/Fonts/FangSong.ttf,如下图,选择OK,弹窗继续选择OK。

                左边字体栏有一个文件,右键看第二个选项确认路径,确认路径为OEBPS/Fonts/FangSong.ttf。如果路径不对,请删掉文件(回收图标)后重新做本步骤。


                IP属地:加拿大8楼2023-08-18 13:43
                回复
                  然后再将其余字体一并添加,
                  菜单栏,选择 File – Import files into book

                  将前文所提到的7种字体全部选中,确认
                  之后在左边栏的“Fonts”(字体)区域,可以看到已经添加的7种字体。

                  请忽略Jinkai-w04左边的感叹号,实测可以正常显示。


                  IP属地:加拿大10楼2023-08-18 13:47
                  回复
                    第七步:删除已有的 @font-face CSS样式 (有些书没有@font-face CSS样式,可跳过此步)
                    在左侧栏找到 Styles(样式)区域,里面会有几个以CSS为扩展名的文件。

                    浏览所有CSS文件,找到所有@font-face开头的样式规则,将所有的@font-face样式规则删除。一条样式规则,即@font-face,大括号,以及对应大括号内的内容。如下图所示。
                    需要注意的是,有些书籍本身不存在@font-face样式规则,遇到这样的书籍可以跳过此步。
                    截图中,高亮区域就是一条@font-face样式规则:@font-face开头,大括号和其中的内容。
                    本案例中,需要删除的区域如下:

                    删除后,此文件剩余内容仅为:

                    需要注意的是,有些书籍本身不存在@font-face样式规则,遇到这样的书籍可以跳过此步


                    IP属地:加拿大11楼2023-08-18 13:49
                    回复
                      第八步:添加如下@font-face CSS样式
                      选择任意CSS文件,在文件开头加入如下内容
                      @font-face {
                      font-family:"SongTi";
                      src: local("华文中宋"),local("STSong"), url(../Fonts/Song.ttf);
                      }
                      @font-face {
                      font-family:"HeiTi";
                      src: local("黑体"),local("HeiTi"), url(../Fonts/HeiTi.ttf);
                      }
                      @font-face {
                      font-family:"KaiTi";
                      src: local("楷体"),local("KaiTi"), url(../Fonts/KaiTi.ttf);
                      }
                      @font-face {
                      font-family:"FangSong";
                      src: local("仿宋"),local("FangSong"), url(../Fonts/FangSong.ttf);
                      }
                      @font-face {
                      font-family:"YouYuan";
                      src: local("幼圆"),local("YouYuan"), url(../Fonts/YouYuan.ttf);
                      }
                      @font-face {
                      font-family:"SongHei";
                      src: local("微软雅黑"),local("Microsoft YaHei"), url(../Fonts/MSYaHei.ttf);
                      }
                      @font-face {
                      src:local("TsangerJinKai03 W04"), url(../Fonts/Jinkai-w04.ttf);
                      font-family: "zhengwen";
                      }
                      加入后的文件如图所示:


                      IP属地:加拿大12楼2023-08-18 13:51
                      回复
                        第九步:使用添加的字体
                        字体添加完成后,我们要让字体用在文本中。原文件定义了一些字体样式,但是已经被我们删掉了,所以我们要修改原本的段落样式,来使用我们新定义的字体。Calibre提供了一个工具可以帮我们很轻易的做这件事情。
                        在编辑书籍的窗口中,菜单栏,选择Tools – Manage fonts (管理字体),或选择顶部工具栏的对应图标。


                        点击后出现如下窗口

                        左侧打勾的字体是我们新加入的字体,没打勾的字体是原文件自带的。
                        对每个没打勾的字体,选中字体,点击右边第一个按钮“Change selected fonts”. 将名字修改为打勾的字体。
                        本例中,我将heiti修改为 HeiTi,kaiti修改为KaiTi,songti修改为SongTi,fzlth修改为FangSong。
                        以fzlth为例,选中后,按右侧第一个按钮

                        在弹窗中,打入FangSong,确认

                        确认后fzlth字体从左侧栏消失,因为原本使用fzlth字体的段落现在都用仿宋(FangSong)了。
                        对所有未打勾的字体都是用同样的操作,替换为对应字体,即heiti(黑体)替换成HeiTi(黑体),kaiti(楷体)替换成KaiTi(楷体),以此类推。
                        全部完成后左侧全部字体都有勾,选择右下角Close(关闭)本步结束。


                        IP属地:加拿大13楼2023-08-18 13:56
                        回复
                          第十步: 设置正文字体 (需要基础HTML和CSS理解,可跳过)
                          在左侧的Text区域,随便找一个有正文的文件打开,是否有正文可以从右侧预览栏看到。本例中使用part0008.html(就随便选了一个带正文的文件)

                          在代码中找到一段正文的文字,例如

                          需要注意的是代码开头 <p class=”calibre6”> 这一段,class=“”的内容是不固定的,这里是calibre6。它有可能是bodycontent,也有可能是其他内容,也有可能只有<p>,没有class。没有class的情况我们过后讨论,现在讨论有class内容的情况。
                          记住calibre6,在下面的搜索栏中,搜索calibre6,搜索范围选择All Style File

                          找到此处的样式定义

                          在其中加入一行:
                          font-family: 'zhengwen' !important;
                          加入后内容如下:

                          加入后保存文件,右边预览栏会自动刷新,显示已经设置的正文字体。


                          IP属地:加拿大14楼2023-08-18 14:01
                          回复
                            第十一步: 对字体进行子集化(可选,但强烈建议做)
                            其实现在的文件已经可以正常使用了,但是如果你保存后去文件夹查看就会发现,文件非常大,这是因为我们的文件里包含了7种完整的中文字体,每一个字体都在15MB左右。这些字体中,我们有些用到了,有些没有用到。用到的字体中,有些字用到了,有些字没有用到。将字体根据文本进行精简,就是字体的子集化。
                            在Calibre中,字体子集化非常简单,打开我们上文第九步中用到的字体管理工具。选择右侧第四个按钮 “Subset all fonts”

                            稍等片刻就会出现子集化的报告

                            例如此处就讲:仿宋字体精简到了原始0.1%的大小,黑体精简到了原本1.0%的大小。
                            点击Close关闭。保存文件。全部步骤完成。
                            将Epub转化为Kepub后,发送至Kobo,在字体选择页面选择“出版社默认值”,就可以享受支持多种字体的电子书了。不需要多字体补丁。


                            IP属地:加拿大15楼2023-08-18 14:03
                            回复
                              发现镇楼的3张对比图糊了,补一下。
                              系统版本 4.34,无多字体补丁,字体选择为”出版社默认值“




                              IP属地:加拿大16楼2023-08-18 14:06
                              回复