public final class Bidi
extends Object
java.lang.Object | |
↳ | java.text.Bidi |
这个类实现了Unicode双向算法。
Bidi对象提供有关用于创建文本的文本的双向重新排序信息。 例如,这是必需的,以正确显示阿拉伯文或希伯来文。 这些语言固有地具有混合的方向性,因为他们从左到右排列数字,而从右到左排列大多数其他文本。
创建后,可以查询Bidi对象以查看它所代表的文本是全部是从左到右还是从右到左。 这样的对象非常轻便,并且这个文本相对容易处理。
如果有多次文本运行,可以通过索引访问有关运行的信息以获取运行的开始,限制和级别。 这个级别代表了定向运行的方向和'嵌套级别'。 奇数级别是从右到左,而偶数级别是从左到右。 因此,例如,0级代表从左到右的文本,而1级代表从右到左的文本,而2级代表从右到左运行中嵌入的从左到右的文本。
Constants |
|
---|---|
int |
DIRECTION_DEFAULT_LEFT_TO_RIGHT 表示基本方向取决于Unicode双向算法中文本中第一个强方向字符的常量。 |
int |
DIRECTION_DEFAULT_RIGHT_TO_LEFT 表示基本方向取决于Unicode双向算法中文本中第一个强方向字符的常量。 |
int |
DIRECTION_LEFT_TO_RIGHT 表示基准方向的常数是从左到右。 |
int |
DIRECTION_RIGHT_TO_LEFT 表示基准方向的常数是从右到左。 |
Public constructors |
|
---|---|
Bidi(String paragraph, int flags) 根据给定的文本和基准方向创建双向。 |
|
Bidi(AttributedCharacterIterator paragraph) 从给定的文本段落创建双向。 |
|
Bidi(char[] text, int textStart, byte[] embeddings, int embStart, int paragraphLength, int flags) 根据给定的文本,嵌入和方向信息创建双向。 |
Public methods |
|
---|---|
boolean |
baseIsLeftToRight() 如果基本方向是从左到右,则返回true。 |
Bidi |
createLineBidi(int lineStart, int lineLimit) 在由当前双向表示的段落内的文本行上创建表示双向信息的双向对象。 |
int |
getBaseLevel() 返回基本级别(如果从左到右是0,如果是从右到左)。 |
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() 显示用于调试的bidi内部状态。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
int DIRECTION_DEFAULT_LEFT_TO_RIGHT
表示基本方向取决于Unicode双向算法中文本中第一个强方向字符的常量。 如果没有强方向性字符,基本方向是从左到右。
常量值:-2(0xfffffffe)
int DIRECTION_DEFAULT_RIGHT_TO_LEFT
表示基本方向取决于Unicode双向算法中文本中第一个强方向字符的常量。 如果没有强方向性字符,基本方向是从右到左。
常量值:-1(0xffffffff)
int DIRECTION_LEFT_TO_RIGHT
表示基准方向的常数是从左到右。
常量值:0(0x00000000)
int DIRECTION_RIGHT_TO_LEFT
表示基准方向的常数是从右到左。
常数值:1(0x00000001)
Bidi (String paragraph, int flags)
根据给定的文本和基准方向创建双向。
Parameters | |
---|---|
paragraph |
String : a paragraph of text |
flags |
int : a collection of flags that control the algorithm. The algorithm understands the flags DIRECTION_LEFT_TO_RIGHT, DIRECTION_RIGHT_TO_LEFT, DIRECTION_DEFAULT_LEFT_TO_RIGHT, and DIRECTION_DEFAULT_RIGHT_TO_LEFT. Other values are reserved. |
Bidi (AttributedCharacterIterator paragraph)
从给定的文本段落创建双向。
文本中的RUN_DIRECTION属性(如果存在)确定基本方向(从左到右或从右到左)。 如果不存在,则使用Unicode双向算法计算基准方向,如果文本中没有强方向字符,则默认为从左到右。 该属性(如果存在)必须应用于段落中的所有文本。
文本中的BIDI_EMBEDDING属性(如果存在)表示嵌入级别信息。 从-1到-62的负值表示覆盖级别的绝对值。 从1到62的正值表示嵌入。 如果值为零或未定义,则假定由基本方向确定的基础嵌入级别。
文本中的NUMERIC_SHAPING属性(如果存在)在运行bidi算法之前将欧洲数字转换为其他十进制数字。 该属性(如果存在)必须应用于段落中的所有文本。
Parameters | |
---|---|
paragraph |
AttributedCharacterIterator : a paragraph of text with optional character and paragraph attribute information |
Bidi (char[] text, int textStart, byte[] embeddings, int embStart, int paragraphLength, int flags)
根据给定的文本,嵌入和方向信息创建双向。 嵌入数组可能为空。 如果存在,则这些值表示嵌入级别信息。 从-1到-61的负值表示电平绝对值的覆盖值。 从1到61的正值表示嵌入。 如果值为零,则假定由基本方向确定的基础嵌入级别。
Parameters | |
---|---|
text |
char : an array containing the paragraph of text to process. |
textStart |
int : the index into the text array of the start of the paragraph. |
embeddings |
byte : an array containing embedding values for each character in the paragraph. This can be null, in which case it is assumed that there is no external embedding information. |
embStart |
int : the index into the embedding array of the start of the paragraph. |
paragraphLength |
int : the length of the paragraph in the text and embeddings arrays. |
flags |
int : a collection of flags that control the algorithm. The algorithm understands the flags DIRECTION_LEFT_TO_RIGHT, DIRECTION_RIGHT_TO_LEFT, DIRECTION_DEFAULT_LEFT_TO_RIGHT, and DIRECTION_DEFAULT_RIGHT_TO_LEFT. Other values are reserved. |
boolean baseIsLeftToRight ()
如果基本方向是从左到右,则返回true。
Returns | |
---|---|
boolean |
true if the base direction is left-to-right |
Bidi createLineBidi (int lineStart, int lineLimit)
在由当前双向表示的段落内的文本行上创建表示双向信息的双向对象。 如果整个段落适合于一行,则不需要此调用。
Parameters | |
---|---|
lineStart |
int : the offset from the start of the paragraph to the start of the line. |
lineLimit |
int : the offset from the start of the paragraph to the limit of the line. |
Returns | |
---|---|
Bidi |
int getBaseLevel ()
返回基本级别(如果从左到右是0,如果是从右到左)。
Returns | |
---|---|
int |
the base level |
int getLength ()
返回该行中文本的长度。
Returns | |
---|---|
int |
the length of text in the line |
int getLevelAt (int offset)
以偏移量返回已解析的字符级别。 如果偏移量<0或> =线的长度,则返回基本方向级别。
Parameters | |
---|---|
offset |
int : the index of the character for which to return the level |
Returns | |
---|---|
int |
the resolved level of the character at offset |
int getRunLevel (int run)
返回此行中第n个逻辑运行的级别。
Parameters | |
---|---|
run |
int : the index of the run, between 0 and getRunCount() |
Returns | |
---|---|
int |
the level of the run |
int getRunLimit (int run)
将此行中第n个逻辑运行结束后的字符索引作为从行首开始的偏移量。 例如,这将返回线上最后一次运行的线的长度。
Parameters | |
---|---|
run |
int : the index of the run, between 0 and getRunCount() |
Returns | |
---|---|
int |
limit the limit of the run |
int getRunStart (int run)
返回该行第n个逻辑运行开始处的字符索引,作为该行开始的偏移量。
Parameters | |
---|---|
run |
int : the index of the run, between 0 and getRunCount() |
Returns | |
---|---|
int |
the start of the run |
boolean isLeftToRight ()
如果该行全部是从左到右的文本并且基本方向是从左到右,则返回true。
Returns | |
---|---|
boolean |
true if the line is all left-to-right text and the base direction is left-to-right |
boolean isMixed ()
如果该行不是从左到右或从右到左,则返回true。 这意味着它要么从左到右和从右到左的文本混合运行,要么基本方向与唯一文本运行的方向不同。
Returns | |
---|---|
boolean |
true if the line is not left-to-right or right-to-left. |
boolean isRightToLeft ()
如果该行全部是从右到左的文本,并且基本方向是从右到左,则返回true。
Returns | |
---|---|
boolean |
true if the line is all right-to-left text, and the base direction is right-to-left |
void reorderVisually (byte[] levels, int levelStart, Object[] objects, int objectStart, int count)
根据数组的级别将数组中的对象重新排序。 这是一个实用函数,当您按照逻辑顺序具有代表文本运行的对象集合时,可以使用该函数,每个运行包含单个级别的文本。 在元件index
从objectStart
到objectStart + count
的对象阵列中会被重新排序成可视顺序假定文本中的每个运行具有:(在由所述水平阵列中的相应的元素所指示的电平index - objectStart + levelStart
)。
Parameters | |
---|---|
levels |
byte : an array representing the bidi level of each object |
levelStart |
int : the start position in the levels array |
objects |
Object : the array of objects to be reordered into visual order |
objectStart |
int : the start position in the objects array |
count |
int : the number of objects to reorder |
boolean requiresBidi (char[] text, int start, int limit)
如果指定的文字需要双向分析,则返回true。 如果返回false,则文本将显示从左到右。 客户可以避免构建一个双向对象。 假定Unicode的阿拉伯语表示区域中的文本已经被整形和排序以供显示,因此不会导致此函数返回true。
Parameters | |
---|---|
text |
char : the text containing the characters to test |
start |
int : the start of the range of characters to test |
limit |
int : the limit of the range of characters to test |
Returns | |
---|---|
boolean |
true if the range of characters requires bidi analysis |
String toString ()
显示用于调试的bidi内部状态。
Returns | |
---|---|
String |
a string representation of the object. |