xlk 发表于 2020-4-30 15:01

ePub文档自我支持规范是否可行

      自我支持规范,我指的是将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文档内引用规范了吗?感觉上是可行的。当然了,这是个技术活,我水平不行,只能提供一个想法,真正要做还是需要技术大佬,没准已经有大佬在做了呢。

Aeroblast 发表于 2020-4-30 16:57

都3.2了啊,不要自己一个人瞎猜,有不明白的去查标准,类似
http://idpf.org/epub/30/spec/epub30-publications.html
https://www.w3.org/publishing/epub32/epub-spec.html
这种地方

3.0在元数据定义写法有很多不一样,目录完全新写法只不过可以带个ncx兼容2.0阅读系统,并且有附加选项可以规定展开页面的布局。
sigil支持3.0,在设置里改,新建文档就会变。

namespace引用是协议,是约定,是阅读系统和文档商量好了咱要怎么呈现,在epub文档单方面自嗨没有一点用处

xlk 发表于 2020-4-30 19:54

Aeroblast 发表于 2020-4-30 16:57
都3.2了啊,不要自己一个人瞎猜,有不明白的去查标准,类似
http://idpf.org/epub/30/spec/epub30-publica ...

其实规范的版本没太大关系,我的意思是能不能把namespace引用的内容(如何显示之类的)放进epub文件里边,然后当阅读器不支持较新的规范的时候,就可以用文件自身带的作为补充,这样最后做出来的文件可能不是epub格式,而是一种新的格式,但是显示效果和在支持新版规范的阅读器中一样。我想知道这种方法是否可行。

Aeroblast 发表于 2020-4-30 20:53

xlk 发表于 2020-4-30 19:54
其实规范的版本没太大关系,我的意思是能不能把namespace引用的内容(如何显示之类的)放进epub文件里边 ...

不可行。
你看过规范规定了什么吗?比如加个新资源格式,你怎么引用解析的方法?引用个dll?
如果只是外部资源,那epub规范已经有了,自己去查Foreign Resources相关。但规范是规定方法的,对应的是程序,引入外部程序的风险、成本都是不值得的。

不用想那么多,这些玩意多数是搬运新web技术,外部资源引用的细节规范,给视障弄点便利性,没人用的标签属性废一废什么的,跟你看个小说八竿子打不着。
页: [1]
查看完整版本: ePub文档自我支持规范是否可行