Module  java.base
软件包  java.text

Class Bidi



  • public final class Bidi
    extends Object
    该类实现了Unicode双向算法。

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

    一旦创建,可以查询一个Bidi对象,看看它代表的文本是从左到右还是从右到左。 这样的对象非常轻巧,这个文本比较容易处理。

    如果有多个文本运行,则可以通过索引访问有关运行的信息,以获取运行的开始,限制和级别。 该级别表示方向运行的方向和“嵌套级别”。 奇数级别是从右到左,而平均级别是从左到右。 因此,例如级别0表示从左到右的文本,而级别1表示从右到左的文本,级别2表示嵌入在从右到左的运行中的从左到右的文本。

    从以下版本开始:
    1.4
    • 构造方法摘要

      构造方法  
      Constructor 描述
      Bidi​(char[] text, int textStart, byte[] embeddings, int embStart, int paragraphLength, int flags)
      从给定的文本,嵌入和方向信息创建Bidi。
      Bidi​(String paragraph, int flags)
      从文本和基本方向的给定段落创建Bidi。
      Bidi​(AttributedCharacterIterator paragraph)
      从文本的给定段落创建Bidi。
    • 方法摘要

      所有方法  静态方法  接口方法  具体的方法 
      Modifier and Type 方法 描述
      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​()
      显示调试中使用的双向内部状态。
    • 字段详细信息

      • DIRECTION_LEFT_TO_RIGHT

        public static final int DIRECTION_LEFT_TO_RIGHT
        常数表示基地方向是从左到右。
        另请参见:
        Constant Field Values
      • DIRECTION_RIGHT_TO_LEFT

        public static final int DIRECTION_RIGHT_TO_LEFT
        恒定指示基准方向是从右到左。
        另请参见:
        Constant Field Values
      • DIRECTION_DEFAULT_LEFT_TO_RIGHT

        public static final int DIRECTION_DEFAULT_LEFT_TO_RIGHT
        常数表示基本方向取决于文本中根据Unicode双向算法的第一个强定向字符。 如果不存在强定向角色,则基本方向是从左到右。
        另请参见:
        Constant Field Values
      • DIRECTION_DEFAULT_RIGHT_TO_LEFT

        public static final int DIRECTION_DEFAULT_RIGHT_TO_LEFT
        常数表示基本方向取决于文本中根据Unicode双向算法的第一个强定向字符。 如果不存在强定向角色,则基本方向是从右到左。
        另请参见:
        Constant Field Values
    • 构造方法详细信息

      • 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_EMBEDDINGTextAttribute.NUMERIC_SHAPINGTextAttribute.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表示的段落内的一行文本上的双目标信息。 如果整个段落适合一行,则不需要此呼叫。
        参数
        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。
        结果
        如果基本方向是从左到右,则为真
      • 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)
        如果指定的文本需要双向分析,则返回true。 如果这返回false,文本将从左到右显示。 客户可以避免构建一个Bidi对象。 假定Unicode的阿拉伯语表示形式区域中的文本已经被形状化并且被排序显示,因此不会导致该函数返回true。
        参数
        text - 包含要测试的字符的文本
        start - 要测试的字符范围的开始
        limit - 要测试的字符范围的限制
        结果
        如果字符范围需要双向分析,则为真
      • reorderVisually

        public static void reorderVisually​(byte[] levels,
                                           int levelStart,
                                           Object[] objects,
                                           int objectStart,
                                           int count)
        将数组中的对象根据其级别重新排序为可视化顺序。 当您具有以逻辑顺序表示文本运行的对象集合时,这是一个实用功能,每个运行都包含单个级别的文本。 假设每个文本的运行都具有由数组中的相应元素指示的级别( index - objectStart + levelStart ),则对象数组中的indexobjectStartobjectStart + count的元素将被重新排序为可视顺序。
        参数
        levels - 表示每个对象的双向级别的数组
        levelStart - 级别数组中的起始位置
        objects - 要重新排序为可视化顺序的对象数组
        objectStart - 对象数组中的起始位置
        count - 要重新排序的对象数
      • toString

        public String toString​()
        显示调试中使用的双向内部状态。
        重写:
        toStringObject
        结果
        对象的字符串表示形式。