【问题标题】:Why does "[x]y" display incorrectly in the RTL direction?为什么“[x]y”在 RTL 方向显示不正确?
【发布时间】:2017-05-15 07:05:27
【问题描述】:

<div style="direction: rtl">
[x]y
</div>

您可以看到 HTML 文本 [x]y 显示为 x]y]

这个结果的原因是什么?

PS:我在 Chrome 56.0.2924.87(64 位)中得到了这个结果。

【问题讨论】:

  • 可以在浏览器上添加信息吗?它对我来说确实很好用(显示 [x]y)。我通过 SO HTML 功能和 .html 文件对其进行了测试
  • 在火狐上,我看到y[x]
  • @Kroltan 仍然是错误的。很奇怪。
  • 我在我的电脑上试过,发现 Edge 和 Firefox 显示为y[x],Vivaldi 和 Chrome 显示为x]y]

标签: html css right-to-left


【解决方案1】:

我不能告诉你原因,但我可以告诉你如何解决它:添加unicode-bidi: bidi-override;。请参阅more 了解它

<div style="direction: rtl; unicode-bidi: bidi-override;">
[x]y
</div>

描述

unicode-bidi 属性与direction 属性一起使用来设置或返回是否应覆盖文本以支持同一文档中的多种语言。

不够清楚,无法解释该行为。但是,它有效。

编辑

The MDN article 在这里带来了一些亮点,bidi-override 实际上禁用了浏览器标准的智能行为,并且一切都按原样/按预期工作。

【讨论】:

  • unicode-bidi on MDN
  • 老实说,“为什么”是解决感知问题的次要问题(在此堆栈中)。另一个答案说明了原因,但这应该是正确的答案恕我直言。我知道这个问题不适合该网站,但对此答案 +1。
【解决方案2】:

它被正确渲染,即根据规范。您已要求从右到左的布局。渲染首先采用[ 字符。它在方向上是中性的,因此在 RTL 运行中呈现在最右边并被镜像(所以它看起来像 ])。接下来,它的左侧依次是 x]y,因为拉丁字母 xy 具有固有的从左到右的方向性,而中性的 ] 从它们那里获得方向性。
要得出的结论取决于您想要的渲染以及您使用从右到左方向性的原因。

【讨论】:

  • 很好的解释,但是根据您的回答,为什么[x] 呈现为[x](不是x]])?通过 JSFiddle 检查结果。
  • Sayakiss,在“[x]”中,没有任何东西可以防止括号偏离 RTL 布局,所以它从右到左呈现,括号字形镜像。如果您设置例如,您可以看到这一点&lt;font color=red&gt;[&lt;/font&gt;。变红的是最右边的字符;它被镜像,因此看起来像“]”。同样,最左边的字符是用“[”字形呈现的“]”。
  • "接下来,在它的左边是“x]y”,按照这个顺序,因为拉丁字母“x”和“y”具有固有的从左到右的方向性和中性“]”从他们那里获得了方向性。”我的问题是,为什么“x]y”具有固有的从左到右的方向性,而“x]”却没有?
  • 因为在前一种情况下,“中性”字符个 LTR 字符之间。所以它被视为 LTR。在后一种情况下,这不适用。
  • so it looks like “[” 应该是 so it looks like “]” 吗?
【解决方案3】:

经过一番研究,我发现the following info:Right-To-Left text direction

括号和方括号没有固有的方向。左括号位于 LTR 和 RTL 文本运行之间,因此不能“继承”周围文本的方向。因此,它默认为段落的 RTL 基本方向,并放置在希伯来语单词 shalom 的左侧。请注意,右方括号嵌入在从左到右的单行文本中。因此,它采用其周围文本的方向,并放置在英文单词 shalom 的右侧。

【讨论】:

    【解决方案4】:

    其中一种解决方案是在括号后添加&amp;#x200e;

    感谢@freeworlder 提供的解决方案 brackets displays wrongly for right to left display style

    即使您可以使用其他字符,请点击此链接 http://www.codetable.net/hex/200e

    【讨论】:

      【解决方案5】:

      尝试在需要闭合方括号的地方使用开放方括号“[”,反之亦然。我有一个字母映射到“[”的字体,它不会显示。我将数据库中的字母更改为“]”并且它起作用了。

      【讨论】:

      • 在此 html rtl 文档ilmlc.sourceforge.io/books/multilinear_torah/html/… 中使用 > 括号时遇到问题 阿拉姆语字体 estrangelo_cursive(从上数第二行)使用 > 击键来表示等于希伯来字母 kaf 的字母。第一行最后一个单词的最后一个字母显示得很好,但在第三行,从右边数第八个单词 > 出现在单词的末尾。试过 >, <, ‹. html 看到 > 并翻转以 > 开头的单词的顺序。我尝试重新映射字体按键
      • 将 > 角度更改为 <‎在mysql数据库中更正了问题
      猜你喜欢
      • 2017-03-27
      • 1970-01-01
      • 2015-11-15
      • 2020-06-28
      • 1970-01-01
      • 1970-01-01
      • 2019-05-13
      • 1970-01-01
      • 2020-06-26
      相关资源
      最近更新 更多