将HTML <title>标签的方向更改为从右向左</title>

时间:2012-01-02 07:30:26

标签: html browser internationalization

考虑网页的这个标题:
enter image description here

这是从右到左和从左到右语言的混合文本,整个文本的方向性可能是:

  1. 从左到右,如果在ltr文本中嵌入rtl片段
    enter image description here

  2. 从右到左,如果在lrtl文本中嵌入ltr片段
    enter image description here

  3. 在某些网页中,您需要提供从右到左的标题,并混合使用从左到右的文字片段。但是,浏览器无法正确格式化。它以<title>方向性呈现整个ltr内容。这会导致标题,应该显示为
    enter image description here
    如图所示 enter image description here

    我知道CSS不在那里工作。有没有办法强制浏览器以正确的方向呈现<title>

6 个答案:

答案 0 :(得分:11)

您可以尝试使用Unicode RIGHT-TO-LEFT OVERRIDE字符。见here
也就是说,使用&#x202E;开始标题文本 快速测试表明它至少可以在我的浏览器上运行;不确定它是否适用于所有浏览器。它可能会向后写披萨。小心使用。

答案 1 :(得分:9)

title元素内容的开头使用RIGHT-TO-LEFT EMBEDDING字符(RLE,U + 202B),例如

<title>&#x202b;אבג Hello ابثج</title>

RLE通常被描述并用作要使用的字符(与POP方向格式化一起使用),用于将一系列从左到右文本嵌入到从右到左的文本中,反之亦然,在非情况下由自动机制正确处理。但它似乎也适用于title元素,至少在IE,Firefox和Opera上。

答案 2 :(得分:4)

你试过了吗?

<title>left to right &#x202E;right to left</title>

对于正文,您可以使用CSS(direction: rtl;unicode-bidi: bidi-override;)或标记(<bdo dir="rtl">)。

演示:http://jsfiddle.net/ThinkingStiff/hD5Sp/

HTML:

<span>left to right <bdo dir="rtl">"right to left"</bdo> left to right</span><br />
<span class="rtl">right to left <span class="ltr">"left to right"</span> right to left</span>

CSS:

.rtl {
    direction: rtl; 
    unicode-bidi: bidi-override;
}

.ltr {
    direction: ltr; 
    unicode-bidi: bidi-override;    
}

输出:

enter image description here

答案 3 :(得分:0)

无法强制浏览器改变方向。 当然,您可以反过来编写句子,并且有一些API可以获得有意的RTL文本,并生成一个LTR文本,其最终结果看起来像一个有效的RTL语句。

请注意,某些浏览器,尤其是RTL语言位置的浏览器,首先会获得一个RTL浏览器。也就是说,他们的标题是RTL。对于善与恶。因此,即使您按照我的描述应用RTL-to-LTR hack,这些用户也会反过来看到它。

答案 4 :(得分:0)

标题的一部分可能是从右到左,部分是从左到右吗?

例如:

<title> This part is right to left | This part is left to right | This part is righ to left </title>

答案 5 :(得分:0)

只需使用此CSS规则即可涵盖所有情况:

*[dir="ltr"] {
  direction: ltr;
  unicode-bidi: embed;
}
*[dir="rtl"] {
  direction: rtl;
  unicode-bidi: embed;
}
bdo[dir="ltr"] {
  direction: ltr;
  unicode-bidi: bidi-override;
}
bdo[dir="rtl"] {
  direction: rtl;
  unicode-bidi: bidi-override;
}