<div style="direction: rtl">
[x]y
</div>
<div style="direction: rtl">
[x]y
</div>
Отображается правильно, то есть согласно спецификациям. Вы попросили раскладку справа налево. Сначала рендеринг возвращает символ [
. Он направленно нейтрален и, следовательно, визуализируется в RTL-режиме справа и зеркалируется (поэтому он выглядит как ]
). Далее, слева от него приходит x]y
в этом порядке, так как латинские буквы x
и y
имеют присущую направленность слева направо, а нейтральная ]
получает от них свою направленность.
Выводы, которые нужно сделать, зависят от желаемого рендеринга и ваших причин использования направленности справа налево.
Я не могу сказать вам причину, но могу сказать вам, как ее исправить: add unicode-bidi: bidi-override;
. См. подробнее об этом
<div style="direction: rtl; unicode-bidi: bidi-override;">
[x]y
</div>
После некоторых исследований я нашел следующую информацию: Прямое правое направление текста
Скобки и квадратные скобки не имеют неотъемлемого направления. Открытые круглые скобки заключаются между текстовыми пробегами LTR и RTL и поэтому не могут "наследовать" направление окружающего текста. Поэтому он по умолчанию ссылается на базовое направление RTL абзаца и помещается слева от еврейского слова shalom. Обратите внимание, что закрывающая квадратная скобка встроена в один проход текста слева направо. Поэтому он принимает направление своего окружающего текста и помещается справа от английского слова shalom.
одним из решений является добавление ‎
после скобки
благодаря @freeworlder для решения на скобки отображаются неправильно для стиля отображения справа налево
даже вы можете использовать другие char, перейдите по этой ссылке http://www.codetable.net/hex/200e
Попробуйте использовать открытую квадратную скобку "[", где вам нужна закрытая квадратная скобка, и наоборот. У меня был шрифт с буквой, сопоставленной с "[", и она не отображалась. Я изменил букву в базе данных на "]", и она сработала.