好讀首頁 世紀百強 | 隨身智囊 | 歷史煙雲 | 武俠小說 | 懸疑小說
言情小說 | 奇幻小說 | 小說園地 | 有聲書  | 更新預告

好讀製書程式 mPDB 2.2 周劍輝

免費 mPDB22.zip [下載] 2010/7/2 (436K) 2010/7/7

1) 請先在PC或隨身碟上建一個 mPDB 目錄。
2) 將下載的 mPDB22.zip 解壓縮至 mPDB 目錄。
3) 解出的檔案只有兩個:mPDB.exe 及 錯別字.txt。
4) mPDB.exe 立馬可用,沒有其他囉唆的安裝程式。

mPDB 2.2 主要新增功能:使用 Unicode

  • mPDB 2.1 使用Big5碼,輸入Unicode會變成?,本版不會。
  • 任何語系的Windows都能使用本版。
  • 修改了設定檔的使用介面。
  • 若您熟悉2.1版,使用本版很容易,這裡不再重複說明。
  • 新手請先參看mPDB 2.1的說明。
  • 原PDB檔是使用Big5碼,本版新增uPDB檔,是使用Unicode規格。
  • [轉成PDB檔]預設是uPDB檔,您也可選擇產生PDB檔。
  • 本版可讀PDB及uPDB檔。
  • 使用本版擷取出的文字檔是Unicode規格。

過渡期的痛苦

  • mPDB 2.2 產生的uPDB檔,目前只有mPDB 2.2能顯示。
  • 若您製作的書是純Big5碼,仍可以使用mPDB 2.1製作。
  • 若您製作的書含Unicode,最好使用mPDB 2.2製作,才不會缺字。
  • 目前幾乎所有的作業系統都支援Unicode,好讀網站的新書更新,2010/7/1起,都會使用本版產生的PDB檔及uPDB檔。
  • 當本版穩定後,會先改寫好讀網頁版及PC版,讀uPDB檔。
  • 當全面Unicode化之後,唯一的痛苦是Palm機種,因不支援Unicode,將無法閱讀uPDB檔。目前還想不出較好的解決方法,屆時再說吧。

新版 uPDB (Unicode) 及 PDB (Big5) 檔規格

機子及作業系統越來越多,我不可能逐一撰寫閱讀軟體,因而特將uPDB及PDB檔詳細規格公布如下,方便有興趣、有時間、能寫程式的讀友,為新機種撰寫閱讀軟體。
  1. PDB是源自Palm作業系統的一個單一檔案,簡易資料庫。
  2. 每一個PDB檔含N筆不定長度的資料(record)。
  3. PDB檔最前面當然要有個Header,定義本資料庫的特性。
  4. 因資料長度非固定,無法計算位置。所以Header之後,是各筆資料所在的位置,可以用來讀資料及計算每筆資料的長度。
  5. 之後,就是一筆一筆的資料,沒什麼大學問可言。

  6. 檔案的前78個bytes,是Header[0..77]:
    • Header[0..34]舊版是放書名,新版是放作者。可以不理。
    • Header[35]是2,舊版是1。可以不理。
    • Header[36..43]是為Palm而加的兩個日期,可以不理。
    • Header[44..59]都是0。可以不理。
    • Header[60..63]是"BOOK"。可以不理。
    • Header[64..67]是判別的關鍵,PDB是"MTIT",uPDB是"MTIU"。
    • Header[68..75]都是0。可以不理。
    • Header[76..77]是record數 = N (章數) 加2 (目錄及書籤)。

  7. 每筆資料的起始位置及屬性,依Palm的規格是8個bytes,前4個bytes是位置,後4個bytes是0。一共有 (N+2) * 8 bytes。

  8. 第一筆資料定義書的屬性,是8個空白字元、書名、章數及目錄:
    • (PDB檔)
      8個空白btyes,可以不理;
      之後接書名是Big5碼,後接三個ESC(即27);
      之後接章數(ASCII string),後接一個ESC;
      之後接目錄,各章之標題是以ESC分隔。
    • (uPDB檔)
      8個空白btyes,可以不理;
      之後接書名是Unicode碼,後接三個ESC(即27,0);
      之後接章數(ASCII string),後接一個ESC (27, 0);
      之後接目錄,各章之標題是以CR(13,0) NL(10,0) 分隔。

  9. 再來是N筆資料,每筆是一章的內容,PDB檔是Big5碼(是null-terminated string,最後一個byte是0),uPDB檔是Unicode碼。

  10. 第N+2筆資料是書籤,預設是-1。可以不理。

撰寫好讀閱讀軟體

因為一次只顯示一章,我是自updb/pdb檔抓該章排版。仔細說是:
  1. 將第n章內容讀入一個string (我是用C)。
  2. 計算共有幾頁,儲存每頁的第一個字的位置 (瞬間計算)。
  3. 要顯示第k頁,則從該頁的第一個字開始排到該頁的最後一個字。
  4. 全部是即時計算,即使使用Palm速度也快到沒感覺。
段落之間有個空白分行,排版時我是減半空白行的寬度,比較好看。網頁版較難處理,只好暫時 (很久了),先將空白分行拿掉。實體書多半無空白分行,省紙張,螢幕排版則多加半行,不致密密麻麻,眼睛比較舒適。



Windows 7 英文版上的含日文及簡體中文的預覽示範畫面

好讀首頁 有關好讀 讀友需知 聯絡好讀

搜尋好讀
好讀專欄
黃河渡
薛中鼎專欄
丁智原專欄
喻琳食譜
牛哥/費蒙專欄
孟絲作品選
王華容專欄
伏羲氏專欄
龍行者專欄
五四咖啡俱樂部
趙之楚專欄
小小米詩畫
廖玉燕專欄
算術人生
雷洵專欄
秋陽專欄
好讀服務
好讀使用說明
好讀閱讀軟體
好讀製書程式
好讀 epub 檔
好讀 prc/mobi 檔
Kindle 2/DX中文化
好讀感言
好讀想法
電子書怎來的
怎樣看待簡體字
好讀我的最愛圖示
專欄作家需知
徵求掃描檔
聯絡好讀
最新消息
5/29 調整線上閱讀字距
5/26 修改下載介面
2/6 線上閱讀支援5碼中文
>> 更多