Подтвердить что ты не робот

Скобки отображаются неправильно для стиля отображения справа налево

Код html

<html dir="rtl">
<p>hello (world)</p>
</html>

вы увидите такую ​​страницу:

(hello (world

Однако, если я изменю html-код на

<html dir="rtl">
<p>hello (world) again</p>
</html>

Затем текст отображается нормально:

 hello (world) again

Кто-нибудь может объяснить, почему это происходит? Как исправить первый пример?

Мой браузер хром

4b9b3361

Ответ 1

Вам просто нужно добавить символ LRM после последней скобки. Объект HTML: &#x200E;

<html dir="rtl">
<body>
<p>hello (world)&#x200E;</p>
</body></html>

Это говорит браузеру интерпретировать скобки как показания слева направо.

Ответ 2

Или лучше попробовать в CSS

*:after {
    content: "\200E‎";
}

Ответ 3

Это правильное отображение скобок для текста справа налево (видимо). Эта статья дает немного больше информации.

http://www.i18nguy.com/markup/right-to-left.html

Атрибут dir теперь обесценивается.

Ответ 4

Является ли атрибут rtl причиной рендеринга справа налево? Возможно, добавление пробела в конец будет исправлять его, не глядя ничем иным, если вы не можете избежать атрибута rtl.

Я предполагаю, что у вас есть разделы головы и тела на вашей реальной странице тоже?

Ответ 5

Если у кого-то есть эта проблема в WordPress, вы можете попробовать это исправление:

https://gist.github.com/dtbaker/b532e0e84a8cb7f22f26

function dtbaker_rtl_bracket_hack($content){
    if(is_rtl()){
        $content = preg_replace('#<p>([^<]+)\)\s*</p>#','<p>$1)&#x200E;</p>',$content);
        $content = preg_replace('#<p>\s*\(([^<]+)</p>#','<p>&#x200E;($1</p>',$content);
    }
    return $content;
}
add_filter('the_content','dtbaker_rtl_bracket_hack',100,1);