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

delphi - 使用 RTL BiDi 模式时,BiDi 文本在 Delphi 7 中无法正确显示?

在 Delphi 7 中,在表单上放置 aTMemo并在表单的OnCreate处理程序中启用 RTL BiDiMode,如下所示:

如果您随后将包含 BiDi 文本的文本文件加载到TMemousing 中Lines.LoadFromFile,则文本将无法正确显示。

让我们在文本文件中包含以下文本(这也是显示它的正确方式,例如当使用 Notepad++ 或 MS Word 显示时):

以下是它在 中的错误显示方式TMemo

以下是此文本在文本文件中的存储方式:

这只是它如何存储的可视化(文本永远不会在任何地方以这种方式呈现,这只是为了说明):

因此,BiDi 文本保存在交替的“块”中:(RTL 块)(LTR 块)(RTL 块)(LTR 块)等。块的存储顺序从左到右与块的顺序相同正确渲染时您看到它们的方式(从左到右)。每个 RTL 块中字符的存储顺序与正确显示时这些块中字符的查看顺序相反(参见alefbet感叹号gimel块)。

BiDiMode当未启用 RTL 时(如果SysLocale.MiddleEastisFalse的值或 is 的值BiDiMode),文本实际上会正确呈现bdLeftToRight

这种不正确的渲染发生在我测试过的其他控件中(TLabelTCheckboxTRadioButton等)。

TMemo查看启用RTL 时显示不正确的文本BiDiMode,我看到块的顺序实际上是颠倒的。此外,任何前导中性字符(如!?.等)都会变成尾随字符,反之亦然(例如文本后面的三个点text2)。

调查这个问题,我认为问题在于 Windows 的DrawText功能和DT_RTLREADING呈现双向文本时使用的标志。如果我没记错的话,这个函数用于在大多数控件中呈现文本。事实上,如果您使用标志在 Canvas 上渲染 BiDi 文本DrawTextDT_RTLREADING它将以同样不正确的方式渲染,如果您不使用DT_RTLREADING,它将正确渲染。

我创建了一个后代类TLabel,覆盖了它在渲染文本时Paint永远不会使用的过程,这确实解决了这个问题。DT_RTLREADING但是,为 Windows 控件(如TCheckboxTRadioButton和)解决此问题TButton并不容易。

我也尝试过使用DrawTextEx- 问题仍然存在。我还尝试使用 utf8 文本文件和TTntMemo(使用DrawTextW) - 问题仍然存在。

所以,我的问题是:这是一个已知问题吗?为什么会这样?如果是,有解决办法吗?还是我在这里做错了什么?

0 投票
1 回答
2763 浏览

css - CSS方向:rtl和从上到下?

我正在使用以下 CSS 从右到左阅读文本:

它是一个实验站点的一部分,它将显示源代码中的所有文本反转,但对用户来说是可读的。

如果我只有一个文本句子,它会很好用。但是,一旦文本的长度大于元素的大小(在这种情况下为 300 像素),句子的顺序就不再起作用。例如:

资源:

输出:

(因为我不能发布图片,所以它是:http: //img4.hostingpics.net/pics/990715343.jpg

如您所见,第一句“This text is read from right to left”在底部对齐,这意味着段落的顺序是错误的。

是否有另一种方法可以使文本正常从上到下流动并从右到左阅读?

谢谢

0 投票
3 回答
717 浏览

python - python / django - bidi brackets issue in html select list

I am running python2.7 with django 1.4.

I have the following code in my views.py page which returns the language names in a select list:

python code: (views.py)

HTML code:

select list:

The problem is when the page is viewed in a rtl language like Arabic the select list is rendered as follows with the brackets of the ltr text in the wrong positions:

How do I write the code in the view.py file to correctly display the bidi brackets?

I have read quite a few threads and tried many different ways to fix the issue, but I have run out of ideas.

One attempt that did not work was bookending the language names with the Unicode control (directional) characters & #8234; & #8236; & rlm; in the view.py file - the & #8234; & #8236; & rlm; is rendered to the select list in the page. For example:

& #8234;إسبانية أمريكا) اللاتينية) / português (Brasil)& #8236; & rlm;

Also adding the following to the css has no effect:

0 投票
2 回答
1595 浏览

emacs - Emacs 中的阿拉伯字形

Emacs 24.3 版无法在我的系统上正确显示阿拉伯字符的上下文形式(Mac OS X Mavericks;如果您不熟悉上下文形式,请参阅 Wikipedia 上的此链接)。无论字符出现在单词中的哪个位置,它们都以未连接的形式显示,使其几乎不可读。C-h h如果您想尝试复制此问题,Emacs 会在我打开“Hello”文件 ( ) 时显示这种阿拉伯语行为。


更新:

我已经尝试了以下答案中列出的一些建议。我现在在 .emacs 文件中包含以下内容:

其中 FONT 是我(print (font-family-list))在 Emacs 中评估或fc-list : family在终端中键入时列出的阿拉伯字体之一。

这包括按照建议尝试 Deja Vu Sans Mono,以及我系统中的简体阿拉伯语和其他一些阿拉伯语字体。我仍然遇到每个相同的问题:它以正确的字体显示字符,但它们未连接。

由于我最初发布了我的问题,我还在谷歌群组论坛上发现了这个对话,其中使用 Mac OS X 的人遇到了类似的问题,但从未能够解决它。

0 投票
2 回答
1769 浏览

android - 如何反转阿拉伯语的括号方向(对于从右到左的文本)

当我尝试在阿拉伯语中使用括号时,它们会被反转,如附件所示截屏
我曾尝试使用 textDirection RTL 和 BidiFormatter,但它们都不起作用。
正确的字符串是这样的“(باقة مسافر إسبوعي(مسبق”)。
有谁知道,如何解决?

0 投票
1 回答
214 浏览

django - django-allauth 动态更改模板(BIDI 支持)

我正在尝试向我正在处理的网站添加对阿拉伯语的支持,所以目前我的模板就像

django-allauth 无论如何都会尝试加载模板/templates/accounts(在他们的视图中是硬编码的),但我想在必要时基于上下文变量加载 RTL(从右到左)版本,所以我考虑了四种解决方案,但没有一个它们对我来说似乎已经足够好了(我并不是说我不会这样做,我是说我想不出更好的方法,如果有的话

  1. 在我的覆盖中设置条件以加载 LTR 或 RTL 版本(这将需要条件 in /templates/accounts、带有模板的 LTR 版本以及/templates/rtl/accounts.

  2. 创建一个带有模板名称参数的模板标签并动态加载模板,这看起来很浪费资源

  3. 在具有大量逻辑的主模板中创建混乱,以便在需要时在 LTR 和 RTL 之间切换(这将需要模板中的大量逻辑,这不好)

  4. 将 allauth 分叉到我的项目中并将逻辑添加到视图中。我真的不想这样做,因为这会让将来的维护变得很糟糕。

我没有使用标准的 django i18n,所以我不能使用 BIDI 设置。

有人对此有更好的方法吗?

0 投票
1 回答
145 浏览

unicode - CLDR 阿拉伯语语言环境中的奇怪列表模式格式

我在 CLDR-25-data 中观察到以下阿拉伯语言环境中列表模式格式的条目(在希伯来语中也类似):

请注意,LDML 规范仅涉及“{0}”或“{1}”形式的占位符(不像“end”和“2”类型的列表模式部分)。也可以看看:

http://cldr.unicode.org/development/development-process/design-proposals/list-formatting

或者

http://cldr.unicode.org/translation/lists

我怀疑这与从右到左的风格有关,但细节如何?


更新:

现在我编写了一个小的 Java 程序来查看真正的字符序列。

输出是:

所以看起来是显示问题,而不是char序列本身的问题?!我使用 Internet Explorer 版本 9 和 Eclipse 4.3。

0 投票
1 回答
300 浏览

bidi - 如何使用 LTR 和 RTL 字处理空格、点等中性字符

我的 html 页面上有一个文本框以及 title="请输入任何单词。"

问题:当用户输入一些阿拉伯语或乌尔都语(从右到左)单词时,文本框工具提示显示为“.(请输入任何单词”

如何解决此类问题?

0 投票
1 回答
210 浏览

javascript - 在 Javascript 中连接双向字符串

我正在使用 JQuery 日历为应用程序生成日期字符串。如果我将语言设置为英语,我会得到这样的日期字符串:

星期五 • 2014 年 10 月 10 日

JQ Calendars 不处理时间,所以我自己格式化字符串的时间部分:

[ • UTC-04:00 上午 12:00]</p>

(为了清楚起见,括号被包括在内;它们不会成为最终字符串的一部分。)接下来,我只是将这两个字符串加在一起,得到:

星期五 • 2014 年 10 月 10 日[ • UTC-04:00 上午 12:00]

这正是我想要的。但是,当我将语言设置为希伯来语时,我的结果是:

2014 年 10 月 10 日

[ • UTC-04:00 上午 12:00]</p>

2014 年 10 月 10 日[ • UTC-04:00 上午 12:00]</p>

请注意 RTL 希伯来语月份和年份之间时间字符串的奇怪插入。

我已经尝试将两个字符串的部分包装在方向代码(U+202A、U+202C 等)中,但没有成功。看起来日期字符串已经是 RTL 和 LTR 的混合体,但是我已经搜索过它并且找不到任何方向字符,尽管我很可能会阻止这个搜索。

关于如何解决这个问题的任何想法?无论好坏,我希望时间字符串“跟随”日期字符串而不会出现奇怪的中断,即使这在技术上可能不正确。我知道 Javascript 的 toLocaleString() 功能,但它还没有得到很好的支持,所以我想至少使用上面的方法作为后备。

0 投票
1 回答
2342 浏览

html - 如何以正确的方式处理从右到左的文本输入字段?

我正在研究多语言布局。我担心的是:

如何正确处理文本输入?

我已经建立了一个JSFiddle来解释我的问题。

  1. 如果我只添加dir="rtl",则单词从右到左出现,但不是每个字符
  2. 如果我为从右到左添加 CSS 样式,包含的数字也会翻转

如何组合数字和文本,以便正确显示希伯来语输入?