bdo要素
Updated / Published
bdo
要素(bidirectional override)はUAが文書内で使用されている言語に応じて適切な書字方向で表示しようとする双方向アルゴリズムを無効化し、書字方向を強制的に変更します。
日本語や英語であれば左から右、ヘブライ語やアラビア語であれば右から左といったように言語毎にそれぞれの文字が左から右へと書かれるものなのか、右から左へと書かれるものなのかといった書字方向が決められています。そして、UAは文書内で使用されている言語に応じて適切な書字方向で表示しようとする双方向アルゴリズムを搭載しています。
しかしながら、言語ごとに決められた書字方向とUAのもつ双方向アルゴリズムは異なる書字方向が混在する双方向性(bidirectionality)の現象時に問題を引き起こすことがあります。たとえば、ひとつの文書に書字方向の異なる日本語とヘブライ語が含められていると、ヘブライ語を適切な書字方向で表示しようとして、双方向アルゴリズムによって逆に不正確なプレゼンテーションが行われてしまう場合があります。bdo
要素はこのようにUAのもつ双方向アルゴリズムによって逆に不正確なプレゼンテーションが行われてしまう場合に、双方向アルゴリズムを無効化し、書字方向を強制的に変更するために使用します。必須属性である dir
属性によりその方向を指定します。
- バージョン
- HTML4.01(S,T,F)
- XHTML1.0(S,T,F)
- XHTML1.1
- 要素分類
- インライン要素
- 開始タグ
- 必須
- 終了タグ
- 必須
- 非推奨
- -
- 内容モデル
- インライン要素
- テキスト
dir属性
- バージョン
- HTML4.01(S,T,F)
- XHTML1.0(S,T,F)
- XHTML1.1
- 指定要素
- dir属性(共通属性)を参照
- 必須
- 必須属性
- 非推奨
- -
- 属性値
- ltr
- rtl
双方向アルゴリズムを無効化して、書字方向を左から右にする "ltr
"(left to right)、または右から左にする "rtl
"(right to left)のいずれかのキーワードを指定します。HTML4 ではキーワードは半角アルファベットの大文字・小文字が区別されません(case-insensitive)が、XHTML の規格はすべて大文字・小文字を区別する(case-sensitive)ので小文字で記述する必要があります。なお、HTML4 の規格より dir
属性は共通属性となったため、bdo
要素以外にも多くの要素型に指定することができます。ただし、bdo
要素の dir
属性とは異なり、他の要素型におけるdir
属性は中立の文(固有の方向性を持たない文)がある場合に、その文字の基本方向を指定するために使うものであるため、双方向アルゴリズムを搭載したUAであれば双方向アルゴリズムの方が優先されます。
なお、CSSのdirection
プロパティと unicode-bidi
プロパティを組み合わせることで代替も可能です。
その他の属性
*bdo
要素のイベント属性が定義されているのは XHTML1.0 のみです。HTML4.01, XHTML1.1 にはありません。
bdo要素のサンプル
<p>ヘブライ語で「こんにちは」は、<bdo dir="ltr" lang="he">םולש</bdo>(シャローム)といいます。</p>
ヘブライ語で「こんにちは」は、םולש(シャローム)といいます。
サンプル解説
サンプルのように書字方向の異なる言語が混在しており、ヘブライ語自体が最初から本来の右から左に表記されていると、双方向アルゴリズムをもつUAはヘブライ語のデータ部分を自動的に逆転して表示してしまいます。つまり、双方向アルゴリズムによって不正確なプレゼンテーションが行われる場合にbdo
要素を使うことで双方向アルゴリズムを無効化して、強制的にテキストの方向を上書きする必要があります。