【sigil插件】字体子集化插件(最新)
sigil吧
全部回复
仅看楼主
level 12
遥遥心航 楼主
这是一款可以根据简单模拟CSS规则,将设置有效的字体与对应的文本进行匹配并子集化的插件。CSS引用形式支持link引用、@import引用、style元素、style内联样式。可根据CSS各类选择器优先级判断节点字体属性继承关系,!important优先级设置也是有效的。基本上简单模拟了浏览器对一个节点的CSS属性解析情况,这种程度的模拟可令epub制作者在CSS代码上自由发挥而不必担心字体和字符匹配失效。
插件安装说明
sigil --> 编辑 --> 配置 --> 插件 --> 添加插件
“SigilFontSubset_vx.x.x.zip”整个压缩包导入sigil,不用解压。
然后添加插件快捷方式即可。
(注意勾上‘使用绑定的python’)
【插件的特色】
相比于calibre集成的子集化工具,这款子集化工具有四个比较明显的亮点:
1、对于 font-family: font1, font2, font3......这种多个字体属性的设置,可依照顺序从先从font1查找字符,如果font1缺乏字符则从font2查找,一直到不缺乏字符或着没字体可找为止。这个功能目前还没发现其他子集化工具带有,大多数都是font1,font2和font3都匹配相同字符,这样无法最让体积最精简化。
2、可提醒你字体所缺乏的字符,便于自行补充字符或更换字体。
3、面对乱七八糟的epub文件结构也不会解析错误。有些epub并不是sigil做的,文件结构要多乱有多乱,这些在calibre子集化工具中很可能导致匹配错误。但是对于本插件,有严格验证字体或CSS文件的引用路径,epub结构混乱也不会导致匹配出错。
4、calibre的子集化工具仅仅是删除字体的矢量,删除字体矢量后残留下来的表格结构还会占用很多空间,本插件的子集化更为彻底,不会残留多余的表格结构。
(不过目前尚不支持解析兄弟选择器和伪类伪元素,毕竟在epub中没啥卵用,懒得支持。就算你在CSS中用了这些选择器也没事,只要不在这些选择器中设置font-family就不会影响解析的准确度。)
2022年06月01日 05点06分 1
level 12
遥遥心航 楼主
下载地址:
https://wwb.lanzoub.com/b01hjaibc
密码:c560
2022年06月01日 05点06分 2
level 12
遥遥心航 楼主
目前更新至 5.6.0
5.6.0 修复了一个CSS解析上的BUG:无视外部字体节点属性,从而导致错误继承的BUG。
举个例子,你在body元素设置一个内嵌字体【宋体】,在p元素设置一个外部字体【黑体】,【宋体】是内嵌的,【黑体】是外部的。
程序找不到外部字体黑体的路径,就会将p元素的黑体属性当做不存在,让P元素继承body的字体属性宋体,从而让宋体多保留了黑体应匹配的字符。
实际上这种情况下继承字体是错误的,不过这种错误影响也不大,它不会导致EPUB显示效果出错,只是可能会导致裁剪字体多出不必要的字符。
在以前的版本中,如果你的CSS写的不太规范,用外部字体去覆盖内嵌字体的设置,就可能触发这个BUG。
5.6.0修复的就是这么一个问题。
2022年06月01日 05点06分 3
level 10
感谢大佬!
2022年06月01日 14点06分 5
level 12
遥遥心航 楼主
插件更新到 v5.6.1
支持了 inherit 属性值。
原本插件对不定义font-family的节点按继承属性处理,这是
正确的
,但是刻意定义 inherit 反而无法继承属性。
2022年06月03日 13点06分 8
level 11
下载5.6.1了,谢谢!
2022年06月04日 07点06分 9
level 12
遥遥心航 楼主
插件更新到 v5.7.0
修改遗漏字符提醒规则:
原规则为【字体若缺乏字符,不管候补字体是否存在所缺字符,一律提醒】,这种规则有个缺点,就是哪怕字体所缺的字符被候补字体补足了,插件还是照样提醒,让你搞不清楚到底是缺还是不缺。
现改为【字体若缺乏字符,但候补字体不缺字符,则不提醒;若搜完所有候补字体仍缺字符,则仅提醒最后一个候补字体所缺乏的字符。】
例如 font-family:font1, font2, font3; font1的候补字体是font2和font3。若font1缺字,到font3为止可以补上所缺的字,则插件不会提醒缺字。若font3仍无法补足缺字,则插件只会提醒font3所缺的字符。
这种规则的修改可以让缺字提示更加简洁和实用。
2022年06月08日 16点06分 12
level 2
感谢大佬分享
2022年06月10日 07点06分 13
level 2
收到,感谢更新。
2022年06月10日 11点06分 14
level 6
感谢大佬有心人,还在更新,受益匪浅。
2022年06月14日 01点06分 15
level 11
@遥遥心航
我做的书CSS可能有些特殊,字体子集化插件5.70不能识别正在使用的字体。
我已经私信联系过楼主,但是似乎楼主已设置拒绝接收私信,所以只能公开发帖和楼主联系。
2022年06月16日 06点06分 18
我刚查了我没禁收私信,客户端也没禁收消息,上次也是有人跟我说我禁收私信,后来还是能收到有人私信我,很奇怪。。也有可能这些设置是相互的,你自己设了禁收别人,那默认别人也禁收你的。私信不行的话可以试试客户端。
2022年06月16日 06点06分
@遥遥心航 已用手机APP发私信
2022年06月16日 07点06分
@寻几度 我没收到你任何消息...什么问题还是直接说吧
2022年06月16日 07点06分
level 4
楼主强大,钦佩!
2022年06月16日 07点06分 19
level 12
遥遥心航 楼主
插件更新到 v5.8.0:
使用了新的html解析模块,原模块具备一定的Html修复能力,在解析html时,如果html结构不够规范(例如两个P元素嵌套等等各种情况),它会自动修代码结构从而导致子集化结果错误。新模块不具备Html修复能力,可避免这个问题,解析速度上也会稍微快一点点。
不过新模块如果遇到Html结构错误的,插件是会直接报错的(原模块具备html修复能力,所以不会报错,但它修复的对不对就看脸了),html结构错误在sigil上会报警,在sigil改就行了。
PS:怕有些人误会,说清楚一点,旧解析模块的html修复能力绝对不是指修改你任何文档,仅仅是指读取html时遇到错误或不规范的代码会修复结构供它自己分析。但是这种修复能力带来的潜在问题不小,可能会导致一些难以察觉的子集化错误,所以我还是比较建议大家更新到5.8.0版。
2022年06月16日 14点06分 24
level 11
已经使用5.8.0,非常好用 !再次感谢大佬 !!!
2022年06月16日 14点06分 25
level 12
遥遥心航 楼主
插件更新到 v5.8.1:
兼容mac osx,linux
2022年07月04日 09点07分 27
虽然不用 mac osx 和 linux,我还是要点赞!
2022年07月07日 07点07分
1 2 3 4 尾页