- java.lang.Object
-
- java.text.Bidi
-
public final class Bidi extends Object
此类实现Unicode双向算法。Bidi对象提供有关用于创建它的文本的双向重新排序的信息。 例如,这是正确显示阿拉伯语或希伯来语文本所必需的。 这些语言本质上是混合方向的,因为它们从左到右排序数字,同时从右到左排序大多数其他文本。
创建后,可以查询Bidi对象以查看它所代表的文本是从左到右还是从右到左。 这些对象非常轻量级,并且该文本相对容易处理。
如果有多个文本运行,则可以通过索引来访问有关运行的信息,以获取运行的开始,限制和级别。 该级别表示方向运行的方向和“嵌套级别”。 奇数级别是从右到左,而偶数级别是从左到右。 因此,例如,级别0表示从左到右的文本,而级别1表示从右到左的文本,级别2表示从右到左的运行中嵌入的从左到右的文本。
- 从以下版本开始:
- 1.4
-
-
字段汇总
字段 变量和类型 字段 描述 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(char[] text, int textStart, byte[] embeddings, int embStart, int paragraphLength, int flags)
根据给定的文本,嵌入和方向信息创建Bidi。Bidi(String paragraph, int flags)
从给定的文本和基本方向段创建Bidi。Bidi(AttributedCharacterIterator paragraph)
从给定的文本段落创建Bidi。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 boolean
baseIsLeftToRight()
如果基本方向是从左到右,则返回true。Bidi
createLineBidi(int lineStart, int lineLimit)
创建一个Bidi对象,表示当前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)
如果指定的文本需要bidi分析,则返回true。String
toString()
显示用于调试的bidi内部状态。
-
-
-
字段详细信息
-
DIRECTION_LEFT_TO_RIGHT
public static final int DIRECTION_LEFT_TO_RIGHT
恒定指示基本方向是从左到右。- 另请参见:
- 常数字段值
-
DIRECTION_RIGHT_TO_LEFT
public static final int DIRECTION_RIGHT_TO_LEFT
恒定指示基本方向是从右到左。- 另请参见:
- 常数字段值
-
DIRECTION_DEFAULT_LEFT_TO_RIGHT
public static final int DIRECTION_DEFAULT_LEFT_TO_RIGHT
常量,表示根据Unicode双向算法,基本方向取决于文本中的第一个强方向字符。 如果不存在强方向字符,则基本方向是从左到右。- 另请参见:
- 常数字段值
-
DIRECTION_DEFAULT_RIGHT_TO_LEFT
public static final int DIRECTION_DEFAULT_RIGHT_TO_LEFT
常量,表示根据Unicode双向算法,基本方向取决于文本中的第一个强方向字符。 如果不存在强方向字符,则基本方向是从右到左。- 另请参见:
- 常数字段值
-
-
构造方法详细信息
-
Bidi
public Bidi(String paragraph, int flags)
从给定的文本和基本方向段创建Bidi。- 参数
-
paragraph
- 一段文字 -
flags
- 控制算法的标志集合。 该算法理解标志DIRECTION_LEFT_TO_RIGHT,DIRECTION_RIGHT_TO_LEFT,DIRECTION_DEFAULT_LEFT_TO_RIGHT和DIRECTION_DEFAULT_RIGHT_TO_LEFT。 其他值保留。
-
Bidi
public Bidi(AttributedCharacterIterator paragraph)
从给定的文本段落创建Bidi。文本中的RUN_DIRECTION属性(如果存在)确定基本方向(从左到右或从右到左)。 如果不存在,则使用Unicode双向算法计算基本方向,如果文本中没有强方向字符,则默认为从左到右。 此属性(如果存在)必须应用于段落中的所有文本。
文本中的BIDI_EMBEDDING属性(如果存在)表示嵌入级别信息。 从-1到-62的负值表示在该级别的绝对值处覆盖。 从1到62的正值表示嵌入。 在值为零或未定义的情况下,假设由基本方向确定的基本嵌入级别。
文本中的NUMERIC_SHAPING属性(如果存在)在运行bidi算法之前将欧洲数字转换为其他十进制数字。 此属性(如果存在)必须应用于段落中的所有文本。
- 参数
-
paragraph
- 带有可选字符和段落属性信息的文本段落 - 另请参见:
-
TextAttribute.BIDI_EMBEDDING
,TextAttribute.NUMERIC_SHAPING
,TextAttribute.RUN_DIRECTION
-
Bidi
public Bidi(char[] text, int textStart, byte[] embeddings, int embStart, int paragraphLength, int flags)
根据给定的文本,嵌入和方向信息创建Bidi。 embeddings数组可以为null。 如果存在,则值表示嵌入级别信息。 从-1到-61的负值表示在该级别的绝对值处覆盖。 从1到61的正值表示嵌入。 在值为零的情况下,假设由基本方向确定的基本嵌入级别。- 参数
-
text
- 包含要处理的文本段的数组。 -
textStart
- 段落开头的文本数组的索引。 -
embeddings
- 包含段落中每个字符的嵌入值的数组。 这可以为null,在这种情况下,假设没有外部嵌入信息。 -
embStart
- 段落开头的嵌入数组的索引。 -
paragraphLength
- 文本和嵌入数组中段落的长度。 -
flags
- 控制算法的标志集合。 该算法理解标志DIRECTION_LEFT_TO_RIGHT,DIRECTION_RIGHT_TO_LEFT,DIRECTION_DEFAULT_LEFT_TO_RIGHT和DIRECTION_DEFAULT_RIGHT_TO_LEFT。 其他值保留。
-
-
方法详细信息
-
createLineBidi
public Bidi createLineBidi(int lineStart, int lineLimit)
创建一个Bidi对象,表示当前Bidi所代表的段落中的一行文本的bidi信息。 如果整个段落适合一行,则不需要此调用。- 参数
-
lineStart
- 从段落开头到行lineStart
的偏移量。 -
lineLimit
- 从段落开头到行限制的偏移量。 - 结果
-
一个
Bidi
对象
-
isMixed
public boolean isMixed()
如果该行不是从左到右或从右到左,则返回true。 这意味着它具有从左到右和从右到左文本的混合运行,或者基本方向与唯一的文本运行的方向不同。- 结果
- 如果该行不是从左到右或从右到左,则为true。
-
isLeftToRight
public boolean isLeftToRight()
如果该行是从左到右的文本并且基本方向是从左到右,则返回true。- 结果
- 如果该行是从左到右的文本并且基本方向是从左到右,则为true
-
isRightToLeft
public boolean isRightToLeft()
如果该行是从右到左的文本,并且基本方向是从右到左,则返回true。- 结果
- 如果该行是从右到左的文本,并且基本方向是从右到左,则为true
-
getLength
public int getLength()
返回行中文本的长度。- 结果
- 行中文本的长度
-
baseIsLeftToRight
public boolean baseIsLeftToRight()
如果基本方向是从左到右,则返回true。- 结果
- 如果基本方向是从左到右,则为true
-
getBaseLevel
public int getBaseLevel()
返回基准级别(如果从左到右为0,如果从右到左,则为1)。- 结果
- 基层
-
getLevelAt
public int getLevelAt(int offset)
返回偏移处字符的已解析级别。 如果偏移量<0或≥线的长度,则返回基准方向水平。- 参数
-
offset
- 要为其返回级别的字符的索引 - 结果
- 偏移处的字符的已解析级别
-
getRunCount
public int getRunCount()
返回级别运行次数。- 结果
- 级别运行的次数
-
getRunLevel
public int getRunLevel(int run)
返回此行中第n个逻辑运行的级别。- 参数
-
run
- 运行的索引,介于0和getRunCount()
之间 - 结果
- 运行的水平
-
getRunStart
public int getRunStart(int run)
返回此行中第n个逻辑运行开始处的字符索引,作为从行开头的偏移量。- 参数
-
run
- 运行的索引,介于0和getRunCount()
之间 - 结果
- 跑步的开始
-
getRunLimit
public int getRunLimit(int run)
返回该行中第n个逻辑运行结束后的字符索引,作为从行首开始的偏移量。 例如,这将返回该行上次运行的行的长度。- 参数
-
run
- 运行的索引,介于0和getRunCount()
之间 - 结果
- 限制运行的限制
-
requiresBidi
public static boolean requiresBidi(char[] text, int start, int limit)
如果指定的文本需要bidi分析,则返回true。 如果返回false,则文本将从左向右显示。 然后,客户可以避免构建Bidi对象。 Unicode的阿拉伯语表示形式区域中的文本被假定为已经被整形和排序以供显示,因此不会使该函数返回true。- 参数
-
text
- 包含要测试的字符的文本 -
start
- 要测试的字符范围的开头 -
limit
- 要测试的字符范围的限制 - 结果
- 如果字符范围需要bidi分析,则为true
-
reorderVisually
public static void reorderVisually(byte[] levels, int levelStart, Object[] objects, int objectStart, int count)
根据数组的级别将数组中的对象重新排序为可视顺序。 这是一个实用程序函数,当您有一组表示逻辑顺序的文本运行的对象时使用,每个运行包含单个级别的文本。 在元件index
从objectStart
到objectStart + count
的对象阵列中会被重新排序成可视顺序假定文本中的每个运行具有:(在由所述水平阵列中的相应的元素所指示的电平index - objectStart + levelStart
)。- 参数
-
levels
- 表示每个对象的bidi级别的数组 -
levelStart
- 级别数组中的起始位置 -
objects
- 要重新排序为可视顺序的对象数组 -
objectStart
- 对象数组中的起始位置 -
count
- 要重新排序的对象数
-
-