Kindle 來我家

做功課

是這樣的,某天在 IRC 上看到某長輩發言 “j5g: Hmm….有點想買 Kindle DX”,小宇宙就有了光,開始上網搜尋 Kindle 相關資訊,經過 Amazon, Wikipedia, Mobile01, MobileRead 無情的生火之後,終於爆炸了啦啦啦!首先是 Kindle DX 的規格

嗯.. 作業系統是 Linux!有門!趕緊再搜尋一下,的確已經有許許多多成功 Hack Kindle 的案例,其容易的程度,說他是 Hackable Device 也不為過。

開箱

折騰了兩週,訂購的 Kindle DXG 終於在生日當天送達!小小開箱慶祝一下:

開箱之後就是充電,開始把各種不同的文件丟進去測試。這個版本的 Firmware (2.5.5) 對於 PDF 的支援其實已經不錯了,會自動裁掉多餘的留白,內嵌字型也都正常顯示,是一開始閱讀中文的方案之一。測試各種檔案之後發現只有一種不太適合放上來看,就是字很多的雙欄格式論文,因為顯示全頁會顯的字太小,偏偏 150 ppi 的解析度看不太清楚,若是放大瀏覽的話,雙欄論文的走向會需要來回拖拉,而拖拉正是目前 E-Ink® 的弱點…

除此之外,在 Kindle 上面閱讀是非常好的體驗,E-Ink® 的特性可以讓人真的進入閱讀的情境之中,內建的 Text-To-Speech 質量非常好,就有如真人在幫你朗讀一樣,新版的 Firmware 還新增了 Collection 的功能,解決 Kindle 以前一直為人詬病的無法分類電子書的問題,Kindle 3 的新 3.0 Firmware 還有直接支援多國語言,內建 Webkit 瀏覽器等。

中文

最早是把中文檔案做成 PDF 後再放進去瀏覽,但是 PDF 沒有章節不能做註解不能改變字型大小,就是有那麼一點不方便,如果可以直接看中文電子書多好?一不做二不休參考 MobileRead 論壇上的 Font Hack,先 JB 後安裝字型,之後就可以開始看中文電子書了!

不過因為系統一次只用一種字型,沒有 Fontconfig 的取代機制,所以若是把字型全部直接換為 Droid Sans Fallback,那所有的 Sans, Serif, Mono 通通變得一樣醜… 這時把 FontForge 拿出來,寫個 Script 把原本的 Kindle 字型和 Droid Sans Fallback 合併,就可以保留美觀的英文字跟還可以的中文。

    # merge-fonts.pe
    # Usage:
    # Put the Chinese fonts under ch/ and original fonts under en/
    # Run: fontforge -script merge-fonts.pe
    #
    # Pre-operation for some non-standard Chinese font file
    Open("ch/Droid_Sans_Fallback.ttf")
    SelectAll()
    ScaleToEm(1024)
    Generate("temp.ttf", "", 0x14)
    Close()
     
    # Open English font and merge to the Chinese font
    Open("en/Helvetica_LT_65_Medium.ttf")
    SelectAll()
    ScaleToEm(1024)
     
    MergeFonts("temp.ttf")
    Generate("Sans_Regular.ttf", "", 0x14)
    Close()
    # Add more fonts below

不過這樣處理過的字型是不能散佈的,自己使用就好囉 ;-)

現在可以到古騰堡計劃下載電子書,或是把好讀網的 PDB 格式利用 Calibre 轉成 Mobi 檔案給 Kindle 用。當然若是有出版商販賣 .epub 格式或是其他可以轉檔的電子書,也都可以在 Kindle 上面瀏覽了 :)

閱讀之餘

如最前面所說,Kindle 可以不只是電子書,還是台 Hackable 的玩意。諸如用 RS232 連線,安裝自己的程式甚至是 Ubuntu 都有人做過了,哪一天 Amazon 真的不再提供軟體升級的時候,我知道我的 Kindle 還是可以繼續帶來不一樣的樂趣 :)

