EPUBの縦書きCSSで2桁数字・感嘆符・顔文字を扱うときは、機能説明だけで成功と判断せず、生成XHTMLで各文字列が実際にどう包まれたかを数えます。Rune Studioで二章の専用原稿を出力したところ、12、99、!?、!!は各4件が縦中横用の要素に入りましたが、(^_^)は4件とも入りませんでした。
さらに、非適用を期待したv12の中の12は縦中横用の要素に入りました。これは「期待どおりに自動処理できた」という成功例ではありません。顔文字の未適用と英字隣接数字の適用を見つけたからこそ、入稿前にXHTMLを確認する必要があります。
二章に5種類と4つの統制を置く
確認用原稿は二章に分け、12、99、!?、!!、(^_^)を各4件置きました。比較用として、長い数字2026、英字に続くv12、単独の!、通常の括弧文を各1件置きます。
| 種類 | 原文の件数 | 事前の期待 |
|---|---|---|
12 |
4 | 2桁数字として縦中横 |
99 |
4 | 2桁数字として縦中横 |
!? |
4 | 連続記号として縦中横 |
!! |
4 | 連続記号として縦中横 |
(^_^) |
4 | 顔文字として一まとまりになるか確認 |
2026 |
1 | 4桁全体を2桁扱いしない |
v12 |
1 | 英字に続く数字を巻き込まないか確認 |
単独! |
1 | 2文字の連続記号として扱わない |
| 通常の括弧文 | 1 | 顔文字用の処理を受けない |
ここで「適用候補」と「統制」を分けるのは、処理された件数だけでなく、処理してほしくない文字を巻き込んでいないかを見るためです。原文の場所を控えず合計数だけを見ると、別の12を数えて合格にする危険があります。
CSS、ページ進行、XHTMLを分けて開く
縦書きEPUBでは、少なくとも三つのファイル群を分けて確認します。
- CSSで
writing-mode: vertical-rlと縦中横用のtext-combine-uprightが定義されているかを見る。 - パッケージ文書で
page-progression-direction="rtl"になっているかを見る。 - 各章のXHTMLで、対象文字が
text_combine_horiの要素に入った件数を数える。
vertical-rlは本文の書字方向、rtlはEPUBのページ進行、text-combine-uprightは対象文字を縦中横として扱うCSSです。役割が異なるため、どれか一つがあるだけで残りも正しいとは判断できません。
一般的なEPUBのパッケージ構造はEPUB 3.3で確認できます。Rune Studioの公開資料には縦書き、2桁数字、記号、顔文字の処理範囲が記載されていますが、個別の文字列がどう出力されたかは生成XHTMLの観察結果を優先します。
生成XHTMLで見つかった二つの不一致
専用原稿の出力結果は次のとおりでした。
| 文字列 | text_combine_horiに入った件数 |
観察結果 |
|---|---|---|
12 |
4/4 | 4件とも結合 |
99 |
4/4 | 4件とも結合 |
!? |
4/4 | 4件とも結合 |
!! |
4/4 | 4件とも結合 |
(^_^) |
0/4 | 4件とも結合されなかった |
2026 |
0/1 | 統制どおり未結合 |
v12内の12 |
1/1 | 非適用の期待に反して結合 |
単独! |
0/1 | 統制どおり未結合 |
| 通常の括弧文 | 0/1 | 統制どおり未結合 |
CSSにはvertical-rlとtext-combine-uprightがあり、パッケージ文書にはrtlがありました。つまり縦書き用のCSSと右開き指定は存在します。それでも、顔文字(^_^)は結合されず、v12内の12は結合されました。
この結果を「16件成功、3統制成功」と丸めるのは危険です。タイトルの中心は、2桁数字、感嘆符、顔文字を種類別に扱うことです。顔文字と英字隣接数字で期待との差が出た以上、原稿の表記を見直すか、生成後のXHTMLを修正するか、別の出力方法を選ぶ判断が必要です。
文書化された機能と見た目の確認を混ぜない
今回、専用原稿から測れたのは、XHTMLの要素数、CSSの規則、パッケージ文書のrtlです。対応リーダーでの表示や、文字サイズを変えたときの顔文字・記号の見え方は確認していません。
入稿前は、次の順で自分の原稿を確かめてください。
- 原文にある対象文字列と統制文字列へ番号を振る。
- 生成XHTMLで一件ずつ対応させ、意図しない結合と未結合を記録する。
- CSSの
vertical-rlとtext-combine-upright、パッケージ文書のrtlを別々に確認する。 - 使用するリーダーで文字サイズを変え、実際の見た目を確認する。
ローカル構造検査はvalid=true、欠落画像0件でしたが、これは販売先の受理や全リーダーの表示一致を示すものではありません。右から左へのページ送りも画面では未確認です。
自動処理の結果は適用と非適用の両側から見る
今回の二章では、12、99、!?、!!は各4件が結合されました。一方で、(^_^)は結合されず、v12内の12は結合されました。この不一致は失敗を隠す数字ではなく、生成XHTMLを点検して入稿可否を決めるための重要な判断材料です。
まず自分の原稿から、結合したい文字と結合したくない文字を一つずつ選んでください。Rune Studioの現行Mac版を候補にする場合は、詳しくはこちらで機能範囲を確認し、生成XHTMLと使用予定のリーダーで結果を確かめてから入稿します。