Znaki stabilizujące, takie jak `<>`, `{}` i `[]`

8

Gdy układ języka zostanie zmieniony na język od prawej do lewej; w niektórych miejscach standardowych edycji (np pasku adresu przeglądarki Google Chrome), postacie podoba <, {i [stają się automatycznie >, }a ]po prostu zmieniając układ językowy.

Czy istnieje sposób, aby temu zapobiec i zapewnić stabilność tych postaci?

nano - połącz mnie
źródło
Czy możesz dodać wizytówkę ze zrzutem ekranu?
user.dz
1
@Sneetsher: potrzebuje filmu. dodaj arabski do języków w pasku adresu Chromium, wpisz charater <sam. Następnie zmień układ na angielski.
nano - scal mnie

Odpowiedzi:

8

Nie rozumiem, co masz na myśli po raz pierwszy, ponieważ się z tym zapoznałem. Myślę, że będzie OK, jeśli możesz spodziewać się rezultatów.

Takie zachowanie jest standardem z dwukierunkowego algorytmu Unicode . Zatem dominujący kierunek BiDi pochodzi od pierwszego silnego charakteru w akapicie.

  • Więc co myślę, że dzieje się w tym przypadku:

    1. Pierwszy kierunek z pustym polem tekstowym pochodzi z konfiguracji ustawień regionalnych / językowych. Jak powiedziałeś arabski jest językiem RTL. Więc kursor po prawej stronie.

      początkowe puste pole tekstowe, kierunek RTL

    2. Dane wejściowe, <ale pokazane jako >. Jest neutralny, więc nie wpływa na kierunek. Dlaczego jest odwrócony? Krótka odpowiedź: standard Unicode, :) i tak to zaakceptuj. No cóż, jego nazwa to Mniej niż znak , więc ... W RTL / arabskim formuła zaczyna się od prawej strony, należy ją odwrócić. Jak myślisz ... nie? !!!

      pole tekstowe z neutralnym znakiem bidi

    3. Wpisz znak łaciński g. Jest to mocny L (lewy) znak, więc ten akapit jest wykrywany jako LTR.

      pole tekstowe z silnym lewym znakiem

    4. Backspace do usunięcia g. Ale zauważ, gdzie jest kursor.

      pole tekstowe z neutralnym znakiem bidi po usunięciu silnego lewego znaku

    Teraz, na przykład [, został źle nazwany Lewy nawias kwadratowy . Powinno to być coś w rodzaju otwartego nawiasu kwadratowego (jest neutralny BiDi i odwrócony w RTL)

Wszyscy programiści starają się przestrzegać standardów. Więc teraz zmuszą pole tekstowe do RTL lub LTR, Auto jest najlepsze dla większości użytkowników.

  • Dla ciebie najlepszą rzeczą, jaką mogę zaoferować, jest użycie Unicode BiDi Control Char.

    U+200F right-to-left mark (RLM)
    
    1. W pustym pasku adresu pojawia się Ctrl+ Shift+ u, małe podkreślone u, wprowadź 200fwtedyEnter

      Wejście GTK / Gnome Unicode

    2. Zobacz <nie odwrócił się jako LTR.

      GTK / Gnome wymusza kierunek RTL

    Ctrl+ Shift+ ujest specyficzny dla GTK / Gnome. KDE tęskni za taką opcją i wydaje się, że nie została naprawiona, ponieważ ten raport o błędzie wspomina o konflikcie między KDE / Qt / Xorg. Potrzebuje sposobu na wstawianie dowolnych znaków Unicode w Kubuntu .

  • Ponieważ jest to tylko kwestia kilku znaków, możesz mapować niepotrzebne klucze lub mapować nieużywane. Na przykład używam US English (międzynarodowe martwe klawisze AltGr)

    1. Otwórz xkbplik układu do edycji:

      sudo nano /usr/share/X11/xkb/symbols/us
      
    2. Poszukaj definicji grupy o tej samej nazwie:

      xkb_symbols "altgr-intl" {
      
          name[Group1]= "English (international AltGr dead keys)";
      
    3. Spójrzmy jako przykład r(łatwy do zapamiętania) ,: AltGr+ r→ RLM, Shift+ AltGr+ r→ LRM. Zamiast ë& Ë. Zastąpić:

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

      Z:

      key <AD04> { [        r, R,           U200F,        U200E           ] };
      
    4. Zaktualizuj xkb

      sudo dpkg-reconfigure xkb-data
      
    5. Przełącz na inny układ, a następnie z powrotem, będzie on natychmiast aktywny.

    Uwagi:

    • Użyj tej samej metody, aby dodać je do arabskiego układu, jeśli chcesz móc używać go z obu układów.

    • Możesz używać U+061C ؜ ‭arabic letter mark (ALM)zamiast RLM, ponieważ jesteś użytkownikiem arabskim.

    • xkbobsługuje inny format wprowadzania kodu Unicode, np 0x100200f. U200F(tj. 0x100jako prefiks)

    • Aby uniknąć zastąpienia zmodyfikowanej mapy kluczy xkb-dataaktualizacjami, najlepiej jest utworzyć nową niestandardową mapę XKB. Zobacz Jak dodać nowy układ klawiatury (definicja niestandardowego układu klawiatury) lub Jakie są kroki potrzebne do utworzenia nowego układu klawiatury w Ubuntu?

    • Możliwe jest dodanie wszystkich innych znaków kontrolnych Unicode. Niektóre aplikacje mają już opcję w menu podręcznym w polu tekstowym wprowadzania wielu wierszy. Przykład Poedit:

      poedit, menu znaków kontrolnych BiDi

Miło przeczytać, aby lepiej zrozumieć:

Bibliografia:

user.dz
źródło
dzięki. dla mnie ctrl + shift + u nie działa w KDE. prawdopodobnie jest to specyficzne dla jedności lub gnoma. Byłoby wspaniale, gdyby niektóre znaki, np. „, [] {}”, Mogły zrezygnować z leczenia specyficznego dla kierunku (i zawsze są rejestrowane jako ltr), dzięki czemu są bardziej zgodne z symbolami klawiatury i mniej mylące.
nano - scal mnie
1
Masz rację, wydaje się, że nie jest naprawiony w KDE, ponieważ ten raport o błędzie wspomina o konflikcie między KDE / Qt / Xorg Potrzebujesz sposobu na wstawienie dowolnych znaków Unicode w Kubuntu . Przeszukam, czy istnieje jakieś obejście.
user.dz
@MinimusHeximus, zaktualizowałem swoją odpowiedź za pomocą obejścia wprowadzania Unicode za pomocą xkb. Mam tylko Gnome / Unity. Daj mi znać, jeśli nie działa w KDE.
user.dz
1
Wydaje się, że muszę użyć czegoś takiego jak 0x100200F, nie wiem, czy to to samo, co U200F.
nano - scal mnie
1
@MinimusHeximus, tak, to jest to samo ” (W rzeczywistości może to być bardziej skuteczny sposób dodawania nowych kluczy). Wartość Unicode musi być poprzedzona„ 0x100 ”, aby opisać klucz dla pojedynczego znaku. ”, Odwołanie: Wikibooks: Lokalizacja FOSS / Załącznik B: Aspekty techniczne . Dziękuję, nauczyłem się od ciebie nowych rzeczy.
user.dz