<bdi>要素(外部の書字方向に影響を与えないテキスト)。

HTML 5 に於ける、外部の書字方向に影響を与えないテキストである<bdi>要素について解説します。

<bdi>要素の概要。

HTML 5 に於ける<bdi>要素は、外部の書字方向に影響を与えないテキストとして定義されております。

  • HTML 4/XHTML 1には該当する要素はありません。

<bdi>要素の定義。

カテゴリ
要素が置ける箇所
要素の内容モデル
要素で定義された属性
グローバル属性のみ定義されております。

尚、dir 属性には特別な意味が与えられております。

<bdi>要素の詳細。

HTML 5 に於ける<bdi>要素は、外部の書字方向に影響を与えないテキストです。

殆どの言語は左から右に書きますが、アラビア語やヘブライ語など、右から書く言語もあります。

このため、ユニコードでは双方向アルゴリズムの概念を設け、左から右に書く文字と右から左に書く文字が混在した際の文字を並べ方について規定しております。

ところが、これに依り、却っておかしな事になる場合があります。

例えば、

<p class="about_this_contribution">投稿者:هوريكيتا ماكي : 6月21日19時20分投稿</p>

と言うHTMLがあった場合、これをレンダリングすると、双方向アルゴリズムの影響で、

アラビア文字で書かれた氏名の直後の半角コロンと数字が間違って左側に来てしまいます。

これは、右から左に並べる文字の後ろに数字や記号が来た場合、それに合わせて後続の数字や記号も左側に配置してしまうからです。

  • 数字や記号は、言語に関係なく使われるため、当然右から左に書く言語でも使われ得ます。このため数字や記号の配置は、直前の文字の書字方向に合わせた位置としなければならないのです。

この問題を解決するため、書字方向が明確でないテキストを<bdi>要素としてマークアップする事で、外部テキストはこのテキストの影響を受けずに配置出来るようにします。

この例では、

<p class="about_this_contribution">投稿者:<bdi>هوريكيتا ماكي</bdi> : 6月21日19時20分投稿</p>

とする事で、正しくレンダリングが出来るようにすると言う訳です。

この要素は、世界中から投稿を受け付けているサイトに於いて、人名部分など書字方向が固定されていない箇所をマークアップするのに適しております。

<bdi>要素の例。

<bdi>要素の詳細内に使用例がありますので、ご覧ください。

注意事項。

<bdi>要素の実装状況。

平成23年 6月現在、<bdi>要素のまだ実装例はないようです。

ですが、だからと言って無駄だと言う訳ではありません。

特に世界中からの投稿を受け付けているなど、右から左に書く言語のテキストを扱う可能性がある場合は、bdi>要素としてマークアップしておくのは損は無い筈です。

  • 但し、現状を考慮するのであれば、問題となり得るテキストの直後を<bdo>要素要素で書字方向を固定するのが確実かも知れません。使用例<bdo>要素で実現した例も挙げておりますのでご参照ください。

HTML 4/XHTML 1との違い。

<bdi>要素は HTML 4/XHTML 1にはありません。

関連項目。