问题标签 [bidi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
429 浏览

css - CSS unicode-bidi 嵌入

我正在努力学习 unicode-bidi 属性的用法。例如,我认为如果我将方向设置为带有拉丁字母的单词,并将嵌入的值分配给 unicode-bidi 属性,则该单词将被隔离并且不会影响周围的上下文。然而,下面的代码与我的预期相反:

我希望第一个显示右侧的数字,因为“rtl”文本是孤立的,但第二个会显示。

我知道属性 unicode-bidi 对于阿拉伯语、希伯来语等单词很有用,但我想知道这里会发生什么。

我搜索了谷歌并在这里找到了 unicode-bidi 功能的可靠答案,但我唯一能找到的是“提供一个嵌入级别”,这对我来说还不够清楚。

有人可以解释这个属性以及上面的代码中发生了什么吗?

0 投票
1 回答
295 浏览

wpf - WPF不支持出价unicode?

我有一个 WPF 应用程序。

我想显示涉及数字和单词的希伯来语句子。

我阅读了有关 Unicode bidi 的信息并为此编写了一些代码,如下所示:

现在在 xaml 中:

但它似乎在 WPF 中不受支持 - 正如我们在这里看到的那样:

在此处输入图像描述

负数设计不正确..

编辑:

非常感谢 Hans Passant 的链接。

我将 LRO 和 RLO 的值更改为:

现在它设计得当。

在此处输入图像描述

谢谢!

0 投票
2 回答
1543 浏览

delphi - Delphi Canvas Textout 与 RightToLeft BidiMode

我想在画布上打印从右到左的 Unicode 字符串。我找不到 BidiMode 属性或类似的东西来完成它。

目前,位于字符串末尾的符号出现在打印在画布上的文本的第一个字符之前。

0 投票
1 回答
210 浏览

unicode - 将双向标记字符添加到特定行的开头/结尾

我正在尝试解决包含从右到左文本的字幕文件的问题。仅供参考,srt 文件的格式如下:

例如:

我在stackoverflow上找到的解决方案不适用于我的情况,因为它既不是每一行也不是第3行,然后是第7行,然后是第11行,依此类推。
我想在包含“-->”的每一行(例如上面示例中的第 3 行和第 7 行)之后的第一行加上 unicode 字符“RIGHT-TO-LEFT EMBEDDING (U+202B)”。
理想情况下,我还想在分隔一批字幕行(例如上面示例中的第 3 行和第 8 行)的空白行之前的每一行加上 unicode 字符“RIGHT-TO-LEFT MARK (U+200F)”。
例如,有没有办法在 awk 或 sed 中做到这一点?谢谢你。
PS.:我在以下链接中放置了一个包含从右到左文本的示例文件:包含从右到左文本的
示例 srt 文件

0 投票
0 回答
830 浏览

android - 如何使用 StaticLayout 在自定义视图中绘制双向文本

在自定义 android 视图中,我正在绘制几个可能是双向的用户输入文本。例如希伯来语或阿拉伯语与英语文本或数字混合。为了绘制文本,我基本上使用视图的 Canvas、TextPaint 和 StaticLayout。实际的代码相当复杂且分散,但绘制文本的部分如下所示:

这适用于仅 LTR 或 RTL 文本,但不适用于出现乱码的 Bidi 文本。奇怪的是,当我强制对齐为 0 时(导致 _paint.setTextAlign(Paint.Align.Left) 它通常看起来工作正常(=据我测试)。但是,当文本包含时,使对齐条件为 0 BiDi(或 RTL)字符,不起作用似乎 Canvas、Paint 或 StaticLayout 都在保留状态。

我尝试像这样使用 BidiFormatter:

但这没有区别(仍然是乱码)。

知道如何在自定义视图中可靠地绘制(许多)双向文本吗?并且任何想法为什么强制所有文本对齐到 Paint.Align.Left似乎可以解决问题。这应该最好从 android 4.0 开始工作,但至少 4.2 或 4.4。提前致谢。

我通过使用 Character.getDirectionality 来测试文本中的 rtl 字符或多或少地工作:

然后基于该力对齐到左(

这会导致包含 RTL 字符的文本正常,尽管具有固定(中心)对齐。

0 投票
1 回答
409 浏览

java - 如何对双向文本处理进行单元测试

我正在尝试为一些字符串格式代码编写单元测试。在某些情况下,格式化输出可能包含双向文本,即从左到右和从右到左的混合。

我已经根据经验验证了在 Android 设备或模拟器上运行时,对于 LTR 和 RTL 输入和输出的所有组合,输出看起来都是正确的。不过,我正在努力在单元测试中捕捉到这一点;我不确定如何在我的测试用例中正确指定预期的输出。

例如,我想断言返回的字符串将呈现如下:

-د.ك.123,456.78

也就是说,字形应该按照从左到右的顺序出现:

-

1

2

3

,

4

5

6

.

7

8

.

ك

.

د

(你不知道在 SO 编辑框中将其编辑成正确的序列有多难!)

我尝试在测试用例中使用标准字符串比较方法,如下所示:

但这失败了,因为测试代码中的预期输出字符串正在对其文本进行重新排序。事实上,根据我用来查看源代码的工具(Android Studio vs. Github-with-Chrome),它在源代码中的表现甚至有所不同,所以我不相信它正在测试正确的东西。

我还尝试逐步构建预期输出值,以避免在编辑器中造成混淆,尽管它会导致在引擎盖下构造相同的字符串文字:

如何比较字形的视觉顺序,而不是逻辑顺序?Android会BidiFormatter在这里帮助我吗?

0 投票
1 回答
210 浏览

android - 不同版本的 Android 对 RTL bidi(阿拉伯语/希伯来语)的支持有何不同?

我正在研究在 Android 中支持 RTL,并试图弄清楚支持多个 Android 操作系统版本需要付出多少努力。我知道 4.2 开始了有限的双向 (bidi) 支持。我知道在那之前,比迪烟的支持要困难得多。但是怎么更难呢?如果您有这方面的经验,不同版本的 Android 在 RTL/bidi 支持方面有什么区别?随着新版本的出现,什么变得可用?

版本比较图表中的一个关键点是:bidi 支持在什么时候和版本需要付出太多努力而不值得?

谢谢你的帮助!

0 投票
1 回答
742 浏览

unicode - 与 1% 混合时阿拉伯文本格式错误

这是代码

问题是我希望在翻译中反转文本,所以我想要的不是“1% أضاف %2 للمجموعة”,而是:[للمجموعة ("percent" 2) أضاف("percent" 1)]

出于某种原因,甚至记事本也不允许您将 %1 放在阿拉伯语句子的最右侧,因为阿拉伯语是从右到左的,所以也许您不能用 %1 开始一个句子。

有什么解决方法吗?

0 投票
1 回答
65 浏览

text - 如何在网站中保存文本方向默认值?

我想知道是否有办法在不同的网页中默认保存文本方向 - 从右到左(RTL)或反之亦然(从左到右-LTR)。因此,当我打开特定网站时,文本方向将自动为 LTR 或 RTL。我使用谷歌浏览器,所以我尝试在属性中搜索,但没有找到任何保存文本方向默认值的选项。我红色自动更改文本框的文本方向,如何根据输入文本语言自动设置文本方向?和其他问题并在我的 windows xp 语言首选项中搜索,但没有找到我要查找的内容。提前感谢您的帮助。

更新:

我正在使用一个名为“Lang Over 5”的程序,它使用“F10”按钮改变了文本方向。但我无法使用它在网站中保存默认文本方向。

0 投票
1 回答
1734 浏览

php - 使用php在文本文件中从右到左写入文本

我想用 php 在文本文件中写阿拉伯文本,但我没有找到如何从右到左写文本。我发现这篇文章理解双向文本 他们解释说我应该在我的字符串之前添加 unicode 字符 U+202E 和 U+202C 之后。但我不知道如何在 php 中将此 unicode 字符转换为字符串。我尝试过这样的事情,$content = "\u{202E}".$content."\u{202C}"但没有奏效。