HTML5とCSS3のルビの件、4/14から、まだまだ考え中。
前回(4/15)悩んだ「HTML5のruby要素内に複数のrtに分ける形式」について、twitterで @MurakamiShinyu さんから、
- HTML5のruby要素内に複数のrtに分ける形式はJLReqでいう熟語ルビということになり改行されるはず。
- 複数のrtに分けたrubyが熟語ルビとは明示されていない点についてCSS3 Rubyのエディタから問題提起されていて、いずれ仕様が明確になるはず
――とお教えいただいた。
が、しかし、この件、「HTML5のruby要素内に複数のrtに分ける形式」というのは一つの熟語・複合語についてモノルビとして振ることもできるフォーマットなので、レンダリング中に行末にrtが来た場合に常にそこで改行していいかどうかは実は自明ではないんじゃなかろうかと思い悩んでしまう。
- 例1
<ruby>慶<rt>けい</rt>應<rt>おう</rt>義<rt>ぎ</rt>塾<rt>じゅく</rt>大<rt>だい</rt>学<rt>がく</rt></ruby>
- 例2
<ruby>慶應<rt>けいおう</rt>義塾<rt>ぎじゅく</rt>大学<rt>だいがく</rt></ruby>
- 例3
<ruby>慶應<rt>けいおう</rt></ruby><ruby>義塾<rt>ぎじゅく</rt></ruby><ruby>大学<rt>だいがく</rt></ruby>
- 例4
<ruby>慶<rt>けい</rt>應<rt>おう</rt></ruby><ruby>義<rt>ぎ</rt>塾<rt>じゅく</rt></ruby><ruby>大<rt>だい</rt>学<rt>がく</rt></ruby>
上記「例1」と「例4」は、モノルビ扱いのHTML5マーク付け。「例2」と「例3」は、熟語ルビ扱いのHTML5マーク付け(ひょっとすると「熟語ルビ」というものの概念を私が間違えて捉えているかもしれないので、その場合はぜひご指摘願う)。
例3の場合、「慶應義塾大学」という複合語を熟語単位で別々のrubyブロックに切り分けているので、行末に来た場合に「慶應」と「義塾」の間や「義塾」と「大学」の間で自動改行が起きることが予想され、またブラウザの実装もそうなっている。
例2の場合、「慶應義塾大学」という複合語全体を1つのrubyブロックと見た上で、熟語単位のルビを振っている。これ、ホントに行末に来た場合に「慶應」と「義塾」の間や「義塾」と「大学」の間で自動改行が起きるんだろうか。起きることを許容していいんだろうか。
同様に、例1と例4が、行末に来た場合に同じレンダリングになっていいんだろうか。
これらの改行の有無について、HTML5としてのポリシーが、よく分からない。また、CSS Text Level 3の改行制御が有効なのか、CSS Rubyで何か改行制御について考える必要があるのか無いのか、そこらへんも、よく分からない。
また、XHTML 1.1の複雑ルビだと次のようなマーク付けになる例文を考えておく。
- 例5
<ruby>
<rbc><rb>慶應</rb><rb>義塾</rb><rb>大学</rb></rbc>
<rtc><rt>けいおう</rt><rt>ぎじゅく</rt><rt>だいがく</rt></rtc>
<rtc><rt rbspan="3" xml:lang="en">Keio University</rt></rtc>
</ruby>
これは、HTML5だとrubyのネストによって、次のようにマーク付けすることになるらしい。
- 例6
<ruby>
<ruby>慶應<rt>けいおう</rt>義塾<rt>ぎじゅく</rt>大学<rt>だいがく</rt></ruby>
<rt xml:lang="en">Keio University</rt>
<ruby>
この例6の場合、「Keio Universe」にCSS3で「word-break:break-all」とでもしておけば、「慶応義塾」のところで行末に来た場合、次のような表示になるんだろうか。
このへんも、まったく分からないことだらけ。