RTL在网页上用短划线反转数字

时间:2011-11-22 12:56:51

标签: css hebrew right-to-left

当我的网站显示混有数字的希伯来语文本,并且中间有一个带短划线的数字时,中间的短划线数字显示为RTL。例如,使用文本: רמה 4–0,它应显示4-0而不是0-4,因为它是数字序列,'4'在'0'之前。但是,在我检查的浏览器上,它在'4'之前显示'0'。

由于可能会出现系统数据中的任何位置,因此最好使用不需要以下内容的CSS解决方案:

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

文本的一般方向应保持RTL,但带有破折号的数字应显示为LTR。应该在主要浏览器(IE,Firefox,Chrome)上正确显示。

8 个答案:

答案 0 :(得分:13)

您可以在数字序列之前和之后嵌入left-to-rightright-to-left标记字符(&lrm;&rlm;) - 这不需要任何额外的标记,不需要分隔符并将保留源文档中的文本顺序。

另一种方法是使用某些标记来用破折号分隔数字(类似于你所做的),因为Unicode BIDI算法在没有帮助的情况下不能很好地处理这个特定的情况( lrm和rlm)。

没有必要像你一样内联CSS,但你仍然需要这样的东西:

CSS:

.numdash
{
  direction: ltr;
}

HTML:

<span class="numdash">4-0</span>

第三个选项是反转数字,只需在标记中使用0-4,并通过bidi算法反转。

答案 1 :(得分:11)

还有另一种方法可以通过在数字前附加来实现:

<span>&#x200E;+44 780-780-7807</span>

答案 2 :(得分:5)

对我而言,以下风格完美无缺:

* {
    unicode-bidi: embed;
}

你可以查看example at CodePen(我不知道希伯来语,所以我复制了here中的一些文字)

答案 3 :(得分:1)

答案提及&amp; lrm;和&amp; rlm;是正确的。在符号之前或之后插入这些不可见的标记&#34; weak&#34;方向(标点符号或数字,没有&#34;强大的方向,如拉丁字母或阿拉伯语/希伯来字母)将确保弱字符继承所需的方向。

&#34; BiDi&#34; /双向文本维基百科文章详细描述了该问题以及Unicode解释器应如何处理混合方向文本。它帮助我理解了很多问题:

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

我个人的解决方案是避免使用&amp; lrm; /&amp; rlm;符号,因为我正在建立一个需要在两个方向上工作的网站,插入内容会造成巨大的混乱。相反,他们可以使用CSS&#34;在&#34;之前自动插入。 &#34;&#34;&#34;&#34;属性。这是一个例子,使用&#34; \ 200F&#34; RLM标记的unicode名称:

#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在&#34; DRY CSS&#34;格式,允许您根据需要添加选择器,以避免反复重复陈述实际的样式声明。重要的是你有内容: &#34; \ 200F&#34;并根据需要在选择器之前或之后添加:

答案 4 :(得分:0)

请不要考虑反转序列,因为如果用户尝试将其复制并粘贴到另一个应用程序,它也会使结果反转。相反,您可能对非CSS解决方案感兴趣:

LRM/RLM‍

LRE/RLE…PDF

答案 5 :(得分:0)

使用此类:

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

因此您的HTML代码应如下所示:

<span class="number_ltr">4-0</span>

答案 6 :(得分:0)

BIDI algorithm处理文本的方式如下: enter image description here

(来自https://util.unicode.org/UnicodeJsps/bidi.jsp?a=%D7%A8%D7%9E%D7%94+4%E2%80%930&p=RTL

您有四次运行:'HEBREW','4','-','0',这些命令的RTL顺序为:'0','-','4','HEBREW'。

如果您希望将“ 4-0”视为一次运行,请在其周围加上标签:

     img_names  img_array  List_No  time
0        1_rel        253        1    38
1  1_rel_right        255        1    38
2    1_rel_top        250        1    38
3        4_rel        180        4    23
4  4_rel_right        182        4    23
5    4_rel_top        189        4    23
6        7_rel        217        7    32
7  7_rel_right        183        7    32
8    7_rel_top        196        7    32

这将为您提供运行“ HEBREW”,“ 4-0”,这将像<div dir="rtl">רמה <bdi>4–0</bdi></div> 一样呈现RTL。

但是,最简单的方法是使用连字符(-),而不要使用连字符(-)。连字符将为您提供正确的运行方式:

enter image description here

答案 7 :(得分:-1)

将您的内容放在 <bdi></bdi> 标签中。 – 这创造了奇迹!