问题标签 [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.
javascript - 双向文本 - 视觉到逻辑
我正在逐个字母地在屏幕上绘制文本。
在英语中它非常简单,因为文本是 LTR,所以字母以它们显示的相同顺序保存在字符串中。
绘制 RTL 文本时,我需要切换打印方向。但是当有字母、数字、英语和一些 RTL 语言时......比混乱开始了。
对于前。
例 1:שלום לכם
ש- 是字符串中的第一个字母 - 但我们可以看到它显示了最后一个
例 2:所有 ש- 的 שלום 是字符串中的第一个字母 - 但我们可以看到它显示在中间,在英语开始之前。
当数字和数学符号出现在图片中时,情况变得更加复杂,并且需要翻转特殊字符,如“(”,“)”......
网上找了很多Bidi算法,把字符串中字母的逻辑顺序改为视觉顺序。因此,当我在转换后的字符串上从左到右运行时,我确信该字符串将正确打印。
但是,它们从来都不是完美的。在某些情况下,它们无法正常工作。他们都没有考虑文本的方向(意味着当我们在键盘上按下右 Ctrl+Shift 时,可视化会再次更改)
我的问题是
- 有人知道我可以使用一些防弹 Bidi 算法来将字符串从它保存在内存中的字符串更改为视觉顺序吗?
- 有没有更简单的方法来解决我的问题?也许以某种方式得到它的浏览器算法..
html - 为什么 bdo 标签没有竖排文本选项?
为什么 bdo 标签只允许指定从左到右的文本和从右到左的文本?为什么它不允许作者指定竖排文本,比如日本过去使用的和蒙古文字使用的?
arabic - 与阿拉伯语文本相关的括号应该在哪里?
我们的应用程序会在后面跟着一个括号时自动修改阿拉伯文本的布局,我想知道这是否是正确的行为?
该应用程序以下列格式显示项目:
因此英文结构“stackoverflow”的 1.5 版将显示为:
注意:括号需要显示。ID 和第一个括号之间没有空格。括号仅包含版本。括号可以是任何字符,但现在切换到其他字符为时已晚!
这适用于从左到右的语言,但对于阿拉伯语语言,结构以以下形式出现:
我不是说阿拉伯语的人,我需要知道这是否真的正确。阿拉伯语格式是否等同于英语格式,还是出现了严重错误?
google-chrome - 为什么与 IE 相比,Chrome/FF 中的双向文本呈现不同,这是正确的行为?
这是一个非常简单的 HTML 片段来显示问题:
在 Chrome 和 Firefox 中,结果是“一)二)”,而在 IE 中,结果是“(一)二”。据我对bidi文本的初步研究可以看出,区别在于Chome和FF让两边没有被LTR文本包围的“中性”字符(标点符号)继承父级的方向,即RTL。IE 似乎注意到文本仅包含 LTR 字符和中性字符,因此它使标点符号 LTR。有谁知道哪种行为是正确的?
谢谢!
c++ - Unicode、_stprintf() 和混合文本方向
我正在重构一些遗留的 c++ 代码以支持 Unicode,当 _stprintf 与 _T("%s %s") 格式字符串一起使用并且参数是:阿拉伯文本(从右到左) 后跟一些存储在字符数组中的数字。这是一个代码片段:
我在 buf 中得到的是 حبيبيحبيبيحبيب 12345678h90,但我想要得到的是 Text 数组的内容,然后是 Number 数组的内容。(我试图将它粘贴在这里,但它会以与 _stprintf 相同的方式自动格式化......)。
我知道这样做的原因是阿拉伯文本是一种强字符类型,所有数字都是弱类型,我有一个相对简单的解决方案 - 重载 _stprintf ,检查参数字符串是否以数字开头并前置 U+200E ( \u200E) 控制字符。但是,我不禁想到可能有一个我不知道的更简单的解决方案,比如全局设置或其他什么?有没有类似的东西?
这些字符串被传递给 SetWindowText 并且由于阿拉伯文而以错误的顺序显示。我的主要目标是让它们在 UI 中正确呈现。
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 问题?
delphi - 如何在左侧显示减号(Delphi,TListview)
TListview
我正在尝试在具有他的属性的项目的左侧显示负数的减号BiDiMode = bdRightToLeft.
我在那里尝试了代码:
事实上,当我使用断点进行评估时它会起作用strResult
。
但是当它TListView
显示在我的项目中时:
它显示如下:14.2%-
有没有办法告诉TListview
不要更改我正在显示的字符串或其他东西?
localization - JavaFx 8 RTL 支持
这是此问题的后续问题:
我刚刚学会了如何在我正在构建的应用程序中本地化字符串。我要添加支持的语言是 RTL 语言。
是setNodeOrientation(NodeOrientation.RIGHT_TO_LEFT);
支持RTL的正式方式吗?我是否需要在我的代码中的任何地方检查我的语言环境,然后相应地设置节点方向?如果我在布局中使用 FXML 而不是 Java 代码会怎样?
难道没有更简单的方法来支持 RTL 并使应用程序自动将方向更改为我选择的某些控件,方法是设置属性或其他东西,而不是setNodeOrientation
直接使用它?