当我的网站显示混有数字的希伯来语文本,并且中间有一个带短划线的数字时,中间的短划线数字显示为RTL。例如,使用文本:
רמה 4–0
,它应显示4-0
而不是0-4
,因为它是数字序列,'4'在'0'之前。但是,在我检查的浏览器上,它在'4'之前显示'0'。
由于可能会出现系统数据中的任何位置,因此最好使用不需要以下内容的CSS解决方案:
<span style="direction:ltr">4-0</span>
文本的一般方向应保持RTL,但带有破折号的数字应显示为LTR。应该在主要浏览器(IE,Firefox,Chrome)上正确显示。
答案 0 :(得分:13)
您可以在数字序列之前和之后嵌入left-to-right和right-to-left标记字符(‎
和‏
) - 这不需要任何额外的标记,不需要分隔符并将保留源文档中的文本顺序。
另一种方法是使用某些标记来用破折号分隔数字(类似于你所做的),因为Unicode BIDI算法在没有帮助的情况下不能很好地处理这个特定的情况( lrm和rlm)。
没有必要像你一样内联CSS,但你仍然需要这样的东西:
CSS:
.numdash
{
direction: ltr;
}
HTML:
<span class="numdash">4-0</span>
第三个选项是反转数字,只需在标记中使用0-4,并通过bidi算法反转。
答案 1 :(得分:11)
还有另一种方法可以通过在数字前附加来实现:
<span>‎+44 780-780-7807</span>
答案 2 :(得分:5)
答案 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 ‏ 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处理文本的方式如下:
(来自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。
但是,最简单的方法是使用连字符(-),而不要使用连字符(-)。连字符将为您提供正确的运行方式:
答案 7 :(得分:-1)
将您的内容放在 <bdi></bdi>
标签中。 – 这创造了奇迹!