日本語練習虫

旧はてなダイアリー「日本語練習中」〈http://d.hatena.ne.jp/uakira/〉のデータを引き継ぎ、書き足しています。

行長よりも長い親文字列のルビ

HTML5(とCSS3)における縦書きやルビの仕様を見直しより良いものにしようという最近の努力がpublic-html-ig-jp@w3.orgに積み上げられているのを拝読して、深い敬意を覚えた。とりわけ、「Re: ルビ問題の妥協点を探る」の前後に刺激を受け、次のような実験を試みることにした。

実験は、「日本の神話時代の終わりに登場する神に、ウガヤフキアエズノミコトがいる。初代天皇神武の父であり、古事記では天津日高日子波限建鵜葺草葺不合命日本書紀では彦波瀲武鸕鶿草葺不合尊と書かれている。」という例文に出てくる神の名にルビを振る、というもの。ただし以下の実験では都合により0208外字の「鸕鶿」を「〓〓」に置き換えている。

さて、実は私、決して日本神話について詳しいわけではない。それどころか、一般的な知識も持ち合わせていない。上記の例文は、Wikipediaの記述をもとに作文したものだ。

そんな人物がこの神の名にルビを振ろうとすると、グループルビになるだろう。親文字列全体を一つの塊として考え、その全体に対して、一つの塊としてのルビ文字列を宛てるというやりかただ。

XHTML 1.1だと、次のようなマーク付けになる。

<p>日本の神話時代の終わりに登場する神に、ウガヤフキアエズノミコトがいる。初代天皇神武の父であり、古事記では<ruby><rb>天津日高日子波限建鵜葺草葺不合命</rb><rt>アマツヒタカヒコナギサタケウガヤフキアヘズノミコト</rt></ruby>、日本書紀では<ruby><rb>彦波瀲武〓〓草葺不合尊</rb><rt>ヒコナギサタケウガヤフキアヘズノミコト</rt></ruby>と書かれている。</p>

親文字列全体を1つのrb(ルビベース=親文字列)要素とし、ルビ文字列全体を1つのrt(ルビテキスト)要素とするわけである。


さて、私は、ウェブの文章はリキッドレイアウトで読まれることを覚悟もしくは歓迎すべきと考えている。つまり、狭い画面で読んでも広い画面で読んでもよい自由や、広めの画面にデフォルトサイズの文字で読んでも大きな文字にして読んでもよい自由を、読み手が選べることを、一人の読み手としても書き手としても求めたい。

というわけで、上の例文を、iPhoneその他の表示エリアが比較的狭い端末で眺めることを考えてみよう。ここでは、Microsoft Internet Explorer 8 (以下MSIE)、Mozzila Firefox 3.6.3 + HTML Ruby 5.13.2アドオン(以下Firefox)、Voyager T-Time 5. 5 (以下T-Time)にてウインドウ幅を狭めて文字サイズ24ポイントとすることで、「表示領域が狭い端末でレンダリングした場合」のことを再現してみることにした。これは実は「読みやすくするために表示領域が広い端末で大活字化する」という状態でもある。

今回の実験テーマである「行長よりも長い親文字列のルビ」の扱いについて参考とするため、まずはMicrosoft Office Word 2003で上記条件のルビを振ってみよう。

古事記の方の神名が、版面どころか紙面を越えて「改行なし」で表示される。表示されるというか、末尾が切れてしまう。
おそらくこれは、JIS X 4051-1995「日本語文書の行組版方法」が3.8 (5)として「親文字群は,複数行に分割してはならず,3.15の調整対象とはしない。」と規定しているのを文字通りに実行した結果と想像される。私の見落としでなければ、JIS X 4051は、親文字列が行長を超える状況を想定していないようだ。

さて、これをMSIEで表示してみよう。

やはり、親文字列は改行されない。では、Firefoxはどうか。

おそらくrubyをHTMLの表(table)に翻訳して処理しているのだろう。各表の幅を「最大で版面と同じ」に設定し、行長よりも長い親文字列(ルビ文字列)については「表のコマ中で折り返す」表示になっている。

一般的なウェブブラウザではないが、T-Timeでこれを見てみよう。

これらの表示結果を比べてみることで、縦書きと横書きの違いは別として、行の連なりのリズムが大きく違わないということが「読み」のリズムを心地よく支えてくれるのだと分かる。

T-Timeの表示が万全だと考えているわけではなく、親文字列が複数行に及ぶ場合、できれば、親文字列の開始部分と末尾部分がルビ文字の存在によって明示されてくれれば嬉しいんじゃないかと思う。

ともあれ、リキッドレイアウトというウェブの特性に対応するような、表示規則があってもいいのではないだろうか。

例えば、
ruby-linebreak:none (当該ruby要素について改行を認めない)

ruby-linebreak:allow (当該ruby要素について改行を許す)

――といった感じのプロパティがCSS3に欲しいと、私は思った。無指定を含めたデフォルトは、JIS X 4051 -1995の規定に関らず、allowが良いと思う。

「行長よりも長い親文字列のルビ」の処理方法について、できるだけ多くの、読み手の方々のご意見、書き手の方々のご意見、また、紙やウェブの組版を手がけておいでの方々や、電子書籍の表示エンジンを手がけておいでの方々のご意見を頂戴したいと思います。twitterの @uakira2 、または下記コメント欄にて、よろしくお願いします。