目次に戻る

ruby要素:HTML Living Standard各要素別メモ

概要

カテゴリー
配置できる場所
内容モデル
  • 下記のセットが1個以上。
    1. 下記のいずれかが1個以上。混在も可。ルビが振られる部分となる。なお、ruby要素の入れ子は一回のみ。
      • ruby要素を子孫に持たないPhrasing content
      • ruby要素を子孫に持たないruby要素。
    2. 上記に続いて、下記のいずれかが1個以上。混在も可。ルビテキスト部分となる。
属性
HTML構文におけるタグの省略
  • 省略不可。
WAI-ARIA
  • すべてのroleが指定可能。
視覚系ブラウザデフォルトとして期待されるCSS

  ruby {display: ruby;}
  
視覚系ブラウザにおいて期待されるレンダリング
  • ruby要素子要素のうち、rt要素でもrp要素でもない子要素のグループは、{display: ruby-base;}の匿名ボックスを構成する。
  • ルビ注釈レンダリングの詳細は、CSS Ruby Layout Module Level 1を参照。
意味・用法

ルビ注釈マークアップする1個以上のPhrasing contentの範囲を与える。

これは主に東アジアの印刷慣例で発音の手引きその他の注釈として用いられるものである。

アクセシビリティ関連

私見・補足

その子要素とともにルビ注釈マークアップする。

HTML文書テキストタグで構造化したものなので、逆にいうと、タグを抜いたものが原文ということになる。よって、ruby要素を使うということは、注釈の対象となる語句の後に(括弧つきで)注釈が書いてある状態が原文になるということになる。

とすれば、ありとあらゆる漢字にruby要素ルビをふるというのは、注釈だらけのものが原文になるということなので、普通は考えられないだろう。論文や文学作品などをよみがな付きのフルデータで保存する趣旨のウェブサイトとか、児童・外国人など漢字の習得が不充分な者を対象としたウェブサイトとかぐらいしか考えられない。

したがって、日本語圏での用途としては、通常は、難読漢字によみがなをふるとか、当て字によみがなをふるとか、用語を説明する際によみがなも明確にしておくとか、ルビ形式による特殊な文学的表現とか、誤記載部分に〔原文ママ〕といったルビをふるといった限定的な場合に限られると思われる。

原文に手をつけてしまうことを嫌って、グローバル属性としてのruby属性を要望する意見もあるようだ。実際、XHTML1.1で、ルビを規格化しようとしたときに属性として定義しようという動きもあったようだが、未対応ブラウザで全く表示されないのは望ましくなかろうということで要素として定義された経緯があるようだ。

span要素などのtitle属性data-*属性属性値ルビテキストを入れといて、スタイルシートスクリプトを駆使してルビとして表示させることは可能と思われるので、擬似ruby属性的なことはやろうと思えばできる(サンプル)。

使い方は、下記の表示確認の最初の2パターンが基本。rb要素があれば、「<ruby><rb>漢</rb><rb>字</rb><rp>(</rp><rt>かん</rt><rt>じ</rt><rp>)</rp></ruby>」というパターンも可能だったのだが。

表示確認

ソース1:基本パターン

  <ruby style="font-size:2em">
    漢字
    <rp>(</rp>
    <rt>かんじ</rt>
    <rp>)</rp>
  </ruby>
  
表示結果1
漢字 ( かんじ )

ルビ注釈未対応ブラウザでの表示:漢字(かんじ)

ソース2:一文字ごとにルビ

  <ruby style="font-size:2em">
    漢<rp>(</rp><rt>かん</rt><rp>)</rp>
    字<rp>(</rp><rt>じ</rt><rp>)</rp>
  </ruby>
  
表示結果2
(かん)()

ルビ注釈未対応ブラウザでの表示:漢(かん)字(じ)

ソース3:二重ルビruby要素入れ子

  <ruby style="font-size:2em">
    <ruby>
      漢字
      <rp>(</rp><rt>かんじ</rt><rp>)</rp>
    </ruby>
    <rp>(</rp><rt lang="ja-Latn">kanji</rt><rp>)</rp>
  </ruby>
  
表示結果3
漢字 (かんじ) (kanji)

ルビ注釈未対応ブラウザでの表示:漢字(かんじ)(kanji)

対応しているブラウザでは、ルビが上二段に表示される場合が多いようだ。

ソース4:二重ルビrt要素の二重使用)

  <ruby style="font-size:2em">
    漢字
    <rp>(</rp>
      <rt>かんじ</rt>
    <rp>, </rp>
      <rt lang="ja-Latn">kanji</rt>
    <rp>)</rp>
  </ruby>
  
表示結果4
漢字 ( かんじ , kanji )

ルビ注釈未対応ブラウザでの表示:漢字(かんじ, kanji)

対応しているブラウザでは、ルビが上一段に二つ並列で表示される場合が多いようだ。

