web-dev-qa-db-fra.com

Caractères stabilisateurs comme `<>`, `{}` et `[]`

Lorsque la disposition de la langue est remplacée par une langue de droite à gauche; dans certains emplacements d'édition standard (par exemple, la barre d'adresse de Google Chrome), des caractères comme <, { et [ devient automatiquement >, } et ] simplement en changeant la disposition de la langue.

Existe-t-il un moyen d'empêcher cela et de rendre ces personnages stables?

8
user126106

Je n'ai pas compris ce que vous voulez dire pour la première fois, car je me suis familiarisé avec cela. Je pense que ce sera OK, si vous pouvez vous attendre à des résultats.

Ce comportement est une norme de Algorithme bidirectionnel Unicode . Ainsi, la direction BiDi dominante est tirée du premier caractère fort du paragraphe.

  • Donc, ce que je pense que cela se produit dans ce cas:

    1. La première direction avec une zone de texte vide est tirée de la configuration locale/langue. Comme vous l'avez dit, l'arabe est une langue RTL. Alors curseur à droite.

      initial empty textbox, RTL direction

    2. Saisissez < Mais il s'affiche sous la forme >. C'est un caractère neutre donc aucun effet sur la direction. Pourquoi est-il retourné? Réponse courte: norme Unicode, :) acceptez cela quand même. Eh bien, son nom est signe inférieur à , donc ... En RTL/arabe, la formule commence par le côté droit, elle doit être inversée. Que pensez-vous ... non? !!!

      textbox with bidi neutral character

    3. Saisissez un caractère latin g. C'est un fort [~ # ~] l [~ # ~] (gauche) caractère, donc ce paragraphe est détecté comme LTR.

      textbox with strong left character

    4. Retour arrière pour supprimer g. Mais remarquez où se trouve le curseur.

      textbox with bidi neutral character after removing a strong left character

    Maintenant, exemple [, Il a été mal nommé crochet carré gauche . Cela devrait être quelque chose comme Ouvrir le crochet carré (Il est neutre BiDi et retourné en RTL)

Tous les développeurs essaient de suivre les normes. Donc, maintenant, ils forceront la zone de texte à être RTL ou LTR, Auto est le meilleur pour la plupart des utilisateurs.

  • Donc, pour vous, la meilleure chose que je puisse offrir est d'utiliser les caractères de contrôle Unicode BiDi.

    U+200F right-to-left mark (RLM)
    
    1. Dans la barre d'adresse vide, Ctrl+Shift+u, un petit u apparaît, entrez 200f puis Enter

      GTK/Gnome Unicode input

    2. Voir < N'a pas été retourné en LTR.

      GTK/Gnome force RTL direction

    Ctrl+Shift+u est spécifique à GTK/Gnome. KDE manque une telle option et elle ne semble pas être corrigée, car ce rapport de bogue mentionne le conflit entre KDE/Qt/Xorg Besoin d'un moyen d'insérer des caractères Unicode arbitraires dans Kubunt .

  • Comme il ne s'agit que de quelques caractères, vous pouvez remapper les clés non nécessaires ou mapper celles qui ne sont pas utilisées. Par exemple, j'utilise Anglais américain (touches mortes internationales AltGr)

    1. Ouvrez son fichier de mise en page xkb pour le modifier:

      Sudo nano /usr/share/X11/xkb/symbols/us
      
    2. Recherchez la définition de groupe qui porte le même nom:

      xkb_symbols "altgr-intl" {
      
          name[Group1]= "English (international AltGr dead keys)";
      
    3. Regardons comme exemple pour r (facile à retenir) ,: AltGr+r → RLM, Shift+AltGr+r → LRM. Au lieu de ë & Ë. Remplacer:

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

      Avec:

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

      Sudo dpkg-reconfigure xkb-data
      
    5. Basculez vers une autre mise en page puis revenez, elle sera active immédiatement.

    Remarques:

Agréable à lire pour une meilleure compréhension:

Références:

8
user.dz