当语言布局更改为从右到左的语言时;在某些标准编辑位置(例如 Google Chrome 的地址栏),只需更改语言布局<
,诸如{
和之类的字符就会[
自动变为 和>
。}
]
有没有办法可以防止这种情况并使这些角色稳定?
答案1
我第一次没有明白你的意思,因为我对此很熟悉。我认为如果你能期待结果的话,那就没问题了。
这种行为是Unicode 双向算法。因此,主要的 BiDi 方向取自段落中的第一个强字符。
因此我认为在这种情况下会发生以下情况:
第一个带有空文本框的方向取自区域设置/语言配置。正如您所说,阿拉伯语是一种 RTL 语言。因此,光标位于右侧。
输入
<
但它显示为>
。它是一个中性字符,所以不影响方向。为什么要翻转它?简短回答:Unicode 标准,:) 无论如何接受它。好吧,它的名字是小于号,所以...在 RTL/阿拉伯语中,公式从右侧开始,应该翻转。你怎么看...不是吗?!!!输入一个拉丁字符
g
。这是一个强大的大号(左)字符,因此该段落被检测为 LTR。退格键删除
g
。但请注意光标在哪里。
例如
[
,它被错误地命名左方括号. 应该是这样的打开方括号(它是 BiDi 中性的,并在 RTL 中翻转)
所有开发人员都试图遵循标准。因此他们绝不会强制文本框为 RTL 或 LTR,对于大多数用户来说,自动是最好的。
因此对您来说,我能提供的最好的东西就是使用 Unicode BiDi 控制字符。
U+200F right-to-left mark (RLM)
在空的地址栏中,出现Ctrl+ Shift+ u,小下划线,然后输入
u
200f
Enter看起来
<
并没有像 LTR 那样翻转。
Ctrl+ Shift+u是 GTK/Gnome 特有的。KDE 缺少这样的选项,而且似乎没有修复,因为这个错误报告提到了 KDE/Qt/Xorg 之间的冲突需要在 Kubuntu 中插入任意 Unicode 字符的方法。
由于这只是几个字符的问题,您可以重新映射不需要的键或映射未使用的键。例如,我正在使用美国英语(国际 AltGr 死键)
打开其
xkb
布局文件进行编辑:sudo nano /usr/share/X11/xkb/symbols/us
查找同名的组定义:
xkb_symbols "altgr-intl" { name[Group1]= "English (international AltGr dead keys)";
r
让我们看一下(容易记住的)示例:+ → AltGrRLM r,Shift++ → LRM。而不是& 。替换:AltGrrë
Ë
key <AD04> { [ r, R, ediaeresis, Ediaeresis ] };
和:
key <AD04> { [ r, R, U200F, U200E ] };
更新 xkb
sudo dpkg-reconfigure xkb-data
切换到另一个布局然后返回,它将立即激活。
笔记:
如果您希望能够在两种布局中使用它,请使用相同的方法将它们添加到阿拉伯布局中。
U+061C arabic letter mark (ALM)
如果您是阿拉伯语用户,则可以使用RLM。xkb
支持其他Unicode代码输入格式,0x100200f
等U200F
(即0x100
作为前缀)为了避免更新覆盖已修改的键映射
xkb-data
,最好创建一个新的自定义 XKB 映射。请参阅如何添加新的键盘布局(自定义键盘布局定义)或者在 ubuntu 上创建新的键盘布局需要哪些步骤?可以添加所有其他 Unicode 控制字符。某些应用程序在多行输入文本框的弹出菜单中已经有选项。示例 Poedit:
很高兴阅读以进一步了解:
参考:
- Unicode 双向算法
如何输入键盘上没有的 Unicode,请参阅无法在匈牙利语布局中输入“ć”
- 维基百科:Unicode 输入
- 重新配置键盘布局 - 13.10、14.04
- Wikibooks:FOSS 本地化/附件 B:技术方面(前缀参考
0x100
)