<bdo>

<bdo>

bdo 要素型 (HTML, XHTML 1)

[1] bdo 要素型は、 bidi 算法を局所的に上書き (override) したいときに使うことができます。 (IW:HTML4:"struct/dirlang.html#edef-BDO" 参照。)

HTML の bidi 算法については、 書字方向, dir 属性の解説も参照してください。

[12] 仕様書:

[2]

開始タグ
必須。
終了タグ
必須。
内容模型
(%inline;)*
属性
名前値の型既定値意味出典
class[HTML4] %coreattrs;
dir(必須)書字方向[HTML4]
id一意識別子[HTML4] %coreattrs;
lang自然言語[HTML4]
styleスタイル指定[HTML4] %coreattrs;
title説明的題[HTML4] %coreattrs;

[3] 必須の dir 属性の値が、その要素の文内容基底方向となります。

[4] 普通は書字方向の制御は使用されている文字自体の特性により、 それが不十分であっても任意の属性についての dir 属性の指定により、意図した通りにすることができます。 しかし、それでもうまくいかない場合が存在します。 そのときに使うことができるのが、この bdo 要素型です。

bdo 要素型は、順序についての絶対的な制御が必要な場面でしようするべきです (should)。

[5] HTML 4 仕様書の説明によれば、この要素型が想定しているのは、 表示順で符号化したいときのようです。 たとえば、

トラックの側面に「輸運らたんな」と書いてありました。

を HTML でマーク付けするときに、

トラックの側面に<q dir="rtl">なんたら運輸</q>と書いてありました。

とする代わりに、

トラックの側面に<q><bdo dir="ltr">輸運らたんな</bdo></q>と書いてありました。

ともできる、ということです。

[6] ヘブライ文字アラビア文字符号化するにあたって、 昔から表示順 (visual order, 視覚順) と意味順 (論理順) が両方使われてきました。 特に欧米のソフトウェアを地域化したようなソフトウェアでは、 表示順で符号化した方が処理は圧倒的に楽です。

HTML 4 仕様書によれば、ヘブライ文字圏では table を使って、表示順で符号化した上で右寄せ、行折り畳み (wrap) なし、というのがよく行われていたそうです。 そのような慣習の文書は HTML 4 には適合しませんが、 古い実装と互換でありつつ HTML 4 的にするためには、 適当に bdo のタグで囲んでしまえばよいのです。

[7] なお、同じ目的のために、 LRO (U+202D), RLO (U+202E), PDF (U+202C) を使うことができます。 (混用についての dir 属性の解説も参照されたし。)

[8] このような背景ですから、おそらく、新しく書かれる文書ではこの要素型は使用するべきではないと思います。

[9]

要 よ 文 に >>5-6
素 く 字 す こ
型 あ ほ る ん
を る ど の な
用 の で も 風
意 だ は ヘ に
し し な ブ 縦
て 専 い ラ 書
お 用 に イ き
く の し
れ    ろ

縦書きエミュレーション

[10] >>9 計算機の能力が低かった (あるいは今でも低い) がために不適切な文字の並べ方をしてきた例は右横書き縦書きだけではなくて、例えば半角全角の幅を想定した整形とか、1文字ごとに空白を挿入 (中文の文章でよくある) とか、一行ごとに空行を挿入とか、 ASCIIISO-8859-1 と見せかけて実は font 要素を使って別の文字を表現 (東南アジアの言語の文章に多い。欧米や日本でも、 Symbol フォントとかでよくある。 フォント依存符号化 ) とか、色々あるわけだ。そういう過去 (または現在) の悪しき慣習のうちで右横書きだけが bdo だけが特別扱いされる (ように見える) のは、仕方が無い側面もあるとはいえ、どうかなあとは思う。

[11] 要素型名は bidi override (双方向性上書き) に由来しています。

文脈

[20] 日本語文字は現代において左横書きされることがが大多数で、 Unicode文字としてもそのように扱われています。 標準の状態では右横書きできません。 そこで bdo 要素を使って dir 属性rtl にするこで、右横書きに「上書き」できます。

関連

[17] bdi は別です。

歴史

bdo 要素の誕生

[22] HTML要素概説
要素名
bidi
日付
説明
HTML 2.xbidi がある。 現在の dir 属性と bdo に当たる。
出典
[24] HTML要素概説
要素名
bdo
日付
説明
HTML 2.1 から bidi が削除され、 bdo が追加された。
出典
参照
bdi

不思議解釈

[13] 連絡先 : Alpha (exeal 著, 版) http://alpha.sourceforge.jp/contact.html

この文書では、 spam 対策だと思いますが、 実際のメイル・アドレスを全文字逆順に並べ、 bdo で括っています。

つまり、データとしては実際とは逆順にしながら、 レンダリングは実際と同じ順序にしています。

このような使い方は bdo の趣旨に反すると考えられ、不適切です。

[21] けど HTML4 の解説は視覚順の表記に対応するため、なのでこういう使い方もありなんですよね。 この場合 HTML4 の規定が (歴史的事情とはいえ) 酷すぎるんですが...

HTML もどき

[53] DTBook にもあります。

[18] DTBook では lang=""大域属性ではなく、 bdo 要素に特に lang 属性が定義されています。

[19] 他の言語からの引用書字方向もかわるようなケースが想定されているのでしょうか。

XHTML2

[14] XHTML2 の最初の作業原案には bdo 要素が含まれていましたが、 2つ目の作業原案では削除され、代わりに dir 大域属性に値が追加されています。

HTML5

[15] Web Applications 1.0 r8317 Move all requirements about bidi out and just rely on CSS instead. Also, fix the CSS rules for <bdo>. ( ( 版)) http://html5.org/tools/web-apps-tracker?from=8316&to=8317

[16] W3C mobileOK Basic Tests 1.0 () https://www.w3.org/TR/mobileOK-basic10-tests/#STYLE_SHEETS_USE