返回介绍

java.text 类 Bidi

发布于 2019-10-04 09:51:20 字数 12970 浏览 948 评论 0 收藏 0

java.lang.Object
  └java.text.Bidi

public final class Bidi
extends Object
 

此类实现了 Unicode 双向算法 (Unicode Bidirectional Algorithm)。

Bidi 对象提供了有关用于创建它的文本的双向重排序的信息。例如,这对于正确显示阿拉伯语或者希伯来语文本来说是必需的。这些语言本来是混合方向的,因为其从左向右排列数字,而大多数其他文本则从右向左排列。

一旦创建完成,Bidi 对象就能查询,以查看文本表示都是从左向右或从右向左。这些对象都是非常轻量级的并且此文本也相对容易处理。

如果有多次文本的运行,则可以通过索引访问运行的信息,以获得起始位置、限制和运行层次。层次代表了方向和一个方向运行的“嵌套层次”。奇数层次是从右到左,则偶数层次是从左到右。因此,例如层次 0 代表从左到右的文本,而层次 1 代表从右到左的的文本,层次 2 代表嵌入在一个从右到左的运行中的从左到右的文本。

从以下版本开始:
1.4

字段摘要
staticintDIRECTION_DEFAULT_LEFT_TO_RIGHT

表示基本方向依赖于根据 Unicode 双向算法得到的文本中第一个强方向字符的常量。

staticintDIRECTION_DEFAULT_RIGHT_TO_LEFT

表示基本方向依赖于根据 Unicode 双向算法得到的文本中第一个强方向字符的常量。

staticintDIRECTION_LEFT_TO_RIGHT

表示基本方向是从左到右的常量。

staticintDIRECTION_RIGHT_TO_LEFT

表示基本方向是从右到左的常量。

构造方法摘要
Bidi(AttributedCharacterIteratorparagraph)

由给定的文本段构造 Bidi。

Bidi(char[]text, inttextStart, byte[]embeddings, intembStart, intparagraphLength, intflags)

由给定的文本、嵌入和方向信息构造 Bidi。

Bidi(Stringparagraph, intflags)

由给定的文本段和基本方向构造 Bidi。

方法摘要
booleanbaseIsLeftToRight()

如果基本方向是从左到右,则返回 true。

BidicreateLineBidi(intlineStart, intlineLimit)

构造一个 Bidi 对象,表示当前 Bidi 所代表的段落中的一行文本上的双向信息。

intgetBaseLevel()

返回基本层次(如果是从左到右,则为 0;如果是从右到左,则为 1)。

intgetLength()

返回该行中文本的长度。

intgetLevelAt(intoffset)

返回偏移位置处的字符的解析层次。

intgetRunCount()

返回层次运行的数目。

intgetRunLevel(intrun)

返回该行中第 n 次逻辑运行的层次。

intgetRunLimit(intrun)

以该行开始的偏移量返回该行中第 n 次逻辑运行之后的字符索引。

intgetRunStart(intrun)

以该行开始的偏移量返回该行中第 n 次逻辑运行开始时的字符索引。

booleanisLeftToRight()

如果该行都是从左到右的文本且基本方向也是从左到右,则返回 true。

booleanisMixed()

如果该行既不是从左到右也不是从右到左,则返回 true。

booleanisRightToLeft()

如果该行都是从右到左的文本且基本方向也是从右到左,则返回 true。

staticvoidreorderVisually(byte[]levels, intlevelStart, Object[]objects, intobjectStart, intcount)

根据对象的层次,在数组中将对象重新排序为可视顺序。

staticbooleanrequiresBidi(char[]text, intstart, intlimit)

如果指定的文本需要双向分析,则返回 true。

StringtoString()

用于调试时显示双向算法的内部状态。

从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

字段详细信息

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(Stringparagraph,
            intflags)
由给定的文本段和基本方向构造 Bidi。
参数:
paragraph - 一个文本段
flags - 控制算法的标志集合。此算法识别标志 DIRECTION_LEFT_TO_RIGHT、DIRECTION_RIGHT_TO_LEFT、DIRECTION_DEFAULT_LEFT_TO_RIGHT 以及 DIRECTION_DEFAULT_RIGHT_TO_LEFT。其他值保留。

Bidi

public Bidi(AttributedCharacterIteratorparagraph)
由给定的文本段构造 Bidi。

文本中 RUN_DIRECTION 属性(如果存在)定义了基本方向(从左到右或者从右到左)。如果不存在,使用 Unicode 双向算法计算基本方向,默认为如果文本中没有强方向字符则从左到右。此属性(如果存在)必须应用于段中所有文本。

