モジュール java.base
パッケージ java.text

クラスBidi


  • public final class Bidi
    extends Object
    このクラスはUnicode双方向アルゴリズムを実装します。

    双方向オブジェクトは、テキストの作成に使用された双方向の並べ替えの情報を提供します。 これは、アラビア語やヘブライ語のテキストの適切な表示などに必要です。 これらの言語は、数字は左から右へ並び、その他のテキストのほとんどが右から左へ並ぶというように、方向が混在しています。

    双方向オブジェクトが生成されると、そのテキストがすべて左から右か、またはすべて右から左かについて照会することができます。 このようなオブジェクトはたいへん軽量で、このテキストは処理が比較的容易です。

    テキストのランが複数ある場合、開始、リミット、およびランのレベルを取得するインデックスによって、ランの情報にアクセスできます。 レベルは方向とラン方向の「入れ子のレベル」の両方を表します。 奇数のレベルは右から左、偶数のレベルは左から右です。 したがって、たとえば、レベル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​(String paragraph, int flags)
      指定したテキストの段落と基準方向から双方向を生成します。
      Bidi​(AttributedCharacterIterator paragraph)
      指定したテキストの段落から双方向を生成します。
    • メソッドのサマリー

      すべてのメソッド 静的メソッド インスタンス・メソッド 具象メソッド 
      修飾子と型 メソッド 説明
      boolean baseIsLeftToRight()
      基準方向が左から右の場合はtrueを返します。
      Bidi createLineBidi​(int lineStart, int lineLimit)
      現在の双方向によって表される段落内のテキスト行の双方向情報を表す双方向オブジェクトを生成します。
      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
        基準方向が左から右であることを示す定数です。
        関連項目:
        定数フィールド値
      • 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)
        指定したテキストの段落と基準方向から双方向を生成します。
        パラメータ:
        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)
        指定したテキストの段落から双方向を生成します。

        テキスト内にRUN_DIRECTION属性がある場合は、この属性により基準方向(左から右、右から左)が決まります。 ない場合は、基準方向はUnicode双方向アルゴリズムを使用して計算されます。テキスト内に強い方向文字がない場合、左から右がデフォルトです。 この属性がある場合は、段落内のすべてのテキストに必ず適用されます。

        テキスト内にBIDI_EMBEDDING属性がある場合は、埋込みレベル情報を表します。 -1から -62の負の値は、レベルの絶対値でのオーバーライドを示します。 1から62の正の値は、埋込みを示します。 値がゼロまたは定義されない場合は、基準方向によって決まる基準埋込みレベルであると見なされます。

        テキスト内にNUMERIC_SHAPING属性がある場合、この属性は双方向アルゴリズムの実行前に、ヨーロッパ数字をほかの10進数に変換します。 この属性がある場合は、段落内のすべてのテキストに必ず適用されます。

        パラメータ:
        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)
        指定されたテキスト、埋め込み、および方向情報から双方向を生成します。 埋込み配列は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)
        現在の双方向によって表される段落内のテキスト行の双方向情報を表す双方向オブジェクトを生成します。 この呼出しは、段落全体が1行の場合は要求されません。
        パラメータ:
        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)
        オフセットにある文字の解決されたレベルを返します。 オフセットが負であるか行の長さ以上である場合は、基準方向レベルを返します。
        パラメータ:
        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を返した場合は、テキストは左から右に表示されます。 そのとき、クライアントは双方向オブジェクトの構築を回避できます。 Unicodeのアラビア語表示形式領域にあるテキストは、形状と順序が表示用になっていると見なされ、trueを返す原因にはなりません。
        パラメータ:
        text - テスト対象の文字を含むテキスト
        start - テスト対象の文字の範囲の開始位置
        limit - テスト対象の文字の範囲のリミット
        戻り値:
        文字の範囲が双方向解析を要求する場合、true
      • reorderVisually

        public static void reorderVisually​(byte[] levels,
                                           int levelStart,
                                           Object[] objects,
                                           int objectStart,
                                           int count)
        配列内のオブジェクトを、そのレベルに基づいて視覚的順序に並べ替えます。 これはユーティリティ機能で、各ランが単一レベルでテキストを格納する、テキストのランを論理的順序で表すオブジェクトのコレクションがある場合に使用します。 オブジェクト配列内の、objectStartからobjectStart+countindexにある要素は、テキストの各ランが、レベル配列(index - objectStart+levelStart)内の対応する要素によって示されるレベルであると見なして、視覚的順序に並べ替えられます。
        パラメータ:
        levels - 各オブジェクトの双方向レベルを表す配列
        levelStart - レベル配列内での開始位置
        objects - 視覚的順序に並べ替えられるオブジェクトの配列
        objectStart - オブジェクト配列内での開始位置
        count - 並べ替え対象のオブジェクト数
      • toString

        public String toString()
        デバッギングに使用する、双方向の内部状態を表示します。
        オーバーライド:
        toString 、クラス:  Object
        戻り値:
        このオブジェクトの文字列表現。