Re: HTML 5 におけるルビの rb タグについて

On 2011/01/12 14:56, Koji Ishii wrote:
> どこに線を引くのがよいバランスか、というのは常に難しい問題ですね。
> 
>>> <ruby reading="うずまさ">太秦</ruby>
>> *個人的には* 属性値で読み仮名を指定するというのがベストのマークアップだ
>> と思います。
> 
> シンプルさを徹底的に追及するなら、Unicode Ruby Annotationを使っちゃうのが一番シンプルだと思います。マークアップすらいらないし、テキストファイルにも持たせられる。仕様として認められれば、ただのUnicodeストリームなのでIMEから入力することだってできてしまうかもしれない。逆に意味的にもマークアップ的にも多機能を追及していけばRuby AnnotationのComplex Ruby[1]まで行くことだってできるわけです。だから単純にどれがいい、どれがよくない、という話にはならないのが、難しいところだと思います。応用用途やそのコスト、良い点・悪い点をはかりにかけて、さてどれを取りましょうか、という議論をしなければなりません。

極論とは言え、Unicodeの機能を使っちゃうとそもそもDOMの意味が無くなってし
まうので問題外だとは思うのですが、それはさておき、complex rubyも例えば、
rubyをネストすることで、属性値でも実現できてしまうのではないかと思います
(ruby-baseの2文字と1文字、1文字と2文字に対して同時にマークアップでruby-
textを付ける、とかはできないですが、そこまで複雑なものが必要かどうかは疑
問)。

>> 同じ内容を示すテキストが二重三重に出てくる方がアクセシビリティ
>> 上、問題があると考えるべきではないのでしょうか。
> 
> 振り仮名をあくまで元漢字の付帯情報と捉えれば、おっしゃる考え方もありだと思います。秋元さんのお考えもそれに近いように見えますし、おっしゃるように非対応のTTSが両方を読んでしまう、という実質的な問題も指摘されています。

あとは先日、直接お話したときに出たような、ページ内検索とか、文字列を選択
してコピーするような場合の問題もありますね。

> 一方で、親文字もルビも両方とも同等価値のコンテンツであり、文字ストリームがどちらかに分岐することができる、という考えもあります。例えばスタイルを切り替えることで親文字を隠してルビだけを表示することで対象年齢を変えるようなアプリケーションを考えると、この「分岐ストリーム」の考え方は逆に割としっくり来て、Unicode Ruby Annotationや属性で対応する考えが逆にハックに見えたりもします。本を読むときの目の流れを考えても、この考えに近いような気がします。

私は分岐を否定している訳ではなくて、HTMLを平文にしてみた場合に分岐してし
まうことが問題だと思っています。つまり、タグを全部単純に除去した場合に平
文としておかしいケースが仕様上ありえます。属性値の場合はこの処理では絶対
に削除されてしまうことになるので問題にはなりません。

> 私はこの「分岐ストリーム」の考えに割と賛同していて、親文字もルビ文字も同じ価値を持つコンテンツなので、XPathやCSSで同じようにいずれかを指定したいと思っています。なのでSimple Ruby[2]のマークアップが一番しっくりきますし、親文字のスタイルとルビのスタイルをそれぞれきちんと設定できる、というのは割と重要な用途だと思っています。CSSを深くやっているからそう思うのかもしれませんが。
> 
> 秋元さんの案だと、XPathではそれぞれ指定できますが、少なくとも今のCSSではそれぞれ個別にスタイルを設定することがちょっと難しいですね。Rubyをdisplay:noneにしてしまえば、その属性を表示することはできなくなってしまいますし、ルビの中にマークアップを入れることもできなくなります。XMLデータの一部として考えれば「ルビ=振り仮名」ですが、HTML著作物として考えると「ルビ≧=振り仮名」であって、例えば日本語の単語に英語のルビを付けるケースなどは、振り仮名以上の一つのコンテンツであるわけですから、たとえ90%のケースが「ルビ=振り仮名」であったとしても、残りを振り落していいとは少しならないような気がします。

XPathはまったく知らないのですが、CSSの場合、属性値を任意のrubyのスタイル
に変換できる仕様をruby moduleで提案する、ということが(理想的には)可能か
と思います。

例えば、display: ruby;の定義を、通常のinline boxの他に、ruby-text boxを
生成するようにし、その内容をruby-contentプロパティで指定できるようにすれ
ば、ruby-content: attr(reading); で実際のruby-textを生成でき、ruby-
positionで(横書きの場合)上下や、後ろに付けることを指定することで少なくと
も現在と同じ表現は可能になると思います。

現状のHTML5 rubyの仕様は後方互換に気を使って、古いUAでは"ruby-base(ruby-
text)"という表示になるように考えられていますが、これはWebデザイナの良心
に任せているので仕様としては良くないと思います。今後、各ブラウザがrubyを
実装してきた場合、<rp>を使わない人が増えて、結果的に非対応のブラウザでの
表示が酷くなっていくように思います。

# ちなみに、属性値の場合、ruby属性があれば良いだけで、ruby要素というもの
自体が不要なのではないかな、と思います

-- 
Masayuki Nakano <masayuki@d-toybox.com>
Manager, Internationalization, Mozilla Japan.

Received on Wednesday, 12 January 2011 06:31:51 UTC