3

テキストを適切なRTL表現に変換するのに役立つJavaライブラリを探しています。

たとえば、ファイルから読み取ったヘブライ語/アラビア語のテキストは LTR 表現になりますが、変換後は RTL 形式で表示する必要があります。

htmlの場合、dirをrtlまたはltrとして指定できるため、要件が発生します。ただし、テキストのバリアントまたはテキストの SMS バリアントが必要な場合、スタイルシートはまったく機能しません。

4

1 に答える 1

2

RTL コンテンツには 2 つの問題があります。1 つ目は、ディスプレイの右揃えです。呼び出されている出力ルーチンを制御できない限り、それについてできることは何もありません。

間違いなくより重要な 2 番目の問題は、テキストの基本的な方向性です。これは、双方向の書式設定文字をコンテンツに追加することで、ある程度制御できます。

たとえば、sに文字列が指定されている場合、ベース方向を RTL に設定するには、次のようにします。

String[] lines = s.split("\n");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < lines.length; i++) {
  sb.append("\u202B");   // right-to-left embedding 
  sb.append(lines[i]);
  sb.append("\u202C\n"); // pop directional formatting
}                  
s = sb.toString();

これは、テキストを複数の行に分割し、各行の先頭に右から左への埋め込み文字を追加し、各行の末尾にポップ方向の書式設定文字を追加することです。

行ごとに行われる理由は、埋め込みオーバーライドが段落の長さだけ持続するためです。

Ideone.com のサンプル コード

比較のためのマークアップ例

于 2013-07-25T16:21:45.723 に答える