当前位置: 首页 > 知识库问答 >
问题:

双向文本-视觉到逻辑

裘兴思
2023-03-14

我在屏幕上一个字母一个字母地画文字。

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

当绘制RTL文本时,我需要切换打印方向。但是当有字母、数字、英语和一些RTL语言时..混乱就开始了。

对于Ex。

例1:שלום לכם

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

例.2:שלום to all ש- 是字符串中的第一个字母 - 但正如我们所看到的,它显示在英语开始之前的中间。

当数字和数学符号进入图片时,情况变得越来越复杂,而像“(”,“)”这样的特殊字符需要翻转......

在网上找到了许多Bidi算法,可以将字符串中字母的逻辑顺序更改为可视顺序。所以当我在转换后的字符串上从左到右运行时,我确信字符串会正确打印。

但是,他们从来都不是完美的。存在它们不能正常工作的情况。它们都没有考虑到文本的方向(这意味着当我们在键盘上按下右Ctrl键时,可视化效果会再次改变)

我的问题是

    < li >有没有人知道一些可靠的Bidi算法,我可以用它来将字符串从它保存在内存中的内容更改为可视的顺序? < li >有没有更简单的方法来解决我的问题?也许能找到它的浏览器算法..

共有1个答案

印嘉泽
2023-03-14

搜索了很久,

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

如果这是在帮助某人-http://bill.dojotoolkit.org/api/1.9/dojox/string/BidiEngine

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

 类似资料:
  • 我试图理解双重链表的java实现。我有以下代码: 和以下内容: 为了清晰起见,这里只显示了insertHead()方法。 现在我明白了,如果有人在main方法中运行insertHead(10),如果列表为空;一个新的对象形成,头部和尾部引用变量都指向该对象。 我不明白的是如果列表不是空的;代码段非常混乱。 1)我所理解的是n=10,null和head被传递给构造函数:public DLLNode(

  • 我使用这个API来进行测试https://cloud.google.com/vision/docs/ocr测试引擎。 请求机构: 结果就是 我错过什么了吗?非常感谢。

  • 记录一下,时长30min 自我介绍 项目1介绍,以及细节提问,为什么使用这些方法?遇到了哪些困难?如何解决? (针对项目)为什么用dbscan,与kmeans的区别和异同 项目2简单介绍 除了了这些项目以外,还接触过什么深度学习的网络结构 反问环节 整体感觉还不错,面试官人挺好的

  • 标题和内容 如上所述,标题可以通过 showNotification 的第一个参数设置。而通知内容可以通过配置项中的 body 进行设置。如下: registration.showNotification('Simple Title', { body: 'Simple piece of body text.\nSecond line of body text :)' }); 在Googl

  • 光环板可以连接 mbuild 的 视觉模块 模块进行编程。 色块识别 1.视觉模块(1)切换到色块识别模式。 指定视觉模块切换到色块识别模式。 示例 按下光环板的按钮,视觉模块(1)切换到色块识别模式。 2. 视觉模块(1)开始学习色块(1)(直到按钮被按下) 指定视觉模块在制定操作执行后开始学习色块。 示例 按下光环板的按钮,视觉模块(1)开始学习色块(1)(直到按钮被按下)。 3. 视觉模块(

  • 视觉模块能够识别条码和线条,也可以学习和识别颜色鲜艳的物体,实现诸如垃圾分类、智慧交通、物体追踪、智能巡线等功能。 连接主控板 通过不同的连线方式,可以将视觉模块作为一个 RJ25 电子模块或 mBuild 电子模块,连接到 mBot 或光环板,然后使用 mBot 或光环板控制视觉模块。 连接到 mBot 与 mBot 连接时,可以使用 3.7V 锂电池或 mBuild 电源模块连接到视觉模块,为