我正在为能够显示日语垂直文本的 epub 阅读器项目编写提案。首先,我想知道一个图书阅读器加载和阅读epub的主要流程,然后定义关键点/主要技术需要关注的提案。
这里对书阅读器的要求是具备基本功能:阅读书籍,显示当前/总页数,到书的任意位置。
据我了解,主要流程如下:
- BReader 将 epub 提取到 xhtml 文件
- BReader 将所有 xhtml 文件加载到 webview
- BR 添加 js 以将文本旋转到垂直。js可以是nehan
- BR 添加 js 以根据设备屏幕规范分隔页面
- 渲染当前页面
但是,在步骤(2)中,如果它加载了所有的 xhtml 文件,那么对于大型 epub 来说性能会很差。我研究了一些 Epub 阅读器,比如“SONY 的电子书阅读器”和“NeoSoar”,发现每个 epub 文件的打开 epub 的时间都是相同的(大约 5 秒),所以我相信它们只加载了一部分第一时间预定。
他们怎么能这样做?如果他们只加载 epub 的一部分,他们如何计算总页数?以及他们怎样才能找到这本书的任何页码?