web-dev-qa-db-ja.com

Bidi入力でのカーソル位置と移動。

RTLとLTRの両方のタイプの言語を混在させることができるBidi入力の場合、カーソル位置はどうなりますか?そして、カーソルの動きはどうあるべきか Home そして End ボタン?

最初は、カーソルは常に次の文字が置かれる場所に置かれるべきだと思いました。次のeの場合、カーソルは(|カーソルとして)-

peac|سلام

しかし、多くの場所で、それは

|peacسلام

後者のアプローチの利点の1つは、言語モードが再びRTLになると、カーソル位置が同じになることです。最初のアプローチでは、左端にジャンプします。

そしての行動 Home そして End RTLとLTRの主な変更点それとも同じままにすべきですか?

4
Gulshan

キャレットを移動するときは、テキスト内でのジャンプが最小限に抑えられるべきだと私は常に考えていました。 RTLとLTRのテキストを混在させて作業するのはとても混乱します。

これはあまり標準的ではありませんが、私が採用するアプローチです。

カーソルを最初から

|peacسلام

右矢印キーを押すと、キャレットを右に移動します。

p|eacسلام
pe|acسلام
pea|cسلام
peac|سلام
peacسلا|م
peacسل|ام
peacس|لام
peacسلام|

これにより、ジャンプがなくなり、矢印キーが適切に動作するようになります。右から左に読んでいる場合でも、左矢印を押すとテキストの左に移動し、右矢印を押すとテキストの右に移動します。テキストの選択も同じように動作するはずです。

新しい文字を追加した場合、LTRモードの場合は、キャレットがある場所の右側に文字を追加してから、キャレットを右に移動します。 RTLモードの場合、キャレットがある場所の左側に文字が追加され、キャレットが左に移動します。

押すと Enter、この行のテキストがLTRに揃えられている場合は、キャレットの右側にあるすべてのテキストを次の行に移動し、RTLに揃えられている場合は、キャレットの左側のテキストを次の行に移動する必要があります。

peacسلا|م
peacم //Enter is pressed
سلا

               pea|cسلام
Enter is pressed\\ cسلام
                    pea

回線がLTRモードの場合、 Home そして End 線の左端と右端にそれぞれ移動する必要があります。 RTLモードでは、代わりに右端と左端に移動する必要があります。

2
Peter Olson