zch*_*nah 2 html string unicode arabic
比如这句话:
عفوايبدوأنالنظاملايستطيعتحديدأنكمنعملاءSTCأملا,فإذاكنتعميلSTCالرجاءالضغطعلىزر "إعادةالمحاولة",وإذالمتكنمنعملاءSTCالرجاءالضغطعلىزر"لستعميلSTC
阿拉伯语是RTL,英语是LTR.有时复制和粘贴后文本会变得混乱.当我在英语和阿拉伯语字符之间移动句子内的光标时,它会以一种非常奇怪的方式跳跃.而且我也对它如何存储在内存中感到困惑.任何人都可以帮忙解释一下吗?
在内存中,这些都被存储为一系列Unicode代码点(希望;之前有非常令人讨厌的东西,但是我们不要去那里) - 这就是文本本身,它是如何在计算机中表示的.文本首先独立于书写方向,它只是一系列字符.
此序列通过一个知道Unicode Bidi算法的渲染引擎,因此可以将文本整形为字形以显示在特定位置.Unicode中的每个字符都有一个Bidi属性,可以控制它在这种上下文中的行为方式.这指定它a是一个LTR字符,而它?是一个RTL字符; 它控制在RTL上下文中正确镜像的括号((即使你看到,开头的括号仍在文本中)); 并且在两个上下文中都可以出现多个字符.这一切都非常简单,那里有很多工作要做.最后,多个字形可以相互叠加(例如变音符号)或形成连字; 那些是字素,这基本上就是我们所认为的"字母".
光标移动很容易做到,因为光标只能在两个字形之间(在LTR或RTL段开始时变得更复杂,但现在→让它保持原样)并向前←移动它们向后移动.当然,RTL转发意味着离开 ; 它遵循文字方向.两个字素相对于彼此的顺序与定位光标无关.
我承认,看到混合的RTL和LTR文本可能会令人困惑,但我想阿拉伯语或希伯来语国家的人们已经习惯了.
关于复制粘贴文本时有时会丢失正确的文本布局的问题,我想最常见的问题是应用程序或布局引擎支持相应的脚本.如果布局引擎不知道如何布局阿拉伯文本,则所有得到的字符都是从左到右的逻辑顺序.没有形成连字,没有应用文本方向.例如,浏览器现在对这种事情有很好的支持,但是如果我把阿拉伯语文本粘贴到Word中就会看起来不对(就像Word 2007一样; PowerPoint做得很好).遗憾的是没有简单的解决方法,但通常你复制的文本完全相同,只是显示错误.
免责声明:我在Unicode邮件列表上潜伏了很长时间,但我绝不是这方面的专家.我说两种语言,两者都是平凡的布局.这是对我认为它可能起作用的回忆,也可能不是实际的事实.
| 归档时间: |
|
| 查看次数: |
819 次 |
| 最近记录: |