HTML5のruby要素

 少し古い話だが、日本語練習中(http://d.hatena.ne.jp/uakira/20090214)での以下の記事が紹介されてゐた。

 XHTML1.1 では、既にruby要素が定義されてゐるが、今度はHTML5での定義である。まだドラフト段階なのでどう転ぶか分からないが、正式仕様になれば、Firefoxruby要素を無視しつづけることは難しいだらう(いい加減サボタージュはやめたまへ、開発者諸君!)。XHTML1.1 と比べて、HTML5では若干の違ひがあるやうだ。まづrb要素がなくなった。rb要素は親字の開始終了を明示する要素だが、これは既に親要素のrubyで間に合ってゐるので冗長なものだった。それでも、XHTML1.1 で記述するときは、この要素を省くと文法エラーになってしまふ。

XHTML1.1 ruby><rb>漢字</rb><rt>かんじ</rt></ruby
HTML5 ruby>漢字<rt>かんじ</rt></ruby

 rp要素は、ruby要素を認識しないブラウザ上で、親字と振り仮名を混同しないための非常用要素なので特に前向きのコメントはない。rt開始要素の前に「<rp>(</rp>」と記述し、rt終了要素の後ろに「<rp>)</rp>」を追加するだけだ。エディターなどの文字列置換機能で機械的に追加削除が可能なので、編集中に手入力をする必要もない。さて、問題は rt要素だ。

HTML5対応 ruby>漢字<rt>かんじ</rt></ruby
HTML5非対応 ruby>漢字<rp>(</rp><rt>かんじ</rt><rp>)</rp></ruby

The rt element marks the ruby text component of a ruby annotation.

 「rt要素は、ルビ注釈でのルビテキスト部品に印を付ける。」これは問題なし。

An rt element that is a child of a ruby element represents an annotation (given by its children) for the zero or more nodes of phrasing content that immediately precedes it in the ruby element, ignoring rp elements.

 「ruby要素の子供であるrt要素は、rp要素を無視しながら、そのruby要素内で直前にある、ゼロ以上の語句内容ノードのために(その子供によって与へられた)注釈を表す。」これも問題なし。日本語にすると却って分かりづらいが、「ゼロ以上の語句内容ノード」とは、色とか下線とかの属性が付いてゐてもインライン要素なら一塊とみなすといふ意味だ。「その子供によって与へられた」とはrt要素に囲まれた言はゆる振り仮名の部分。仕様は今までのルビ関連要素と同じだ。

An rt element that is not a child of a ruby element represents the same thing as its children.

 「ruby要素の子供でないrt要素は、その子供と同じ物を表す。」問題はこれかな?まづ「その子供と同じ物」とは、rt要素に囲まれたテキストを意味する。色とか下線の属性が付いてゐてもよい。XHTMLなら無条件で構文エラーにするところを、HTMLではrt要素を無視して普通のテキストとして扱ふやうだ。ヒューマンエラーに寛容なHTMLを踏襲してゐる。

 ところで、総ルビの文章を書くには、既存のルビ要素群では全く意味をなさないといふことは、私は過去のブログで実感してゐる。下書き段階でルビなしのテキストを書き、ソフトウェアでルビを自動的に追加するところまでは良いが。一度、公開したあとにブログのエディター内で文節単位を超える修正を行はうとしても、煩雑な要素に阻まれて全く作業ができない。その意味でFirefoxがルビ要素群に対応してもルビ日記に戻すつもりはないが、ルビ要素自体が総ルビをテキストで編集することを意図して設計されたわけでないから仕方ない。

  • ※【言はゆる】漢字では通常「所謂」と書く。ただし、語源は、「言ふ」の未然形に上代の自発助動詞「ゆ」がついて、その連体形だけが慣用表現として残り、連体詞になったもの。読みやすさを考慮して「言はゆる」とした。