從 Amazon 取得 Kindle 的 GPL 源始碼,搭配 Firmware Update 的檔案內容,可以發現 Kindle 是相當傳統的 Linux 環境加上 Java 寫的系統程式,因此只要拿到 shell 之後 (無論是透過為裝的 Firmware Update 或是直接拉線開 serial port,或是開 USB Network),就可以作很多有趣的事 :)

       0 ./gplrelease/
     368 ./gplrelease/alsa-lib-1.0.13_patch.tar.gz
     544 ./gplrelease/alsa-utils-1.0.13_patch.tar.gz
     946 ./gplrelease/e2fsprogs-1.38_patch.tar.gz
    1529 ./gplrelease/procps-3.2.7_patch.tar.gz
    2131 ./gplrelease/module-init-tools-3.2.2_patch.tar.gz
    3996 ./gplrelease/base-files-3.0.14.ipk
   20480 ./gplrelease/fuse-2.7.1_link.tar
   41295 ./gplrelease/picocom-1.4.tar.gz
   44398 ./gplrelease/hotplug-2004_09_20.tar.gz
   46222 ./gplrelease/base-passwd_3.5.9.tar.gz
   55813 ./gplrelease/dosfstools-2.11.tar.bz2
   72842 ./gplrelease/powertop-1.10.tar.gz
   80630 ./gplrelease/bonnie++-1.03c.tgz
   99009 ./gplrelease/sysvinit-2.86.tar.gz
  169182 ./gplrelease/module-init-tools-3.2.2.tar.bz2
  173558 ./gplrelease/iptables-1.3.3.tar.bz2
  194250 ./gplrelease/udev-112.tar.bz2
  222558 ./gplrelease/bootchart-0.9.tar.bz2
  280041 ./gplrelease/mtd-utils-1.0.0.tar.gz
  280938 ./gplrelease/lrzsz-0.12.20.tar.gz
  281965 ./gplrelease/procps-3.2.7.tar.gz
  345794 ./gplrelease/libol-0.3.18.tar.gz
  375416 ./gplrelease/ifupdown_0.6.8.tar.gz
  426692 ./gplrelease/lzo-1.08.tar.gz
  506312 ./gplrelease/fuse-2.7.1.tar.gz
  607442 ./gplrelease/taglib-1.5.tar.bz2
  649399 ./gplrelease/klibc-1.5.tar.bz2
  709862 ./gplrelease/alsa-lib-1.0.13.tar.bz2
  712166 ./gplrelease/syslog-ng-1.6.11.tar.gz
  961662 ./gplrelease/readline-4.3.tar.gz
  980874 ./gplrelease/alsa-utils-1.0.13.tar.bz2
 1195099 ./gplrelease/gst-plugins-base-0.10.6.tar.bz2
 1370907 ./gplrelease/util-linux-2.12r.tar.bz2
 1735498 ./gplrelease/busybox-1.7.2.tar.bz2
 1849092 ./gplrelease/gst-plugins-base-0.10.17.tar.bz2
 2167909 ./gplrelease/gstreamer-0.10.17.tar.bz2
 2902738 ./gplrelease/glib-2.12.9.tar.bz2
 3621193 ./gplrelease/e2fsprogs-1.38.tar.gz
 6969637 ./gplrelease/uboot-1.3.0-rc3.tar.bz2
13080365 ./gplrelease/binutils-2.17.50.0.5.tar.bz2
15321839 ./gplrelease/glibc-2.5.tar.bz2
39707720 ./gplrelease/gcc-4.1.2.tar.bz2
47285020 ./gplrelease/linux-2.6.22-lab126.tar.bz2

Happy Hacking!

Update

有網友提到有個名為“多看”的自製系統,可以安裝在 Kindle 上和原本系統共存。此自製系統整明了要以 Kindle 硬體為底打造自己的電子書系統是可行的,還支援了中文輸入、直接閱讀 ePub 等,社群討論也很踴躍。但是 此系統內許多元件來自 GPL/LGPL 授權的自由軟體,卻沒有提供相關的原始碼,此為不正確的示範,希望該團隊不要再自欺欺人…

版权说明:
  Copyright 2010 DuoKan & www.duokan.com. All Rights Resevered
  版权所有 DuoKan & www.duokan.com。
  本软件由 DuoKan Dev Team 开发。
  多看软件系统未经许可不得商业贩卖。作者对有商业贩卖行为的单位和个人保留追究其法
  律责任的权利。

等到哪天被追究才後悔莫及呀…