问题标签 [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 投票
2 回答
3494 浏览

java - FlyingSaucer LTR/RTL/BiDi 问题与阿拉伯语文本

我正在使用飞碟 xhtmlrenderer 来构建 pdf 文档。到目前为止一切正常 - 现在我们应该在 pdf 中生成阿拉伯文本。Xhtmlrenderer 以相反的顺序呈现阿拉伯文本。

我在互联网上的某个地方(可能在他们自己的网站上)读到 xhtmlrenderer 不支持 bidi/rtl。但 IText 本身包含通过 ColumnText 和 PdfPTable 处理阿拉伯语和希伯来语的示例(来源可以在这里找到:http: //sourceforge.net/projects/itextpdf/files/Examples/examples-155/examples-155.zip/download - arabic_hebrew.java),这些工作正常。

我尝试在 xhtmlrenderer 的 ReplacedElementFactory/ITextReplacedElement 中使用 itext api,但找不到定位元素的好例子。有没有人试图这样做?或者也许有一个更简单(或至少有效)的解决方案?

0 投票
1 回答
1221 浏览

html - 如何在 HTML 中编写此 RTL 布局?

我正在尝试获取以下包含希伯来语和拉丁语字符的文本布局:

2011 , 希伯来语 11 , 英语

大写字母代表希伯来字符,整个东西应该向右对齐。

这是我尝试过的一些东西:

看起来希伯来字符在末尾,但实际上它们在两个数字之间。

前三个混淆了单词的顺序,最后两个使单词顺序正确,但是拉丁字符从右到左显示,这是相反的。

0 投票
4 回答
738 浏览

php - 破坏布局的双向文本

在我的网站上有一个标题应该显示“欢迎用户名。”。

问题是如果用户将他的名字更改为 U+202Eusername(其中 U+202E 是从右到左的覆盖字符,或 RLO),所有布局都会中断。

它不是显示“Welcome emanresu .”,而是显示“Welcome .emanresu ”或“ .emanresu Welcome”或类似的内容。我尝试在用户名后添加一个 U+202C(流行定向格式或 PDF)字符,它起作用了。像这样:

但是,如果用户名有多个 RLO 字符,则会再次中断。所以我应该做的是将 RLOs 字符与 PDFs 字符匹配,但我不确定如何做到这一点。根据 W3C 规范,没有解决方案。我在这里错过了什么吗?

0 投票
1 回答
1244 浏览

c# - 如何在 C# 中找到 Unicode 字符的双向字符类型?

有什么方法可以在 C# 中找到 Unicode 字符的双向字符类型?

我想查看字符串中的字符并确定它们是否都是强 LTR、强 RTL、强 LTR 和中性的混合等。

0 投票
0 回答
625 浏览

wpf - WPF中不正确的双向行为?

在 WPF 中设置“语言”属性时遇到奇怪的事情:

  1. 在窗口或文本框/文本块上将 FlowDirection 设置为“RightToLeft”
  2. 将语言属性设置为“fa-IR”
  3. 将文本设置为以下示例文本之一(A,B)

A. 此文本在 WPF 3.5中无法正确呈现:

联系方式: ‎+44 1908 215040

它适用于 WinForms 和 Silverlight。请注意,它包含一个“从左到右的标记”(U+200E)

这是上面的 HTML 版本,带有对 LRM 的数字字符引用,以可视化 LRM 的插入位置:

B. 此文本确实在 WPF 中正确呈现:

答案: ‎+‎44‎ ‎1908‎ ‎210210

但它包含(我相信)不必要的 LRM 字符。我以反复试验的方式将文本放在一起。

这是带有额外 LRM 字符的 HTML 版本

为什么需要额外的字符/我在原始文本中做错了什么?

注意:问题发生在 IFF 设置 Language 属性时,无论是在 XAML 或代码中显式(如 Language="fa-IR")还是通过覆盖代码中 Language 属性的默认值(假设当前区域性为“fa-IR”)像这样:

如果我将语言属性保留为 en-US,则文本会在 WPF 中正确呈现,但我确实需要设置语言以使值转换工作,而不必在每个可能绑定到某些数据的数据绑定上显式设置 ConverterCulture文化相关数据。

还有其他问题,例如 LRO ('LEFT-TO-RIGHT OVERRIDE' (U+202D)) 被忽略。

我真的需要帮助来了解正在发生的事情,因为这可能会成为将我的应用程序本地化为波斯语和阿拉伯语的阻碍。

我怀疑我是做错事的人,因为我没有用谷歌搜索这个问题。这是 MS Connect 上的相关帖子,但到目前为止还没有人确认该行为是一个错误:

http://connect.microsoft.com/WPF/feedback/details/682784/incorrect-unicode-bidi-behaviour#

注意:我对 BiDi 算法一般不太熟悉,对 WPF 中的实际实现知之甚少。我对Unicode有基本的了解。

0 投票
2 回答
902 浏览

java - 设置 JLabel 左右对齐

我有一个 JPanel,它分隔为 2 个块,在南块(布局)中我添加了一个 JLabel,在标签中我想用这个规则插入一个字符串:(Name, Date, Time, In/Out)

如果我的名字是用英文写的,一切都很好,当我用波斯语等 Unicode 语言写名字时,问题就出现了,那么对齐就没有按预期工作。我附上2个样本:

正确的那一个: 在此处输入图像描述

错误一: 在此处输入图像描述

0 投票
2 回答
897 浏览

php - 模拟尚未实现的方法HTML标签?

HTML5 中标签<bdi>目的是将双向文本与其上下文隔离开来。这正是我正在寻找的。

从左到右的用户名显示如下:

使用从右到左的用户名,它会变成这样可怕的事情:

甚至更糟糕的是,根据上下文,向后显示周围的所有内容(不仅仅是用户名)。

问题是目前还没有浏览器支持这个<bdi>标签,所以我在徘徊,有没有办法模拟它?哪些 HTML 标签也可以隔离它?我知道<span>也不知道<div>

我不想删除所有 BIDI 字符,但在我看来,我的网站正确显示的重要性 > 双向语言用户参与的权利。

0 投票
1 回答
2877 浏览

c# - C#中的Unicode双向文本算法?

是否存在 C# 版本的 Unicode 算法,它采用 Unicode 字符串并将其分解为可以正确呈现的运行?每次运行应该是从左到右或从右到左。

我们知道这是 Java ICU4J 的一部分,但这是一个大型库,我们只是在寻找这个特定的功能,以正确呈现文本。

0 投票
4 回答
7485 浏览

html - 带有从右到左字符串的 HTML5 画布填充文本

我正在尝试在 HTML5 Canvas 的 2d 上下文上使用 fillText() 方法来绘制用阿拉伯语编写的字符串。它工作得很好,直到我在字符串的末尾放了一个标点符号。然后标点符号出现在字符串的错误一侧(在开头,而不是结尾,好像它是 ltr 而不是 rtl 字符串)。我使用了 Context.textAlign 属性,但这似乎只涉及相对于指定位置绘制字符串的方式,而不是文本的实际方向。有谁知道解决这个问题?

谢谢。

更新:我找到的答案是在页面上的画布元素中添加一个“dir”属性。例如,

但是,我仍然不知道如何更改发送到 fillText 的单个字符串的 dir 属性。有任何想法吗?

0 投票
2 回答
429 浏览

pdf - PDF 文本方向

从右到左的语言(如阿拉伯语)的文本方向如何以 PDF 编码?我的理解是,由于 PDF 基本上是一种图形格式,因此不需要对文本方向的概念进行真正编码。相反,字形只需要在屏幕上从右到左绘制即可。但是,PDF 参考手册提到了一个名为 的属性WritingMode,您可以在其中指定从左到右、从右到左和从上到下、从下到上的组合。

所以我的问题是:

(1) 如果我的理解是正确的,而 RTL 或 LTR 只是通过在屏幕上绘制字形的方式来表达,那么WritingMode属性的意义何在?

(2) 如果 PDF 文件中没有编码的实际方向性信息,除了字形的绘制顺序,PDF-to-Text 程序如何知道给定的行是否应该从右到左读取或左到右?(我想 PDF 程序可以检查从地图中提取的 Unicode 代码点是否ToUnicode落入对应于 RTL 语言的范围内。)