我正在努力学习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的属性对阿拉伯语、希伯来语等词很有用,但我不知道这里发生了什么。
我搜索了谷歌,并在这里找到了一个完整的答案,对unicode所做的事情,但我唯一能找到的是“提供一个嵌入级别”,但对我来说还不够清楚。
有人能解释一下这个属性吗?在上面的代码中会发生什么?
发布于 2014-12-01 18:20:52
嵌入的含义最终在UAX #9 Unicode双向算法中定义。我不想假装理解所有这些,但我认为在你的情况下会发生这样的事情:
在代码的第二部分中,您只需为字符串“James”声明从右到左的方向。这没有影响,因为direction属性只影响整体布局方向(例如,表列是从左到右还是从右到左运行)和指向中性文本的文本方向。这里的内容只有拉丁字母,它们有很强的左右方向性,还有一个空格,它适应相邻字符的方向性,具有很强的方向性。
然而,在第一部分中,声明unicode-bidi:embed将使元素作为一个整体按照其声明的方向性(从右到左)来处理,即使这个方向性在元素中没有影响。从某种意义上说,它的作用就像一个从右到左的字母。用X标记它,我们就有X:15。这就像X是一个阿拉伯字母一样:这个方向强的字母出现在它的右边,然后在它的左边出现指向性弱的标点符号“:”,然后是从左到右运行的普通数字15 (甚至在阿拉伯文本中也是如此)。
https://stackoverflow.com/questions/27230866
复制相似问题