| 説明 | ルビを振る為のコンテナになる |
|---|---|
| 語源 | RUBY |
| 所属モジュール | Ruby Annotation |
| 所属コンテントセット | Inline |
| 内容 | rbc, rb, rtc, rt, rp |
| 内容の書式 | ( ( rb, ( rt | ( rp, rt, rp ) ) ) | ( rbc, rtc, rtc? ) ) |
| 関連項目 | なし |
| 属性 | 属性値の型 | 説明 |
|---|---|---|
| Common | [属性コレクション] |
XHTMLの要素が大抵持っている、一般的な属性を集めたコレクションです。 |
固有属性はありません。
ruby要素は、ルビ(振り仮名)を振る為のコンテナになります。ルビ (Ruby)という名前はイギリス印刷業で使われていた活字の大きさに由来します。イギリスでは昔、活字の大きさに宝石の名前を付けていた所もあったそうで、日本の印刷業で一般的だったのであろう5号活字用の振り仮名である7号活字の大きさが、イギリス活字のRuby(約5.5ポイント)とほぼ同大であった為にこう呼ばれるそうです。よって、厳密にはその大きさ(あるいは本文の文字の大きさの約半分の大きさ)の振り仮名でなければルビとは呼べない……かどうかは判りません。が、他にはEmerald(約6.5ポイント)、Pearl(約5ポイント)、Diamond(約4.5ポイント)なんてのもあるそうです。絵文録ことのは - ルビ(ふりがな)の指定の仕方(付:ルビの語源と活字サイズ名一覧)などを参照して下さい。
繰り返しますが、ruby要素はルビを振る為のコンテナになります。ルビそのものではありません。勿論ルビ自体も内包しますが、ルビを振る対象となるベーステキストも内包します。
単純ルビマークアップ (Simple Ruby Markup)は、最も簡単にルビを振るマークアップです。ruby要素はベーステキスト (Base Text)の為のrb要素とルビテキスト (Ruby Text)の為のrt要素を、この順番で一つずつ内包します。大抵の用途は、これで十分でしょう。
[プログラムコード開始]
[プログラムコード終了]
ベーステキストは、振り仮名が振られない状態であれば普通の文と同じです。一方、ルビテキストは振り仮名そのものです。ruby要素はルビテキストに加えベーステキストを同時に内包する事で、そのルビテキストがそのベーステキストに関連付けられている事を表すコンテナです。ruby要素の内容が全てルビという意味ではありません。
実際にこのルビのマークアップがどのように表現されるかを定義するのはCSSなどのスタイルシート言語の仕様書の仕事ですが、ruby要素を理解するビジュアルユーザーエージェントは、ルビテキストをベーステキストの前に (before the base text)描画する事が期待できます。前に、というのは、文章の行が連なっていく方向に軸を取った時、先頭に近い方向に、という事です。つまり、横書きではベーステキストの上に、縦書きではベーステキストの右に描画されるでしょう。非ビジュアルユーザーエージェントでは、ルビテキストが普通の文とは違う事が何らかの形で示される事が期待できます。
単純ルビマークアップを理解しないユーザーエージェントは、恐らくruby要素の中身をそのままレンダリングしてしまうでしょう。object要素やnoscript要素などはそうなったとしても大丈夫なように(むしろ、そうなる事を期待して)デザインされていますが、単純ルビマークアップの場合は、ベーステキストまたは普通の文とルビテキストとの境界が明示されない為、閲覧者を混乱させます。
ルビが適切にレンダリングできない時の為の措置として一番ましだろうと考えられるものは、ルビテキストの前後にデリミタ(特にパーレンセシス (Parenthesis。大抵丸括弧))を挿入する事でしょう。このデリミタはrp要素で表します。
[プログラムコード開始]
[プログラムコード終了]
rp要素の内容は、ruby要素やrp要素を理解しないユーザーエージェントによってレンダリングされるでしょう。単純ルビマークアップを理解し、rp要素も理解するユーザーエージェントは、rp要素の内容をレンダリングせず、代わりにもっと適切な表現でレンダリングするでしょう(即ち、ビジュアルユーザーエージェントではルビテキストをベーステキストの前に描画する、音声合成ユーザーエージェントでは異なる音声やピッチで読み上げる、など)。
適切なデリミタが常に丸括弧であるとは限らない事に注意して下さい。大抵の文書では、挿入語句(これもparenthesisの語義に入っていますが)を括る為に丸括弧を使います。場合によっては、それがルビテキストなのか普通の挿入語句なのか、判断のつきかねる状況になるかも知れません。それがルビテキストである事を明瞭にする適切なデリミタは、そういう可能性も考慮に入れて選ぶ必要があります(勿論、個々の文書でデリミタがバラバラでは混乱しますから、少なくとも著者の同じ文書では統一すべきです)。
大抵の用途には単純ルビマークアップ(及びそのパーレン付き)で間に合いますが、更に詳しくルビを振りたい時もあるでしょう。例えば人名で、姓と名とに別々のルビを与えたい時や、漢字列に対して一字一字読み仮名を与えたい時、分割しても意味の通る言葉の複合語である時などです。
そういう時の為に、ベーステキストやルビテキストは複数に分割する事ができます。分割されたそれぞれの部分には同様にrb要素とrt要素を使い、それらをまとめる為にrbc要素とrtc要素を使います。このマークアップは複雑ルビマークアップ (Complex Ruby Markup)と呼ばれます。rbc要素の持つrb要素の数と、rtc要素の持つrt要素の数は等しくなければなりません。
[プログラムコード開始]
[プログラムコード終了]
また、場合によっては一つのベーステキストに対して二つのルビテキスト(分割された二つの部分という意味ではなく、二つのルビテキスト文字列)を振りたい事があるかも知れません。例えば片方は読みを提供し、もう片方はその意味を説明するような場合、あるいは両方とも意味を説明するルビだが、片方は区切られた部分ごとの説明を与え、もう片方はベーステキスト全体に説明を与える場合などです。
ruby要素は、rtc要素を二つ持つ事もできます。また、rt要素はrbspan属性を持っていて、一つのrt要素が関連付けられるrb要素の数を指定する事ができます。その時のrb要素とrt要素の数は、rbspan属性の値も考慮に入れて(<rt rbspan="value">……</rt>はrt要素
value個と考えて)等しくなければなりません。これは、th要素やtd要素が持つcolspan属性に似ています。
[プログラムコード開始]
[プログラムコード終了]
二つめのrtc要素でまとめられたルビテキストは、ビジュアルユーザーエージェントではベーステキストの後に (after the base text)描画される事が期待できます。
また、複雑ルビマークアップでは、rp要素によるフォールバック機構、つまりルビマークアップを知らないユーザーエージェント用の救済措置は用意されていません。これには二つ理由があるそうです。
The rp element is not available in the case of complex ruby markup. There are two reasons for this. First, the rp element is only a fallback mechanism, and it was considered that this is much more important for the more frequent simple case. Second, for the more complex cases, it is difficult to come up with a reasonable fallback display, and constructing markup for such cases can be even more difficult if not impossible.
rp要素は複雑ルビマークアップをする場合には使う事ができない。これには二つ理由がある。第一に、rp要素は飽くまでもフォールバック機構であり、より頻繁に使われる単純ルビマークアップでの重要度の方が遙かに高いと考えられる為。第二に、ルビのマークアップがより複雑な場合には、フォールバックによる合理的な表示形態を捻り出すのが困難で、しかもそのようなフォールバック機構を実現する為のマークアップをする事は、不可能ではないにしろ、更に困難となるであろう為である。
(Quoted from Ruby Annotation - 1.2.3 Complex ruby markup )
Webにおけるルビは、印刷業で使われていたルビ(振り仮名)と違って、非視覚的にも利用されたり、十分な画面解像度の無い環境(つまり、ルビテキストを本当に振り仮名にすると逆に見づらい環境)で読まれたりもする為、色々と使うに当たっては考えなければならない事があります。詳しくはここでも触れませんが(詳しくはRuby on the Web vs. traditional typographic usage参照)、一つだけ、先行投資としてやっておいた方が良いと思われるものを書いておきます。今までの例でも特に断り無くやっていましたが、 class属性によるルビテキストの分類です。
ウェブページを見る人全員がビジュアルユーザーエージェント──ブラウザ、例えばInternet Explorer、Mozilla Firefox、Operaのようなグラフィカルブラウザや、Lynx、w3mのようなテキストブラウザ、あるいはPDAや携帯電話などのブラウザなど──を使っている訳ではありません。点字出力デバイス(動的に突起が上下して点字を作り出す機器)や音声合成ユーザーエージェント(音声を合成して文章を読み上げるソフトウェアなど)を使っている人もいます。そういう人達がウェブページから受け取る情報は、概念的には「読み上げられた」、つまり平仮名に読み下された情報でしょう。「表現」と「ひょうげん」や、「文章」と「ぶんしょう」は、これらのユーザーエージェントを通して伝達されれば恐らく同じ結果となります。このような場合、読み仮名としてルビが振られた言葉は、冗長で不快な繰り返しを生むでしょう。膨大な語彙を持つユーザーエージェントは、自前の辞書を使って言葉を正しく読むかも知れませんし、そうでなければ読み仮名として提供されたルビテキストを読み上げるかも知れません。
ただ、全てのルビテキストが読み仮名という訳でもありませんから、無闇にルビテキストを無視したのでは、情報の欠落という、非ビジュアルユーザーエージェントの利用者にとって不利益な結果を招きます。そこで、読み仮名(あるいは発音を示すもの)を書いたルビテキストには、他の用途のルビテキストと区別できるclass属性値を与えておくべきです。この文書でもclass="reading"を使って区別できるようにしていますし、仕様書でも同じようなサンプルがあります。こうしておけば、スタイルシートから読み上げるかしないかの指定を後からでもできる為、後々楽ができるでしょう。
それと、読み仮名は常に正確な発音を表す訳でもない事に注意して下さい。「は」という文字は普通は「ha」の音ですが、助詞の場合は「wa」の音になります。延ばし棒「ー」は、前につく文字の段によって、「ah」「ih」「uh」「eh」「oh」と変化します。こういう用途の為に、発音を記述する為のマークアップが将来現れるかも知れません。あるいは、ユーザーエージェントが正しく読んでくれる事を期待するのでもいいでしょう。
解説を参照して下さい。
| [ruby] | ||
|---|---|---|
| Published | : | 2006-03-26T09:00:00+09:00 |
| Last Modified | : | 2007-02-27T23:15:24+09:00 |
| Table of Contents | : | 要素目次 |
| Index | : | 要素索引 |
| Verified with | : |
|