右開きを逆にしない!EPUBのふりがな、縦書きプレビュー・EPUB出力での表示確認

epub ふりがなを縦書きで確認するときは、構造と見た目を二つの合否に分けます。今回の合成標本では、CSSのvertical-rl、spineのrtl、rubyとrt各1件、縦中横2件を出力から確認しました。さらにRuneの縦書きプレビューとKindle Previewer 3のTabletモードを実表示し、ルビ、12と!?の向き、ページ送りを観測しました。これは一つの標本と二つの表示環境に限る結果です。

最初に二つの合格欄を作る

一つ目はEPUB内部の構造欄です。書字方向、ページ進行、rubyとrtの対応、目次参照、欠落資源を記録します。二つ目は視覚欄で、ルビの位置、文字の回転、縦中横、禁則、ページ送りを対象リーダーごとに確認します。

構造が正しくても、利用するフォントやリーダーの実装によってルビが詰まることがあります。反対に一台のプレビューで整って見えても、rubyの対応関係が壊れていれば再利用性は低くなります。二欄を一つの「見た目OK」へまとめないことが出発点です。

ふりがなの原文を先に読む

ルビは親文字と読みの組です。親文字の範囲が長すぎると、縦書きで読みの対応が分かりにくくなります。固有名詞、初出語、難読語など本当に必要な箇所を選び、本文の読みやすさを優先します。

検証用の本文には漢字へかんじという一組のふりがなを入れました。出力後のXHTMLには<ruby>漢字<rt>かんじ</rt></ruby>が1件あります。Runeの縦書きプレビューでも、親文字の脇に小さなかんじが表示されることを目視しました。長い固有名詞や複数ルビの密集まではこの一件から判断しません。

縦書き出力に必要な方向を分ける

縦書きの行方向と、ページを送る方向は別の情報です。CSSのwriting-mode: vertical-rlは縦の行組みを示し、OPF spineのpage-progression-direction="rtl"は右から左へ進むページ順を示します。片方だけを見て「右開き」と判断しません。

今回の合成EPUBでは両方を直接読みました。OPFのpage-progression-direction="rtl"は1件、CSSを含むwriting-mode: vertical-rlの検出は3件です。XHTMLには縦中横用のtext_combine_horiが2件あり、対象文字列は12と!?でした。

一つの標本で構造と表示を対応させた

標本はH1、ルビ一組、半角数字12、半角約物!?、通常の日本語文だけに絞り、ユーザー原稿は使っていません。出力時に縦書きと日本語を明示し、構造検査、Rune preview、EPUB Readerの三つで同じ要素を追いました。

パッケージを開くと、OPFのページ進行はrtl、CSSにはvertical-rlがありました。本文XHTMLのrubyとrtは各1件、縦中横classは2件です。これらの値は保存された生成物から再取得し、画面観測とは別のJSONへ記録しました。

右開きはspineで判定する

目次の文字が縦に見えるかどうかだけでは、ページ送りの向きを決められません。spineの方向がrtlであることを読み、本文の並びが章1、章2、章3を保つか確認します。ここで逆なら、ルビを直す前に書字方向の設定へ戻ります。

今回の標本は構造上rtlでした。Kindle Previewer 3のTabletモードではlocation 4/8から左側のページ矢印を押すと6/8へ進み、右側の矢印を押すと4/8へ戻りました。右開きのページ進行を実操作で確認した結果です。ただし、タッチ端末の指スワイプや他Readerの挙動まで実測した結果ではありません。

rubyの件数だけで終わらない

一件という数が合っていても、親文字と読みが入れ替われば誤りです。実原稿では、XHTMLの各ruby内にある本文とrtを照合し、原稿の承認済み表記と比較します。件数、内容、出現順の三つを別々に見ます。

長い固有名詞では、どこまでを一組にするかが視覚結果へ影響します。構造を直す場合は一件だけ変更し、再出力したEPUBでruby数と内容を読み直します。縦書きCSSやページ方向を同時に変更しないほうが、原因を追いやすくなります。

プレビューで確かめたものと未確認範囲

保存したRune previewでは、縦の列が右から左へ並び、漢字の脇にかんじが付き、12と!?が横倒しにならずまとまって立つことを目視しました。Kindle Previewer 3でも縦書き本文をlocation 4/8で開き、左右矢印の移動前後を画像で保存しています。構造値からの推測ではなく、同じ合成標本の画面観測です。

未確認なのは、長いルビが連続する段落、行頭禁則の網羅、異なるフォントサイズ、物理端末の指スワイプ、他社Readerです。今回の画面だけで「すべての縦書き組版に合格」とはしません。配信先ごとに同じ語と同じ文字サイズを開き、別の観測欄へ追加します。

リーダー別の確認へ進む順番

まずRuneのプレビューでルビ、数字、約物を確認し、次に出力EPUBを利用予定のReaderへ渡します。各環境で同じ語、同じ文字サイズ、同じページ移動を試せば、差を記録しやすくなります。販売先の受理試験はさらに別の工程です。

見た目に問題があれば、rubyの内容、CSS、spine方向のどの層に原因があるかを切り分けます。全設定を一度に変えると、直った理由が分からなくなります。

今回の結論は、構造合格と、Rune previewおよびKindle Previewer 3 Tabletモードでの限定的な表示合格です。

このEPUBは、縦書き方向、rtlのspine、ruby/rt各1件、縦中横2件という構造条件を満たしました。Rune previewではルビと縦中横、Kindle Previewer 3では縦書き本文と左矢印での4/8→6/8、右矢印での6/8→4/8を再確認できます。

一方で、物理端末と他Readerは未合格欄として残します。構造、Rune preview、Kindle Previewerの結果を混ぜず、配信先ごとの追加試験へ進めてください。この順番なら、右開きの設定とふりがなの表示を混同せずに仕上げられます。