将文本转换为适当的RTL表示

时间:2013-07-16 13:54:10

标签: right-to-left bidi

我正在寻找任何有助于将一段文本转换为适当的RTL表示的java库。

例如从文件中读取的希伯来语/阿拉伯语文本将在LTR表示中,但是在转换后它应该以它的RTL格式显示。

要求出现,因为在html的情况下,我们可以将dir指定为rtl或ltr。但是,当我们想要文本变体或文本的短信变体时,样式表根本不会发挥作用。

1 个答案:

答案 0 :(得分:1)

RTL内容有两个问题。第一个是显示器的右对齐。除非你能控制被调用的输出例程,否则你无能为力。

第二个问题,可以说更重要,是文本的基本方向性。您可以通过向内容添加bidirectional formatting characters来在一定程度上进行控制。

例如,给定 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();

这样做是将文本分成多行,然后在每行的开头添加从右到左嵌入字符,以及 pop方向格式每行末尾的字符。

逐行完成的原因是因为嵌入覆盖仅持续段落的长度。

Example code on Ideone.com

Markup example for comparison