2

我正在努力学习 unicode-bidi 属性的用法。例如,我认为如果我将方向设置为带有拉丁字母的单词,并将嵌入的值分配给 unicode-bidi 属性,则该单词将被隔离并且不会影响周围的上下文。然而,下面的代码与我的预期相反:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<span style="direction:rtl;unicode-bidi:embed"> James</span>:15<br/>
<span style="direction:rtl;"> James:</span>15
</body>
</html>

我希望第一个显示右侧的数字,因为“rtl”文本是孤立的,但第二个会显示。

我知道属性 unicode-bidi 对于阿拉伯语、希伯来语等单词很有用,但我想知道这里会发生什么。

我搜索了谷歌并在这里找到了 unicode-bidi 功能的可靠答案,但我唯一能找到的是“提供一个嵌入级别”,这对我来说还不够清楚。

有人可以解释这个属性以及上面的代码中发生了什么吗?

4

1 回答 1

1

嵌入的含义最终在 UAX #9 Unicode Bidirectional Algorithm中定义。我不想假装理解所有这些,但我认为在你的情况下会发生以下情况:

在代码的第二部分,您只需为字符串“James”声明从右到左的方向。这没有影响,因为该direction属性仅影响整体布局方向(例如,表格列是从左到右还是从右到左)和方向性中性文本的文本方向。这里的内容只有拉丁字母,具有很强的从左到右的方向性,还有一个空格,它适应了方向性强的相邻字符的方向性。

然而,在第一部分中,声明unicode-bidi:embed会导致元素作为一个整体按照其声明的方向性(从右到左)进行处理,即使该方向性在元素内部没有影响。从某种意义上说,它就像一个从右到左的字母。用 X 标记它,我们因此有 X:15。这就像 X 是一个阿拉伯字母一样呈现:这个方向性强的字母出现在右侧,然后,在它的左侧,方向性弱的标点符号“:”,然后是从左到右的常用数字 15 (就像他们在阿拉伯语文本中所做的那样)。

于 2014-12-01T18:20:52.123 回答