bdo要素
要素名 | バージョン | 開始タグ | 終了タグ | 分類/親 | 中身 |
---|---|---|---|---|---|
bdo | 2.x, 4.0, X1.0, X1.1 | 必須 | 必須 | %special; | (%inline;)* |
属性名 | バージョン | 属性値 | 既定値 | 備考 |
---|---|---|---|---|
dir | 4.0, X1.0 | ltr|rtl | #REQUIRED | directionality |
共通属性 …… %coreattrs;, %i18n;
bdoの解説
文字の書字方向を指定する要素です。書字方向の指定は、ほとんどの要素で dir属性を指定することで行うことができます。しかし、通常は Unicode の書字方向アルゴリズムが優先されるため、それを上書きしたい場合には bdo要素を使う必要があります。
たとえば、以下のようなデータがあったとします。
<SPAN dir="ltr">日本語1 [ヘブライ語1] 日本語2 [ヘブライ語2]</SPAN>
[ヘブライ語]とある部分には、実際にはヘブライ語の文字が書かれているものと思ってください。このとき、Unicode の書字方向アルゴリズムに対応したブラウザは、これを
日本語1 [1語イラブヘ] 日本語2 [2語イラブヘ]
と並べ替えて表示します。ヘブライ語は右から左へ書くものですから、これで正しく読めるのです。また、以下のようなデータがあったとすると、
<span dir="rtl">日本語1 [ヘブライ語1] 日本語2 [ヘブライ語2]</span>
これは次のように並べ替えられます。
[2語イラブヘ] 日本語2 [1語イラブヘ] 日本語1
ところが、データ自体が最初から表示順に並べ替えられているような場合、困ったことがおきます。
<span dir="ltr">日本語1 [1語イラブヘ] 日本語2 [2語イラブヘ]</span>
これはそのままで正しく読めるように並べ替えられているのですが、そのままでは書字方向アルゴリズムによって
日本語1 [ヘブライ語1] 日本語2 [ヘブライ語2]
と並べ替えられてしまい、ヘブライ語が逆転してしまうのです。このような場合に BDO 要素を使います。
<bdo dir="ltr">日本語1 [1語イラブヘ] 日本語2 [2語イラブヘ]</bdo>
この BDO 要素中の文字は、Unicode の書字方向アルゴリズムにかかわらず、強制的に左から右へと並べられることになります。その結果、
日本語1 [1語イラブヘ] 日本語2 [2語イラブヘ]
のようになり、正しく読めるようになります。
見てお分かりの通り、異なる書字方向の言語を併用するようなケースでなければ活躍の機会は全くありません。また、‎ などの書字方向を規定する制御文字と併用したときの動作は保証されていません。
- 「bdo要素」にコメントを書く