【LIBRIe】電子書籍専用端末総合5【ワーズギア】
内容としてはUniversal Flasherに含まれるscript.shに以下の1行を足すだけです:
rm -rf /Data/FONT
これを書き加えてUniversal Flasherのメニュー画面で
"3"(Run Script)を押せば実行されます。
その後にファームウェアの書き戻しかハードリセットをすれば
再度フォントの上書きを行えるようになります。
また同内容の修正を施したUniversal Flasherも公開されています。
ttp://vip.yyjoy.com/each/PRS500_Flash/sd_flash_del_fonts.RAR (このほかにもebook.pyというUniversal Flasherと同じ作者が作った
USB接続でReader内のデータを操作できるという非常に便利なツールがあります。
もし興味をもたれたら調べてみてください。要望があれば紹介します)
さて、日本語フォントの生成についてなんですが、これがまた長くなります。
基本的にPRS-500のフォント表示にはアウトラインデータしか使われていないため
埋め込まれているビットマップデータが必要ありません。
というか、私の試した限りではではビットマップデータの埋め込まれたフォントのまま
使おうとすると表示が崩れたり、最悪起動しなくなることもありました。
そのため最低でもビットマップデータはフォントから削除する必要があります。
またLRFの中からはフォント名を指定してフォントが呼び出されるようになっています。
ファイル名 フォント名(Full font name)
tt0003m_.ttf Swis721 BT Roman
tt0011m_.ttf Dutch801 Rm BT Roman
tt0419m_.ttf Courier10 BT Roman
既存のLRFファイルや海外の変換ツールなどで生成されるLRFファイルを
問題なく表示させるためにはTTF内部のフォント名を初期フォントと一致させるよう
変更した方が良いでしょう。
(Swis721 BT Romanにゴシック体フォント、Dutch801 Rm BT Romanに明朝体フォントを
割り当てれば、添付されている電子書籍などを見ても違和感のない表示になると思います)
基本的にはこの二つ(ビットマップ削除・フォント名変更)さえクリアできていれば
表示可能なはずなのですが、フォント処理ソフトによっては結構相性があるようです。
FontForgeやttsdkなどを使っていろいろ試行錯誤しましたがなかなか上手くいかず
(ファイルを開くのに妙に時間のかかるフォントが生成されたりとか)
現在はモナーフォントプロジェクトで配布されているttftinkerというというツールを
利用した方法で落ち着いています。
ttp://sourceforge.net/project/showfiles.php?group_id=55807&package_id=51478 このツールの特徴はTTFファイルを構成するテーブルというデータ単位で
操作ができるコマンドラインアプリケーションであるということです。
そのため初期フォントにある(ビットマップデータなどを含まない)
最低限のテーブルだけを日本語フォントから選んで
初期フォントと同じテーブル順でTTFを生成するということが
コマンドライン上で可能になりました。
初期フォントのテーブル構成に近付けているためか、
この方法で生成したTTFですと前述の問題も見受けられません。
それでは次にWindows環境でttftinkerを使ってIPAモナーフォントを
Sony Reader Readyにする例を紹介します。
作業例:
0. まずPerlをインストールしてttftinkerを準備します
ttftinker-2.90.tar.bz2を解凍したら必要なファイル(計六つのTTFファイル)
はすべてttftinkerのディレクトリにコピーしておきます
1. コマンドプロンプトを開きttftinkerディレクトリに移動します:
cd C:\ttftinker
2. TTFファイルをすべてttfunpackでテーブル
(TTFファイルに収められている個々のデータ)
ごとに切り分けます:
perl ttfunpack ipagp-mona.ttf ipagp-mona
perl ttfunpack ipagui-mona.ttf ipagui-mona
perl ttfunpack ipamp-mona.ttf ipamp-mona
perl ttfunpack tt0003m_.ttf tt0003m_
perl ttfunpack tt0011m_.ttf tt0011m_
perl ttfunpack tt0419m_.ttf tt0419m_
3. 元フォントのnameテーブル
(フォント名などのメタデータが収められたテーブル)
をIPAフォントにnameに上書きします:
copy /y tt0003m_\name ipagp-mona
copy /y tt0011m_\name ipamp-mona
copy /y tt0419m_\name ipagui-mona
4. ttfdirというファイルに元フォントのテーブル順序と
ttftypeが出力されていますのでそれを参考に
IPAフォントのテーブルをttfpackで統合します:
cd ipagp-mona
perl ..\ttfpack 0x00010000 name prep glyf cmap hmtx post loca maxp head hhea OS_s2 > tt0003m_.ttf
cd ..\ipamp-mona
perl ..\ttfpack 0x00010000 name prep glyf cmap hmtx post loca maxp head hhea OS_s2 > tt0011m_.ttf
cd ..\ipagui-mona
perl ..\ttfpack 0x00010000 name prep glyf cmap hmtx post loca maxp head hhea OS_s2 > tt0419m_.ttf
cd ..
ここまでの作業が上手くいっていれば、
ipagp-mona.ttfを元にtt0003m_.ttfが、
ipamp-mona.ttfを元にtt0011m_.ttfが、
ipagui-mona.ttfを元にtt0419m_.ttfが
それぞれ生成されているはずです。
eBook Libraryのファイル表示用フォント
(C:\Program Files\Sony\Reader\Data\fonts以下のTTF)
をバックアップしてから新しく生成したフォントをそこにコピーしてみましょう。
eBook Library上でUTF-8のプレーンテキストや
日本語を含むLRFファイルなどが正常に表示されれば成功です。
一応上記2〜4までの作業をする自動化するバッチスクリプトも書いてみました。
mkprsttf.batとでも名前を付けてttftinkerディレクトリで実行すれば
フォントを生成してくれるはずです。変数を変えれば他のTTFフォントでも使えます。
(書いてから気づきましたが、どうせPerl前提なのなら
無理やりバッチスクリプトで書くんじゃなくてPerlで書いた方が
汎用性があってよかったですね。)
rem ここから
setlocal enabledelayedexpansion
set tt0003m=ipagp-mona.ttf
set tt0011m=ipamp-mona.ttf
set tt0419m=ipagui-mona.ttf
set args=
md tmp
perl ttfunpack tt0003m_.ttf tmp\tt0003m_
perl ttfunpack tt0011m_.ttf tmp\tt0011m_
perl ttfunpack tt0419m_.ttf tmp\tt0419m_
perl ttfunpack %tt0003m% tmp\%tt0003m%
perl ttfunpack %tt0011m% tmp\%tt0011m%
perl ttfunpack %tt0419m% tmp\%tt0419m%
copy /y tmp\tt0003m_\name tmp\%tt0003m%
copy /y tmp\tt0011m_\name tmp\%tt0011m%
copy /y tmp\tt0419m_\name tmp\%tt0419m%
for /f "skip=1" %%i in (tmp\tt0003m_\ttfdir) do ^
for /f %%j in ('findstr %%i tmp\%tt0003m%\ttfdir') do set args=!args! %%j
echo !args! > tmp\mkprsttf.log
pushd tmp\%tt0003m%
perl ..\..\ttfpack 0x00010000 !args! > ..\tt0003m_.ttf
popd
set args=
for /f "skip=1" %%i in (tmp\tt0011m_\ttfdir) do ^
for /f %%j in ('findstr %%i tmp\%tt0011m%\ttfdir') do set args=!args! %%j
echo !args! >> tmp\mkprsttf.log
pushd tmp\%tt0011m%
perl ..\..\ttfpack 0x00010000 !args! > ..\tt0011m_.ttf
popd
set args=
for /f "skip=1" %%i in (tmp\tt0419m_\ttfdir) do ^
for /f %%j in ('findstr %%i tmp\%tt0419m%\ttfdir') do set args=!args! %%j
echo !args! >> tmp\mkprsttf.log
pushd tmp\%tt0419m%
perl ..\..\ttfpack 0x00010000 !args! > ..\tt0419m_.ttf
popd
pushd tmp
for /f %%i in ('dir /ad /b') do rmdir /s /q %%i
popd
rem ここまで
と、ここまで書いたところで上のスクリプトを
素のIPAフォントでも試してみたんですが
出来上がったTTFを上書きしてみると英字の間隔が妙に開いてしまいました。
おそらく文字幅を含むテーブルが初期フォントのそれと違うせいだと思うのですが
追求できていません。
詳しい方がいらっしゃいましたらご指導お願いいたします。
現在のところIPAモナーフォントと某2chAA板標準フォントでは
それなりに満足のいく表示結果を得られることを確認しています。
失敗したら:
さていまさらなんですが、上の方で書いたとおり、
ファームウェアを上書きするというのは本質的にに危険な行為です。
ですが道を切り開いた勇者たちのおかげで救済方法は用意されています。
詳しい方法はこちらを参照していただくとして、
ttp://www.mobileread.com/forums/showpost.php?p=71509&postcount=6 簡単に説明すると公式ファームウェア・アップデーターに含まれる
バージョンの文字列を一つ上げることで、どのバージョンのファームウェアでも
最新の公式ファームウェアに戻すことができる、というものです。
他にもソフトリセット十回押しなどの手法もあるようですが、
この方法とソフトリセット・ハードリセットを組み合わせれば
ファームウェア上書きにともなる起動不能の大半は解消されるでしょう。
先人の知恵に感謝しましょう。
(ありがとうMobileRead!)
以上で解説をいったん終わらせていただきます。
ここまで読んでいただいてありがとうございました。
なにか質問があればお気軽にどうぞ。
ツッコミどころも多々あると思いますので
ご指導ご鞭撻のほどもどうぞよろしくお願いいたします。
長々とスレを占領してすみませんでした。
E-Inkに栄光あれ。