HTML5 の ruby 要素について思うこと
2009年12月2日の段階の HTML5 の草案では、ruby 要素を使うとき、
<ruby>漢<rp>(</rp><rt>かん</rt><rp>)</rp>字<rp>(</rp><rt>じ</rt><rp>)</rp></ruby>
のように使うことになっています。
<ruby><rb>漢</rb><rp>(</rp><rt>かん</rt><rp>)</rp><rb>字</rb><rp>(</rp><rt>じ</rt><rp>)</rp></ruby><ruby><rbc><rb>漢</rb><rb>字</rb></rbc><rtc><rt>かん</rt><rt>じ</rt></rtc></ruby>
のように使ことになっています。さらに複雑なルビ構成も存在します。のようになっており、単純な場合にはもうすこし簡単にマークアップすることもできます。
IE では以前から単純ルビが実装されていますが、これは XHTML1.1 が IE に合わせた実装になっているようです。これについては、以前、元 W3C の
HTML1.1 に比べて簡略化されていることについて
HTML5 の ruby は XHTML1.1 の Ruby Annotation に比べてだいぶ簡略化されており、ruby, rp, rt で構成します。そのため
- rb 要素が存在しないため、何らかの目的でルビベースのみを取得したい場合には手間がかかる
- 複雑ルビが存在しないため、ruby を解釈できない UA に対して優しくないのではないか
- 漢字熟語がばらされてしまう (例えば、漢字という熟語が漢と字として別々に処理される) など
などがあります。なので、HTML5 の ruby も XHTML1.1 の Ruby Annotation に近づけたらいいと思うのです。
CSS について
CSS3 では ruby のレンダリングに関するモジュールもあります。しかし、HTML5 においては、ruby を構成する要素が少ないため CSS3 Ruby Module で用意されている内容をいかしきれないのではないかと感じます。(CSS は特別に HTML5 のための技術というわけではないですが)
どうせなら、HTML5 の ruby も XHTML1.1 の Ruby Annotation に近づけたらいいと思うのです。
読み仮名と注釈について
読み仮名 (ruby annotations) と注釈やメタ情報 (other annotations) を同等に扱っていいのかという疑問があります。
例えば
<ruby><rb>斎藤信男</rb><rt>さいとうのぶお</rt></ruby>
と
<ruby><rb>斎藤信男</rb><rt>W3C Associate Chairman</rt></ruby>
の 2例において、rt 要素が示す内容は読み仮名なのか注釈なのかの区別は難しいはずです。
読み仮名と注釈を区別しないのには理由があり、あえてこうしているそうです。確かにその通りだなと感じました。
実際そういう意見もありました。しかしマークアップ言語設計の経験上、詳細にマークアップできるようにしようと言語仕様を精緻化していけばいくほどユーザはどの場合にどれを使ったら良いのかわからなくなりかえって誤用が増えるという皮肉な結果になることが知られています。現状の (X)HTML でも多すぎるくらいです。ルビの場合も様々な用例を検討すれば「ルビ」と「よみがな」なんて簡単に分けて済むような問題ではなく泥沼にはまり込むことが明らかだったため、あくまで親文字列とルビ文字列という構造のみを記述してその意味論には踏み込まない仕様に落ち着いています。
kits 氏からお教えいただいた参考リソースの URI : http://groups.google.co.jp/group/fj.net.www.authoring/browse_frm/thread/0a73cf4b5704edb6
せっかく変えるなら…
HTML5 ではレンダリングの互換性は重視されていますが、XHTML1.1 などの書き方とは少し変えています。でもどうせ変えるならもっとスマートに
<ruby rt="かんじ">漢字</ruby>
のように、読み仮名については属性にしたほうがすっきりすると思うのです。注釈については別途マークアップする仕組みを作るとか。
ただ、webkit でも ruby の実装が始まってきたので今更変えるのは難しいのかな…とも。
読み仮名を要素の属性としないのには、漢字が主ではなく読み仮名こそが主であるケースもある、多言語での観点、総じてテキストデータは要素内容とするべきなどの理由があるそうです。
これについても kits 氏から教えていただいたリソースが大変参考になりました。
後で HTML5 Japanese Interest Group に投げてみよう。議論できる場が用意されているのっていいな。

トラックバックURI
http://www.yomotsu.net/wp/wp-trackback.php?p=553
コメント
nanto_viさんからのコメント
2009年12月2日 12:50
「XHTML1.1 の Ruby Annotation は」で示されたマークアップは、Ruby Annotationに適合していません。例示の内容を表現するRuby Annotationに適合したマークアップは次のようになります。 漢字かんじnanto_viさんからのコメント
2009年12月2日 12:54
小なり記号の直後にスペースを置いても、次の大なり記号まで消されてしまうのですね。 <ruby><rbc><rb>漢</rb><rb>字</rb></rbc><rtc><rt>かん</rt><rt>じ</rt></rtc></ruby>adminさんからのコメント
2009年12月2日 14:22
@nanto_vi さん ご指摘いただきありがとうございます。ご指摘いただいた通りマークアップ例が単純ルビでもなく複雑ルビでもなくよくわからない形式になっていました。記事内容をアップデートさせていただきました!tさんからのコメント
2009年12月11日 11:33
ここのサイトについて思ったことなのですが、Firefox等のGeckoエンジン系ブラウザでパースエラー(次のページへ押下時)が起きるのとIEでjsエラーが起きてるのが気になりますね。 wordpressで構築されてるんでしょうが、内容は興味深いだけに勿体ない。adminさんからのコメント
2009年12月11日 13:34
@t さん 確かに XML パースエラーになってしまっていますね…。WP の自動コード整形により well-formed でなくなってしまっているようでした。週末の時間を使ってメンテナンスしたいと思います。ご指摘いただきありがとうございました。コメントフォーム