双向文本中的数字和标点符号呈现

问题描述 投票:1回答:1

我正在处理处理多语言文本的Web应用程序。它可以混合使用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>

现在我的问题是,由于数字的方向性很弱,添加自动标签如何解决这个问题呢?我不知道在运行时与数字对应的跨度。我可以在所有跨度中添加dir =“auto”吗?

这个问题的正确解决方案是什么。跨度的内部文本可以是任何语言(不一定是英文数字)。

html css right-to-left bidi
1个回答
0
投票

默认情况下,<span><div>从父级继承其dir属性。这意味着dir="auto"将改变这些跨度的行为。至于仅数字,Chrome中dir="auto"的单独跨度会重置布局方向,并使用(弱)LTR。请注意,在Edge上,会考虑到这个弱点,即使使用dir="auto",仅限数字的范围也是RTL。

我找不到可以说哪个实现是正确的最终来源。可能,这个利基案例没有正式定义,这两个实现选择合法但不同的方式来处理歧义。

© www.soinside.com 2019 - 2024. All rights reserved.