为什么“[x]y”在RTL方向显示不正确?
Why does "[x]y" display incorrectly in the RTL direction?
<div style="direction: rtl">
[x]y
</div>
您可以看到 HTML 文本 [x]y
显示为 x]y]
。
这个结果的原因是什么?
PS:我在 Chrome 56.0.2924.87(64 位)中得到了结果。
我不能告诉你原因,但我可以告诉你如何解决它:添加 unicode-bidi: bidi-override;
。参见 more 关于它
<div style="direction: rtl; unicode-bidi: bidi-override;">
[x]y
</div>
描述
The unicode-bidi property is used together with the direction property to set or return whether the text should be overridden to support multiple languages in the same document.
不够清楚,无法解释该行为。但是,它有效。
编辑
The MDN article 在这里带来了一些启发,bidi-override
实际上禁用了浏览器标准的智能行为,一切都按原样/按预期工作。
经过一番研究,我发现the following info: Right-To-Left text direction
Parentheses and square brackets do not have an inherent direction. The open parenthesis is between LTR and RTL text runs and so cannot "inherit" the direction of the surrounding text. It therefore defaults to the RTL base direction of the paragraph and is placed to the left of the Hebrew word shalom. Note the closing square bracket is embedded in a single run of left-to-right text. It therefore adopts the direction of its surrounding text and is placed to the right of the English word shalom.
渲染正确,即符合规范。您要求从右到左的布局。渲染首先取 [
字符。它在方向上是中性的,因此在 RTL 运行 最右边呈现并镜像(所以它看起来像 ]
)。接下来,它的左边依次是 x]y
,因为拉丁字母 x
和 y
具有固有的从左到右的方向性,而中性 ]
得到它的他们的方向性。
要得出的结论取决于您想要的渲染以及您使用从右到左方向性的原因。
其中一个解决办法是在括号
后加上‎
感谢@freeworlder 的解决方案
brackets displays wrongly for right to left display style
即使你可以使用其他字符,请遵循此 link
http://www.codetable.net/hex/200e
尝试在需要闭方括号的地方使用开方括号“[”,反之亦然。我有一个字母映射到“[”的字体,它不会显示。我将数据库中的字母更改为“]”,它起作用了。
<div style="direction: rtl">
[x]y
</div>
您可以看到 HTML 文本 [x]y
显示为 x]y]
。
这个结果的原因是什么?
PS:我在 Chrome 56.0.2924.87(64 位)中得到了结果。
我不能告诉你原因,但我可以告诉你如何解决它:添加 unicode-bidi: bidi-override;
。参见 more 关于它
<div style="direction: rtl; unicode-bidi: bidi-override;">
[x]y
</div>
描述
The unicode-bidi property is used together with the direction property to set or return whether the text should be overridden to support multiple languages in the same document.
不够清楚,无法解释该行为。但是,它有效。
编辑
The MDN article 在这里带来了一些启发,bidi-override
实际上禁用了浏览器标准的智能行为,一切都按原样/按预期工作。
经过一番研究,我发现the following info: Right-To-Left text direction
Parentheses and square brackets do not have an inherent direction. The open parenthesis is between LTR and RTL text runs and so cannot "inherit" the direction of the surrounding text. It therefore defaults to the RTL base direction of the paragraph and is placed to the left of the Hebrew word shalom. Note the closing square bracket is embedded in a single run of left-to-right text. It therefore adopts the direction of its surrounding text and is placed to the right of the English word shalom.
渲染正确,即符合规范。您要求从右到左的布局。渲染首先取 [
字符。它在方向上是中性的,因此在 RTL 运行 最右边呈现并镜像(所以它看起来像 ]
)。接下来,它的左边依次是 x]y
,因为拉丁字母 x
和 y
具有固有的从左到右的方向性,而中性 ]
得到它的他们的方向性。
要得出的结论取决于您想要的渲染以及您使用从右到左方向性的原因。
其中一个解决办法是在括号
后加上‎
感谢@freeworlder 的解决方案 brackets displays wrongly for right to left display style
即使你可以使用其他字符,请遵循此 link http://www.codetable.net/hex/200e
尝试在需要闭方括号的地方使用开方括号“[”,反之亦然。我有一个字母映射到“[”的字体,它不会显示。我将数据库中的字母更改为“]”,它起作用了。