Причина, по которой ваш текущий текст ведет себя так, заключается в том, что числа не имеют «сильного направления» и могут быть встроены в текст, идущий в любом направлении. Независимо от вашей разметки и CSS, браузер видит «ااڡوںںطں ، ااڡوںںطو 2. ااقونيطن هو قاتل النمر» как одну строку и определяет, что она должна отображаться справа налево.
Замена » 2 "с латинскими буквами (или словом) заставляет строку быть разделенной на три части, где она меняет направление.
Чтобы заставить браузер обрабатывать две части текста c Arabi по отдельности, вы можете используйте элемент bdi
(Bi-Direction Isolate) вместо span
для красных и зеленых участков. Обратите внимание, что вам не нужно указывать конкретное направление любого текста, браузер обработает это в соответствии с правилами Unicode.
.red {
color: red;
}
.green {
color: green;
}
<p>Example:
1. <bdi class="red">ااڡوںںطں، ااڡوںںطو</bdi>
2. <bdi class="green">ااقونيطن هو قاتل النمر</bdi>
</p>
CSS -только эквивалент этого unicode-bidi: isolate;
, хотя MDN отмечает, что его прямое использование не рекомендуется в пользу элементы, которые подразумевают это (предположительно, включая bdi
).
.red {
color: red;
unicode-bidi: isolate;
}
.green {
color: green;
unicode-bidi: isolate;
}
<p>Example:
1. <span class="red">ااڡوںںطں، ااڡوںںطو</span>
2. <span class="green">ااقونيطن هو قاتل النمر</span>
</p>