関連仕様

以下の記載は、HTML Ruby Markup ExtensionsのEditor's Draftに基づく。

ruby要素:HTML Living Standard各要素別メモ

概要

カテゴリー
配置できる場所
内容モデル
  • 下記のセットが1個以上。
    1. 下記のいずれかが1個以上。混在も可。ルビ基底範囲となる。
    2. 上記に続いて、下記のいずれかが1個以上。混在も可。ルビ注釈範囲となる。
      • rt要素。その「直前及び直後」又は「直前もしくは直後」にrp要素を伴ってもよい。
      • rtc要素。その「直前及び直後」又は「直前もしくは直後」にrp要素を伴ってもよい。
属性
HTML構文におけるタグの省略
  • 省略不可。
WAI-ARIA
  • すべてのroleが指定可能。
視覚系ブラウザデフォルトとして期待されるCSS

  ruby {
    display: ruby;
    unicode-bidi: isolate;
  }
  

ルビ注釈レンダリングの詳細は、CSS Ruby Layout Module Level 1を参照。

意味・用法

ルビ注釈を構成する1組以上のPhrasing contentの範囲を表す。

これは主に東アジアの印刷慣例で発音の手引きその他の関連情報として用いられるものである。

アクセシビリティ関連

私見・補足

その子要素とともにルビ注釈マークアップする。

HTML文書テキストタグで構造化したものなので、逆にいうと、タグを抜いたものが原文ということになる。よって、ruby要素を使うということは、注釈の対象となる語句の後に(括弧つきで)注釈が書いてある状態が原文になるということになる。

とすれば、ありとあらゆる漢字にruby要素ルビをふるというのは、注釈だらけのものが原文になるということなので、普通は考えられないだろう。論文や文学作品などをよみがな付きのフルデータで保存する趣旨のウェブサイトとか、児童・外国人など漢字の習得が不充分な者を対象としたウェブサイトとかぐらいしか考えられない。

したがって、日本語圏での用途としては、通常は、難読漢字によみがなをふるとか、当て字によみがなをふるとか、用語を説明する際によみがなも明確にしておくとか、ルビ形式による特殊な文学的表現とか、誤記載部分に〔原文ママ〕といったルビをふるといった限定的な場合に限られると思われる。

原文に手をつけてしまうことを嫌って、グローバル属性としてのruby属性を要望する意見もあるようだ。実際、XHTML1.1で、ルビを規格化しようとしたときに属性として定義しようという動きもあったようだが、未対応ブラウザで全く表示されないのは望ましくなかろうということで要素として定義された経緯があるようだ。

span要素などのtitle属性data-*属性属性値ルビテキストを入れといて、スタイルシートスクリプトを駆使してルビとして表示させることは可能と思われるので、擬似ruby属性的なことはやろうと思えばできる(サンプル)。

表示確認

ルビに対応してるけど二重ルビに対応してないブラウザでは、二重ルビの表示が妙な具合になる。

ソース1:基本パターン

  <ruby style="font-size:2em">
    漢字
    <rp>(</rp>
    <rt>かんじ</rt>
    <rp>)</rp>
  </ruby>
  
表示結果1
漢字 ( かんじ )

ルビ未対応ブラウザでの表示:漢字(かんじ)

ソース2:rb要素ルビが振られる文字を明示

  <ruby style="font-size:2em">
    <rb>漢字</rb>
    <rp>(</rp>
    <rt>かんじ</rt>
    <rp>)</rp>
  </ruby>
  
表示結果2
漢字 ( かんじ )

ルビ未対応ブラウザでの表示:漢字(かんじ)

ソース3:一文字ごとにルビ、かつ、未対応ブラウザでは熟語ルビ表示

  <ruby style="font-size:2em">
    <rb>漢</rb><rb>字</rb>
    <rp>(</rp>
    <rt>かん</rt><rt>じ</rt>
    <rp>)</rp>
  </ruby>
  
表示結果3
( かん )

ルビ未対応ブラウザでの表示:漢字(かんじ)

ソース4:一文字ごとにルビ、かつ、未対応ブラウザでも一文字ごとにルビ

  <ruby style="font-size:2em">
    漢<rp>(</rp><rt>かん</rt><rp>)</rp>
    字<rp>(</rp><rt>じ</rt><rp>)</rp>
  </ruby>
  
表示結果4
(かん)()

ルビ未対応ブラウザでの表示:漢(かん)字(じ)

ソース5:ソース4のrb要素使用版

  <ruby style="font-size:2em">
    <rb>漢</rb><rp>(</rp><rt>かん</rt><rp>)</rp>
    <rb>字</rb><rp>(</rp><rt>じ</rt><rp>)</rp>
  </ruby>
  
表示結果5
(かん) ()

ルビ未対応ブラウザでの表示:漢(かん)字(じ)

