34 votes

Pourquoi ne "[x]y" s'afficher de manière incorrecte dans la RTL direction?

<div style="direction: rtl">
[x]y
</div>

Vous pouvez voir un texte HTML, [x]y affiche comme x]y].

Quelle est la raison de ce résultat?

PS: je obtenir ce résultat en Chrome 56.0.2924.87 (64-bit).

32voto

simon Points 1621

Je ne peux pas vous dire la raison, mais je peux vous dire comment le réparer: ajouter unicode-bidi: bidi-override;. Voir plus à ce sujet

<div style="direction: rtl; unicode-bidi: bidi-override;">
[x]y
</div>

La description

L'unicode-bidi propriété est utilisée de concert avec la direction de la propriété à définir ou de retour si le texte doit être remplacé afin de prendre en charge plusieurs langues dans un même document.

n'est pas assez clair pour expliquer le comportement. Cependant, il fonctionne.

MODIFIER

Le MDN article apporte un peu de lumière ici, bidi-override fait désactive le navigateur standard smart comportement et tout fonctionne comme / comme prévu.

27voto

Jukka K. Korpela Points 71599

Il est rendu correctement, c'est à dire selon les spécifications. Vous avez demandé un droit de mise en page à gauche. Le rendu de la première prend l' [ de caractère. Il est directionnelle de neutre et donc rendu dans un RTL courir de droite et d'un miroir (de sorte qu'il ressemble ]). Ensuite, à gauche il s'agit d' x]y , dans l'ordre, depuis les lettres latines x et y , de façon inhérente, de gauche à droite de la directivité et le neutre ] obtient sa directivité d'eux.
Les conclusions à tirer dépend du rendu que vous souhaitez et vos raisons pour l'utilisation à droite-à-gauche de la directionnalité.

17voto

kevin b. Points 934

Après quelques recherches, j'ai trouvé la suite de l'info: de Droite À Gauche la direction du texte

Les parenthèses et les crochets n'ont pas inhérents à la direction. La parenthèse ouvrante est entre LTR et RTL texte court et donc ne peut "hériter" le sens du texte qui les entoure. Il donc par défaut le RTL de base direction de l'alinéa et est placé à la gauche du mot hébreu "shalom". Remarque le crochet de fermeture est intégré dans une seule exécution de gauche à droite. Il adopte donc la direction de son texte environnant et est placé à la droite du mot anglais shalom.

1voto

Juber Qureshi Points 11

l'une des solutions est d'ajouter &#x200e; après la parenthèse

grâce à @freeworlder pour la solution sur crochets affiche à tort pour de droite à gauche le style d'affichage

même si vous pouvez utiliser d'autres char, suivez ce lien http://www.codetable.net/hex/200e

0voto

Essayez d'utiliser un crochet ouvert "[" où vous avez besoin d'un crochet fermé, et vice versa. J'ai eu une police avec une lettre mappée à "[" et il ne serait pas d'affichage. J'ai changé la lettre dans la base de données "]" et cela a fonctionné.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X