rt

rt 要素 (HTML)

[3] HTMLrt 要素は、 ルビ文字列を表します。

仕様書

[4]

名前空間
http://www.w3.org/1999/xhtml (>>7)
局所名
rt
開始タグ
必須
終了タグ
省略可能 (HTML)、必須 (XHTML)
出現できる文脈
ruby の子供かつ rb の弟として高々2個、 rtc の子供として1個以上
内容模型
%inline、但し ruby を除く

属性

[14] rt 要素属性

[8] WinIE というか MSXMLXML名前空間勧告にまともに対応していないので、 色々と不思議なことが起こります。 XML 文書WinIEレンダリングさせるに当たって、 単に ruby 要素以下の名前空間URIxmlns 属性http://www.w3.org/1999/xhtml に指定したところで、 XHTMLルビとしては扱われません。 しかし、

html:ruby xmlns:html="http://www.w3.org/1999/xhtml"
>html:rb基底文</html:rb
>html:rtルビ文</html:rt
></html:ruby>
のように名前空間接頭辞html にすれば、 WinIEXHTMLルビと理解してくれるようです。 もちろん xmlns:html 属性があるので、 名前空間整形式になります。

不思議解釈

[1] 間違って rt の中に rp を入れてしまった文書が世間には存在しているようです。 (名無しさん 2005-02-23 06:32:14 +00:00)

関連

[7] 名前空間URI: ルビモジュールは XHTML で使われることを主に想定していますが、 特に XHTML に限定されているわけではありません。 XHTML 1.1 で使う時には名前空間URIhttp://www.w3.org/1999/xhtml になりますが、 これはルビモジュールの規定ではなく、 XHTML 1.1 の規定に基づきます。他のホスト言語、例えば XHTML 2.0 では名前空間URIhttp://www.w3.org/2002/06/xhtml2/ になっています。

改行

[15] 稀にルビ文字列改行が入ることがあります。 ルビ

[18] rt 要素内容モデル語句付内容なので、 br 要素を使うことができます。 >>17

[19] また改行をそのまま書いて、 CSS white-space:pre 等でそれを表示に反映させることもできます。

[16] Chrome では、 br でも white-space:pre でも改行が通常通りに反映されて表示されます。

[20] Firefoxbr 要素改行も、 white-space:pre改行も、 改行として表示してくれません。

[22] ほとんどバグと言って良いであろうこの不可思議な挙動は、 驚くべきことに CSS仕様書にそうしろと書かれています。 >>21

[23] HTML の構文上まったく正当な br 要素の存在を無視したり、 white-space:pre の挙動を他のほとんどの場合と違う特別扱いを要求したり、 この仕様書の規定は常軌を逸していると言わざるを得ません。 Chrome がそれを完全無視しているのも頷けます。

[24] FirefoxCSS仕様書奇癖は、 rt だけでなく、 基底文字列内でも発症します。 改行の他に、 display:block なども機能しなくなります。 Chrome はそれらの規定も無視しています。 ただし Chrome基底文字列ルビ文字列の距離が固定されていて、 改行display:block によって基底文字列ルビ文字列が重なって表示される(ことがある)という別のバグがあります。

実装

[13] Firefoxルビを含む文字列をコピーしても、 rt の内容をコピーしません。 その実装の関係なのか、 rt の中身だけを選んでコピーすると、 何もコピーされないことがあります。 微妙な選択範囲の違いが何かあるのか、 rt の中身全体を選択したつもりでも、 コピーされるときとされないときがあって困りものです。

[25] Live DOM Viewer, http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C!DOCTYPE%20html%3E%0A%3Cp%3EABC%3Crt%3EXYZ

[26] >>25 このようにルビ外に rt だけがあるとき、 Chrome は普通に何もないように表示しますが、 Firefox は空白の上に小字で rt を表示します。 Inspector で見るとどちらのブラウザーも display 等特別な指定はありません。 Firefox の挙動は CSS 関係なしのハードコードのスタイル制御でしょうか。

[28] >>27 rubyrt の間に無関係の要素が挟まっている場合 (歴代 HTML 仕様のいずれにも違反)。

[29] >>27 のような表示を某ウェブサービスの検索結果表示で見ました。 いつからあるサービスなのかは不明。 ruby の内外に気を配らずに span を挿入するためにこういう現象が起きているようで。

[30] >>27 昔は Microsoft ExcelHTML を出力させたときもこういう要素構造になっていました。

歴史

[5] この要素型WinIE 5 で最初に実装されました。

[6] Geckoレンダリング・エンジンルビを解釈するための XHTMLルビサポートという拡張ソフトウェアがあり、 rt 要素型も実装しています。

[2] 仕様書:

[9] Internationalization Tag Set (ITS) Version 1.0 ( ( 版)) http://www.w3.org/TR/its/#selection-local

[10] Web Applications 1.0 r7611 Update rt/rp sections to match newer ruby section. ( ( 版)) http://html5.org/tools/web-apps-tracker?from=7610&to=7611

[11] Support rb and rtc elements in the parser (ruby) · whatwg/html@8d1c8af ( 版) https://github.com/whatwg/html/commit/8d1c8affec71058de29f8051cb2fa7f7bbad1fe6

[12] innerText: include parentheses around <rt> if there's no <rp> · Issue #1801 · whatwg/html () https://github.com/whatwg/html/issues/1801

[31] 水卜麻美×安住紳一郎×大下容子×松丸友紀×伊藤利尋×高瀬耕造がクロストーク! テレビ70年特番「アナテレビ」 |NHK_PR|NHKオンライン, 日本放送協会, https://www6.nhk.or.jp/nhkpr/post/original.html?i=38257

<h2>ありのままの映像を<br class="br-sp">言葉にする…「<ruby>絵解<rt style="position: relative; top: 0.4ex;">えと</rt></ruby>き」</h2>

[32] >>31 Chrome だと position, topレンダリングに影響しないようです。 開発者ツールで見ると topposition: static では効果がないと案内が出ているので、 Chrome では rt に暗黙の position: static が強制されていると思われます。

[33] >>31 Firefox だと top によってほんのわずかに親文字列寄りにレンダリングされます。 個人的には誤差レベルであってもなくても気づくかどうか、敢えて指定するまでもないものに思われます。 NHK は別サービスで Firefox への対応を打ち切るような企業なので ( NHK )、 ここで Firefox のために調整したのかは疑問が残ります。

[34] だとするとこれはどのWebブラウザーのための指定なのでしょうね?

[35] 「関東大震災」から100年…カラーでよみがえる光景とは NHKスペシャル「映像記録 関東大震災 帝都壊滅の三日間」(前・後編) |NHK_PR|NHKオンライン, 日本放送協会, https://www6.nhk.or.jp/nhkpr/post/original.html?i=39752

<p>震災当時、両国駅に勤務していた外山 <ruby>恂<rt style="position: relative; top: 0.4ex;">まこと</rt></ruby>さんが記した一編の手記。被害が広がる街や火災旋風の中で逃げる人々の様子、外山さんが離散した家族を見つけ出す過程が記された手記を朗読します。(読み手:小室 等)</p>

[36] >>31 隣の class="br-sp" と違って class="" でなく style="" を使っているので ad hoc なものとも思いましたが、 他でも rt>>35 のようにまったく同じ指定があるので、 振り仮名はすべてこの形になっていると推測されます。 どうして class="" にしないのかは謎ですが、 システム開発の段階や分担の違いか何かの現れでしょうかね。 なお >>31見出し中ですが、 >>35 だと関連番組リストの説明文中なので、 出現位置にも関係していないと思われます。