自我支持规范,我指的是将epub的规范或协议直接写入epub文档内,从而得到不需要阅读器更新规范内容,靠epub文档自身就能使用新版规范(现为3.1版本)的文件,在不支持新规范的阅读器中也能使用,阅读器只充当容器的作用。
有这个想法,是因为之前在贴吧看到有大佬制作了支持3.1规范的epub文档,3.1规范是2017年1月份发布的,但是现在却没有什么阅读器支持(虽然不支持,但还是可以看),因为2.0规范已经基本能完全满足现在的需求,做epub的大佬说lithium上可以用,所以我想下一个试看尝新。下载了大佬做的epub,不过用sigil打开看里边显示的却是3.0版本,用lithium试看之后也没有感觉到和2.0的明显差别。
我又对比了3.0和2.0的代码,发现内容基本一致,最大的区别就是3.0的content.opf文件开头注明了version="3.0",而2.0里边则是2.0。 2.0里: <package version="2.0"unique-identifier="BookId"xmlns="http://www.idpf.org/2007/opf"> 3.0里: <package version="3.0"unique-identifier="BookId"xmlns="http://www.idpf.org/2007/opf"> 除此之外并无明显区别。
然后我想在sigil中把2.0改成3.0试试,但是并不成功,保存的时候sigil会自动改回2.0。于是我选择了另一种办法:把.epub格式改为.zip,解压,用记事本打开.opf文件,把2.0改成3.0,保存,再把整个文件夹压缩回.zip,修改格式为.epub,再用sigil打开,果然显示成了3.0。但是用sigil打开的时候提示有错误,忽略后还能打开,而且icecream和多看打不开,不过静读天下倒是能打开,排版和原来一样,没有错乱,也不会出现乱码,用QQ传输文件后直接在QQ中也能打开,同样没排版错误和乱码。在sigil中查看文件内容,发现多了nav.xhtml和sgc-nav.css两个文件,里边没什么有用的内容,但是影响观感还删不掉。除此之外在.opf文件里还多了一个精确到秒的时间戳 <metaproperty="dcterms:modified">2020-04-30T12:57:02Z</meta>,在本来就是3.0的epub里也有。
.opf文件里开头部分应该是个引用格式,引用的就是阅读器里的epub规范,就像编程时会用头文件调用函数库。所以如果修改引用路径,并且在规范中同样进行修改适配,不是就可以直接在一个epub文档内引用规范了吗?感觉上是可行的。当然了,这是个技术活,我水平不行,只能提供一个想法,真正要做还是需要技术大佬,没准已经有大佬在做了呢。
|