我想支持在Unicode中根据其一般方向而不是默认的从左到右方向显示用户输入的文本。例如,在下面的阿拉伯文中,英文单词(4th)似乎被拆分:
اردوکابعضاوقاتہندیکےساتھموازنہکیاجاتاہے。 اردواورہندیمیںبنیادیفرقیہہہےہررررراااااااااااااہےہےہےہے جبکہہندیدیوناگریرسمالخطمیںلکھیجاتیہےاورسنسکرتالفاظزیادہاستعمالکرتیہے。更多信息,请点击链接,享受免费无线网络连接,免费无线网络连接,免费无线网络连接。 تاہم,دوسرےانکومعاشاللسانیتفرقاتکیبنیادپرالگسمجھتےےیں。 بلکہحقیقتیہہکہہندی,اردوسےنکلی.اسیطرحاگراردواورھندیزبانکوایکسمجھاجاۓتویہدنیاکیچوتھی(4th)بڑیزبانہے。
是否有自动考虑文本流的自然方向的CSS或HTML方法?我阅读了this article from W3C,其中讨论了设置文本方向的方法,但未找到任何自动执行此操作的解决方案。
答案 0 :(得分:3)
有一种方法可以自动检测文本流的自然方向,这会给您带来麻烦:双向算法并不完美。有时您需要给它一些额外的提示,如Unicode controls vs. markup for bidi support中所述。
Unicode双向算法根据每个字符的方向属性确定文本的方向性。有时,算法需要一些帮助来确定文本中的对象流,这些对象将阿拉伯语或希伯来语字符与其他脚本的字符混合在一起。在其他情况下,您可能希望完全覆盖双向算法的效果。
您可以通过在文本中添加U+202A ʟᴇғᴛ-ᴛᴏ-ʀɪɢʜᴛ ᴇᴍʙᴇᴅᴅɪɴɢ和U+202C ᴘᴏᴘ ᴅɪʀᴇᴄᴛɪᴏɴᴀʟ ғᴏʀᴍᴀᴛᴛɪɴɢ字符来手动解决此问题,如下所示:
اردوکابعضاوقاتہندیکےساتھموازنہکیاجاتاہے。 اردواورہندیمیںبنیادیفرقیہہہےہررررراااااااااااااہےہےہےہے جبکہہندیدیوناگریرسمالخطمیںلکھیجاتیہےاورسنسکرتالفاظزیادہاستعمالکرتیہے。更多信息,请点击链接,享受免费无线网络连接,免费无线网络连接,免费无线网络连接。 تاہم,دوسرےانکومعاشاللسانیتفرقاتکیبنیادپرالگسمجھتےےیں。 بلکہحقیقتیہہکہہندی,اردوسےنکلی.اسیطرحاگراردواورھندیزبانکوایکسمجھاجاۓتویہدنیاکیچوتھی(4th)بڑیزبانہے。
...‪(4th)‬...
您还可以使用HTML5中的<bdi>
元素或HTML4中的<span>
。
...<bdi dir="ltr">(4th)</bdi>...
...<span dir="ltr">(4th)</span>...
有关双向算法的详细信息,请参阅What you need to know about the bidi algorithm and inline markup。
如果此文本来自用户,我想您无能为力。我会把它视为任何其他类型的错误用户输入;像一个错字。
答案 1 :(得分:1)
首先是一个棘手的问题,但是有很好的记录和对此的支持。
我尝试过同样的问题并遇到了同样的问题。我在一篇文章中读到你可以使用dojo来做到这一点。我想给你的链接是移动的。希望这会给你一个启动。
https://dojotoolkit.org/reference-guide/1.9/dojox/mobile/bidi.html
答案 2 :(得分:1)
浏览器是否决定根据访问者的偏好自动使用lrt的lrt?我不太确定,但我认为确实如此。
不是真正的答案,但这可能对您有意义:
在CSS3中,text-align
属性有一个新值,即start
。根据W3C标准,这将“与线盒的起始边缘对齐”。因此,如果访问者偏好是rtl,它将正确对齐,反之亦然。