2

画面に一文字ずつ文字を描いています。

英語では、テキストが LTR であるため、文字は表示されている順序で文字列に保存されるため、非常に単純です。

RTL テキストを描画するときは、印刷の方向を切り替える必要があります。しかし、文字と数字と英語といくつかのRTL言語があると.. 混乱が始まります.

例の場合。

ex.1: שלום לכם

ש- は文字列の最初の文字ですが、最後に表示されていることがわかります。

例 2: שלום to all ש- は文字列の最初の文字ですが、英語が始まる前の真ん中に表示されていることがわかります。

数字や数学記号が登場し、反転が必要な「(」、「)」などの特殊文字が登場すると、さらに複雑になります...

文字列内の文字の論理的な順序を視覚的な順序に変更する Bidi アルゴリズムをオンラインで多数見つけました。したがって、変換された文字列を左から右に実行すると、文字列が正しく印刷されると確信しています。

しかし、それらは決して完璧ではありません。正常に動作しない場合があります。テキストの方向も考慮していません (つまり、キーボードで右の Ctrl+Shift を押すと、視覚化が再び変更されます)。

私の質問は

  1. 文字列をメモリに保存したものから視覚的な順序に変更するために使用できる防弾Bidiアルゴリズムを知っている人はいますか?
  2. 私の問題を解決する簡単な方法はありますか? 多分どういうわけかそれのためのブラウザアルゴリズムを手に入れます..
4

1 に答える 1

1

長い間探した結果、

DOJO (幸いなことに、私が使用しているツール キットです) には、独自の UI コントロールを描画するための BIDI エンジンがあり、RTL、LRT、およびコンテキスト方向のいくつかのケースを処理するためのレイアウト パラメーターをほとんど取得しません。同じように。

これが誰かを助けている場合 - http://bill.dojotoolkit.org/api/1.9/dojox/string/BidiEngine

DOJO 以外の開発者に役立つ可能性のある別のリンクを見つけました - https://github.com/ibm-js/dbidi、まだチェックしていません

于 2015-06-28T11:37:34.777 に答える