java.lang.Object java.text.Bidi
public final class Bidi
此类实现了 Unicode 双向算法 (Unicode Bidirectional Algorithm)。
Bidi 对象提供了有关用于创建它的文本的双向重排序的信息。例如,这对于正确显示阿拉伯语或者希伯来语文本来说是必需的。这些语言本来是混合方向的,因为其从左向右排列数字,而大多数其他文本则从右向左排列。
一旦创建完成,Bidi 对象就能查询,以查看文本表示都是从左向右或从右向左。这些对象都是非常轻量级的并且此文本也相对容易处理。
如果有多次文本的运行,则可以通过索引访问运行的信息,以获得起始位置、限制和运行层次。层次代表了方向和一个方向运行的“嵌套层次”。奇数层次是从右到左,则偶数层次是从左到右。因此,例如层次 0 代表从左到右的文本,而层次 1 代表从右到左的文本,层次 2 代表嵌入在一个从右到左的运行中的从左到右的文本。
字段摘要 | |
---|---|
static int |
DIRECTION_DEFAULT_LEFT_TO_RIGHT 表示基本方向依赖于根据 Unicode 双向算法得到的文本中第一个强方向字符的常量。 |
static int |
DIRECTION_DEFAULT_RIGHT_TO_LEFT 表示基本方向依赖于根据 Unicode 双向算法得到的文本中第一个强方向字符的常量。 |
static int |
DIRECTION_LEFT_TO_RIGHT 表示基本方向是从左到右的常量。 |
static int |
DIRECTION_RIGHT_TO_LEFT 表示基本方向是从右到左的常量。 |
构造方法摘要 | |
---|---|
Bidi(AttributedCharacterIterator paragraph) 由给定的文本段构造 Bidi。 |
|
Bidi(char[] text, int textStart, byte[] embeddings, int embStart, int paragraphLength, int flags) 由给定的文本、嵌入和方向信息构造 Bidi。 |
|
Bidi(String paragraph, int flags) 由给定的文本段和基本方向构造 Bidi。 |
方法摘要 | |
---|---|
boolean |
baseIsLeftToRight() 如果基本方向是从左到右,则返回 true。 |
Bidi |
createLineBidi(int lineStart, int lineLimit) 构造一个 Bidi 对象,表示当前 Bidi 所代表的段落中的一行文本上的双向信息。 |
int |
getBaseLevel() 返回基本层次(如果是从左到右,则为 0;如果是从右到左,则为 1)。 |
int |
getLength() 返回该行中文本的长度。 |
int |
getLevelAt(int offset) 返回偏移位置处的字符的解析层次。 |
int |
getRunCount() 返回层次运行的数目。 |
int |
getRunLevel(int run) 返回该行中第 n 次逻辑运行的层次。 |
int |
getRunLimit(int run) 以该行开始的偏移量返回该行中第 n 次逻辑运行之后的字符索引。 |
int |
getRunStart(int run) 以该行开始的偏移量返回该行中第 n 次逻辑运行开始时的字符索引。 |
boolean |
isLeftToRight() 如果该行都是从左到右的文本且基本方向也是从左到右,则返回 true。 |
boolean |
isMixed() 如果该行既不是从左到右也不是从右到左,则返回 true。 |
boolean |
isRightToLeft() 如果该行都是从右到左的文本且基本方向也是从右到左,则返回 true。 |
static void |
reorderVisually(byte[] levels, int levelStart, Object[] objects, int objectStart, int count) 根据对象的层次,在数组中将对象重新排序为可视顺序。 |
static boolean |
requiresBidi(char[] text, int start, int limit) 如果指定的文本需要双向解析,则返回 true。 |
String |
toString() 用于调试时显示双向算法的内部状态。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
字段详细信息 |
---|
public static final int DIRECTION_LEFT_TO_RIGHT
public static final int DIRECTION_RIGHT_TO_LEFT
public static final int DIRECTION_DEFAULT_LEFT_TO_RIGHT
public static final int DIRECTION_DEFAULT_RIGHT_TO_LEFT
构造方法详细信息 |
---|
public Bidi(String paragraph, int flags)
paragraph
- 一个文本段
flags
- 控制算法的标志集合。此算法识别标志 DIRECTION_LEFT_TO_RIGHT、DIRECTION_RIGHT_TO_LEFT、DIRECTION_DEFAULT_LEFT_TO_RIGHT 以及 DIRECTION_DEFAULT_RIGHT_TO_LEFT。其他值保留。
public Bidi(AttributedCharacterIterator paragraph)
文本中 RUN_DIRECTION 属性(如果存在)定义了基本方向(从左到右或者从右到左)。如果不存在,使用 Unicode 双向算法计算基本方向,默认为如果文本中没有强方向字符则从左到右。此属性(如果存在)必须应用于段中所有文本。
文本中 BIDI_EMBEDDING 属性(如果存在)代表了嵌入层次信息。从 -1 到 -62 的负值指示重写层次的绝对值。从 1 到 62 的正值指示嵌入。如果值为 0 或者没有定义,则基本的嵌入层次由假定的基本方向来决定。
文本中的 NUMERIC_SHAPING 属性(如果存在)在运行双向算法之前将欧洲数字转换成其他十进制数字。此属性(如果存在)必须应用于段中所有文本。
paragraph
- 具有可选的字符和段落属性信息的文本段。
TextAttribute.BIDI_EMBEDDING
,
TextAttribute.NUMERIC_SHAPING
,
TextAttribute.RUN_DIRECTION
public Bidi(char[] text, int textStart, byte[] embeddings, int embStart, int paragraphLength, int flags)
text
- 包含了要处理的文本段的一个数组。
textStart
- 段落开始的文本数组中的索引。
embeddings
- 包含了段落中每个字符的嵌入值的一个数组。在假定不存在外部嵌入信息的情况下可能为空。
embStart
- 段落开始的嵌入数组中的索引。
paragraphLength
- 在文本和嵌入数组中的段落长度。
flags
- 控制算法的标志集合。此算法识别标志 DIRECTION_LEFT_TO_RIGHT、DIRECTION_RIGHT_TO_LEFT、DIRECTION_DEFAULT_LEFT_TO_RIGHT 和 DIRECTION_DEFAULT_RIGHT_TO_LEFT。其他值保留。
方法详细信息 |
---|
public Bidi createLineBidi(int lineStart, int lineLimit)
lineStart
- 从段的开始到行的开始的偏移量。
lineLimit
- 从段的开始到行的限制的偏移量。
public boolean isMixed()
public boolean isLeftToRight()
public boolean isRightToLeft()
public int getLength()
public boolean baseIsLeftToRight()
public int getBaseLevel()
public int getLevelAt(int offset)
offset
- 返回层次的字符的索引
public int getRunCount()
public int getRunLevel(int run)
run
- 运行的索引,在 0 到
getRunCount()
之间
public int getRunStart(int run)
run
- 运行的索引,在 0 到
getRunCount()
之间
public int getRunLimit(int run)
run
- 运行的索引,在 0 到
getRunCount()
之间
public static boolean requiresBidi(char[] text, int start, int limit)
text
- 包含测试字符的文本
start
- 测试字符的范围的开始
limit
- 测试字符的范围的限制
public static void reorderVisually(byte[] levels, int levelStart, Object[] objects, int objectStart, int count)
index - objectStart + levelStart
)所指示的层次时,对象数组中位于
index
的元素从
objectStart
一直到
objectStart + count
将被重新排序为可视顺序。
levels
- 表示每一个对象双向层次的数组
levelStart
- 层次数组中的开始位置
objects
- 将被重新排序为可视顺序的对象数组
objectStart
- 对象数组中的开始位置
count
- 要重新排序的对象数
public String toString()