Ich muss etwas Text in persischer/arabischer Sprache zeigen. Ich lud eine Schriftart mit Zeichen und ich TextGeometry einen Text auf der Szene zu erstellen:Unterstützung für Farsi/arabische Texte in Three.js
var loader = new THREE.FontLoader();
loader.load('B Zar_Regular.js', function (font) {
var textGeo = new THREE.TextGeometry('سلام!', {
font: font,
size: 1,
height: 0.05,
curveSegments: 12,
});
var material = new THREE.MeshNormalMaterial();
var textMesh = new THREE.Mesh(textGeo, material);
textMesh.position.x = 15;
scene.add(textMesh);
});
Ich erwartete سلام!
zu sehen, aber der Ausgang war:
Buchstaben werden getrennt und bestellen von Zeichen wird fälschlicherweise umgekehrt. Immerhin scheinen Threejs keine RTL-Sprachen zu unterstützen. Habe ich Recht oder habe ich etwas verpasst? Gibt es eine Problemumgehung als schnelle Lösung? Vielen Dank.
Es sieht so aus, als hätten Sie bereits den geeigneten Schritt unternommen, um RTL zu three.js hinzuzufügen (https://github.com/mrdoob/three.js/issues/11680). Um dieses Problem zu umgehen, könnten Sie ein Skript schreiben, um die Zeichenfolge umzukehren, bevor Sie sie an 'TextGeometry' übergeben. – TheJim01
@ TheJim01 Umkehrung der Zeichenfolge ist Teil der Lösung, aber nicht alle, ich habe einen guten Artikel über das Thema gelesen und ich fand die Schritte, um das Problem zu lösen. Ich implementiere die Lösung und teste sie. Ich werde eine Antwort aufschreiben, wenn es fertig ist. Danke für den Kommentar. –
Siehe [diese Regeln] (https://w3c.github.io/alreq/), um zu verstehen, warum das Umkehren der Zeichenreihenfolge keine Lösung oder sogar ein Teil der Lösung ist. – Radio