3

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

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

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

4

1 回答 1

2

RTL 内容涉及两个问题。首先是显示器的右对齐。除非您可以控制正在调用的输出例程,否则您无能为力。

第二个问题可以说更重要,是文本的基本方向性。您可以通过向内容添加双向格式字符来在一定程度上控制这一点。

例如,给定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 回答