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

クラスBidi

java.lang.Object
java.text.Bidi

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

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

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

テキストのランが複数ある場合、開始、リミット、およびランのレベルを取得するインデックスによって、ランの情報にアクセスできます。 レベルは方向とラン方向の「入れ子のレベル」の両方を表します。 奇数のレベルは右から左、偶数のレベルは左から右です。 したがって、たとえば、レベル0は左から右のテキスト、レベル1は右から左のテキスト、レベル2は右から左のランに埋め込まれた左から右のテキストを表します。

導入されたバージョン:
1.4
  • フィールドのサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    static final int
    基準方向が、Unicode双方向アルゴリズムに準拠した、テキスト内の最初の強い方向文字に依存することを示す定数です。
    static final int
    基準方向が、Unicode双方向アルゴリズムに準拠した、テキスト内の最初の強い方向文字に依存することを示す定数です。
    static final int
    基準方向が左から右であることを示す定数です。
    static final int
    基準方向が右から左であることを示す定数です。
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    Bidi(char[] text, int textStart, byte[] embeddings, int embStart, int paragraphLength, int flags)
    指定されたテキスト、埋め込み、および方向情報から双方向を生成します。
    Bidi(String paragraph, int flags)
    指定したテキストの段落と基準方向から双方向を生成します。
    指定したテキストの段落から双方向を生成します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    boolean
    基準方向が左から右の場合はtrueを返します。
    createLineBidi(int lineStart, int lineLimit)
    現在の双方向によって表される段落内のテキスト行の双方向情報を表す双方向オブジェクトを生成します。
    int
    基準レベルを返します(左から右の場合は0、右から左の場合は1)。
    int
    行のテキストの長さを返します。
    int
    getLevelAt(int offset)
    オフセットにある文字の解決されたレベルを返します。
    int
    実行するレベル数を返します。
    int
    getRunLevel(int run)
    この行のn番目の論理ランのレベルを返します。
    int
    getRunLimit(int run)
    この行内でn番目の論理ランの終了位置の次にある文字のインデックスを、行の開始位置からのオフセットとして返します。
    int
    getRunStart(int run)
    この行内でn番目の論理ランの開始位置にある文字のインデックスを、行の開始位置からのオフセットとして返します。
    boolean
    行がすべて左から右のテキストであり、基準方向が左から右の場合はtrueを返します。
    boolean
    行が左から右、または右から左でない場合はtrueを返します。
    boolean
    行がすべて右から左のテキストであり、基準方向が右から左の場合はtrueを返します。
    static void
    reorderVisually(byte[] levels, int levelStart, Object[] objects, int objectStart, int count)
    配列内のオブジェクトを、そのレベルに基づいて視覚的順序に並べ替えます。
    static boolean
    requiresBidi(char[] text, int start, int limit)
    指定されたテキストが双方向解析を要求する場合、trueを返します。
    デバッギングに使用する、双方向の内部状態を表示します。

    クラス 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(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 - 任意の文字と段落属性情報を持つテキストの段落
      関連項目:
    • 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
      戻り値:
      このオブジェクトの文字列表現。