Ответ 1
Здесь много проблем. Согласно стандарту unicode, скобки являются нейтральными, то есть они по сути не рассматриваются как LTR или RTL. Они берут направление своего окружающего языка. В примерах, где он неправильно отображается, направление закрывающей скобки считается таким же, как на английском языке, то есть LTR.
Первая проблема: Вы указываете браузеру, что абзац должен рассматриваться как RTL. Браузер находит английский внутри, что является LTR, поэтому он считает, что английский встроен внутри абзаца RTL, а последний символ ")" рассматривается как RTL. (окружающий пункт RTL).
Вторая проблема: Здесь нет проблем, из простого взгляда на исходный код, который вы предоставили, похоже, вы правильно поставили скобки. Но на самом деле, закрывающая скобка, которая должна быть после текста RTL и до закрытия </P> на самом деле до исходного RTL-текста. Если вы наберете его правильно, это будет выглядеть неправильно (потому что используемый текстовый редактор предполагает, что конечная скобка LTR соответствует юникоду). Чтобы проверить это, скопируйте содержимое в свой редактор, поместите курсор в конец "проблемы:" и нажмите стрелку вправо несколько раз и посмотрите местоположение последнего скобки.
Не давая гораздо больше объяснений, вот несколько примеров, чтобы заставить это работать:
<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", поэтому я привел примеры того и другого. Кроме того, поскольку я предполагаю, что вам в основном нужно решить вашу вторую проблему, где вы, главным образом, имеете RTL-текст в другом документе LTR, я представил два последних примера.
ПРИМЕЧАНИЕ. Если два последних примера - это то, что вы ищете, и вы собираетесь использовать CSS, требуется свойство unicode-bidi, и это делает разницу между работой и неработоспособностью.