2010年1月13日 星期三

epub中的NCX

完成了一個小小reader程式可以讀epub格式的電子書籍,現在要開始處理Table Of Content。
ODPF用既存的DTB(Digital Talking Book)的規範來處理TOC(spec第八章),該SPEC中特地要求依SPINE順序來展現電子書內容,但在NCX中,卻又有playorder,「It provides a means to collate all PageTargets, navTargets, and navPoints into a single ordered sequence that reflects their order in the normal playback sequence of the book as presented in the spine and SMIL files.」,playorder的定義似乎與spine的功能相衝突。若相同則重覆定義,若不同則會是大災難。為何要這樣處理,背後一定有理由,只是這理由還沒看到。
或許是因為DTB的spec與epub沒有直接關連,所以各自找了方式處理章節順序的問題,但若重覆且error prone,實在應該廢除playorder。

2010年1月6日 星期三

第一版的epub reader之後

已經完成一個小小的epub reader,用的是:
1.libxml for the front end to read all epub related XML files for parsing, to get to the content the reader wants to show
2.webkit/GTK+ for the back end, after get the xhtml files to be layout, use webkit/GTK+ to layout the content
未來需要做很多很多的工作:
1.front end
a.error checking (required by epub spec)
b.metadata
c.DRM (under epub spec)
d.signature and others
2.back end
a.show pages in one xhtml(based on the size of the device? or physical size defined by doc?)
b.中文
c.直行書
最後當然是user interface(experience)的部份
最先要解決的問題是,如何將壓縮的.epub(用zip壓縮)建構其電子書籍的架構,我想用file roller的招數,利用tmp dir來隱瞞細節。