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


8

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

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


Не могли бы вы добавить витрину со скриншотом.
user.dz

1
@Sneetsher: нужен фильм. добавить арабский к языкам в адресной строке Chromium введите символ <один. Затем измените макет на английский.
Нано - объединить меня

Ответы:


8

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      Ввод 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. Переключитесь на другой макет, затем вернитесь, он будет активен немедленно.

    Ноты:

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

Ссылки:


Спасибо. для меня Ctrl + Shift + U не работает в KDE. возможно, это единство или гном. Было бы замечательно, если бы некоторые символы, например, ', [] {}' могли отказаться от специфических для направления обработок (и всегда пересматриваться как ltr), чтобы они были более совместимы с символами клавиатуры и меньше сбивали с толку.
Нано - Слей меня

1
Вы правы, кажется, это не исправлено в KDE, так как в этом отчете об ошибке упоминается конфликт между KDE / Qt / Xorg. Нужен способ вставки произвольных символов Юникода в Kubuntu . Я буду искать, если есть какие-либо обходные пути.
user.dz

@MinimusHeximus, я обновил свой ответ с помощью обходного пути ввода Unicode, используя xkb. У меня есть только Gnome / Unity. Пожалуйста, дайте мне знать, если это не работает в KDE.
user.dz

1
Кажется, я должен использовать что-то вроде 0x100200Fэтого, я не знаю, так ли это, как U200F.
Нано - Слей меня

1
@MinimusHeximus, да, это то же самое " (На самом деле, это может быть более эффективным способом добавления новых ключевых символов.) Значение Unicode должно начинаться с префикса" 0x100 "для описания keysym для одного символа. ", Ref: Викиучебники: FOSS Localization / Приложение B: Технические аспекты . Спасибо, я узнал от тебя что-то новое.
user.dz
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.