错误 - 在右-to-左文本环境中的箭头方向

你平时不使用从右到左的脚本,对吧?你描述的并没有 bug。你说的有些含糊,为了避免混淆,我将先回答你评论的后半部分。

正是它应该工作的方式。这样想:

字符 > 字面意思就是“大于”。字符串“A > B”的意思是“A 大于 B”。

同样,要说“א 大于 ב”,我将用同一个大于号字符,其 Unicode 代码为 U+003E,来替换“大于”。然而,因为整个字符串是从右到左的,所以“א”出现在“ב”的右边。如果“大于号”字符像 LTR 一样渲染,它会显示:א<ב,这读作“א 小于 ב”或“ב 大于 א”——这与正在描述的关系恰恰相反。

这就是为什么在渲染大于号字符时,它在 RTL 上下文中会被视觉翻转。但底层字符,以及支持它的 Unicode 数据,仍然是“大于”符号。字符串仍然意味着“א 大于 ב”。

现在回到你的第一个问题:

如果你将键盘布局切换到 RTL 语言(如希伯来语或阿拉伯语),那么 Shift+,(带有 < 字符的键)实际上会输入“大于”字符 >。在 RTL 上下文中,它会渲染为 ‭>‭。

[编辑:下一段是在我稍微误解了你所说的测试内容时写的。我以为你在用 LTR 键盘在 RTL 输入框中输入,而你实际上做了相反的事情。希望我仍然解答了你的疑惑。]

但你仍然在使用拉丁键盘布局,所以当你按下这个键组合时,它会插入一个“小于”字符 <。但它被渲染为 ‭<‭,因为在 RTL 中,它意味着右边的内容小于左边的内容。

底线:字符是相同的,但它的渲染被镜像了。

如果你理解了我到目前为止所说的内容,那么你就会明白,那会变成 -<,或者在 RTL 中是 ‭-\u003c‭,这可能不是你想要的。

我成功解释清楚了吗,还是让你更困惑了?

1 个赞