html - 您如何获得标点符号以使用 RTL 语言?
问题描述
您如何在 RTL 语言的段落末尾出现句点?
<p dir="rtl" style="float: right;direction: rtl;">
.זהו משפט בשפה מימין לשמאל
</p>
这是它在我的托管网站上如何错误呈现的屏幕截图。红色箭头是期间所在的位置。绿色箭头是它应该放置的位置:
有趣的是,当在浏览器中呈现时,它确实有效:
.זהו משפט בשפה מימין לשמאל解决方案
编辑
在自己玩过之后,我确信问题出在文本编码中,必须在浏览器有机会应用自己的 HTML 规则之前对其进行解释。
换句话说,由于这个 rtl 文本之前是 ltr 文本(即 html 文档本身),因此文本解码器在读取句点时处于 ltr 上下文中。句点本身不会改变文本方向。但是,插入从右到左的标记似乎没有效果。
<p dir="rtl" style="float: right;direction: rtl;">
‏.זהו משפט בשפה מימין לשמאל
</p>
弄清楚事情
请注意句点的位置与Mozilla 的 rtl 示例中使用的位置之间的差异。
我认为问题的发生(部分)是因为周期本身没有方向性。当您将句点放在源文件的左侧时,它会移至输出的开头,因为句点位于文本本身的 ltr 上下文中。
在 ltr 上下文中(如您的第一个示例中),它最终位于左侧;在 rtl 上下文中(如您的第二个示例中),它最终位于右侧。当您使用自动方向时,浏览器会选择 rtl,如下所示。这表明第一个强方向性字符是ל
,而不是.
。
<p dir="ltl">
.זהו משפט בשפה מימין לשמאל
</p>
<p dir="rtl">
.זהו משפט בשפה מימין לשמאל
</p>
<br>
<p dir="auto">
.זהו משפט בשפה מימין לשמאל
</p>
当我尝试编辑上面的文本时,它会在 rtl 和 ltr 上下文之间切换,具体取决于我是在句点之前还是之后输入的。我认为这个问题与文本编码本身有关。您可能需要在文本开头或句点“之后”放置一个 rtl 标记。
有趣的是,如果您将句点放在更大的文本块中,它会起作用。由于它不是源文本中最左边的字符,因此它不会在其他文本的 rtl 上下文之前创建隐式 ltr 上下文。
<p dir="rtl">
זהו משפט בשפה מימין לשמאל. לשמאל
</p>
<p dir="rtl">
.זהו משפט בשפה מימין לשמאל
</p>
看到不同?