双向文本和数字

时间:2012-08-02 09:26:10

标签: html css bidi

我有一个以两种语言显示的网站 - 英语和波斯语。列表项的标题可以同时混合使用两种语言。一切正常,只要你有文本,它就可以使用css中的direction:rtl呈现。

但问题是我还可以在标题内部或结尾处有一个数字(在波斯语中写的和英语一样 - 从左到右)。这最终会出现问题,因为无论我在哪里放这个号码都会弄乱标题中的单词顺序(数字是标题末尾的广告ID)。

要解决这个问题,我使用&rlm&lrm前面的id - 但问题是我必须根据选择的语言切换这两个。

Bidirectional text with number problem

我正确的html是这样的(‏修复了波斯语中的id号问题):

<h3>
   The name of my خدمات باشد is long
   <span style="color:#999;">&rlm;#89798798</span>
</h3> 

JS FIDDLE:http://jsfiddle.net/WzF2D/

我尝试在包围ID的范围内设置direction:ltr,但它仍然无效。我还尝试在unicode-bidi:embed上使用h3,但也没有。{/ p>

如何使用css解决这个问题,而不必依赖&rlm;

1 个答案:

答案 0 :(得分:3)

我将假设所需的渲染使用从右到左的整体书写,即使文本(至少在示例中)主要是英语,在句子内的阿拉伯字母中有一些单词。此外,我假设像“#89798798”这样的表达式被视为单独的片段,因此当它出现在英语单词后面时,它不会被视为英语文本的一部分,而是设置在RTL布局的左侧。

在这些(相当令人惊讶的)前提下,CSS解决方案是使这样的片段成为双向性隔离:

<span style="color:#999; unicode-bidi: embed">#89798798</span>