3 Stimmen

Wpf Arabischer Text wird nicht korrekt angezeigt

Ich möchte einige arabische Texte von rechts nach links anzeigen. Daher habe ich die Flussrichtung als RightToLeft festgelegt. Unten ist mein Programm:

Die Ausgabe scheint nicht korrekt zu sein. Die schließende Klammer erscheint an einer anderen Position. Die Ausgabe ist 1 ( 12 )

Bitte geben Sie Vorschläge/Lösungen.

5voto

MerickOWA Punkte 7293

Das Problem besteht darin, dass während Ihr Code im XAML „korrekt“ aussieht, das erste Zeichen ein '(' ist, was nicht beabsichtigt ist. Sie beabsichtigen, dass dies das letzte Zeichen eines von rechts nach links verlaufenden Strings ist, was bedeutet, dass es tatsächlich ein ')' Zeichen sein sollte (aber in von rechts nach links verlaufenden Sprachen gespiegelt wird).

Wenn Ihr XAML richtig aussehen und WPF es korrekt anzeigen soll, müssen Sie Ihre Klammer korrigieren und ein spezielles Unicode-Zeichen &ux200F; Markerzeichen hinzufügen, sodass das XAML versteht, dass das letzte ')' immer noch von rechts nach links erfolgt.

Von Wikipedia

In Algorithmus wird jede Sequenz von verketteten starken Zeichen als "Lauf" bezeichnet. Ein schwaches Zeichen, das zwischen zwei starken Zeichen mit der gleichen Ausrichtung liegt, wird deren Ausrichtung erben. Ein schwaches Zeichen, das zwischen zwei starken Zeichen mit unterschiedlicher Schreibrichtung liegt, wird die Hauptschreibrichung des Kontexts erben (in einem LTR-Dokument wird das Zeichen zu LTR, in einem RTL-Dokument zu RTL). Wenn ein "schwaches" Zeichen von einem weiteren "schwachen" Zeichen gefolgt wird, schaut der Algorithmus auf das erste benachbarte "starke" Zeichen. Manchmal führt dies zu unbeabsichtigten Anzeigefehlern. Diese Fehler werden mit "pseudo-starken" Zeichen korrigiert oder verhindert. Solche Unicode-Steuerzeichen werden als Markierungen bezeichnet. Die Marke (U+200E links-nach-rechts-Markierung (HTML: ‎ ‎ LRM) oder U+200F rechts-nach-links-Markierung (HTML: ‏ ‏ RLM)) ist an einer bestimmten Stelle einzufügen, damit ein umschlossenes schwaches Zeichen seine Schreibrichtung erbt.

Versuchen

Beachten Sie, dass obwohl dies gleich aussieht, tatsächlich ein verstecktes Zeichen vorhanden ist und die abschließenden Klammern unterschiedlich sind.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X