Арабская раскладка клавиатуры отправляет лигатуры как один символ (проблема Laa)

Арабская раскладка клавиатуры отправляет лигатуры как один символ (проблема Laa)

Убунту отправляетАрабские лигатурные глифыкак один глиф. Например, лигатура Лаа+Алиф "لا" (U+0644, U+0627) отправляется как "ﻻ" (U+FEFB), и аналогично для (ﻷ، ﻵ، ﻹ).

ДЕЙСТВИЯ ПО ВОСПРОИЗВЕДЕНИЮ

  1. Настройки > Клавиатура > Добавить арабскую раскладку по умолчанию
  2. Введите «ﻻ» (например: «b» на QWERTY-клавиатурах)

НАБЛЮДАЕМЫЙ РЕЗУЛЬТАТ
Выходной сигнал: (U+FEFB)

ОЖИДАЕМЫЙ РЕЗУЛЬТАТ
Выходные данные: لا (U+0644, U+0627).

Чтобы прояснить ситуацию для англоговорящих, это похоже на наличие клавиши для ввода лигатуры. Допустим, вы хотите нажать "b", чтобы ввести два символа: 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-daemonили ibus-setupесли ibus не настроен.

  • Используйте ar-kbd-m17n в качестве метода ввода ibus.

Связанный контент