前回の記事のあとも、Linux Libertineフォントと青キン明朝との合成のバランスをいろいろいじって、今は青キンをEmサイズが1800(ベースライン上が1660、下が140)に変換して合成しています。
ついでに、Linux Biolinumと組み合わせたフォントも作って、こちらも試しているところです。 サンプルは、今回も「ケヴィン・ケリー著作選集 1」です。
で、前回の記事に書いた「フォントサイズを一度大きくして小さくすると、画面の下のほうが一部表示されなくなることがある。でもそこに表示されている前提で次のページは始まるので、結果として一部が読めない。」というのは、より正確には「Linux Libertineフォント、やLinux Biolinumフォントでは、あるフォントサイズおよび行間の設定において、この問題が確実に発生する」ようです。 システム標準のフォントでは今のところ再現するパターンに遭遇していませんが、電子書籍端末でフォントのレンダリングが信用できないのはちょっと嫌な感じ。 幸い、再配布できるフォントと電子書籍で再現できるので、再現手順をまとめてしかるべきところにバグ報告できればと思います。
[追記 2012/07/17] Kobo Touchのファームウェア2.0.0では、「600x750ピクセルに収まるようにリサイズ」が正解で、下記のように600x800で作成すると、若干縮小されて表示されます。下記のスクリプトから、"-gravity south -splice 0x50"の部分を削除すれば、「600x750ピクセルに収まるようにリサイズ」したPDFが得られます。
たださんの「Kindle3向けdot by dotな自炊PDFを(真面目に)作成する」のようなことをやるべく、黒い1ピクセル幅の四角形を書いただけのファイルを大量に作成して、ぴったり表示されるサイズを調査しました。
Kobo Touchのスクリーンサイズは600x800ピクセルなのですが、PDFの表示時に、上は10ピクセルくらい?(意味もなく)空白になって、下は40ピクセルくらい?ページ数表示のために表示されません。 じゃあ、600x750ピクセルに収まるようにリサイズすればいいのかというとそうではなく、なんと「600x750ピクセルに収まるようにリサイズした画像の下に50ピクセルの余白を足して600x800に収まるようにする」が正解。
というわけで、ブクログのパブーから絵本をいくつかダウンロードして変換してみました。 今のところ使っているスクリプトはこんな感じ。
#!/bin/sh in="$1" rm -rf tmp mkdir -p tmp orig pdfimages "$in" tmp/tmp for i in tmp/tmp-*.p?m; do png=`echo $i|sed 's,p.m$,png,'` pdf=`echo $i|sed 's,p.m$,pdf,'` convert -geometry 600x750 -background white \ -gravity south -splice 0x50 -type grayscale \ -depth 4 $i $png && rm -f $i sam2p -j:quiet $png $pdf && rm -f $png done mv "$in" orig/ pdftk tmp/tmp-*.pdf cat output tmp/output.pdf && rm -f tmp/tmp-*.pdf pdftk "orig/$in" dump_data_utf8 | \ pdftk tmp/output.pdf update_info_utf8 - output "$in"
はじめのPDF→画像変換のところは、一般解としては"pdftoppm -r300"とかなのですが、今回は「中身が画像だけのPDF」だと分かっているので、PDFから画像を取り出すコマンドであるpdfimagesを使っています。 たださんがやっているみたいな「自炊スキャンPDFの変換」でも同様にpdfimagesでいいんじゃないかな。
つづいての「600x750ピクセルに収まるようにリサイズした画像の下に50ピクセルの余白を足して600x800に収まるようにする」のところは、おなじみの画像変換の総合商社、ImageMagickのconvertで一発です。"-compress jpeg -quality 90"のところは、入力画像の種類とか、画質へのこだわりとか、ストレージのサイズとかあたりのバランスを考慮してお好みでどうぞ。
できたPDFの表示はこんな感じです。上と下のスペースが必ず空く部分で、左右のスペースはこの絵本がやや縦長だから。 サンプルは、子供Hが大好きなpucchonさんの「小ぐまのきょうだい ケーキをつくる」です。
紙の絵本は、縦長の判型のものでも見開き2ページ全体でデザインされているものが多く、自炊スキャンしてこの手の端末で読むには適さないのですが、その点、最初から電子書籍としてデザインされている絵本はいいですね。
dot-by-dotで表示されるもうひとつの手段としては、Kobo TouchはComic book archive形式をサポートしているので、メタデータの設定とかを考慮しないのであれば、手っ取り早く画像ファイル群をZIP圧縮して、拡張子を.cbzにすることもできます(もしくはRAR圧縮して拡張子を.cbr)。 この場合は、ページ数が良くも悪くも普段は表示されなくなり、600x800ピクセルのスクリーン全面を使えるので、単に600x800ピクセルに収まるようにリサイズすればOKです。 中の画像形式は、スペックによればJPEGかGIFかPNGかBMPかTIFFでよさそうです。
それにしても、こんな加工をしてよりよい表示にできるのは、元の電子書籍が非DRMだからこそです。 より多くの書き手のみなさんが、DRMつきで電子書籍を売ろうとするしょうもない出版社とは縁を切って、ブクログのパブーや達人出版会のような非DRMの出版社を選んでくださることを切に願います。 そして、今後はそういう非DRMの出版社から新しい才能がうまれてきますように。
[2012/01/06 追記] スクリプトを更新。4-bitグレーのロスレス圧縮にして、PDFの作成にsam2pを使用するように変更。
pdfimagesなんてコマンドがあったのか!<br>もっとも、自炊本ばかりじゃなくて、普通にオライリーで買った電子書籍もKindlizeするから、pdfimagesだけに頼るわけにはいかないのでした。
でも自炊本の時は、pdfimagesの方が「PDF->画像」の段階で解像度変換がかからない分、最終の画質がよりくっきりするんじゃないかな。よかったら一度比較してみてください。
うん、ちょうどBOOKSCANからどっさりPDFが届いたから、つかてみるよ!