Estabilizando caracteres como '', '{}' e '[]'

8

Quando o layout de idioma é alterado para um idioma da direita para a esquerda; em alguns locais de edição padrão (por exemplo, a barra de endereço do Google Chrome), os caracteres como < , { e [ se tornam automaticamente > , } e ] mudando o layout de idioma.

Existe uma maneira de evitar isso e tornar esses personagens estáveis?

    
por user126106 22.11.2013 / 14:47

1 resposta

8

Eu não entendi o que você quer dizer pela primeira vez, porque eu me familiarizei com isso. Eu acho que vai dar certo, se você puder esperar resultados.

Esse comportamento é um padrão do Algoritmo Bidirecional Unicode . Assim, a direção BiDi dominante é tirada do primeiro caracter strong no parágrafo.

  • Então, o que eu acho que acontece neste caso:

    1. A primeira direção com caixa de texto vazia é obtida da configuração de localidade / idioma. Como você disse, o árabe é uma linguagem RTL. Então, o cursor à direita.

    2. Insira < , mas ele foi exibido como > . É um char neutro, então não afeta a direção. Por que é invertido? Resposta curta: padrão Unicode, :) aceite isso mesmo assim. Bem, seu nome é Menos-que assina , Então ... Em RTL / Árabe, o começo da fórmula do lado direito, deve ser invertido. O que você acha ... não? !!!

    3. Insira um caractere latino g . É um strong L (esquerda) char, então este parágrafo é detectado como LTR.

    4. Backspace para excluir g . Mas observe onde o cursor.

    Agora, exemplo [ , foi erroneamente chamado de colchete esquerdo . Deve ser algo como Abrir colchete (é BiDi neutro e invertido em RTL)

Todos os desenvolvedores tentam seguir os padrões. Então agora eles vão forçar a caixa de texto a ser RTL ou LTR, Auto é o melhor para a maioria dos usuários.

  • Então, para você, a melhor coisa que posso oferecer é usar o Unicode BiDi Control Char's.

    U+200F right-to-left mark (RLM)
    
    1. Na barra de endereços vazia, Ctrl + Deslocamento + u , pequeno sublinhado u aparece, entra 200f ent Digite

    2. Ver < não foi alterado como LTR.

    Ctrl + Deslocamento + u é específico do GTK / Gnome. O KDE perde essa opção e parece não ser consertado, já que este relatório de bug menciona o conflito entre o KDE / Qt / Xorg Precisa de maneira de inserir caracteres Unicode arbitrários no Kubuntu .

  • Como é apenas uma questão de poucos caracteres, você pode remapear chaves não necessárias ou mapear as que não são usadas. Por exemplo, estou usando inglês americano (chaves internacionais AltGr)

    1. Abra o arquivo de layout xkb para edição:

      sudo nano /usr/share/X11/xkb/symbols/us
      
    2. Procure a definição de grupo com o mesmo nome:

      xkb_symbols "altgr-intl" {
      
          name[Group1]= "English (international AltGr dead keys)";
      
    3. Vamos olhar como exemplo para r (fácil de lembrar), AltGr + r → RLM, Shift + AltGr + r → LRM. Em vez de ë & amp; %código%. Substitua:

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

      Com:

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

      sudo dpkg-reconfigure xkb-data
      
    5. Mude para outro layout e depois para trás, ele estará ativo imediatamente.

    Notas:

    • Use o mesmo método para adicioná-los ao layout árabe, se você quiser usá-los em ambos os layouts.

    • Você pode usar Ë em vez de RLM, pois é um usuário árabe.

    • U+061C ؜ ‭arabic letter mark (ALM) suporta outro formato de entrada de código Unicode, xkb eq. 0x100200f (ou seja, U200F como prefixo)

    • Para evitar a substituição do mapa de chaves modificado por 0x100 updates, o melhor é criar um novo mapa XKB personalizado. Veja como adicionar um novo layout de teclado. Definição de layout de teclado personalizado) ou Quais são os passos necessários para criar um novo layout de teclado no Ubuntu?

    • É possível adicionar todos os outros caracteres de controle Unicode. Alguns aplicativos já têm uma opção no menu pop-up da caixa de texto de entrada de várias linhas. Exemplo de Poedit:

É bom ler para entender melhor:

Referências:

por user.dz 24.03.2014 / 21:04