* bdo 要素型 (HTML, XHTML 1)
[1] [CODE(HTMLe)[bdo]] 要素型は、 [[bidi]] 算法を局所的に上書き (override)
したいときに使うことができます。 ( 参照。)
HTML の bidi 算法については、 [CODE(WikiPage)[[[書字方向]]]],
[CODE(HTMLa)[[[dir]]]] 属性の解説も参照してください。
[12] 仕様書:
- [[SI 4281]]:1998
-- [CSECTION[6.1.2 The Bidirectional Override Tag (BDO)]]
[2]
:[[開始タグ]]:必須。
:[[終了タグ]]:必須。
:[[内容模型]]:[CODE(SGML)[([VAR[%[[inline]];]])*]]
:[[属性]]:
,名前 ,値の型 ,既定値 ,意味 ,出典
,[CODE(HTMLa)[[[class]]]] , , ,級 ,[HTML4] [VAR[%[[coreattrs]];]]
,[CODE(HTMLa)[[[dir]]]] , ,(必須) ,[[書字方向]] ,[HTML4]
,[CODE(HTMLa)[[[id]]]] , , ,一意識別子 ,[HTML4] [VAR[%coreattrs;]]
,[CODE(HTMLa)[[[lang]]]] , , ,自然言語 ,[HTML4]
,[CODE(HTMLa)[[[style]]]] , , ,スタイル指定 ,[HTML4] [VAR[%coreattrs;]]
,[CODE(HTMLa)[[[title]]]] , , ,説明的題 ,[HTML4] [VAR[%coreattrs;]]
[3] 必須の [CODE(HTMLa)[dir]] 属性の値が、その要素の文[[内容]]の[[基底方向]]となります。
[4] 普通は書字方向の制御は使用されている[[文字]]自体の特性により、
それが不十分であっても任意の属性についての [CODE(HTMLa)[dir]]
属性の指定により、意図した通りにすることができます。
しかし、それでもうまくいかない場合が存在します。
そのときに使うことができるのが、この [CODE(HTMLe)[bdo]] 要素型です。
[CODE(HTMLe)[bdo]] 要素型は、順序についての絶対的な制御が必要な場面でしようするべきです (should)。
[5] HTML 4 仕様書の説明によれば、この要素型が想定しているのは、
[[表示順]]で符号化したいときのようです。
たとえば、
> トラックの側面に「輸運らたんな」と書いてありました。
を HTML でマーク付けするときに、
> トラックの側面になんたら運輸
と書いてありました。
とする代わりに、
> トラックの側面に輸運らたんな
と書いてありました。
ともできる、ということです。
[6] [[ヘブライ文字]]や[[アラビア文字]]を[[符号化]]するにあたって、
昔から表示順 (visual order) と意味順が両方使われてきました。
特に欧米のソフトウェアを地域化したようなソフトウェアでは、
表示順で符号化した方が処理は圧倒的に楽です。
HTML 4 仕様書によれば、ヘブライ文字圏では [CODE(HTMLe)[[[table]]]]
を使って、表示順で符号化した上で右寄せ、行折り畳み (wrap)
なし、というのがよく行われていたそうです。
そのような慣習の文書は HTML 4 には適合しませんが、
古い実装と互換でありつつ HTML 4 的にするためには、
適当に [CODE(HTMLe)[bdo]] のタグで囲んでしまえばよいのです。
[7] なお、同じ目的のために、 [CODE(char)[[ABBR[[[LRO]]] [LEFT-TO-RIGHT OVERRIDE]]]]
([CODE(char)[U+202D]]), [CODE(char)[[ABBR[[[RLO]]] [RIGHT-TO-LEFT OVERRIDE]]]]
([CODE(char)[U+202E]]), [CODE(char)[[ABBR[[[PDF]]] [POP DIRECTIONAL FORMATTING]]]]
([CODE(char)[U+202C]]) を使うことができます。
(混用についての [CODE(HTMLa)[dir]] 属性の解説も参照されたし。)
[8] このような背景ですから、おそらく、新しく書かれる文書ではこの要素型は使用するべきではないと思います。
[9]
[PRE[
要 よ 文 に >>5-6
素 く 字 す こ
型 あ ほ る ん
を る ど の な
用 の で も 風
意 だ は ヘ に
し し な ブ 縦
て 専 い ラ 書
お 用 に イ き
く の し
れ ろ
]PRE]
- [10] >>9 計算機の能力が低かった (あるいは今でも低い) がために不適切な文字の並べ方をしてきた例は[[右横書き]]や[[縦書き]]だけではなくて、例えば[[半角]]と[[全角]]の幅を想定した整形とか、1文字ごとに[[空白]]を挿入 ([[中文]]の文章でよくある) とか、一行ごとに空行を挿入とか、 [[ASCII]] や [[ISO-8859-1]] と見せかけて実は [CODE(HTMLe)[[[font]]]] 要素を使って別の文字を表現 ([[東南アジア]]の言語の文章に多い。欧米や日本でも、 [[Symbol]] フォントとかでよくある。) とか、色々あるわけだ。そういう過去 (または現在) の悪しき慣習のうちで右横書きだけが [CODE(HTMLe)[bdo]] だけが特別扱いされる (ように見える) のは、仕方が無い側面もあるとはいえ、どうかなあとは思う。
[11]
要素型名は [Q[[ABBR[''b''i''d''i]] ''o''verride]]
(双方向性上書き) に由来しています。
([[名無しさん]] [sage])
[13]
1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
([[名無しさん]] [WEAK[2005-08-30 14:13:46 +00:00]])
[[#comment]]
* メモ