2010年7月20日火曜日

Kindle DX Graphite 日本語ハック スクリプトを読む


このエントリーをはてなブックマークに追加



*Kindle DX Graphite 2.5.5の日本語のハックの方法はこちら
 →Kindle DX Graphite (2.5.5) 日本語ハック 成功


勢い余って購入済みの英辞郎をそのままにしておくのも悔しいので、

http://wiki.mobileread.com/wiki/Kindle_Font_Hack_for_all_2.5.x_Kindles

のフォントハックのスクリプトをちゃんと読んでみる。

kindle-2.5-fonts-3.5.N.zip を解凍すると、
kindle-2.5-fonts-3.5.N/src にソースが入っており、付属のperlスクリプトでインストールバイナリ化できる。

install.sh
まず最初に呼ばれるのは、 kindle-2.5-fonts-3.5.N/src/install.sh っぽい。
この中では同一階層の linkfonts-init を、/etc/init.d へコピーし、
それぞれのランレベルの起動スクリプトにリンクしているだけ。

この起動スクリプトが配置されることで、Kindle起動時に毎回 linkfonts-init が呼び出されることになる。

linkfonts-init
linkfonts-initの中では、Kindle起動時に、


LINKFONTS_EMERGENCY="/mnt/us/linkfonts/bin/emergency.sh"

ファイルが存在すれば実行する(emergency.sh は 解凍した中には入っていないのでどんなものか不明
後、 /mnt/us/linkfonts/ ってのは、USBでルートにコピーしたフォントフォルダの事(たぶん

次に、
LINKFONTS_ENABLE="/mnt/us/linkfonts/auto"
LINKFONTS_SCRIPT="/mnt/us/linkfonts/bin/linkfonts"

が存在すれば、"/mnt/us/linkfonts/bin/linkfonts" を実行する。

linkfonts
この実行される、linkfonts なるスクリプトの動作は以下、

まず、linkfonts ディレクトリに空のbackup というファイルがあると、既存のファイルをバックアップする。


    cp -f /usr/java/lib/font.properties ${LINKFONTS_BASEDIR}/backups/font.properties
    cp -f /opt/amazon/ebook/config/netfront.ini ${LINKFONTS_BASEDIR}/backups/netfront.ini
    cp -f /usr/java/lib/fonts/* ${LINKFONTS_BASEDIR}/backups/
    cp -f /etc/prettyversion.txt ${LINKFONTS_BASEDIR}/backups/prettyversion.txt

この空ファイルは解凍したファイルに入っているので、初回再起動時に必ず実行される。

次に、"/mnt/us/linkfonts/fonts" の中を調べて、空だったら終了。
さらに、フォルダの内部を詳しく調べて、
Serif_Regular.ttf
Serif_Bold.ttf
Serif_Italic.ttf
Serif_BoldItalic.ttf
Sans_Regular.ttf
Sans_Bold.ttf
Sans_Italic.ttf
Sans_BoldItalic.ttf
Mono_Regular.ttf
Mono_Bold.ttf
Mono_Italic.ttf

Mono_BoldItalic.ttf
Kindle_Symbol.ttf
Kindle_MonospacedSymbol.ttf

上記の一個でも欠けていれば終了する。

次がよくわからんけど、watchdogを再起動しているっぽい。

そして最後に、

        mount --bind ${LINKFONTS_BASEDIR}/bin/font.properties /usr/java/lib/font.properties
        mount --bind ${LINKFONTS_BASEDIR}/bin/netfront.ini /opt/amazon/ebook/config/netfront.ini
        mount --bind ${LINKFONTS_BASEDIR}/fonts /usr/java/lib/fonts

で、配置したフォントと設定ファイルを、現行のモノに上書きマウントしている。

なので、 font.properties netfront.ini に適切な設定を書いて、
fonts に フォントファイルを配置してやればいいみたいだ。

と、ここまで来て思ったのが、結局フォントファイルを用意しないと行けないという事とと、呪文みたいなfont.propertiesを読まない行けないという事だった。。。
(Xのフォント設定すらまともにできないのに・・・javaのフォント設定とか何の罰ゲームw)


unlinkfonts
Kindleを再起動するときの、終了処理にfontlink-initから、unlinkkfontsが呼ばれる。
やってることは、linkfontsの逆。

0 件のコメント:

コメントを投稿