【入門編】双方向テキスト(BiDi)とインライン要素の配置 – HTML実践ガイド

混ざり合う言語のパズル!「双方向テキスト」とインライン要素の不思議な世界へようこそ

Webサイトを作っていると、たまに「おや?」と思うような現象に出会うことがありますよね。例えば、英語の中にいきなりアラビア語やヘブライ語が混ざったとき、なぜか文字の並び順が変な方向に飛んでいってしまったり、インライン要素が意図しない場所でカクッと折れ曲がったり……。

「これ、バグかな?」と焦る必要はありません。それはWebブラウザが、Unicodeの双方向アルゴリズム(BiDi)という、ちょっと賢いルールに従って一生懸命テキストを整列させているからなんです。

今日は、そんな「文字の並び順」という少し奥深い世界を、初心者の方にも分かりやすく紐解いていきましょう。

—

「左から右へ」だけじゃない!世界の書き順

私たちが普段書いている日本語や英語は「左から右(LTR: Left-to-Right)」へ進みます。でも、アラビア語やヘブライ語は「右から左(RTL: Right-to-Left)」へと進むのがルールです。

想像してみてください。「右から左へ流れる行列」の中に「左から右へ流れる行列」が割り込んでくる状況を。これ、現場ではめちゃくちゃ混乱しますよね。

Webブラウザは、この「行列の衝突」を解決するために、文字の属性を読み取って自動的に並び順を計算してくれています。これが「双方向アルゴリズム」です。

インライン要素は「箱」ではなく「添え物」

HTMLの `` や `` 、 `` といったインライン要素は、実は「箱」ではなく「テキストの列の中にそっと置かれる添え物」のようなものだと考えてみてください。

例えば、お買い物のレシートに「合計金額」というシールを貼るようなイメージです。

  • テキスト(文章): 流れる水のようなもの
  • インライン要素: その水の中に浮かぶ小さな葉っぱ

この「葉っぱ」は、水流(LTRやRTL)の向きに合わせて、一緒に流れたり、時にはひっくり返ったりします。ここで大切なのは、「インライン要素は、親となるテキストの向きに逆らえない」ということです。

—

実際に見てみよう:コードで解決する「並び順」の制御

もし、意図した並び順にならないときは、HTMLの `dir` 属性を使って、「ここはこういう向きで読んでね!」とブラウザにヒントを与えてあげましょう。

こんにちは!
مرحبا
(これはアラビア語でこんにちはという意味です)

つまずきやすいポイント:「強い」要素と「弱い」要素

ここで一つ、豆知識を。`` や `` 、 `` といった要素は、中身の文字の「性質」を強く持っています。

例えば、`` 要素の中にRTLのテキストを入れると、ブラウザは「これはコードの一部だから、並び順を崩さないように丁寧に扱おう」と判断します。逆に、何も指定しないと、ブラウザの「自動判断(推測)」に任せることになり、これが時々「あれ?文字が逆さま?」という現象を引き起こす原因になるんです。

「おかしいな?」と思ったら:
1. その要素がどの言語のグループに属しているかを確認する。
2. `dir` 属性(`ltr` か `rtl`)を明示的に指定して、ブラウザの「推測」を「確信」に変えてあげる。

---

最後に:Webは世界と繋がる場所だから

多言語対応のサイトを作るとき、この「双方向テキスト」の制御は避けて通れない道です。最初は難しく感じるかもしれませんが、「言葉にも、川の流れのような向きがあるんだな」とイメージしてみてください。

HTMLやCSSは、決して冷たいルールだけではなく、世界中のどんな言語でも正しく伝えようとする「優しさ」で溢れています。

もし制作中に文字の並びが変になってしまっても、それはあなたが「世界を繋ぐWebサイト」を作っている証拠です。ぜひ、怖がらずに `dir` 属性という魔法を使って、文字たちを正しい方向へ導いてあげてくださいね!

何か分からないことがあれば、いつでもまた聞きに来てください。応援しています!

コメント

タイトルとURLをコピーしました