(失敗例)縦書きePub電子書籍を”涅槃”で作ったが、1ページ目しか表示されない

ePubで縦書きを実現しているページがあったので、私もチャレンジしてみました。
以下のページを参考にしました。

びば!もばいる!(+サーバ達)- ルビにCSS、縦書きにJavaScriptでやってみよう(ePub+iBooksでJavaScriptが動いた!)

【実験】「涅槃」を使って、EPUBファイルを縦組みで表示できるか? ≪ ECollab Ltd.

結果は、1ページ目しか表示されず、一部のルビもずれてしまいました。
・画像1にあるように、行の最初に現れるルビは正しい位置なのですが、
行内の2番目に現れるルビは、下にずれてしまっています。
・ページ末尾の”髯貯えぬ丸顔”のあとに”を傾けて「描けども、描けども”
と続くはずですが、ここで表示が終わっています。
画面下のページ番号も、2までしかありません。




ファイルを、 http://bit.ly/bSo2la にアップロードしてみました。

ベースにしたのは、青空文庫のファイルを「青空文庫 (XHTML) -> ePub変換 Bookmarklet
で、明朝体ルビありで変換したファイルです。
夏目漱石の「一夜」を使いました。http://www.aozora.gr.jp/cards/000148/card1086.html

縦書きのキモは、縦書き文庫さんの「涅槃」というJavaScriptです。
https://code.google.com/p/nehan/にあります。

縦書きにしたePubファイル内の構成は以下の通りです。
~/mimetype
~/META-INF/container.xml
~/1086_14935.opf
~/1086_14935.ncx
~/OEBPS/1086_14935.html
~/OEBPS/default.css
~/OEBPS/css/kentenbosen/after/sen/*.png (縦書き用記号のpng画像ファイル)
~/OEBPS/css/kentenbosen/after/ten/*.png (縦書き用記号のpng画像ファイル)
~/OEBPS/images/*.png (表示できない文字のpng画像ファイル)
~/OEBPS/img/*.gif (涅槃用のgif画像ファイル)(今回追加)
~/OEBPS/js/nehan.js (涅槃のJavaScript)(今回追加)
~/OEBPS/js/nehan-min.js (涅槃のJavaScript)(今回追加)
~/OEBPS/js/plugins.js (涅槃のJavaScript)(今回追加)

手順は以下の通りです。

(1)*.epubファイルの拡張子をzipにして展開
(2)涅槃のファイルを上記のように配置
(3)~/1086_14935.opf に、今回追加した画像ファイルとJavaScriptを追記。

<item id=”dash.gif” href=”OEBPS/img/dash.gif” media-type=”image/gif” />
<item id=”nehan.js” href=”OEBPS/js/nehan.js” media-type=”text/javascript” />

(4)~/OEBBPS/1086_14935.html を編集。
</head> の直前に、以下のコードを追加。
・1つめのスクリプトのnehan.js の位置を、htmlファイルから見た相対パスに変更。
・2つめのスクリプトのcharImgRoot を、htmlファイルから見た相対パスに変更。
・フォント名に日本語が入っていると何も表示されなかったので、sans-serifに変更

<script charset=”utf-8″ type=”text/javascript”

src=”./js/nehan.js”></script>

<script type=”text/javascript”>

window.onload = function(){

Nehan.LayoutMapper.start(“div”, {

charImgRoot:”./img”,

fontFamily:”sans-serif”,

filter:”direction”,

noBR: false,

onSeek: function(groupName, seekPercent){ },

onComplete: function(groupName){ },

onCompleteAll: function(){ }

});

};

</script>

(5)<body>タグの直後から、以下のdivタグでくくる。

<div class=”lp-vertical lp-width-450 lp-height-730 lp-font-size-16″>

(6)iTunes経由でiPadに転送し、iBooksで開く。


びば!もばいる!さんのページでは複数ページ表示されているので、
何かファイルか設定が抜けているような気がしています。
また時間を見つけて再チャレンジしてみようと思います。

6/29追記:
びば!もばいる! の hilock702 さんが、ePubs.jp で
縦書きePubファイルを公開してくださいました。
http://bit.ly/bOxD6N

課題も多いですが、縦で読めるのはいわゆる「衝撃」です。

You can leave a response, or trackback from your own site.

3 Responses to “(失敗例)縦書きePub電子書籍を”涅槃”で作ったが、1ページ目しか表示されない”

  1. y_muromachi より:

    EPUBにJavaScriptを組み込む件ですが、現段階では、ビューアによって挙動がかなり異なるように思います。そして、同じiBooksでも、iPadとiPhoneとで違うような……。

    例えば、Liza Dalyさんが、JavaScriptを組み込んだEPUBを作成し、iPad版のiBooksで表示したところ、吹き出しを表示させることに成功しています。

    http://blog.threepress.org/2010/06/24/javascript-and-interactivity-in-ibooks/

    このWebページ内にサンプルのEPUBファイルがあったので、それをダウンロードしてiPhone版のiBooksに取り込み、表示させてみたところ、JavaScriptの組み込まれた部分が全然動作しませんでした。同じWebKitのはずなのに、なぜ挙動が異なるのか、よくわかりませんでした(JavaScriptの処理エンジンの違い?)。

  2. y_muromachi より:

    そういえば、もうご存じかもしれませんが、iPhone版iBooksは、ルビ表示がダメです。

    具体的には、ePub.jpさんの萩原朔太郎著『詩の原理』をiPhone版iBooksに読み込ませたところ、表示に時間がかかるうえ、ルビもずれまくっていました。

    http://twitpic.com/1zpivf

    iPhone版iBooksはいまいちですね。

  3. okano より:

    さらなる情報ありがとうございます!
    規格としてはJavaScriptはサポートされていないようなので、
    「せめてメジャーな2,3のビューアで表示されれば・・・」と思ったのですが、
    ビューア間でも違うようですね。

    ルビを元の漢字の真上に表示するのは、JavaScriptで位置決めする場合は
    本文と文字のサイズをJavaScript側で調べるのが困難なのかと考えています。

    ルビや縦書きを規格に取り込んでもらって、
    ビューアでも正式に実装してもらいたいものです(^_^;)

Leave a Reply