双向文本 - 视觉到逻辑

时间:2015-06-10 07:59:18

标签: javascript string bidi

我在屏幕上逐字绘制文字。

在英语中它非常简单,因为文本是LTR,所以字母按照它们显示的顺序保存在字符串中。

绘制RTL文本时,我需要切换打印方向。但是当有字母和数字以及英语和一些RTL语言时......比乱七八糟的开始。

对于前。

ex.1:שלוםלכם

ש-是字符串中的第一个字母 - 但我们可以看到它显示了最后一个字母

ex.2:שלום给所有人 ש-是字符串中的第一个字母 - 但是我们可以看到它在英语开始之前显示在中间。

当数字和数学符号进入图片时会变得越来越复杂,需要翻转的特殊字符如'(',')'......

在线发现许多Bidi算法,将字符串中字母的逻辑顺序更改为可视字符。因此,当我在转换后的字符串上从左向右运行时,我确信该字符串将正确打印。

,但 它们永远不会完美。有些情况下它们无法正常工作。 他们都没有考虑文本的方向(意味着当我们按下键盘上的右Ctrl + Shift而不是再次更改可视化时)

我的问题是

  1. 有没有人知道一些防弹Bidi算法,我可以用来将字符串从内存中保存的内容更改为直观顺序?
  2. 有没有更简单的方法来解决我的问题?也许某种程度上得到它的浏览器算法..

1 个答案:

答案 0 :(得分:1)

经过长时间的搜索,

我发现DOJO(幸运的是它是我正在使用的工具包), 有一个BIDI引擎用于绘制它自己的UI控件,它可以获得很少的布局参数来处理RTL,LRT和上下文方向的某些情况。

如果这有助于某人 - http://bill.dojotoolkit.org/api/1.9/dojox/string/BidiEngine

找到了另一个可能对无DOJO开发人员有帮助的链接 - https://github.com/ibm-js/dbidi,但我还没有检查

相关问题