从右到左的文本似乎乱序显示

时间:2018-06-22 16:42:42

标签: internationalization right-to-left

我有以下文字:

  

$ 3.00 x 2 = $ 6.00

当我将direction: rtl;应用于页面正文时,此文本显示为

  

x 2 = $ 6.00 $ 3.00

任何人都可以解释为什么它以这种方式显示吗?

1 个答案:

答案 0 :(得分:0)

要完全回答您的问题,必须说明Unicode Bidirectional Algorithm的工作原理,而且非常复杂。

据我有限的理解,该算法检测到“ x 2 = $ 6.00”和“ $ 3.00”是两个单独的“游程”文本,应按从左到右的顺序显示。由于整个块是从右到左,因此您会看到这两个块以RTL顺序运行。

不清楚您的问题是试图解决问题还是好奇。但是,如果您需要完全以LTR显示方程式,但是在其他一些RTL文本中间,则可以使用Unicode control characters

例如该RTL块中的文本将显示two markers之间的文本,作为连续运行的LTR文本。

<body dir="RTL">
    &#x202A;$3.00 x 2 = $6.00&#x202C;
</body>

在大多数情况下(如果可以的话),最简单的方法是用HTML元素隔离LTR文本,例如:

<body dir="RTL">
    <span dir="LTR">$3.00 x 2 = $6.00</span>
</body>

由于我无法阅读阿拉伯语或希伯来语,因此无法告诉您示例文本在嵌入RTL脚本后应如何显示。但是,您确实可以控制渲染。