Стабилизирующие символы, такие как `< >`, `{ }` и `[ ]`

Когда языковая раскладка меняется на язык справа налево; в некоторых стандартных местах редактирования (например, в адресной строке Google Chrome) такие символы, как <, { а также [ автоматически стать >, } а также ] просто изменив языковую раскладку.

Есть ли способ предотвратить это и сделать эти символы стабильными?

1 ответ

Решение

Я не понял, что вы имеете в виду в первый раз, потому что я познакомился с этим. Я думаю, что все будет хорошо, если вы можете ожидать результатов.

Такое поведение является стандартом двунаправленного алгоритма Unicode. Таким образом, доминирующее направление BiDi взято из первого сильного символа в абзаце.

  • Так что я думаю, что это происходит в этом случае:

    1. Первое направление с пустым текстовым полем берется из конфигурации локали / языка. Как вы сказали, арабский язык - это язык RTL. Итак, курсор справа.

      начальное пустое текстовое поле, направление RTL

    2. вход < но это показало как >, Это нейтральный символ, поэтому не влияет на направление. Почему это перевернуто? Краткий ответ: стандарт Unicode,:) в любом случае, примите это. Ну, его имя меньше знака, так что... В RTL/ арабском, формула начинается с правой стороны, она должна быть перевернута. Что ты думаешь... нет?!!!

      текстовое поле с биди нейтральным символом

    3. Введите латинский символ g, Это сильный символ L (слева), поэтому этот абзац определяется как LTR.

      текстовое поле с сильным левым символом

    4. Backspace для удаления g, Но обратите внимание, где курсор.

      после удаления сильного левого символа

    Теперь пример [Это было ошибочно названо левой квадратной скобкой. Это должно быть что-то вроде открытой квадратной скобки (она нейтральна для BiDi и перевернута в RTL)

Все разработчики стараются следовать стандартам. Так что в настоящее время они заставят текстовое поле быть RTL или LTR, Auto является лучшим для большинства пользователей.

  • Поэтому для вас лучшее, что я могу предложить, - это использовать Unicode BiDi Control Char.

    U+200F right-to-left mark (RLM)
    
    1. В пустой адресной строке Ctrl+Shift+u, подчеркнутый маленьким u появляется, введите 200f затем введите

      Ввод GTK/Gnome Unicode

    2. Увидеть < не переворачивается как LTR.

      GTK/Gnome force Направление RTL

    Ctrl+Shift+u является специфичным для GTK/Gnome. В KDE отсутствует такая опция, и, похоже, она не исправлена, поскольку в этом отчете об ошибке упоминается конфликт между KDE/Qt/Xorg. Нужен способ вставки произвольных символов Юникода в Kubuntu.

  • Так как это всего лишь несколько символов, вы можете переназначить ненужные ключи или отобразить неиспользуемые ключи. Например, я использую американский английский (международные мертвые ключи AltGr)

    1. Открой его xkb файл макета для редактирования:

      sudo nano /usr/share/X11/xkb/symbols/us
      
    2. Найдите определение группы с тем же именем:

      xkb_symbols "altgr-intl" {
      
          name[Group1]= "English (international AltGr dead keys)";
      
    3. Давайте посмотрим в качестве примера для r (легко запомнить): AltGr+r → RLM, Shift+AltGr+r → LRM. Вместо ë & Ë, Заменить:

      key <AD04> { [        r, R,           ediaeresis,   Ediaeresis      ] };
      

      С:

      key <AD04> { [        r, R,           U200F,        U200E           ] };
      
    4. Обновление xkb

      sudo dpkg-reconfigure xkb-data
      
    5. Переключитесь на другой макет, затем вернитесь, он будет активен немедленно.

    Заметки:

Приятно читать для дальнейшего понимания:

Рекомендации:

Другие вопросы по тегам