html - 双向文本中的数字和标点符号呈现
问题描述
我正在开发处理多语言文本的网络应用程序。它可以混合使用 LTR 语言(如英语)和 RTL 语言(如阿拉伯语)。
下面是我的代码
情况1
<div style="direction: rtl;"><div ><span >
<span>تتتتتتتتت يصيصيصيي </span>
<span>1234 5678</span>
</span></div></div>
预期产出
1234 5678 تتتتتتتتت يصيصيصيي
实际输出
تتتتتتتتت يصيصيصيي 1234 5678
案例2
<div style="direction: rtl;"><div ><span >
<span>تتتتتتتتت يصيصيصيي </span>
<span>abc</span>
<span>1234 5678</span>
</span></div></div>
预期产出
1234 5678 abc تتتتتتتتت يصيصيصيي
实际输出
abc 1234 5678 تتتتتتتتت يصيصيصيي
为了解决这个问题,我添加了 dir="auto" 标记以跨越数字“。它得到正确呈现。我不明白为什么这是有效的,它会在所有情况下都有效。
情况1
<div style="direction: rtl;"><div ><span >
<span>تتتتتتتتت يصيصيصيي </span>
<span dir="auto">1234 5678</span>
</span></div></div>
案例2
<div style="direction: rtl;"><div ><span >
<span>تتتتتتتتت يصيصيصيي </span>
<span>abc</span>
<span dir="auto">1234 5678</span>
</span></div></div>
现在我的问题是,由于数字的方向性较弱,添加自动标签如何解决这个问题?我不会在运行时知道与 number 对应的跨度。我可以将 dir="auto" 添加到所有跨度吗?
这个问题的正确解决方案是什么。span 的内部文本可以是任何语言(不一定是英文数字)。
解决方案
默认情况下,<span>
并从父级<div>
继承其dir属性。这意味着这dir="auto"
将改变这些跨度的行为。至于仅数字,dir="auto"
Chrome 中的单独跨度会重置布局方向,并使用(弱)LTR。请注意,在 Edge 上,考虑了这个弱点,即使使用dir="auto"
.
我找不到可以说哪种实现是正确的最终来源。可能,这种小众案例没有正式定义,两种实现选择了合法但不同的方式来处理歧义。
推荐阅读
- strapi - 我已经定制了 Strapi 控制器,但出现错误
- java - Jenkins 在自己的文件夹中为多模块项目寻找依赖项目包文件
- django - 将表单添加到表单集的子元素
- javascript - 上传图像时出现“无法识别的内容编码类型”错误
- functional-programming - 在 Elixir 中编写函数来测量另一个函数的好方法是什么
- javascript - 如何使用扩展运算符更新深拷贝对象的每个值
- javascript - 创建单独的库存显示
- python-3.x - OpenSSL - Raspberry Pi4 无法与 Windows 系统上的服务器通信
- excel - 更新另一个单元格时自动将日期/时间添加到一个单元格
- sql - 连接具有大于小于条件的数据集