昨天想起介紹 Kobo eBooks
的那篇文章說 Kobo eBooks
可以吃 epub 格式的電子書,可是一直都忘記試,今天早上上班時,就試了一下,發現閱讀的效果真的比 FBReader 好很多。fbreader用來對付一般的小說是綽綽有餘,但遇到有程式碼的epub,整個就爛給你看,而且是爛的可怕。Kobo eBooks
的處理就好很多,網站上有提供免費電子書可下載,也有像類似 foursquare 的打怪機制,讓你讀書跟打怪一樣,讀的愈多,拿的勳章愈多。
拿 Kobo eBooks
跟 Kindle 比的話,在記憶體少的機器上運行ok。每次開 Kindle,就常讓我的Asus A50重開機,重開機之後再去開啟程式才能正常進入,常常讓我不知道該不該賭一下,我想這應該是Linux Kernel 發現記憶體不足而砍應用程式的關係。
要說 Kobo eBooks
缺點的話,大概就是沒辦法查字典,Kindle是可以查的。Kindle 在長按單字時,他會自動去查英英字典,第一次查的時候,程式會告訴你要額外送你一本英英字典,下載以後,就可以有自動查單字的功能,畫面是以 pop window 的方式呈現,再點選,會進到英英字典,顯示更多資訊。
如果沒意外的話,我想我以後都會拿 Kobo eBooks 來讀 epub。
除了上面的3個電子書以外,我還有試過 iReader,是同事推薦我的,Market 裡的評價不錯,但iReader網站上的書太多,一時不知道要下載什麼,大多都是簡體中文,又考慮到翻譯品質良莠不齊,所以乾脆就移除掉了。
我還有額外下載獨立電子書的 app:明朝的那些事儿-全集跟黄河鬼棺-全集,這兩個也不錯,作者是同一個,作者有在積極改版,可是我覺得最早用的那版還不錯用,不太需要改。目前明朝的那些事儿-全集還沒看完,才看到第五集,等看完才會看黄河鬼棺-全集。這兩本雖說是免費,但實際上應該算是盜版吧~
星期三, 9月 07, 2011
星期三, 3月 02, 2011
AlbiteReader後續修正
J2ME裡的英文字型寬度不是固定的,所以顯示英文字的時候會怪怪的。利用 HashTable 去存英文字的寬度,至於中文字型還是固定,這樣英文顯示就比較漂亮一點了。
大致上就這樣,更新以後的檔案放在同一個地方,需要的人自己下載。
另記用 Sigil 的心得,儘量使用 p、blockquote 來做編排,段落的呈獻會比較漂亮,避免使用 br 來做斷行。簡單說,大致的編排就是儘量使用 html 搭配 css,而不要用硬幹的方式。
大致上就這樣,更新以後的檔案放在同一個地方,需要的人自己下載。
另記用 Sigil 的心得,儘量使用 p、blockquote 來做編排,段落的呈獻會比較漂亮,避免使用 br 來做斷行。簡單說,大致的編排就是儘量使用 html 搭配 css,而不要用硬幹的方式。
星期五, 2月 11, 2011
AlbiteReader的字型處理
org.albite.font.AlbiteFont
照這樣看起來,如果要依樣畫葫蘆,將中文字型製作成 .ali 的話,會遇到的問題是記憶體問題。AlbiteFont 會將整個 .ali 載入到記憶體裡,製作出來的 .ali 會有多大呢? 假設字的大小是12x12,要完整收文泉驛的20932個字,那大約是3MB左右。依照 SE T700 的規格,內部記憶體只有 25MB。未知的是可用記憶體,所以必須考慮最壞的情況,記憶體會不足!!
會使用自己的字型,我想應該是考慮到平台相容的問題。
- ctor 開啟字型檔以後,就開始處理 (這邊是開 .alf)
- 格式
- byte 1: line spacing
- byte 2: line height
- byte 3-6: glyphs (character range)
- byte 7-8: maxium width
- byte 9-12: character count
- 接下來就是循序讀出各字元的 x, y, w, h, xo, yo, xa
- byte 1-2: character
- byte 3-4: x
- byte 5-6: y
- byte 7-8: width
- byte 9-10: height
- byte 11-12: xoffset
- byte 13-14: yoffset
- byte 15-16: xadvance 下一個字元跟目前字元的間隔
- 再放到對應 character 的 glyphs 陣列裡 (glyphs[character]=new Glyph(x, y, w, h, xo, yo, xa)
- 讀完 .alf(字型資訊),接著開啟 .ali,這邊是真正的字型資料,先把整個 .ali 讀取到記憶體裡 (由 AlbiteImageMono 處理,同樣也有檔頭,但較簡單,前4個bytes是magic number,接著的兩個bytes是width,然後再來的兩個bytes是height)
- 把必要的字元先處理起來,像是 ' ', '?', '-'
- 其他的字元都是畫的時候,依據 glyphs 資訊去存取記憶體裡的 buffer
照這樣看起來,如果要依樣畫葫蘆,將中文字型製作成 .ali 的話,會遇到的問題是記憶體問題。AlbiteFont 會將整個 .ali 載入到記憶體裡,製作出來的 .ali 會有多大呢? 假設字的大小是12x12,要完整收文泉驛的20932個字,那大約是3MB左右。依照 SE T700 的規格,內部記憶體只有 25MB。未知的是可用記憶體,所以必須考慮最壞的情況,記憶體會不足!!
會使用自己的字型,我想應該是考慮到平台相容的問題。
星期四, 2月 10, 2011
epub二三事
今天剛好看到這個百年千書計劃,裏面提供了一堆epub,於是就想說,可不可以放到我的手機SE T700上看呢?
就上getjar上找,就找到了Albite Reader。很高興地下載程式跟epub下來放到手機上,可以執行,但是結果卻都是一堆 ?
這到底怎麼回事,首先我試了軟體的編碼設置功能,沒有用。我懷疑 epub 裡的編碼是big5,而軟體的編碼選項裡卻沒有 big5,所以就上網找了一下,看要怎麼編輯 epub。看到這篇:Edit ePub eBooks with Your Favorite HTML Editor,才知道原來 epub 其實是個 zip 檔案,將副檔名更名為 zip 以後,就可以解開去看了。然後也發現了不錯的編輯工具:sigil。不過都沒有用,epub 裡的編碼是正確的。
那麼問題就出在軟體本身了,幸好軟體有開放原始碼而官方網站也有說明。大致看了官方網站的說明以後,才明白,問題出在字型上。軟體本身沒有包中文字!!!!這就麻煩了。官方網站也有說怎麼製作字型,不過他所使用的 Bitmap font generator 卻沒有支援中文字,因此無法產生出必要的 .png 跟 .xml 檔案,也沒辦法繼續後面的步驟,將 .png, .xml 轉成 .alf, .ali 了。
傷腦筋,看來如果要能用,一個方法就是寫程式去做出 Bitmap font generator 的功能,將字型轉成 .png, .xml,另外一個方法就是改寫 Reader 裡處理字型的部份了。
我想寫工具來轉字型應該是比較快的方法,在 AlbiteFontBuilder網頁裡有提到 .xml 的格式,看起來是將字型都顯示在 .png 以後,.xml 則是描述字(glyph)在 .png 裡的位置跟寬高。得到這個以後,應該就可以接著用 AlbiteFontBuilder 做出 .alf 與 .ali 了。
就上getjar上找,就找到了Albite Reader。很高興地下載程式跟epub下來放到手機上,可以執行,但是結果卻都是一堆 ?
這到底怎麼回事,首先我試了軟體的編碼設置功能,沒有用。我懷疑 epub 裡的編碼是big5,而軟體的編碼選項裡卻沒有 big5,所以就上網找了一下,看要怎麼編輯 epub。看到這篇:Edit ePub eBooks with Your Favorite HTML Editor,才知道原來 epub 其實是個 zip 檔案,將副檔名更名為 zip 以後,就可以解開去看了。然後也發現了不錯的編輯工具:sigil。不過都沒有用,epub 裡的編碼是正確的。
那麼問題就出在軟體本身了,幸好軟體有開放原始碼而官方網站也有說明。大致看了官方網站的說明以後,才明白,問題出在字型上。軟體本身沒有包中文字!!!!這就麻煩了。官方網站也有說怎麼製作字型,不過他所使用的 Bitmap font generator 卻沒有支援中文字,因此無法產生出必要的 .png 跟 .xml 檔案,也沒辦法繼續後面的步驟,將 .png, .xml 轉成 .alf, .ali 了。
傷腦筋,看來如果要能用,一個方法就是寫程式去做出 Bitmap font generator 的功能,將字型轉成 .png, .xml,另外一個方法就是改寫 Reader 裡處理字型的部份了。
我想寫工具來轉字型應該是比較快的方法,在 AlbiteFontBuilder網頁裡有提到 .xml 的格式,看起來是將字型都顯示在 .png 以後,.xml 則是描述字(glyph)在 .png 裡的位置跟寬高。得到這個以後,應該就可以接著用 AlbiteFontBuilder 做出 .alf 與 .ali 了。
訂閱:
文章 (Atom)