dir には、文章の方向を ltr(left to right:左から右)、rtl(right to left:右から左)のいずれかで指定します。
大半の言語は左→右方向に書きますが、ヘブライ語などでは右→左方向に書きます。右→左語圏ではブラウザが標準で右→左方向に表示すれば問題無いのですが、両者を混在させて記述する場合に明示的な方向制御が必要になります。
方法のひとつに、HTML の dir 属性を指定する方法があります。rtl と指定された部分が右→左で表示されます。(ブラウザによって表示が代わるのを避けるために、ギリシャ文字で誤魔化してます)
ヘブライでは <span lang="he" dir="rtl">χππλ</span> といいます。
別の方法に、Unicode の方向制御文字を用いる方法があります。%u202D は左→右の開始、%u202E は右→左の開始、%u202C は方向制御の終わりを示します。
ヘブライでは [%u202D]χππλ[%u202C] といいます。
別の方法に、MIME の方向制御アルゴリズムを用いる方法があります。「ヘブライ文字だから逆方向に表示する」などの文字コード情報や、その他の方法の組み合わせで方向を決定するものですが、仕様は複雑です。(→ RFC1556)
<meta http-equiv="Content-type" content="text/plain; charset=ISO-8859-6-i"> ヘブライでは χππλ といいます。
Unicode の方法と MIME の方法が混在すると、方向制御が二重に働いてしまい、期待通りにならない場合があります。この時、Unicode の方向制御機能を上書き(無効化)するのが <bdo> です。bdo の o は上書き(over-ride)を意味します。下記の例では Unicode 制御文字が無視され、MIME による方向制御のみが行われます。
<meta http-equiv="Content-type" content="text/plain; charset=ISO-8859-6-i"> <bdo dir="ltr">ヘブライでは [%u202D]χππλ[%u202C] といいます。</bdo>