public final class Bidi extends Object
双方向オブジェクトは、テキストの作成に使用された双方向の並べ替えの情報を提供します。これは、アラビア語やヘブライ語のテキストの適切な表示などに必要です。これらの言語は、数字は左から右へ並び、その他のテキストのほとんどが右から左へ並ぶというように、方向が混在しています。
双方向オブジェクトが生成されると、そのテキストがすべて左から右か、またはすべて右から左かについて照会することができます。このようなオブジェクトはたいへん軽量で、このテキストは処理が比較的容易です。
テキストのランが複数ある場合、開始、リミット、およびランのレベルを取得するインデックスによって、ランの情報にアクセスできます。レベルは方向とラン方向の「入れ子のレベル」の両方を表します。奇数のレベルは右から左、偶数のレベルは左から右です。したがって、たとえば、レベル 0 は左から右のテキスト、レベル 1 は右から左のテキスト、レベル 2 は右から左のランに埋め込まれた左から右のテキストを表します。
修飾子と型 | フィールドと説明 |
---|---|
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()
デバッギングに使用する、双方向の内部状態を表示します。
|
public static final int DIRECTION_LEFT_TO_RIGHT
public static final int DIRECTION_RIGHT_TO_LEFT
public static final int DIRECTION_DEFAULT_LEFT_TO_RIGHT
public static final int DIRECTION_DEFAULT_RIGHT_TO_LEFT
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 を認識する。その他の値は予約済み。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
public Bidi(char[] text, int textStart, byte[] embeddings, int embStart, int paragraphLength, int flags)
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 を認識する。その他の値は予約済み。public Bidi createLineBidi(int lineStart, int lineLimit)
lineStart
- 段落の開始から行の開始のオフセット。lineLimit
- 段落の開始から行のリミットのオフセット。public boolean isMixed()
public boolean isLeftToRight()
public boolean isRightToLeft()
public int getLength()
public boolean baseIsLeftToRight()
public int getBaseLevel()
public int getLevelAt(int offset)
offset
- レベルを返す文字のインデックスpublic int getRunCount()
public int getRunLevel(int run)
run
- 0 と getRunCount()
の間にある、ランのインデックスpublic int getRunStart(int run)
run
- 0 と getRunCount()
の間にある、ランのインデックスpublic int getRunLimit(int run)
run
- 0 と getRunCount()
の間にある、ランのインデックスpublic static boolean requiresBidi(char[] text, int start, int limit)
text
- テスト対象の文字を含むテキストstart
- テスト対象の文字の範囲の開始位置limit
- テスト対象の文字の範囲のリミットpublic static void reorderVisually(byte[] levels, int levelStart, Object[] objects, int objectStart, int count)
objectStart
から objectStart + count
の index
にある要素は、テキストの各ランが、レベル配列 (index - objectStart + levelStart
) 内の対応する要素によって示されるレベルであると見なして、視覚的順序に並べ替えられます。levels
- 各オブジェクトの双方向レベルを表す配列levelStart
- レベル配列内での開始位置objects
- 視覚的順序に並べ替えられるオブジェクトの配列objectStart
- オブジェクト配列内での開始位置count
- 並べ替え対象のオブジェクト数 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.