我正在逐个字母地在屏幕上绘制文本。
在英语中它非常简单,因为文本是 LTR,所以字母以它们显示的相同顺序保存在字符串中。
绘制 RTL 文本时,我需要切换打印方向。但是当有字母、数字、英语和一些 RTL 语言时......比混乱开始了。
对于前。
例 1:שלום לכם
ש- 是字符串中的第一个字母 - 但我们可以看到它显示了最后一个
例 2:所有 ש- 的 שלום 是字符串中的第一个字母 - 但我们可以看到它显示在中间,在英语开始之前。
当数字和数学符号出现在图片中时,情况变得更加复杂,并且需要翻转特殊字符,如“(”,“)”......
网上找了很多Bidi算法,把字符串中字母的逻辑顺序改为视觉顺序。因此,当我在转换后的字符串上从左到右运行时,我确信该字符串将正确打印。
但是,它们从来都不是完美的。在某些情况下,它们无法正常工作。他们都没有考虑文本的方向(意味着当我们在键盘上按下右 Ctrl+Shift 时,可视化会再次更改)
我的问题是
- 有人知道我可以使用一些防弹 Bidi 算法来将字符串从它保存在内存中的字符串更改为视觉顺序吗?
- 有没有更简单的方法来解决我的问题?也许以某种方式得到它的浏览器算法..