读书项目排版引擎调研笔记

最新公司立项了一个读书项目,需要进行前期的一些调研工作,其中比较重要的有以下功能,如排版引擎,下载,断点续传,存储,搜索,翻页效果等。而其中的重中之重是排版引擎,它涉及到图文混排,字号大小切换,字体切换,背景处理,段落布局,文本两端对齐,文本两端对齐,查看图集,左右切换,黑夜/白天模式切换,文本复制,多栏布局,扩大缩小字距,扩大缩小行距等等很多和文字排版相关的内容,需要开发的功能相当多。而排版引擎直接会关系到产品的体验度,引擎做不好,将直接影响产品的体验和用户留存。据说,有的书城项目配有专门的排版引擎开发工程师,可见这一块对读书项目来说多么重要。

为了不重复造轮子,我们需要调研一下市面上有没有好的开源项目,如果有,直接拿来使用是一种非常节省开发时间,提升效率的好方法。所以在这里提醒大家,如果公司新立项一个项目,我们不要忙着就开始写代码,闷头去开发。要好好找一找,研究一下有没有好的开源项目或者框架可供我们使用,即使不是整个项目,而是其中的某项功能也有借鉴参考的价值。因为你的工作前人很可能已经做过了,趟过了很多坑,造出来一个好的轮子,我们只需要使用就可以了,没有必要浪费时间重新再造,而且即使我们再造,也不见得比现有的轮子有多好。所以,我常跟朋友讨论这件事,如果有现成的轮子放着不用,真的是很浪费时间和金钱,很傻的一种做法。

以下是我这几天调研FBReader,ePublib,webkit,MuPDF等开源框架的笔记,分享出来,希望能拓宽一下大家知识面。

1、FBReader(有借鉴价值)

这个项目编译通过,运行较正常。

FBReader-Android-2-master( android studio工程,可以替代FBReaderJ)

https://github.com/geometer/FBReader-Android-2

FBReaderJ (老的eclispe工程)

https://github.com/geometer/FBReaderJ

FBReaderJ中有的FBReader-Android-2-master基本都有,可以代替FBReaderJ 使用,并且其是一个Android studio工程。

jni涉及到的一些native工程 :

(1)、linebreak :

Liblinebreak is an implementation of the line breaking algorithm as described in Unicode 6.0.0 Standard Annex 14, Revision 26. It breaks lines that contain Unicode characters. It is designed to be used in a generic text renderer. FBReader is one real-world example, and you may also check some simple sample code, like showbreak and breaktext.

应该是用来换行排版使用的

(2)、Expat :

Expat是一个用C语言开发的、用来解析XML文档的开发库,它最初是开源的、Mozilla项目下的一个XML解析器。

(3)、DeflatingDecompressor :

应该是进行压缩的。

(4)、NativeFormats

用来对不同格式进行兼容处理的,应该包括,

css,doc,fb2,html,xhtml, oeb,pdb ,rtf ,txt等格式。

2、ePublib(只有一个库,用来创建epub文件,作用不大)

工程比较老,2年以上未维护。没有工程文件,未编译 。

epublib-master

https://github.com/psiegman/epublib

这个库主要用来借助它生成epub文件。

Epublib is a java library for creating epub files.

Its focus is on creating epubs from existing html files using the command line or a java program.

Another intended use is to generate documentation as part of a build process.

另一个预期的用途是生成文档作为构建过程的一部分

text added for git testing

Writing epubs works pretty well, reading them has recently started to work.

对EPUB文件运行得很好,能够阅读他们是最近才支持的。

a small change

Right now it's useful in 2 cases:

Creating an epub programmatically or converting a bunch of html's to an epub from the command-line.

编程方式创建EPUB文件或从命令行转HTML到ePub。

Creating an epub programmatically

2.1、epublib-android (android studio工程,只生成对应的库文件)

studio工程,编译通过。

epublib-android 是对ePublib的android studio工程封装,只生成对应的库文件,没有演示的demo程序。

https://github.com/DASAR/epublib-android

epublib port for Android

3、android_external_webkit(Android上使用的webkit库,需要在源码环境进行编译)

已经不再更新,比较老。最近更新在4年前。

对应工程android_external_webkit-cm-10.2

https://github.com/CyanogenMod/android_external_webkit

Webkit for Android (CyanogenMod)http://cyanogenmod.com

3.1、Android-WebBrowser-Demo--WebView- (演示webView实现浏览器功能,无用)

老的eclispe工程,已经不再维护,最新一次更新2年前。

https://github.com/danielme-com/Android-WebBrowser-Demo--WebView-

A simple web browser for Android 2.1 that shows the capabilities of WebView/WebKit

4、Android-MuPDF (可以借鉴打开pdf格式文件)

Android-MuPDF-master_studio

已经2年以上不再更新,重新将其从eclipse导入studio项目,编译通过,并且提供了demo程序可用。

https://github.com/joniks/Android-MuPDF

MuPDF usage for magazine reading

MuPDF developer team:http://mupdf.com/

The viewer is small, fast, yet complete. It supports many document formats, such as PDF, XPS, OpenXPS, CBZ, EPUB, and FictionBook 2. You can annotate PDF documents and fill out forms with the mobile viewers (this feature is coming soon to the desktop viewer as well).

4.1、mupdf-android

可以编译通过,只是一个库,没有demo程序

mupdf-android-master

https://github.com/viavansi/mupdf-android

MuPDF for Android, working on Android Studio and with some additional features

综上,是我对FBReader,ePublib,webkit,MuPDF这些开源框架调研的笔记,按以上结果来看,ePublib,webkit对应的这些开源项目对于排版引擎没有多大作用,FBReader,MuPDF比较有借鉴作用,后面是需要重点研究的对象。如果这四个调研的结果有遗漏或者错误之处,欢迎大家指正。

目前正在对比较流行的一些开源读书项目进行调研,争取能提炼一些有价值的“轮子”可以使用。等整理完成后,会把结果分享给大家。如果大家有好的开源项目,也可以在留言区分享给我,多谢。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171222G0QRLK00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励