文本中 BIDI_EMBEDDING 属性(如果存在)代表了嵌入层次信息。从 -1 到 -62 的负值指示重写层次的绝对值。从 1 到 62 的正值指示嵌入。如果值为 0 或者没有定义,则基本的嵌入层次由假定的基本方向来决定。

文本中的 NUMERIC_SHAPING 属性(如果存在)在运行双向算法之前将欧洲数字转换成其他十进制数字。此属性(如果存在)必须应用于段中所有文本。

参数:
paragraph - 具有可选的字符和段落属性信息的文本段。
另请参见:
TextAttribute.BIDI_EMBEDDING , TextAttribute.NUMERIC_SHAPING , TextAttribute.RUN_DIRECTION

Bidi

public Bidi(char[]text,
            inttextStart,
            byte[]embeddings,
            intembStart,
            intparagraphLength,
            intflags)
由给定的文本、嵌入和方向信息构造 Bidi。Embeddings 数组可以为 null。如果有的话,其值代表了嵌入层次信息。从 -1 到 -61 的负值指示重写层次的绝对值。从 1 到 61 的正值指示嵌入。如果值为 0,则基本的嵌入层次由假定的基本方向来决定。
参数:
text - 包含了要处理的文本段的一个数组。
textStart - 段落开始的文本数组中的索引。
embeddings - 包含了段落中每个字符的嵌入值的一个数组。在假定不存在外部嵌入信息的情况下可能为空。
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(intlineStart,
                           intlineLimit)
构造一个 Bidi 对象,表示当前 Bidi 所代表的段落中的一行文本上的双向信息。如果整个段落装配在一行中则不需要此调用。
参数:
lineStart - 从段的开始到行的开始的偏移量。
lineLimit - 从段的开始到行的限制的偏移量。

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(intoffset)
返回偏移位置处的字符的解析层次。如果偏移量小于 0 或者大于等于行的长度,则返回基本的方向层次。
参数:
offset - 返回层次的字符的索引
返回:
偏移位置处的字符的解析层次

getRunCount

public int getRunCount()
返回层次运行的数目。
返回:
层次运行的数目

getRunLevel

public int getRunLevel(intrun)
返回该行中第 n 次逻辑运行的层次。
参数:
run - 运行的索引,在 0 到 getRunCount() 之间
返回:
运行层次

getRunStart

public int getRunStart(intrun)
以该行开始的偏移量返回该行中第 n 次逻辑运行开始时的字符索引。
参数:
run - 运行的索引,在 0 到 getRunCount() 之间
返回:
运行的开始位置

getRunLimit

public int getRunLimit(intrun)
以该行开始的偏移量返回该行中第 n 次逻辑运行之后的字符索引。例如,这将返回该行上最后一次运行的行的长度。
参数:
run - 运行的索引,在 0 到 getRunCount() 之间
返回:
运行的限制

requiresBidi

public static boolean requiresBidi(char[]text,
                                   intstart,
                                   intlimit)
如果指定的文本需要双向分析,则返回 true。如果返回 false,该文本将从左到右显示。客户端可以避免构造一个 Bidi 对象。Unicode 的 Arabic Presentation Forms 区域的文本假定为已经针对显示进行整形和排序,因此不会导致此函数返回 true。
参数:
text - 包含测试字符的文本
start - 测试字符的范围的开始
limit - 测试字符的范围的限制
返回:
如果该字符范围需要双向分析,则返回 true

reorderVisually

public static void reorderVisually(byte[]levels,
                                   intlevelStart,
                                   Object[]objects,
                                   intobjectStart,
                                   intcount)
根据对象的层次,在数组中将对象重新排序为可视顺序。当您有一个以逻辑顺序表示文本运行的对象集合时(其中每个运行包含同一个层次上的文本),这是一个可用的实用工具函数。假定每一个文本运行具有层次数组中相应的元素(位于 index - objectStart + levelStart )所指示的层次时,对象数组中位于 index 的元素从 objectStart 一直到 objectStart + count 将被重新排序为可视顺序。
参数:
levels - 表示每一个对象双向层次的数组
levelStart - 层次数组中的开始位置
objects - 将被重新排序为可视顺序的对象数组
objectStart - 对象数组中的开始位置
count - 要重新排序的对象数

toString

public String toString()
用于调试时显示双向算法的内部状态。
覆盖:
Object 中的 toString
返回:
该对象的字符串表示形式。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文