ソース6:二重ルビ

  <ruby style="font-size:2em">
    <rb>漢字</rb>
    <rp>(</rp><rt>かんじ</rt><rp>)</rp>
    <rp>(</rp><rtc lang="en">chinese character</rtc><rp>)</rp>
  </ruby>
  
表示結果6
漢字 (かんじ) (chinese character)

ルビ未対応ブラウザでの表示:漢字(かんじ)(chinese character)

ソース7:二重ルビ(一文字ごとのルビ熟語ルビ

  <ruby style="font-size:2em">
    <rb>漢</rb><rb>字</rb>
    <rp>(</rp><rt>かん</rt><rt>じ</rt><rp>)</rp>
    <rp>(</rp><rtc lang="fr">caractères chinois</rtc><rp>)</rp>
  </ruby>
  
表示結果7
(かん) (caractères chinois)

ルビ未対応ブラウザでの表示:漢字(かんじ)(caractères chinois)

ソース8:二重ルビ(一文字ごとのルビが2個、かつ、未対応ブラウザでは熟語ルビ表示が2個)

  <ruby style="font-size:2em">
    <rb>漢</rb><rb>字</rb>
    <rp>(</rp><rt>かん</rt><rt>じ</rt><rp>)</rp>
    <rp>(</rp><rtc lang="ja-Latn"><rt>kan</rt><rt>ji</rt></rtc><rp>)</rp>
  </ruby>
  
表示結果8
(かん) (kanji)

ルビ未対応ブラウザでの表示:漢字(かんじ)(kanji)

ソース9:二重ルビ(ソース8にて、最初のルビにもrtc要素を使用して熟語読みのまとまりを明示)

  <ruby style="font-size:2em">
    <rb>漢</rb><rb>字</rb>
    <rp>(</rp><rtc><rt>かん</rt><rt>じ</rt></rtc><rp>)</rp>
    <rp>(</rp><rtc lang="ja-Latn"><rt>kan</rt><rt>ji</rt></rtc><rp>)</rp>
  </ruby>
  
表示結果9
(かん) (kanji)

ルビ未対応ブラウザでの表示:漢字(かんじ)(kanji)

ソース10:二重ルビ(一文字ごとに2個のルビ

  <ruby style="font-size:2em">
    漢<rp>(</rp><rt>かん</rt><rp>)</rp><rp>(</rp><rtc lang="ja-Latn">kan</rtc><rp>)</rp>
    字<rp>(</rp><rt>じ</rt><rp>)</rp><rp>(</rp><rtc lang="ja-Latn">ji</rtc><rp>)</rp>
  </ruby>
  
表示結果10
(かん)(kan)()(ji)

ルビ未対応ブラウザでの表示:漢(かん)(kan)字(じ)(ji)

ソース11:二重ルビ(一文字ごとに2個のルビ

  <ruby style="font-size:2em">
    <rb>漢</rb><rp>(</rp><rt>かん</rt><rp>、</rp><rtc lang="ja-Latn"><rt>kan</rt></rtc><rp>)</rp>
    <rb>字</rb><rp>(</rp><rt>じ</rt><rp>、</rp><rtc lang="ja-Latn"><rt>ji</rt></rtc><rp>)</rp>
  </ruby>
  
表示結果11
(かんkan) (ji)

ルビ未対応ブラウザでの表示:漢(かん、kan)字(じ、ji)

ソース12:四重ルビ

  <ruby style="font-size:2em">
    <rb>漢</rb><rb>字</rb>
    <rp>(</rp><rtc><rt>かん</rt><rt>じ</rt></rtc><rp>)</rp>
    <rp>(</rp><rtc lang="ja-Latn"><rt>kan</rt><rt>ji</rt></rtc><rp>)</rp>
    <rp>(</rp><rtc lang="en">chinese character</rtc><rp>)</rp>
    <rp>(</rp><rtc lang="fr">caractères chinois</rtc><rp>)</rp>
  </ruby>
  
表示結果12
(かん) (kanji) (chinese character) (caractères chinois)

ルビ未対応ブラウザでの表示:漢字(かんじ)(kanji)(chinese character)(caractères chinois)

ソース13:多重入れ子されたruby要素は、基本的に多重ルビになる

  <ruby style="font-size:2em">
    <ruby>
      漢字
      <rp>(</rp><rt>かんじ</rt><rp>)</rp>
    </ruby>
    <rp>(</rp><rt lang="ja-Latn">kanji</rt><rp>)</rp>
  </ruby>
  
表示結果13
漢字 (かんじ) (kanji)

ルビ注釈未対応ブラウザでの表示:漢字(かんじ)(kanji)

ただし、この場合は、「kanji」は、「漢字(かんじ)」に対するルビ注釈なのであって、「漢字」に対するルビ注釈なのではない。