インラインでテキストの方向を混在させるために、Unicode の right-to-left mark (RLM) 又は left-to-right mark (LRM) を使用する

達成方法に関する重要な情報

この達成方法 (参考) の使用法と、この達成方法が WCAG 2.1 達成基準 (規定) とどのように関係するのかに関する重要な情報については、WCAG 達成基準の達成方法を理解するを参照のこと。適用 (対象) のセクションは、その達成方法の範囲について説明しており、特定の技術に関する達成方法の存在は、その技術があらゆる状況で WCAG 2.1 を満たすコンテンツを作成するために使用できることを意味するものではない。

適用 (対象)

HTML 及び XHTML。

これは達成基準 1.3.2: 意味のあるシーケンス (G57: コンテンツを意味のあるシーケンスで並べるを満たす方法として十分)に関する達成方法である。

解説

この達成方法の目的は、HTML の双方向性アルゴリズムが望ましくない結果を生じるときに、それを無効にするために Unicode 制御文字の right-to-left mark と left-to-right mark を用いることである。たとえば、スペース又は句読点のようなニュートラルな文字が異なる方向性のテキストの間に置かれている時に必要となることがある。この達成方法で用いられているコンセプトは、W3C 文書の「What you need to know about the bidi algorithm and inline markup」に書かれている。

訳注

上記の「What you need to know about the bidi algorithm and inline markup」は、「Inline markup and bidirectional text in HTML」とタイトルが変更されている。また、Unicode controls vs. markup for bidi support によれば、Unicode の right-to-left mark (RLM) 又は left-to-right mark (LRM) よりも、dir 属性による書字方向の制御が勧められている。H56: 入れ子になったテキストの表記方向に伴う問題を解決するために、インライン要素の dir 属性を使用する (HTML) も参照のこと。

Unicode 制御文字の right-to-left mark 及び left-to-right mark は、以下に示すように、 そのまま、又は文字符号か数字符号の参照によって挿入することが可能である。

双方向性のアルゴリズムが原因で、ソースコード編集者は期待通りに文字符号や数字符号の参照を表示できないことがある。

事例

例 1

この事例では、英語の文章の間にあるアラビア語のフレーズを示している。感嘆符はアラビア語のフレーズの一部であり、その左側にあるべきである。それはアラビア文字とラテン文字の間であり、段落全体の方向が LTR (左から右) であるため、双方向性のアルゴリズムはアラビア語のフレーズの右側に感嘆符を置いている。

The title is "مفتاح معايير الويب!" in Arabic.

視覚的に並び替えられた ASCII バージョン (右から左へのテキストは大文字、左から右は小文字):

the title is "HCTIWS SDRADNATS BEW!" in arabic.

表示されたテキスト (以下を参照) を見るとき、感嘆符の直後に Unicode の right-to-left mark を 挿入することによって、感嘆符を正しい位置に置くことになる。right-to-left mark を挿入するために、エスケープ文字又は (不可視の) 制御文字を使用することができる。

The title is "مفتاح معايير الويب!‏" in Arabic.

視覚的に並び替えられた ASCII バージョン:

the title is "!HCTIWS SDRADNATS BEW" in arabic.

参考リソース

この参考リソースは、あくまでも情報提供のみが目的であり、推薦などを意味するものではない。

検証

手順

  1. テキストの方向が変わっている箇所のソースを調べる。
  2. テキストの方向が変わる時、スペース又は句読点のようなニュートラルな文字が初期設定ではない方向でレンダリングされたテキストに隣接しているかどうかを確認する。
  3. 上記 2. が真であり、かつ HTML の双方向性のアルゴリズムがニュートラルな文字の誤った配列を生み出している場合、ニュートラルな文字の後に Unicode の right-to-left 又は left-to-right mark があり、ニュートラルな文字を前の文字列の一部として配置させているかどうかを確認する。

期待される結果

  • #3 の結果が真である。