* 仕様書
[REFS[
- [11] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2014-01-09 07:29:06 +09:00]] 版)
]REFS]
* CSS における bidi
[19] [[CSS]] では [CODE(CSS)@en['[[unicode-bidi]]']] と [CODE(CSS)@en['[[direction]]']] の2つの[[特性]]が
[[bidi]] に関わります。 [[Unicode]] の [[bidi]] に関する[[文字]]と合わせて、 [[Unicode]]
の [[bidi]] アルゴリズムに従って[[レンダリング]]されます。
* HTML における bidi
** 双方向アルゴリズム書式付け文字
[21] [[HTML]] でいう[DFN[[RUBYB[双方向アルゴリズム書式付け文字]@en[bidirectional-algorithm formatting characters]]]]は、
[[Unicode]] の [CODE[[[Bidi_Char]]]] のうち [[Implicit Directional Formatting Characters]]
3文字を除いた9文字とされています [SRC[>>11]]。いずれも [[Unicode]] の [[bidi]] アルゴリズムで動作が定義されている[[文字]]です。
[REFS[
- [20] [CITE@en[Character set "$html:bidirectional-algorithm-formatting-characters"]] ([TIME[2014-01-13 09:06:21 +09:00]] 版)
]REFS]
** 双方向アルゴリズム書式付け文字範囲
[22] [DFN[[RUBYB[[[双方向アルゴリズム書式付け文字範囲]]]@en[bidirectional-algorithm formatting character ranges]]]]とは、次の各範囲です [SRC[>>11]]。
[FIG[
- [23] [[HTML要素]]の[[null名前空間]]の[[属性]]それぞれ
- [24] [[HTML要素]]の[[子供]]の [CODE(DOMi)@en[[[Text]]]] を連結し次のように分割した範囲それぞれ
-- [25] [CODE(HTMLe)@en[[[br]]]] [[要素]]があればそこで範囲を分割する
-- [26] [[語句内容]]でない[[フロー内容]]である[[HTML要素]]があればそこで範囲を分割する
]FIG]
** 著者に対する要件
[27] [[双方向アルゴリズム書式付け文字範囲]]においては、[[双方向アルゴリズム書式付け文字]]は次のように対になっていなければ[['''なりません''']]
[SRC[>>11]]。
[FIG[
- [28] [CODE(charname)@en[[[LRE]]]] / [CODE(charname)@en[[[RLE]]]] があれば、対応する [CODE(charname)@en[[[PDF]]]] があること
- [29] [CODE(charname)@en[[[LRO]]]] / [CODE(charname)@en[[[RLO]]]] があれば、対応する [CODE(charname)@en[[[PDF]]]] があること
- [30] [CODE(charname)@en[[[LRI]]]] / [CODE(charname)@en[[[RLI]]]] / [CODE(charname)@en[[[FSI]]]]
があれば、対応する [CODE(charname)@en[[[PDI]]]] があること
]FIG]
[34] つまり [[CSS]] によって[[要素]]ごとに適用される規定 (>>18) と矛盾する形でこれらの[[文字]]を使うと[[レンダリング]]結果が予測しづらくなってしまいますから、
[[要素]]の入れ子関係とこれらの[[文字]]の入れ子関係が整合的でなければならないのです。
[31] しかしこれらの[[文字]]を直接使うよりは、 [CODE(HTMLa)@en[[[dir]]]] [[属性]]、
[CODE(HTMLe)@en[[[bdi]]]] [[要素]]、 [CODE(HTMLe)@en[[[bdo]]]] [[要素]]を使うことが[RUBYB[勧められています]@en[encouraged]]。
[SRC[>>11]]
** 処理モデル
[13] [[HTML]] の[[レンダリング]]における [[bidi]] の扱いに関しては、 [CODE(CSS)@en['[[unicode-bidi]]']],
[CODE(CSS)@en['[[direction]]']], [CODE(CSS)@en['[[content]]']] といった [[CSS]] の[[特性]]を介して
[[Unicode]] の [[bidi]] アルゴリズムに従うものとして定義されています [SRC[>>11]]。
[14] [[利用者エージェント]]は、
- [15] [[CSS]] を実装し、 >>13 や[[著者]]による指定に従う
- [16] >>13 の[[利用者エージェントスタイルシート]]に対応しているかのように実装するものの、
[[著者]]による [[CSS]] の指定には対応しない
- [17] [[CSS]] 以外の[[スタイル言語]]で、同等のものを実装する
... のいずれかの形で実装することを求められています [SRC[>>11]]。
[18] [[HTML]] の中では、 [CODE(HTMLa)@en[[[dir]]]] [[属性]]、 [CODE(HTMLe)@en[[[bdi]]]] [[要素]]、
[CODE(HTMLe)@en[[[bdo]]]] [[要素]]、 [CODE(HTMLe)@en[[[br]]]] [[要素]]、[CODE(HTMLe)@en[[[pre]]]]
[[要素]]、[CODE(HTMLe)@en[[[textarea]]]] [[要素]]、 [CODE(HTMLe)@en[[[wbr]]]] [[要素]]について [[bidi]]
に関わる[[レンダリング]]の規定があります。
[REFS[
- [32] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2014-01-09 07:29:06 +09:00]] 版)
- [33] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2014-01-09 07:29:06 +09:00]] 版)
]REFS]
[35] [[CSS]] 以外で[[レンダリング]]される場面についても規定があります。
[REFS[
- [38] [CODE(DOMm)@en[[[drawText]]]]
-- [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2014-01-09 07:29:06 +09:00]] 版)
- [36] [CODE(HTMLe)@en[[[title]]]] [[要素]]
-- [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2014-01-09 07:29:06 +09:00]] 版)
- [37] [[UI]] 要素各種
-- [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2014-01-09 07:29:06 +09:00]] 版)
]REFS]
* 歴史
[1]
[CITE[Authoring HTML for Middle Eastern Content]]
([[名無しさん]] [sage])
[2]
[CITE[Exploring Better Source Editing for Bidirectional XHTML and XML]]
([[名無しさん]] [sage])
[3]
[CITE[Hebrew characters in XML and XHTML]]
([[名無しさん]])
[4]
[CITE[Authoring HTML for Middle Eastern Content]]
([[名無しさん]] [WEAK[2006-12-20 23:31:24 +00:00]])
[5]
[CITE@en-US[Internationalization Best Practices: Handling Right-to-left Scripts in XHTML and HTML Content -- (Editors' copy)]] ([TIME[2006-07-27 02:17:07 +09:00]] 版)
[6] [CITE[Revision of UBA for improved display of URL/IRIs - Google Docs]]
( ([TIME[2011-07-23 14:30:01 +09:00]] 版))
(cache
[7] [CITE@en[Web Applications 1.0 r5754 Define conformance criteria around bidi formatting characters]]
( ([TIME[2011-01-10 18:55:00 +09:00]] 版))
[8] [CITE@en[Web Applications 1.0 r7783 Update HTML in preparation for Unicode 6.3]]
( ([TIME[2013-03-30 08:20:00 +09:00]] 版))
[9] [CITE[Widget Interface]]
( ([TIME[2013-10-29 00:58:56 +09:00]] 版))
[10] [CITE@en-US[Additional Requirements for Bidi in HTML]]
([TIME[2010-03-05 16:28:54 +09:00]] 版)
[12] [CITE[IRC logs: freenode / #whatwg / 20101111]]
( ([TIME[2010-11-19 23:02:05 +09:00]] 版))