RTL на веб-странице меняет местами числа с тире

Когда мой веб-сайт отображает текст на иврите, смешанный с цифрами, и есть число с тире посередине, отображается номер с тире посередине. RTL. Например, с текстом: רמה 4–0 он должен отображать 4-0 вместо 0-4 , поскольку это числовая последовательность, а «4» предшествует «0». Однако в проверенных мной браузерах он показывает «0» перед «4».

Так как это может произойти в любом месте отображения системных данных, было бы гораздо предпочтительнее иметь решение CSS, которое не требует чего-то вроде:

<span style="direction:ltr">4-0</span>

Общее направление текста должно оставаться RTL, но числа с тире должны будет отображаться LTR. Должен правильно отображаться в основных браузерах (IE, Firefox, Chrome).

16
задан j0k 5 June 2013 в 11:38
поделиться

4 ответа

Есть еще один способ сделать это, добавив & # x200E; перед цифрами:

<span>&#x200E;+44 780-780-7807</span>
12
ответ дан 30 November 2019 в 17:11
поделиться

Ответ с упоминанием & amp; lrm; и & amp; rlm; верно. Вставка этих невидимых маркеров до или после символа со «слабым» направлением (знаки препинания или цифры, которые не имеют «сильного» направления, такого как латинские буквы или буквы арабского языка / иврита) гарантируют, что слабый символ наследует желаемое направление.

В статье Википедии "Двунаправленный текст" / "Двунаправленный текст" содержится отличное описание проблемы и того, как интерпретаторы Unicode должны обрабатывать текст со смешанным направлением. Это помогло мне понять проблему:

http://en.wikipedia.org/wiki/Bi-directional_text

Мое личное решение - избегать использования & amp ; LRM; / & амп; RLM; символы, потому что я создаю сайт, который должен работать в обоих направлениях, а вставка контента приведет к огромному беспорядку. Вместо этого они могут быть автоматически вставлены с использованием CSS-свойств «до» и «после». Вот пример, использующий обозначение Unicode «\ 200F» для маркера RLM:

#RIGHT-TO-LEFT-MARKER-CONTENT,
.contributor:after,
/*.contributor:before,*/
.right-to-left-marker-content {
    /*Inserts &rlm; marker to ensure
    the contained content is always 
    displayed RTL*/
    content: "\200F";
}

(Обратите внимание, что CSS находится в формате «СУХОЙ CSS», который позволяет вам добавлять селекторы по мере необходимости, чтобы избежать повторного указания фактическое объявление стиля снова и снова. Важной частью является только то, что у вас есть содержимое: "\ 200F" и что вы добавляете: before или: after к селектору по мере необходимости.

1
ответ дан 30 November 2019 в 17:11
поделиться

используйте этот класс:

.number_ltr {
    direction: ltr!important;
    unicode-bidi: embed;
}

, поэтому ваш HTML-код должен выглядеть следующим образом:

<span class="number_ltr">4-0</span>
1
ответ дан 30 November 2019 в 17:11
поделиться

НЕ рассматривайте обратную последовательность, пожалуйста, так как это также сделает результат обратным, если пользователь попытается скопировать и вставить его в другое приложение. Вместо этого вас могут заинтересовать не-css решения:

LRM/RLM‍

LRE/RLE…PDF
0
ответ дан 30 November 2019 в 17:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: