Отображение цифр и знаков препинания в двунаправленном тексте - PullRequest
1 голос
/ 28 апреля 2019

Я работаю над веб-приложением, которое работает с многоязычным текстом.Он может иметь сочетание языков LTR, таких как английский и RTL, таких как арабский.

Ниже приведен мой код

Дело 1

<div style="direction: rtl;"><div ><span >
    <span>تتتتتتتتت   يصيصيصيي </span>
    <span>1234  5678</span>
</span></div></div>

Ожидаемый результат

                                             1234 5678 تتتتتتتتت   يصيصيصيي

Фактический вывод

                                               تتتتتتتتت يصيصيصيي 1234 5678

дело2

<div style="direction: rtl;"><div ><span >
    <span>تتتتتتتتت   يصيصيصيي </span>
    <span>abc</span>
    <span>1234  5678</span>
</span></div></div>

Ожидаемый вывод

                                           1234 5678 abc تتتتتتتتت   يصيصيصيي

Фактический вывод

                                            abc 1234 5678 تتتتتتتتت يصيصيصيي

Чтобы исправить проблему, я добавил тег dir = "auto", чтобы охватить число "Он правильно отображается. Я не понимаю, почему это работает и будет ли оно работать во всех случаях.

case 1

<div style="direction: rtl;"><div ><span >
    <span>تتتتتتتتت   يصيصيصيي </span>
    <span dir="auto">1234  5678</span>
</span></div></div>

Case 2

<div style="direction: rtl;"><div ><span >
    <span>تتتتتتتتت   يصيصيصيي </span>
    <span>abc</span>
    <span dir="auto">1234  5678</span>
</span></div></div>

Теперь мой вопрос: поскольку число имеет слабую направленность, как решение этой проблемы решается добавлением автоматического тега? Я не буду знать диапазон, соответствующий числу во время выполнения. Могу ли я добавить dir = "auto" ко всем диапазонам?

Как правильно решить эту проблему. Внутренний текст span может быть на любом языке (не обязательно на английском).

1 Ответ

0 голосов
/ 29 апреля 2019

По умолчанию <span> и <div> наследуют свой атрибут dir от родителя. Это означает, что dir="auto" изменит поведение этих диапазонов. Что касается только чисел, отдельный диапазон с dir="auto" в Chrome сбрасывает направление компоновки, и используется (слабый) LTR. Обратите внимание, что в Edge этот недостаток учитывается, и диапазон только для чисел выложен RTL даже с dir="auto".

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

...