从右到左的文本似乎显示顺序不正确

Right-to-left text seems to be displaying out of order

我有以下文字:

.00 x 2 = .00

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

x 2 = .00 .00

谁能解释一下为什么会这样显示?

您问题的完整答案必须解释 Unicode Bidirectional Algorithm 的工作原理,而且它非常复杂。

根据我有限的理解,该算法检测到 "x 2 = .00" 和“$3.00”是两个独立的 "runs" 文本,应按从左到右的顺序显示。由于整个块是从右到左的,因此您会看到两个 运行 按 RTL 顺序排列。

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

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

<body dir="RTL">
    &#x202A;.00 x 2 = .00&#x202C;
</body>

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

<body dir="RTL">
    <span dir="LTR">.00 x 2 = .00</span>
</body>

由于我看不懂阿拉伯语或希伯来语,所以我无法告诉您示例文本在嵌入到 RTL 脚本中时应该如何显示。但是,您确实可以控制渲染。