Ответ 1
Вам просто нужно добавить символ LRM после последней скобки. Объект HTML: ‎
<html dir="rtl">
<body>
<p>hello (world)‎</p>
</body></html>
Это говорит браузеру интерпретировать скобки как показания слева направо.
Код html
<html dir="rtl">
<p>hello (world)</p>
</html>
вы увидите такую страницу:
(hello (world
Однако, если я изменю html-код на
<html dir="rtl">
<p>hello (world) again</p>
</html>
Затем текст отображается нормально:
hello (world) again
Кто-нибудь может объяснить, почему это происходит? Как исправить первый пример?
Мой браузер хром
Вам просто нужно добавить символ LRM после последней скобки. Объект HTML: ‎
<html dir="rtl">
<body>
<p>hello (world)‎</p>
</body></html>
Это говорит браузеру интерпретировать скобки как показания слева направо.
Или лучше попробовать в CSS
*:after {
content: "\200E";
}
Это правильное отображение скобок для текста справа налево (видимо). Эта статья дает немного больше информации.
http://www.i18nguy.com/markup/right-to-left.html
Атрибут dir
теперь обесценивается.
Является ли атрибут rtl причиной рендеринга справа налево? Возможно, добавление пробела в конец будет исправлять его, не глядя ничем иным, если вы не можете избежать атрибута rtl.
Я предполагаю, что у вас есть разделы головы и тела на вашей реальной странице тоже?
Если у кого-то есть эта проблема в WordPress, вы можете попробовать это исправление:
https://gist.github.com/dtbaker/b532e0e84a8cb7f22f26
function dtbaker_rtl_bracket_hack($content){
if(is_rtl()){
$content = preg_replace('#<p>([^<]+)\)\s*</p>#','<p>$1)‎</p>',$content);
$content = preg_replace('#<p>\s*\(([^<]+)</p>#','<p>‎($1</p>',$content);
}
return $content;
}
add_filter('the_content','dtbaker_rtl_bracket_hack',100,1);