CSS: unicode-bidi プロパティ - Unicode文字の表記方向

■ 概要

項  目説  明
記述形式 セレクタ {unicode-bidi: }
値 の形式 normalembedisolatebidi-overrideisolate-overrideplaintext
初 期 値 all
対応ブラウザー C2+ / e5+ / N6+ / Fx1+ / Op9.2+ / Ch2+ / Sa1.3+
適用可能な要素 すべての要素
継  承 しない

■ 解説

unicode-bidi プロパティ は,Unicode文字の表記方向について,その決定アルゴリズムの組み込み・上書きを指定します。  Unicode で英語や日本語などの左から右に書く言語と,さらに,アラビア語などの右から左に書く言語を同時に表示する場合, 多くのブラウザーでは各言語の文字の表示方向を適切に決定する 双方向アルゴリズム (bidirectional algorithm) が実装されています。 このアルゴリズムによる表示では,期待通りの結果が得られない場合に,Unicode によるアルゴリズムを direction プロパティ で指定したアルゴリズムで強制的に上書きするかどうかを指定するものです。

指定できる値の形式は,以下のとおりです。

説  明
normal 双方向アルゴリズムに加えて,この要素に新たなアルゴリズムを組み込むことはしません。 インライン要素に対してはブラウザー備え付けの処理方法に従って要素境界部分での順序変更を行います。
embed インライン要素に対しては双方向アルゴリズムに加えて,direction プロパティ で指定した方向に表示するアルゴリズムが組み込まれ,それに従って表示されます。 ただし,要素内部(単語内の文字列)の表示方向はブラウザーによって決められます。
isolate インライン要素においては,その要素のコンテンツと分離した表記方向のアルゴリズムとなります。 通常の表示方向のアルゴリズムの組み込みと異なる点は,連続したインラインレベル・ボックスの列(ブロックの境界や強制的な段落更新により中断しない)では,各ボックスそれぞれが 分離された列,すなわち,その列内のコンテンツは,あたかもその要素の directionプロパティで指定した表示方向を持つ独立した段落の内部であるかのように並べられます。
bidi-override インライン要素においては,ブラウザーに組み込まれた表示方法に置き換わって,direction プロパティ で指定した方向に表示するアルゴリズムに従って表示方向が決められます。 従って,要素内部(単語内の文字列)の表示方向もこのアルゴリズムによって決められます。
isolate-override isolate による分離処理と bidi-override による表示方向の強制の双方を周囲のコンテンツに対して適用します。 基本的には isolate と同様の処理になりますが,その要素のコンテンツの内部(たとえば,単語内の文字列)も bidi-override が指定された場合と同様の表示となります。
plaintext 基本的には isolate と同様の分離処理になりますが,ブロックコンテナに対しては bidiパラグラフ,インライン要素に対しては分離された列の表示方向が,要素の direction プロパティに従ってではなく, Unicodeの双方向アルゴリズムの規則: P2 と P3 によって決定されます。

■ 使用例( unicode-bidi プロパティの利用)

HTMLソース
CSS
<head> ~ </head>
<style type="text/css" media="screen, handheld, print, tv" >
<!--
   .bidi1 { direction: rtl; unicode-bidi: normal; }
   .bidi2 { direction: rtl; unicode-bidi: embed; }
   .bidi3 { direction: rtl; unicode-bidi: isolate; }
   .bidi4 { direction: rtl; unicode-bidi: bidi-override; }
   .bidi5 { direction: rtl; unicode-bidi: isolate-override; }
   .bidi6 { direction: rtl; unicode-bidi: plaintext; }
-->
</style>
HTML
<body> ~ </body>
<div><b>normal</b>: <br>Osaka12
   [ <span class="bidi1">فارسی13 | Osaka14 | فارسی15</span> ] Osaka16</div>
<br>
<div><b>embed</b>: <br>Osaka12
   [ <span class="bidi2">فارسی13 | Osaka14 | فارسی15</span> ] Osaka16</div>
<br>
<div><b>isolate</b>: <br>Osaka12
   [ <span class="bidi3">فارسی13 | Osaka14 | فارسی15</span> ] Osaka16</div>
<br>
<div><b>bidi-override</b>: <br>Osaka12
   [ <span class="bidi4">فارسی13 | Osaka14 | فارسی15</span> ] Osaka16</div>
<br>
<div><b>isolate-override</b>: <br>Osaka12
   [ <span class="bidi5">فارسی13 | Osaka14 | فارسی15</span> ] Osaka16</div>
<br>
<div><b>plaintext</b>: <br>Osaka12
   [ <span class="bidi6">فارسی13 | Osaka14 | فارسی15</span> ] Osaka16</div>

ブラウザー 表示例
normal:
Osaka12 [ فارسی13 | Osaka14 | فارسی15 ] Osaka16

embed:
Osaka12 [ فارسی13 | Osaka14 | فارسی15 ] Osaka16

isolate:
Osaka12 [ فارسی13 | Osaka14 | فارسی15 ] Osaka16

bidi-override:
Osaka12 [ فارسی13 | Osaka14 | فارسی15 ] Osaka16

isolate-override:
Osaka12 [ فارسی13 | Osaka14 | فارسی15 ] Osaka16

plaintext:
Osaka12 [ فارسی13 | Osaka14 | فارسی15 ] Osaka16

■ 備考

【参考ページ】