#初めに
HTMLにはルビを振るための要素がいくつかある。
-
<ruby>
(ルビを振る要素全体) -
<rt>
(ルビのテキスト) -
<rp>
(ルビが振れない場合の括弧) - (廃止済み)
<rb>
(ルビを振る文。<rt>
が直前の文字列に付けられること、区切りが重要なら<ruby>
で囲めばよいことから廃止になったのではと思われるが理由は不明) - (廃止済み)
<rtc>
(ルビ文字列コンテナー。廃止されたのは使う場面がそれほどなかったからだろうか)
以前作成した記事から例を若干修正して再掲する。
青眼の白龍
これをhtmlで書くとこうなる。
<ruby>青眼の白龍<rp>(</rp><rt>ブルーアイズ・ホワイト・ドラゴン</rt><rp>)</rp></ruby>
この中で今回は<rp>
について議論していく。
##<rp>
って何のためにあるの?
われらがMDN先生によると、「HTML のルビ代替表示用括弧 (<rp>
) 要素は、 <ruby>
要素によるルビの表示に対応していないブラウザー向けの代替表示用括弧を提供するために使用します。」とのことである。つまり、ブラウザが対応していれば要らないものである。というわけで早速、Can I Use... で対応を見てみようか。
どうしてQiitaはCan I Use... を直接引用できないのだろうか。上のリンクをクリックお願いします。
ご覧いただいた通り、<ruby>
に対応していないブラウザはiOS版が供給停止されるなど撤退戦気味のOpera Miniのみである。つまり、意味が実質無い。
##HTML界の盲腸
だが、不要論を掲げる理由はそれだけではない。<ruby>
タグと同時に勧告されているため、そもそも実装リソースを<ruby>
に割いただろうということ、現在もしそのような実装をするならCSSの::before
および::after
疑似要素を使えば問題ないわけで、いちいちルビを付けたい要素に括弧を入れるのは恰好悪いし非生産的だ。
MDNの対応表を見るに、ルビ関連要素(<ruby>および<rt>)の初実装がIE5、つまり::before疑似要素などが存在しない時期にIEが独自実装した要素らしく、まさに「歴史的経緯」を伺わせる。しかし、HTMLの要素には廃止されたものがたくさんあるので、<rp>
も同様に廃止すべきであろう。ということで、WHATWGに提案を出しておいた。
##廃止時の影響
ここまで書いたところで、ブラウザのルビ実装方法がまちまちということを思い出した。CSSの@supportsはhtml要素を見られないので、仮にルビ関連要素を実装していない(おそらくはOpera Miniの精神的後継者としてミニマリスト的思考で開発された)ブラウザが今後現れた際に面倒ではある(セマンティックを考えるとちゃんと実装すべきではあるが)。
また、新聞社がYahoo! ニュースなどに記事を提供する際に<rp>
が無いと、ルビ非対応のニュースプラットフォーム側で括弧を自動生成する必要がある。ただ、こんな変換作業は大した工数無く出来るはずである。HTML系のパーサーなら<rt>
を発見次第「(
」を追加、といったことは簡単なはずだ。
後は、ルビの文字サイズが小さいため、括弧書きを望む人向けの設定変更も必要かもしれない。現状のブラウザ実装ではこの問題を容易に解決できないので、専用の仕様を提案しておいた。