web-dev-qa-db-fra.com

Pourquoi "[x] y" ne s'affiche-t-il pas correctement dans le sens RTL?

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

Vous pouvez voir le texte HTML [x]y sous la forme x]y].

Quelle est la raison de ce résultat?

PS: Je reçois ce résultat dans Chrome 56.0.2924.87 (64 bits).

34
Sayakiss

Le rendu est correct, c’est-à-dire conforme aux spécifications. Vous avez demandé une mise en page de droite à gauche. Le rendu prend d'abord le caractère [. Il est neutre directionnellement et donc rendu dans une RTL exécutée à l'extrême droite et en miroir (il ressemble donc à ]). Ensuite, à gauche de celui-ci se trouve x]y dans cet ordre, car les lettres latines x et y ont une directionnalité inhérente, et le neutre ] en tire sa directionnalité.
Les conclusions à tirer dépendent du rendu que vous souhaitez et des raisons pour lesquelles vous utilisez la directionnalité de droite à gauche. 

26
Jukka K. Korpela

Je ne peux pas vous dire la raison, mais je peux vous dire comment y remédier: ajoutez unicode-bidi: bidi-override;. Voir plus à ce sujet

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

La description

La propriété unicode-bidi est utilisée avec la propriété direction pour définir ou indiquer si le texte doit être remplacé pour prendre en charge plusieurs langues dans le même document.

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

MODIFIER

L'article de MDN apporte quelques éclaircissements ici, bidi-override désactive en fait le comportement intelligent standard du navigateur et tout fonctionne comme prévu /.

33
smnbbrv

Après quelques recherches, j'ai trouvé ce qui suit info: direction du texte de droite à gauche

Les parenthèses et les crochets n'ont pas de direction inhérente. La parenthèse ouverte se situe entre les exécutions de texte LTR et RTL et ne peut donc pas "hériter" du sens du texte environnant. La valeur par défaut du sens de base du paragraphe est donc RTL et est placée à gauche du mot hébreu shalom. Notez que le crochet de fermeture est incorporé dans une seule séquence de texte de gauche à droite. Il adopte donc la direction du texte qui l’entoure et est placé à la droite du mot anglais shalom.

17
kevin b.

une des solutions consiste à ajouter &#x200e; après le crochet

merci à @freeworlder pour la solution activée l'affichage est incorrect pour le style d'affichage de droite à gauche

même si vous pouvez utiliser un autre caractère, suivez ce lien http://www.codetable.net/hex/200e

1
Juber Qureshi

Essayez d’utiliser un crochet ouvert "[" où vous avez besoin d’un crochet fermé, et inversement. J'avais une police avec une lettre associée à "[" et elle ne s'afficherait pas. J'ai changé la lettre dans la base de données en "]" et cela a fonctionné.

0
Timothy Whittaker