2017-05-15 4 views
33

Warum wird "[x] y" in der RTL-Richtung falsch angezeigt?

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

Sie können HTML-Text [x]y Displays als x]y] sehen.

Was ist der Grund für dieses Ergebnis?

PS: Ich bekomme dieses Ergebnis in Chrome 56.0.2924.87 (64-Bit).

+0

Können Sie Informationen zum Browser hinzufügen? Es funktioniert gut für mich (zeigt [x] y). Ich habe es über die SO-HTML-Funktion und in einer HTML-Datei getestet. –

+2

Mögliches Duplikat von [Klammern zeigt falsch für den Anzeigestil von rechts nach links an] (http://stackoverflow.com/questions/5741522/brackets-displays-wrongly-for- Rechts-nach-links-Display-Stil) – Sam

+0

@ printxdiv0 Ich verwende Chrom. – Sayakiss

Antwort

25

Es wird korrekt gerendert, d.h. gemäß den Spezifikationen. Sie haben nach einem Layout von rechts nach links gefragt. Das Rendering nimmt zuerst das Zeichen [. Es ist richtungsneutral und wird daher in einem RTL-Lauf am weitesten rechts und gespiegelt wiedergegeben (so sieht es aus wie ]). Als nächstes kommt links davon x]y in dieser Reihenfolge, da die lateinischen Buchstaben x und y eine von links nach rechts gerichtete Direktionalität haben und das neutrale ] seine Direktionalität von ihnen erhält.
Die zu ziehenden Schlussfolgerungen hängen von der gewünschten Darstellung und den Gründen für die Verwendung der Direktionalität von rechts nach links ab.

+0

Schöne Erklärung, aber warum '[x]' gerendert als '[x]' (was nicht 'x]]') nach Ihrer Antwort? Überprüfen Sie das Ergebnis anhand von [JSFiddle] (https://jsfiddle.net/vhfcrjr8/). – Sayakiss

+1

Sayakiss, in "[x]" gibt es nichts, was die Klammern daran hindert, das RTL-Layout zu verändern, so dass es von rechts nach links dargestellt wird, wobei die Klammer-Glyphen gespiegelt sind. Sie können dies sehen, wenn Sie z. ' ['. Es ist der rechte Charakter, der rot wird; Es wird gespiegelt, so dass es wie "]" aussieht. In ähnlicher Weise wird das am weitesten links stehende Zeichen "]" mit einem "[" - Zeichen gerendert. –

+1

"Weiter links davon kommt" x] y ", in dieser Reihenfolge, da die lateinischen Buchstaben" x "und" y "eine von links nach rechts gerichtete Direktionalität haben und das neutrale"] "seine Direktionalität erhält Sie." Meine Frage ist, warum "x] y" von links nach rechts gerichtete Richtung haben, aber "x]" nicht? – Sayakiss

32

Ich kann Ihnen nicht den Grund sagen, aber ich kann Ihnen sagen, wie es zu beheben: unicode-bidi: bidi-override; hinzufügen. Siehe more darüber

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

Die Beschreibung

Die Unicode-bidi-Eigenschaft zusammen mit der Richtung Eigenschaft wird eingestellt oder zurückgeben, ob der Text mehr zu unterstützen außer Kraft gesetzt werden sollte Sprachen im selben Dokument.

ist nicht klar genug, um das Verhalten zu erklären. Es funktioniert jedoch.

EDIT

The MDN article bringt etwas Licht hier, bidi-override deaktiviert tatsächlich den Browser Standard-Smart-Verhalten und alles funktioniert wie es ist/wie erwartet.

+1

Unicode-Bidi auf [MDN] (https://developer.mozilla.org/en-US/docs/Web/CSS/unicode-bidi) –

+1

Ehrlich gesagt ist das "warum" sekundär, um das wahrgenommene Problem zu beheben (in dieser Stapel). Eine andere Antwort sagt das Warum, aber das sollte die richtige Antwort IMHO sein. Ich bekomme, dass die Frage eine schlechte Anpassung an die Website ist, aber +1 zu dieser Antwort. – Mindwin

16

Nach einigen Recherchen fand ich the following Info: Right-To-Left text direction

Klammern und eckige Klammern keine inhärente Richtung haben. Die offene Klammer steht zwischen LTR- und RTL-Textläufen und kann daher die Richtung des umgebenden Textes nicht "erben". Es wird daher standardmäßig auf die RTL-Basisrichtung des Absatzes gesetzt und links vom hebräischen Wort shalom platziert. Beachten Sie, dass die schließende eckige Klammer in einen einzelnen Textlauf von links nach rechts eingebettet ist. Es nimmt daher die Richtung seines umgebenden Textes an und wird rechts vom englischen Wort shalom platziert.

0

Verwenden Sie eine offene eckige Klammer "[", für die Sie eine geschlossene eckige Klammer benötigen, und umgekehrt. Ich hatte eine Schriftart mit einem Buchstaben auf "[" und es würde nicht angezeigt werden. Ich änderte den Brief in der Datenbank zu "]" und es funktionierte.

+0

Mit einem Problem https://ilmlc.sourceforge.io/books/multilinear_torah/html/multilinear_torah_3rd_edition_4_fonts.html Die Schriftart estrangelo_cursive Aramäisch (die zweite Zeile von oben) verwendet die> Tastenanschlag für Buchstaben gleich dem hebräischen Buchstaben kaf. Der letzte Buchstabe des letzten Wortes in der ersten Zeile ist in Ordnung, aber in Zeile drei, dem achten Wort von rechts, endet> am Ende des Wortes. Versucht>, & # x003c ;, & lsaquo ;. Das HTML sieht das> und kippt die Reihenfolge der Wörter, die mit> beginnen. Ich versuche, die Schriftart neu zu tippen –

+0

den> Winkel zu ändern & # x003c; & # x200E; in der mysql-Datenbank korrigiert das Problem –

Verwandte Themen