JavaTM 2
Platform
Std. Ed. v1.4.0

java.text
クラス Bidi

java.lang.Object
  |
  +--java.text.Bidi

public final class Bidi
extends Object

このクラスは Unicode バージョン 3.0 双方向アルゴリズムを実装します。

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

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

テキストのランが複数ある場合、開始、リミット、およびランのレベルを取得するインデックスによって、ランの情報にアクセスできます。レベルは方向とラン方向の「入れ子のレベル」の両方を表します。したがって、たとえば、レベル 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(AttributedCharacterIterator paragraph)
          指定したテキストの段落から双方向を生成します。
Bidi(char[] text, int textStart, byte[] embeddings, int embStart, int paragraphLength, int flags)
          指定されたテキスト、埋め込み、および方向情報から双方向を生成します。
Bidi(String paragraph, int flags)
          指定したテキストの段落と基準方向から双方向を生成します。
 
メソッドの概要
 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()
          デバッギングに使用する、双方向の内部状態を表示します。
 
クラス 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 - 任意の文字と段落属性情報を持つテキストの段落
関連項目:
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 - 段落の開始から行のリミットのオフセット

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)
オフセットにある文字の解決されたレベルを返します。オフセットが <0 or >= ラインの長さである場合は、基準方向レベルを返します。

パラメータ:
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()
デバッギングに使用する、双方向の内部状態を表示します。

オーバーライド:
クラス Object 内の toString
戻り値:
このオブジェクトの文字列表現

JavaTM 2
Platform
Std. Ed. v1.4.0

バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。

Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.