问题标签 [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 回答
715 浏览

javascript - 双向文本 - 视觉到逻辑

我正在逐个字母地在屏幕上绘制文本。

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

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

对于前。

例 1:שלום לכם

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

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

当数字和数学符号出现在图片中时,情况变得更加复杂,并且需要翻转特殊字符,如“(”,“)”......

网上找了很多Bidi算法,把字符串中字母的逻辑顺序改为视觉顺序。因此,当我在转换后的字符串上从左到右运行时,我确信该字符串将正确打印。

但是,它们从来都不是完美的。在某些情况下,它们无法正常工作。他们都没有考虑文本的方向(意味着当我们在键盘上按下右 Ctrl+Shift 时,可视化会再次更改)

我的问题是

  1. 有人知道我可以使用一些防弹 Bidi 算法来将字符串从它保存在内存中的字符串更改为视觉顺序吗?
  2. 有没有更简单的方法来解决我的问题?也许以某种方式得到它的浏览器算法..
0 投票
0 回答
57 浏览

html - 为什么 bdo 标签没有竖排文本选项?

为什么 bdo 标签只允许指定从左到右的文本和从右到左的文本?为什么它不允许作者指定竖排文本,比如日本过去使用的和蒙古文字使用的?

0 投票
1 回答
1122 浏览

arabic - 与阿拉伯语文本相关的括号应该在哪里?

我们的应用程序会在后面跟着一个括号时自动修改阿拉伯文本的布局,我想知道这是否是正确的行为?

该应用程序以下列格式显示项目:

因此英文结构“stackoverflow”的 1.5 版将显示为:

注意:括号需要显示。ID 和第一个括号之间没有空格。括号仅包含版本。括号可以是任何字符,但现在切换到其他字符为时已晚!

这适用于从左到右的语言,但对于阿拉伯语语言,结构以以下形式出现:

我不是说阿拉伯语的人,我需要知道这是否真的正确。阿拉伯语格式是否等同于英语格式,还是出现了严重错误?

0 投票
1 回答
212 浏览

google-chrome - 为什么与 IE 相比,Chrome/FF 中的双向文本呈现不同,这是正确的行为?

这是一个非常简单的 HTML 片段来显示问题:

在 Chrome 和 Firefox 中,结果是“一)二)”,而在 IE 中,结果是“(一)二”。据我对bidi文本的初步研究可以看出,区别在于Chome和FF让两边没有被LTR文本包围的“中性”字符(标点符号)继承父级的方向,即RTL。IE 似乎注意到文本仅包含 LTR 字符和中性字符,因此它使标点符号 LTR。有谁知道哪种行为是正确的?

谢谢!

0 投票
1 回答
621 浏览

c# - 样式化运行/段落以支持 RTL 和 LTR 单词

如何设置 aRun和/或Paragraph同时支持 RTL 和 LTR 单词?

问题是:我有一个包含波斯语和英语单词的复杂文本,我正在尝试.docx使用 OpenXML SDK 创建一个文档。但是,英文单词,也得到 RTL。假设我有这个文本:

این متن Javad Amiry انگلیسی ست و باید چپ به راست شود。

我希望将文本放在这样的文档中:

在此处输入图像描述

但我得到了这个:

在此处输入图像描述

如您所见,英语单词是反之亦然!意思是,当我期待的时候Javad Amiry,我得到了davaJ yrimA!你有什么想法来解决这个问题吗?

我使用的样式如下所示:

提前致谢。

0 投票
0 回答
311 浏览

c++ - Unicode、_stprintf() 和混合文本方向

我正在重构一些遗留的 c++ 代码以支持 Unicode,当 _stprintf 与 _T("%s %s") 格式字符串一起使用并且参数是:阿拉伯文本(从右到左) 后跟一些存储在字符数组中的数字。这是一个代码片段:

我在 buf 中得到的是 حبيبيحبيبيحبيب 12345678h90,但我想要得到的是 Text 数组的内容,然后是 Number 数组的内容。(我试图将它粘贴在这里,但它会以与 _stprintf 相同的方式自动格式化......)。

我知道这样做的原因是阿拉伯文本是一种强字符类型,所有数字都是弱类型,我有一个相对简单的解决方案 - 重载 _stprintf ,检查参数字符串是否以数字开头并前置 U+200E ( \u200E) 控制字符。但是,我不禁想到可能有一个我不知道的更简单的解决方案,比如全局设置或其他什么?有没有类似的东西?

这些字符串被传递给 SetWindowText 并且由于阿拉伯文而以错误的顺序显示。我的主要目标是让它们在 UI 中正确呈现。

0 投票
1 回答
1396 浏览

html - safari 中的方向 rtl/lrt

我写了一个网页,它的方向是rtl(从右到左)。这是我的<html>标签:

我需要写网页的 2 个部分ltr(左写),所以我dir为此添加了属性div

它适用于 Google Chrome 和 Mozilla Firefox,但不适用于虚拟机上 Mac OS X 10.10 中的 Safari 8.0 I。

为什么这在 Safari 中不起作用?

会不会是 CSS 问题?

0 投票
1 回答
925 浏览

delphi - 使用 VCL 样式时的 TListView 滚动错误 - Delphi XE8

我试图通过以下函数将TListView控件的方向设置为:RTL

但是当项目使用时我有两个问题如下VCL Styles

1:Vertical scrollbar不点击不出现。

在此处输入图像描述

2:当我更改 ListView 列的大小并horizontal scrollbar单击时,会显示以下错误消息:

在此处输入图像描述

异常来源:Vcl.ComCtrls.TListViewStyleHook.WMMouseMove

在此处输入图像描述

这些问题应该如何解决?

谢谢。

0 投票
1 回答
475 浏览

delphi - 如何在左侧显示减号(Delphi,TListview)

TListview我正在尝试在具有他的属性的项目的左侧显示负数的减号BiDiMode = bdRightToLeft.

我在那里尝试了代码:

DBGrid 中的千位分隔符

事实上,当我使用断点进行评估时它会起作用strResult

但是当它TListView显示在我的项目中时:

它显示如下:14.2%-

有没有办法告诉TListview不要更改我正在显示的字符串或其他东西?

0 投票
0 回答
853 浏览

localization - JavaFx 8 RTL 支持

这是此问题的后续问题:

不支持 JavaFX 标题栏 RTL?

我刚刚学会了如何在我正在构建的应用程序中本地化字符串。我要添加支持的语言是 RTL 语言。

setNodeOrientation(NodeOrientation.RIGHT_TO_LEFT);支持RTL的正式方式吗?我是否需要在我的代码中的任何地方检查我的语言环境,然后相应地设置节点方向?如果我在布局中使用 FXML 而不是 Java 代码会怎样?

难道没有更简单的方法来支持 RTL 并使应用程序自动将方向更改为我选择的某些控件,方法是设置属性或其他东西,而不是setNodeOrientation直接使用它?