Стабилизирующие символы, такие как `< >`, `{ }` и `[ ]`
Когда языковая раскладка меняется на язык справа налево; в некоторых стандартных местах редактирования (например, в адресной строке Google Chrome) такие символы, как <
, {
а также [
автоматически стать >
, }
а также ]
просто изменив языковую раскладку.
Есть ли способ предотвратить это и сделать эти символы стабильными?
1 ответ
Я не понял, что вы имеете в виду в первый раз, потому что я познакомился с этим. Я думаю, что все будет хорошо, если вы можете ожидать результатов.
Такое поведение является стандартом двунаправленного алгоритма Unicode. Таким образом, доминирующее направление BiDi взято из первого сильного символа в абзаце.
Так что я думаю, что это происходит в этом случае:
Первое направление с пустым текстовым полем берется из конфигурации локали / языка. Как вы сказали, арабский язык - это язык RTL. Итак, курсор справа.
вход
<
но это показало как>
, Это нейтральный символ, поэтому не влияет на направление. Почему это перевернуто? Краткий ответ: стандарт Unicode,:) в любом случае, примите это. Ну, его имя меньше знака, так что... В RTL/ арабском, формула начинается с правой стороны, она должна быть перевернута. Что ты думаешь... нет?!!!Введите латинский символ
g
, Это сильный символ L (слева), поэтому этот абзац определяется как LTR.Backspace для удаления
g
, Но обратите внимание, где курсор.
Теперь пример
[
Это было ошибочно названо левой квадратной скобкой. Это должно быть что-то вроде открытой квадратной скобки (она нейтральна для BiDi и перевернута в RTL)
Все разработчики стараются следовать стандартам. Так что в настоящее время они заставят текстовое поле быть RTL или LTR, Auto является лучшим для большинства пользователей.
Поэтому для вас лучшее, что я могу предложить, - это использовать Unicode BiDi Control Char.
U+200F right-to-left mark (RLM)
В пустой адресной строке Ctrl+Shift+u, подчеркнутый маленьким
u
появляется, введите200f
затем введитеУвидеть
<
не переворачивается как LTR.
Ctrl+Shift+u является специфичным для GTK/Gnome. В KDE отсутствует такая опция, и, похоже, она не исправлена, поскольку в этом отчете об ошибке упоминается конфликт между KDE/Qt/Xorg. Нужен способ вставки произвольных символов Юникода в Kubuntu.
Так как это всего лишь несколько символов, вы можете переназначить ненужные ключи или отобразить неиспользуемые ключи. Например, я использую американский английский (международные мертвые ключи AltGr)
Открой его
xkb
файл макета для редактирования:sudo nano /usr/share/X11/xkb/symbols/us
Найдите определение группы с тем же именем:
xkb_symbols "altgr-intl" { name[Group1]= "English (international AltGr dead keys)";
Давайте посмотрим в качестве примера для
r
(легко запомнить): AltGr+r → RLM, Shift+AltGr+r → LRM. Вместоë
&Ë
, Заменить: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
- Викиучебники: Локализация FOSS / Приложение B: Технические аспекты
0x100
префикс)