Ubuntu 发送阿拉伯语连字符作为单个字形发送。例如,Laa+Alif 连字符“لا”(U+0644、U+0627)被发送为“ﻻ”(U+FEFB),对于(ﻷ، ﻵ، ﻹ)也是如此。
重现步骤
- 设置 > 键盘 > 添加默认阿拉伯语布局
- 输入“ﻻ”(即 QWERTY 键盘中的“b”)
观察结果
输出为ﻻ (U+FEFB)
预期结果
输出为لا (U+0644, U+0627)。
向英语使用者解释一下,这就像有一个键可以输入连字符。假设您想按“b”键输入两个字符:fi
但您得到的却fi
是一个字符。这正是此问题所发生的情况。
答案1
X 键盘布局发送阿拉伯文连字字形作为单个字形发送。例如,Laa+Alif 连字符“لا”(U+0644、U+0627)被发送为“ﻻ”(U+FEFB),对于(ﻷ، ﻵ، ﻹ)也是如此。这是由于已知的限制在 xkb 中不允许将一个键映射到多个字符。
使用 X compose 解决方法
以下解决方案需要重新启动 X 服务器。如果您已im-config
安装,则可以使用im-config -n xim
。或者,将以下内容添加到您的环境变量:
XIM=none
XIM_PROGRAM=/bin/true
XIM_ARGS=
GTK_IM_MODULE=xim
QT_IM_MODULE=xim
SHORT_DESC="X compose table"
不过,由于大多数基于 QT 的程序没有这个问题,因此只需添加export GTK_IM_MODULE=xim
到~/.xsessionrc
或就足够了~/.xprofile
。
使用 ibus 解决方法
通过运行将 ibus 设置为输入法
im-chooser
或者通过设置环境变量:
GTK_IM_MODULE=ibus; QT_IM_MODULE=ibus; XMODIFIERS=@im=ibus
如果 ibus 未设置,则运行
ibus-daemon
或。ibus-setup
使用 ar-kbd-m17n 作为 ibus 输入法。