テキストを適切なRTL表現に変換するのに役立つJavaライブラリを探しています。
たとえば、ファイルから読み取ったヘブライ語/アラビア語のテキストは LTR 表現になりますが、変換後は RTL 形式で表示する必要があります。
htmlの場合、dirをrtlまたはltrとして指定できるため、要件が発生します。ただし、テキストのバリアントまたはテキストの SMS バリアントが必要な場合、スタイルシートはまったく機能しません。
テキストを適切なRTL表現に変換するのに役立つJavaライブラリを探しています。
たとえば、ファイルから読み取ったヘブライ語/アラビア語のテキストは LTR 表現になりますが、変換後は RTL 形式で表示する必要があります。
htmlの場合、dirをrtlまたはltrとして指定できるため、要件が発生します。ただし、テキストのバリアントまたはテキストの SMS バリアントが必要な場合、スタイルシートはまったく機能しません。
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();
これは、テキストを複数の行に分割し、各行の先頭に右から左への埋め込み文字を追加し、各行の末尾にポップ方向の書式設定文字を追加することです。
行ごとに行われる理由は、埋め込みオーバーライドが段落の長さだけ持続するためです。