ここには多くの問題があります。Unicode標準によると、ブラケットはニュートラルです。つまり、ブラケットは本質的にLTRまたはRTLとして扱われません。彼らは周囲の言語の方向性を取ります。正しくレンダリングされていない例では、閉じ括弧の方向は英語と同じ、つまりLTRであると想定されています。
最初の問題:段落をRTLとして扱う必要があることをブラウザに伝えます。ブラウザはLTRである英語を内部で検出するため、英語はRTL段落内に埋め込まれていると見なされ、最後の文字「)」はRTLとして扱われます。(周囲の段落はRTLです)。
2番目の問題:ここでは問題はありません。提供したソースコードを簡単に見ると、角かっこが適切に提供されているように見えます。ただし、実際には、RTLテキストの後、終了</ P>の前にあるはずの閉じ括弧は、実際には開始RTLテキストの前にあります。正しく入力すると、間違って表示されます(使用しているテキストエディタは、終了ブラケットがユニコードによるLTRであると想定しているため)。これを確認するには、内容をエディターにコピーし、「problem:」の最後にカーソルを置き、右矢印を繰り返し押して、最後の角かっこの位置を確認します。
これ以上説明することなく、これを機能させるためのいくつかの例を次に示します。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Bracket problems with BiDi</title>
</head>
<body>
<p style="direction: rtl;"><span dir="ltr">Bracket problem no more: hello (world):</span></p>
<p style="direction: rtl;"><span style="direction: ltr; unicode-bidi: embed">Bracket problem no more: hello (world):</span></p>
<p style="direction: rtl;">Bracket problem no more: السلام (عليكم)</p>
<!-- style for p tag below is ltr by default -->
<p>Bracket problem no more: <span dir="rtl">السلام (عليكم)</span></p>
<p>Bracket problem no more: <span style="direction: rtl; unicode-bidi: embed">السلام (عليكم)</span></p>
</body>
</html>
style = "direction:ltr;"の方法には違いがあります。動作し、dir = "ltr"が動作するので、両方の例を示しました。また、基本的に2番目の問題を解決する必要があると想定しているため、主にLTRドキュメントにRTLテキストが含まれているため、最後の2つの例を示します。
注:最後の2つの例が探しているものであり、CSSを使用する場合は、unicode-bidiプロパティが必要です。これにより、機能する場合と機能しない場合のすべての違いが生じます。