- java.lang.Object
-
- java.awt.font.TextLayout
-
- すべての実装されたインタフェース:
Cloneable
public final class TextLayout extends Object implements Cloneable
TextLayout
は、書式付き文字データの不変のグラフィック表現です。このクラスは次の機能を提供します。
- 暗黙的な双方向の分析と並べ替え
- カーソルの位置指定と移動(混合方向テキストのための分割カーソルを含む)
- ハイライト(混合方向テキストのための論理的ハイライトと視覚的ハイライトを含む)
- 複数のベースライン(ローマン・ベースライン、ぶら下がりベースライン、およびセンター・ベースライン)
- ヒットのテスト
- 位置揃え
- デフォルト・フォントの置換
- アセント、ディセント、および有効幅などのメトリック情報
- 描画
TextLayout
オブジェクトは、draw
メソッドを使用して描画できます。TextLayout
は、直接またはLineBreakMeasurer
を介して作成できます。 直接作成される場合、ソース・テキストは1つの段落を表します。LineBreakMeasurer
では、特定の幅に収まる複数の行に書式付きテキストを分割できます。 詳細は、LineBreakMeasurer
のドキュメントを参照してください。TextLayout
の構築は、論理的には次の順序で行われます。- 段落属性が抽出され、調べられる
- 双方向の並べ替えのためにテキストが分析され、必要な場合は並べ替え情報が計算される
- テキストがスタイル・ランにセグメント化される
- スタイル・ラン用のフォントが選択される。選択方法は、最初に属性
TextAttribute.FONT
がある場合はフォントが使用され、そうでない場合は、定義済みの属性を使用してデフォルト・フォントが計算される - テキストが複数のベースラインにある場合、ランまたはサブランは共通のベースラインを共有するサブランにさらに分割される
- 選択されたフォントを使用して各ランにグリフ・ベクトルが生成される
- 最終的な双方向の並べ替えがグリフ・ベクトルで実行される
TextLayout
オブジェクトのメソッドから返されるすべてのグラフィック情報は、TextLayout
オブジェクトのベースラインと左端の交点であるTextLayout
の原点を基準にしています。 また、TextLayout
オブジェクトのメソッドに渡される座標は、TextLayout
オブジェクトの原点を基準にしているものと見なされます。 通常、クライアントは、TextLayout
オブジェクトの座標系と別のオブジェクト(Graphics
オブジェクトなど)の座標系との間で変換が必要になります。TextLayout
オブジェクトは、書式付きテキストから構築されますが、ソース・テキストへの参照は保持しません。 このため、TextLayout
を生成するために使用されたテキストにその後変更が加えられても、TextLayout
に影響はありません。TextLayout
オブジェクトの3つのメソッド(getNextRightHit
、getNextLeftHit
、およびhitTestChar
)は、TextHitInfo
のインスタンスを返します。 それらのTextHitInfo
オブジェクトに含まれるオフセットは、TextLayout
を作成するために使用されたテキストではなく、TextLayout
の先頭を基準にします。 同じように、TextHitInfo
のインスタンスをパラメータとして受け取るTextLayout
のメソッドも、TextHitInfo
オブジェクトのオフセットの基準はTextLayout
であり、基本となるテキスト・ストレージ・モデルではないと想定します。例:
TextLayout
とその境界の矩形の作成および描画Graphics2D g = ...; Point2D loc = ...; Font font = Font.getFont("Helvetica-bold-italic"); FontRenderContext frc = g.getFontRenderContext(); TextLayout layout = new TextLayout("This is a string", font, frc); layout.draw(g, (float)loc.getX(), (float)loc.getY()); Rectangle2D bounds = layout.getBounds(); bounds.setRect(bounds.getX()+loc.getX(), bounds.getY()+loc.getY(), bounds.getWidth(), bounds.getHeight()); g.draw(bounds);
TextLayout
でヒットをテストします(特定のグラフィック位置にある文字を判定します)。Point2D click = ...; TextHitInfo hit = layout.hitTestChar( (float) (click.getX() - loc.getX()), (float) (click.getY() - loc.getY()));
右矢印キーが押されたことに反応します。
int insertionIndex = ...; TextHitInfo next = layout.getNextRightHit(insertionIndex); if (next != null) { // translate graphics to origin of layout on screen g.translate(loc.getX(), loc.getY()); Shape[] carets = layout.getCaretShapes(next.getInsertionIndex()); g.draw(carets[0]); if (carets[1] != null) { g.draw(carets[1]); } }
ソース・テキストの部分文字列に対応する選択範囲を描画します。 選択された領域は、視覚的に連続していない場合があります。
// selStart, selLimit should be relative to the layout, // not to the source text int selStart = ..., selLimit = ...; Color selectionColor = ...; Shape selection = layout.getLogicalHighlightShape(selStart, selLimit); // selection may consist of disjoint areas // graphics is assumed to be translated to origin of layout g.setColor(selectionColor); g.fill(selection);
視覚的に連続した選択範囲を描画します。 選択範囲は、ソース・テキストの複数の部分文字列に対応することがあります。 対応するソース・テキストの部分文字列の範囲は、
getLogicalRangesForVisualSelection()
により取得できます。TextHitInfo selStart = ..., selLimit = ...; Shape selection = layout.getVisualHighlightShape(selStart, selLimit); g.setColor(selectionColor); g.fill(selection); int[] ranges = getLogicalRangesForVisualSelection(selStart, selLimit); // ranges[0], ranges[1] is the first selection range, // ranges[2], ranges[3] is the second selection range, etc.
ノート: フォントを回転するとテキストのベースラインが回転することがあり、複数のランで回転が異なると、ベースラインが屈曲したりジグザグになることがあります。 このまれな可能性に対処するために、一部のフォントAPIは指定に従って「ベースラインを基準にした座標で」メトリックスを返したりパラメータを受け取ったりします(アセントや有効幅など)。それ以外のAPIは、「標準の座標で」処理します(getBoundsなど)。 ベースラインを基準にした座標では、x座標はベースラインに沿った距離(正のxはベースラインに沿って進む方向)、y座標はxでのベースラインに対する垂線に沿った距離(正のyはベースライン・ベクトルから時計回りに90度の方向)にマップされます。 標準の座標では、座標はTextLayoutの原点を0,0として、x軸およびy軸に沿って測定されます。 関連する各APIのドキュメントには、どの値がどの座標系で表されるかが示されています。 一般に、測定に関連するAPIはベースラインを基準にした座標、表示に関連するAPIは標準の座標を使用します。
-
-
ネストされたクラスのサマリー
ネストされたクラス 修飾子と型 クラス 説明 static class
TextLayout.CaretPolicy
強いキャレットの場所を決定するポリシーを定義します。
-
フィールドのサマリー
フィールド 修飾子と型 フィールド 説明 static TextLayout.CaretPolicy
DEFAULT_CARET_POLICY
このCaretPolicy
は、ポリシーがクライアントによって指定されていない場合に使用されます。
-
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 TextLayout(String string, Font font, FontRenderContext frc)
String
およびFont
からTextLayout
を構築します。TextLayout(String string, Map<? extends AttributedCharacterIterator.Attribute,?> attributes, FontRenderContext frc)
String
および属性セットからTextLayout
を構築します。TextLayout(AttributedCharacterIterator text, FontRenderContext frc)
書式付きテキストのイテレータからTextLayout
を構築します。
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 protected Object
clone()
このTextLayout
のコピーを作成します。void
draw(Graphics2D g2, float x, float y)
指定されたGraphics2D
コンテキストの指定された位置にこのTextLayout
を描画します。boolean
equals(TextLayout rhs)
2つのレイアウトが等しい場合にtrue
を返します。float
getAdvance()
このTextLayout
の有効幅を返します。float
getAscent()
このTextLayout
のアセントを返します。byte
getBaseline()
このTextLayout
のベースラインを返します。float[]
getBaselineOffsets()
このTextLayout
で使用されるベースラインのオフセット配列を返します。Shape
getBlackBoxBounds(int firstEndpoint, int secondEndpoint)
指定された範囲にあるすべての文字のブラック・ボックス境界を返します。Rectangle2D
getBounds()
このTextLayout
の境界を返します。float[]
getCaretInfo(TextHitInfo hit)
hit
に対応するキャレットについての情報を返します。float[]
getCaretInfo(TextHitInfo hit, Rectangle2D bounds)
hit
に対応するキャレットについての情報を返します。Shape
getCaretShape(TextHitInfo hit)
このTextLayout
の自然境界内の指定されたヒットにあるキャレットを表すShape
を返します。Shape
getCaretShape(TextHitInfo hit, Rectangle2D bounds)
指定された境界内の指定されたヒットにあるキャレットを表すShape
を返します。Shape[]
getCaretShapes(int offset)
強いキャレットと弱いキャレットに対応する2つの輪郭線を返します。Shape[]
getCaretShapes(int offset, Rectangle2D bounds)
強いキャレットと弱いキャレットに対応する2つの輪郭線を返します。Shape[]
getCaretShapes(int offset, Rectangle2D bounds, TextLayout.CaretPolicy policy)
強いキャレットと弱いキャレットに対応する2つの輪郭線を返します。int
getCharacterCount()
このTextLayout
が表す文字数を返します。byte
getCharacterLevel(int index)
index
にある文字のレベルを返します。float
getDescent()
このTextLayout
のディセントを返します。TextLayout
getJustifiedLayout(float justificationWidth)
指定された幅に行揃えされた、このTextLayout
のコピーを作成します。LayoutPath
getLayoutPath()
LayoutPathを返します。レイアウト・パスがデフォルトのパスである場合は(xが有効幅、yがオフセットにマップされます)、nullを返します。float
getLeading()
TextLayout
のリーディングを返します。Shape
getLogicalHighlightShape(int firstEndpoint, int secondEndpoint)
指定された範囲の論理的な選択範囲を囲むShape
を、このTextLayout
の自然境界まで拡張して返します。Shape
getLogicalHighlightShape(int firstEndpoint, int secondEndpoint, Rectangle2D bounds)
指定された範囲の論理的な選択範囲を囲むShape
を、指定されたbounds
まで拡張して返します。int[]
getLogicalRangesForVisualSelection(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint)
視覚的な選択範囲に対応するテキストの論理的な範囲を返します。TextHitInfo
getNextLeftHit(int offset)
左(上)方向の次のキャレットのヒットを返します。この方向にヒットがない場合はnull
を返します。TextHitInfo
getNextLeftHit(int offset, TextLayout.CaretPolicy policy)
左(上)方向の次のキャレットのヒットを返します。この方向にヒットがない場合はnull
を返します。TextHitInfo
getNextLeftHit(TextHitInfo hit)
左(上)方向の次のキャレットのヒットを返します。この方向にヒットがない場合はnull
を返します。TextHitInfo
getNextRightHit(int offset)
右(下)方向の次のキャレットのヒットを返します。この方向にヒットがない場合はnull
を返します。TextHitInfo
getNextRightHit(int offset, TextLayout.CaretPolicy policy)
右(下)方向の次のキャレットのヒットを返します。この方向にヒットがない場合はnull
を返します。TextHitInfo
getNextRightHit(TextHitInfo hit)
右(下)方向の次のキャレットのヒットを返します。この方向にヒットがない場合はnull
を返します。Shape
getOutline(AffineTransform tx)
このTextLayout
の輪郭を表すShape
を返します。Rectangle
getPixelBounds(FontRenderContext frc, float x, float y)
指定された位置にある指定されたFontRenderContext
を使用してグラフィックス内にレンダリングされるときの、このTextLayout
のピクセル境界を返します。float
getVisibleAdvance()
このTextLayout
の有効幅を返します。末尾の空白は含まれません。Shape
getVisualHighlightShape(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint)
指定された範囲の視覚的な選択範囲を囲むShape
を、境界まで拡張して返します。Shape
getVisualHighlightShape(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint, Rectangle2D bounds)
指定された範囲の視覚的な選択範囲を囲む輪郭線を、bounds
まで拡張して返します。TextHitInfo
getVisualOtherHit(TextHitInfo hit)
指定されたヒットのキャレットの反対側のヒットを返します。protected void
handleJustify(float justificationWidth)
このレイアウトを行揃えします。TextHitInfo
hitTestChar(float x, float y)
指定された点に対応するTextHitInfo
を返します。TextHitInfo
hitTestChar(float x, float y, Rectangle2D bounds)
指定された点に対応するTextHitInfo
を返します。void
hitToPoint(TextHitInfo hit, Point2D point)
ヒットを標準座標のポイントに変換します。boolean
isLeftToRight()
このTextLayout
のベースとなる方向が左から右の場合にtrue
を返し、右から左の場合にfalse
を返します。boolean
isVertical()
このTextLayout
が垂直の場合にtrue
を返します。String
toString()
このTextLayout
のデバッグ情報を返します。
-
-
-
フィールドの詳細
-
DEFAULT_CARET_POLICY
public static final TextLayout.CaretPolicy DEFAULT_CARET_POLICY
このCaretPolicy
は、ポリシーがクライアントによって指定されていない場合に使用されます。 このポリシーでは、方向が行の方向と同じ文字のヒットが、反対方向の文字のヒットより強くなります。 文字の方向が同じ場合、文字のリーディング・エッジのヒットの方が、文字のトレーリング・エッジのヒットより強くなります。
-
-
コンストラクタの詳細
-
TextLayout
public TextLayout(String string, Font font, FontRenderContext frc)
String
およびFont
からTextLayout
を構築します。 すべてのテキストは、指定されたFont
を使用して書式が設定されます。String
には、1段落のテキストを指定する必要があります。双方向アルゴリズムでは、段落全体が要求されるからです。- パラメータ:
string
- 表示するテキストfont
- テキストの書式を設定するために使用されるFont
frc
- テキストを正確に測定するために必要なグラフィックス・デバイスに関する情報を格納する。 テキスト測定は、デバイスの解像度によりわずかに異なることがあり、アンチエイリアスなどの属性によっても異なることがある。 このパラメータは、TextLayout
とユーザー空間の間の変換は指定しない。
-
TextLayout
public TextLayout(String string, Map<? extends AttributedCharacterIterator.Attribute,?> attributes, FontRenderContext frc)
String
および属性セットからTextLayout
を構築します。すべてのテキストは、指定された属性により書式が設定されます。
string
には、1段落のテキストを指定する必要があります。双方向アルゴリズムでは、段落全体が要求されるからです。- パラメータ:
string
- 表示するテキストattributes
- テキストの書式を設定するために使用される属性frc
- テキストを正確に測定するために必要なグラフィックス・デバイスに関する情報を格納する。 テキスト測定は、デバイスの解像度によりわずかに異なることがあり、アンチエイリアスなどの属性によっても異なることがある。 このパラメータは、TextLayout
とユーザー空間の間の変換は指定しない。
-
TextLayout
public TextLayout(AttributedCharacterIterator text, FontRenderContext frc)
書式付きテキストのイテレータからTextLayout
を構築します。イテレータは、1段落のテキストを指定する必要があります。双方向アルゴリズムでは、段落全体が要求されるからです。
- パラメータ:
text
- 表示する書式付きテキストfrc
- テキストを正確に測定するために必要なグラフィックス・デバイスに関する情報を格納する。 テキスト測定は、デバイスの解像度によりわずかに異なることがあり、アンチエイリアスなどの属性によっても異なることがある。 このパラメータは、TextLayout
とユーザー空間の間の変換は指定しない。
-
-
メソッドの詳細
-
clone
protected Object clone()
このTextLayout
のコピーを作成します。
-
getJustifiedLayout
public TextLayout getJustifiedLayout(float justificationWidth)
指定された幅に行揃えされた、このTextLayout
のコピーを作成します。この
TextLayout
がすでに行揃えされている場合は例外がスローされます。 このTextLayout
オブジェクトの行揃え比率がゼロの場合、このTextLayout
と同一のTextLayout
が返されます。- パラメータ:
justificationWidth
- 行揃えするために使用する幅。 最良の結果を得るためには、行の現在の有効幅との違いは小さい方がよい。- 戻り値:
- 指定された幅に行揃えされた
TextLayout
。 - 例外:
Error
- このレイアウトがすでに行揃えされている場合、Errorがスローされる。
-
handleJustify
protected void handleJustify(float justificationWidth)
このレイアウトを行揃えします。 行揃えを制御するためにサブクラサーによってオーバーライドされます(サブクラサーがある場合)。レイアウトは、段落の属性(ソース・テキストから派生。レイアウト属性によってデフォルトで設定される場合がある)がゼロ以外の行揃え比率を示す場合にだけ行揃えを行います。 テキストは、指定された幅に行揃えされます。 現在の実装は、行揃え幅を満たすためにハンギング・パンクチュエーションや末尾の空白も調整します。 レイアウトは、いったん行揃えされたあとは、行揃えし直すことができません。一部のコードはレイアウトの不変性に依存している場合があります。 サブクラスはこのメソッドを直接呼び出すのではなく、getJustifiedLayoutを呼び出した方がよいでしょう。getJustifiedLayoutは、このレイアウトの複製に対してこのメソッドを呼び出すので、元のレイアウトは保存されます。
- パラメータ:
justificationWidth
- 行揃えするために使用する幅。 最良の結果を得るためには、行の現在の有効幅との違いは小さい方がよい。- 関連項目:
getJustifiedLayout(float)
-
getBaseline
public byte getBaseline()
このTextLayout
のベースラインを返します。 ベースラインは、Font
で定義される値(roman、centered、hanging)の1つです。 アセントおよびディセントは、このベースラインを基準にします。baselineOffsets
もこのベースラインを基準にします。- 戻り値:
- この
TextLayout
のベースライン。 - 関連項目:
getBaselineOffsets()
、Font
-
getBaselineOffsets
public float[] getBaselineOffsets()
このTextLayout
で使用されるベースラインのオフセット配列を返します。この配列は、
Font
で定義される値(roman、centered、hanging)の1つでインデックス付けされます。 これらの値は、このTextLayout
オブジェクトのベースラインを基準にします。そのため、getBaselineOffsets[getBaseline()] == 0
となります。 オフセットをTextLayout
オブジェクトのベースラインの位置に加算すると、新しいベースラインの位置を取得できます。- 戻り値:
- この
TextLayout
に使用されるベースラインを格納するオフセット配列。 - 関連項目:
getBaseline()
、Font
-
getAdvance
public float getAdvance()
このTextLayout
の有効幅を返します。 有効幅は、原点から右端(下端)の文字の有効幅までの距離です。 これはベースラインを基準にした座標で表されます。- 戻り値:
- この
TextLayout
の有効幅。
-
getVisibleAdvance
public float getVisibleAdvance()
このTextLayout
の有効幅を返します。末尾の空白は含まれません。 これはベースラインを基準にした座標で表されます。- 戻り値:
- この
TextLayout
の末尾の空白を除いた有効幅。 - 関連項目:
getAdvance()
-
getAscent
public float getAscent()
このTextLayout
のアセントを返します。 アセントは、TextLayout
の上(右)からベースラインまでの距離です。 この距離は常に正の値またはゼロです。 アセントは、上付きテキストを格納するために十分な大きさであり、各グリフのアセント、オフセット、およびベースラインの合計の最大値です。 これは、TextLayout内のすべてのテキストのベースラインからの最大アセントです。 ベースラインを基準にした座標で表されます。- 戻り値:
- この
TextLayout
のアセント。
-
getDescent
public float getDescent()
このTextLayout
のディセントを返します。 ディセントは、ベースラインからTextLayout
の下(左)までの距離です。 この距離は常に正の値またはゼロです。 ディセントは、下付きテキストを格納するために十分な大きさであり、各グリフのディセント、オフセット、およびベースラインの合計の最大値です。 これは、TextLayout内のすべてのテキストのベースラインからの最大ディセントです。 ベースラインを基準にした座標で表されます。- 戻り値:
- この
TextLayout
のディセント。
-
getLeading
public float getLeading()
TextLayout
のリーディングを返します。 リーディングは、このTextLayout
用として推奨されている行間スペースです。 これはベースラインを基準にした座標で表されます。リーディングは、
TextLayout
のすべてのグリフ・ベクトルのリーディング、ディセント、およびベースラインから計算されます。 アルゴリズムは、およそ次のとおりです。maxD = 0; maxDL = 0; for (GlyphVector g in all glyphvectors) { maxD = max(maxD, g.getDescent() + offsets[g.getBaseline()]); maxDL = max(maxDL, g.getDescent() + g.getLeading() + offsets[g.getBaseline()]); } return maxDL - maxD;
- 戻り値:
- この
TextLayout
のリーディング。
-
getBounds
public Rectangle2D getBounds()
このTextLayout
の境界を返します。 境界は標準の座標で表されます。ラスター化のため、TextLayoutによって描画されたピクセルがすべてこの境界内に収まるとは限りません。
TextLayout
のアセント、ディセント、原点、または有効幅と完全には一致しない場合があります。- 戻り値:
- この
TextLayout
の境界であるRectangle2D
。
-
getPixelBounds
public Rectangle getPixelBounds(FontRenderContext frc, float x, float y)
指定された位置にある指定されたFontRenderContext
を使用してグラフィックス内にレンダリングされるときの、このTextLayout
のピクセル境界を返します。 グラフィックス描画コンテキストは、このTextLayout
の作成に使用されるFontRenderContext
と同じである必要はなく、nullでもかまいません。 nullの場合は、このTextLayout
のFontRenderContext
が使われます。- パラメータ:
frc
-Graphics
のFontRenderContext
。x
- このTextLayout
を描画するX座標。y
- このTextLayout
を描画するY座標。- 戻り値:
- 影響を受けるピクセルの境界を示す
Rectangle
。 - 導入されたバージョン:
- 1.6
- 関連項目:
GlyphVector.getPixelBounds(java.awt.font.FontRenderContext, float, float)
-
isLeftToRight
public boolean isLeftToRight()
このTextLayout
のベースとなる方向が左から右の場合にtrue
を返し、右から左の場合にfalse
を返します。TextLayout
には、左から右(LTR)または右から左(RTL)のどちらかのベースとなる方向があります。 ベースとなる方向は、行のテキストの実際の方向(LTR、RTL、または混合)には依存しません。 左から右のレイアウトは、デフォルトでは左端揃えになります。 レイアウトがタブ付きの行に置かれた場合、タブは左から右になるので、論理的に連続するレイアウトは左から右に配置されます。 RTLレイアウトの場合はこの反対です。 この場合、デフォルトでは右端揃え、タブは右から左になります。- 戻り値:
- この
TextLayout
のベースとなる方向が左から右の場合はtrue
、そうでない場合はfalse
。
-
isVertical
public boolean isVertical()
このTextLayout
が垂直の場合にtrue
を返します。- 戻り値:
- この
TextLayout
が垂直の場合はtrue
、そうでない場合はfalse
。
-
getCharacterCount
public int getCharacterCount()
このTextLayout
が表す文字数を返します。- 戻り値:
- この
TextLayout
の文字数。
-
getCaretInfo
public float[] getCaretInfo(TextHitInfo hit, Rectangle2D bounds)
hit
に対応するキャレットについての情報を返します。 配列の最初の要素は、キャレットとベースラインの交点です。ベースラインに沿った距離で表されます。 配列の2番目の要素は、キャレットの逆傾き(ラン/ライズ)です。その点でのベースラインを基準にして測定されます。このメソッドは、情報のためだけに使用されます。 キャレットを表示するには、
getCaretShapes
を使用してください。- パラメータ:
hit
- このTextLayout
にある文字のヒットbounds
- キャレット情報が構築される境界。 境界はベースラインを基準にした座標で表される。- 戻り値:
- キャレットの位置と傾きが格納されている2要素配列。 返されるキャレット情報は、ベースラインを基準にした座標で表される。
- 関連項目:
getCaretShapes(int, Rectangle2D, TextLayout.CaretPolicy)
,Font.getItalicAngle()
-
getCaretInfo
public float[] getCaretInfo(TextHitInfo hit)
hit
に対応するキャレットについての情報を返します。 このメソッドは、getCaretInfo
の簡易オーバーロードであり、このTextLayout
の自然境界を使用します。- パラメータ:
hit
- このTextLayout
にある文字のヒット- 戻り値:
- ヒットに対応するキャレットについての情報。 返されるキャレット情報は、ベースラインを基準にした座標で表される。
-
getNextRightHit
public TextHitInfo getNextRightHit(TextHitInfo hit)
右(下)方向の次のキャレットのヒットを返します。この方向にヒットがない場合はnull
を返します。 ヒット文字のインデックスが境界内にない場合は、IllegalArgumentException
がスローされます。- パラメータ:
hit
- このレイアウトの文字のヒット- 戻り値:
- 指定されたヒットのキャレットに対して右(下)方向に位置する次のキャレットのヒット、または
null
。
-
getNextRightHit
public TextHitInfo getNextRightHit(int offset, TextLayout.CaretPolicy policy)
右(下)方向の次のキャレットのヒットを返します。この方向にヒットがない場合はnull
を返します。 ヒットは、指定されたポリシーによる、指定されたオフセット位置の強いキャレットの右側にあります。 返されるヒットは、指定されたポリシーによる、2つのヒットの強い方です。- パラメータ:
offset
- このTextLayout
の挿入オフセット。 0より小さい値やこのTextLayout
オブジェクトの文字カウントより大きな値は指定できない。policy
- 強いキャレットを選択するために使用されるポリシー- 戻り値:
- 指定されたヒットのキャレットに対して右(下)方向に位置する次のキャレットのヒット、または
null
。
-
getNextRightHit
public TextHitInfo getNextRightHit(int offset)
右(下)方向の次のキャレットのヒットを返します。この方向にヒットがない場合はnull
を返します。 ヒットは、デフォルトのポリシーによる、指定されたオフセット位置の強いキャレットの右にあります。 返されるヒットは、デフォルトのポリシーによる、2つのヒットの強い方です。- パラメータ:
offset
- このTextLayout
の挿入オフセット。 0より小さい値やこのTextLayout
オブジェクトの文字カウントより大きな値は指定できない。- 戻り値:
- 指定されたヒットのキャレットに対して右(下)方向に位置する次のキャレットのヒット、または
null
。
-
getNextLeftHit
public TextHitInfo getNextLeftHit(TextHitInfo hit)
左(上)方向の次のキャレットのヒットを返します。この方向にヒットがない場合はnull
を返します。 ヒット文字のインデックスが境界内にない場合は、IllegalArgumentException
がスローされます。- パラメータ:
hit
- このTextLayout
の文字のヒット。- 戻り値:
- 指定されたヒットのキャレットに対して右(下)方向に位置する次のキャレットのヒット、または
null
。
-
getNextLeftHit
public TextHitInfo getNextLeftHit(int offset, TextLayout.CaretPolicy policy)
左(上)方向の次のキャレットのヒットを返します。この方向にヒットがない場合はnull
を返します。 ヒットは、指定されたポリシーによる、指定されたオフセット位置の強いキャレットの左にあります。 返されるヒットは、指定されたポリシーによる、2つのヒットの強い方です。- パラメータ:
offset
- このTextLayout
の挿入オフセット。 0より小さい値やこのTextLayout
オブジェクトの文字カウントより大きな値は指定できない。policy
- 強いキャレットを選択するために使用されるポリシー- 戻り値:
- 指定されたヒットのキャレットに対して右(下)方向に位置する次のキャレットのヒット、または
null
。
-
getNextLeftHit
public TextHitInfo getNextLeftHit(int offset)
左(上)方向の次のキャレットのヒットを返します。この方向にヒットがない場合はnull
を返します。 ヒットは、デフォルトのポリシーによる、指定されたオフセット位置の強いキャレットの左です。 返されるヒットは、デフォルトのポリシーによる、2つのヒットの強い方です。- パラメータ:
offset
- このTextLayout
の挿入オフセット。 0より小さい値やこのTextLayout
オブジェクトの文字カウントより大きな値は指定できない。- 戻り値:
- 指定されたヒットのキャレットに対して右(下)方向に位置する次のキャレットのヒット、または
null
。
-
getVisualOtherHit
public TextHitInfo getVisualOtherHit(TextHitInfo hit)
指定されたヒットのキャレットの反対側のヒットを返します。- パラメータ:
hit
-指定されたヒット- 戻り値:
- 指定されたヒットのキャレットの反対側にあるヒット。
-
getCaretShape
public Shape getCaretShape(TextHitInfo hit, Rectangle2D bounds)
指定された境界内の指定されたヒットにあるキャレットを表すShape
を返します。- パラメータ:
hit
- キャレットを生成するヒットbounds
- キャレットの生成で使用するTextLayout
の境界。 境界はベースラインを基準にした座標で表される。- 戻り値:
- キャレットを表す
Shape
。 返される形状は標準の座標で表される。
-
getCaretShape
public Shape getCaretShape(TextHitInfo hit)
このTextLayout
の自然境界内の指定されたヒットにあるキャレットを表すShape
を返します。- パラメータ:
hit
- キャレットを生成するヒット- 戻り値:
- キャレットを表す
Shape
。 返される形状は標準の座標で表される。
-
getCharacterLevel
public byte getCharacterLevel(int index)
index
にある文字のレベルを返します。 インデックス -1およびcharacterCount
には、このTextLayout
の基底レベルが割り当てられます。- パラメータ:
index
- レベルを取得する文字のインデックス- 戻り値:
- 指定されたインデックスにある文字のレベル。
-
getCaretShapes
public Shape[] getCaretShapes(int offset, Rectangle2D bounds, TextLayout.CaretPolicy policy)
強いキャレットと弱いキャレットに対応する2つの輪郭線を返します。- パラメータ:
offset
- このTextLayout
の中にあるオフセット:bounds
- キャレットを拡張する境界。 境界はベースラインを基準にした座標で表される。policy
- 指定されたCaretPolicy
- 戻り値:
- 2つのパスの配列。 要素0は強いキャレット。 2つのキャレットがある場合、要素1は弱いキャレット。そうでない場合、要素1は
null
。 返される形状は標準の座標で表される。
-
getCaretShapes
public Shape[] getCaretShapes(int offset, Rectangle2D bounds)
強いキャレットと弱いキャレットに対応する2つの輪郭線を返します。 このメソッドは、getCaretShapes
の簡易オーバーロードであり、デフォルトのキャレット・ポリシーを使用します。- パラメータ:
offset
- このTextLayout
の中にあるオフセット:bounds
- キャレットを拡張する境界。 これはベースラインを基準にした座標で表されます。- 戻り値:
DEFAULT_CARET_POLICY
での定義による、強いキャレットと弱いキャレットに対応する2つのパス。 これらは標準の座標で表される。
-
getCaretShapes
public Shape[] getCaretShapes(int offset)
強いキャレットと弱いキャレットに対応する2つの輪郭線を返します。 このメソッドは、getCaretShapes
の簡易オーバーロードであり、デフォルトのキャレット・ポリシーおよびこのTextLayout
オブジェクトの自然境界を使用します。- パラメータ:
offset
- このTextLayout
の中にあるオフセット:- 戻り値:
DEFAULT_CARET_POLICY
での定義による、強いキャレットと弱いキャレットに対応する2つのパス。 これらは標準の座標で表される。
-
getLogicalRangesForVisualSelection
public int[] getLogicalRangesForVisualSelection(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint)
視覚的な選択範囲に対応するテキストの論理的な範囲を返します。- パラメータ:
firstEndpoint
- 視覚的な範囲の一方の端点secondEndpoint
- 視覚的な範囲のもう一方の端点。 この端点はfirstEndpoint
より小さくても可。- 戻り値:
- 選択された範囲の開始/リミットのペアを表す整数の配列。
- 関連項目:
getVisualHighlightShape(TextHitInfo, TextHitInfo, Rectangle2D)
-
getVisualHighlightShape
public Shape getVisualHighlightShape(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint, Rectangle2D bounds)
指定された範囲の視覚的な選択範囲を囲む輪郭線を、bounds
まで拡張して返します。選択範囲に、左端(上端)の位置が含まれる場合、その選択範囲は
bounds
の左(上)まで拡張されます。 その選択範囲に右端(下端)の位置が含まれる場合、選択範囲は境界の右(下)まで拡張されます。 選択範囲の高さ(垂直線上の幅)は、常にbounds
まで拡張されます。選択範囲は常に連続していますが、混合方向テキストの行の場合、論理的に選択されたテキストは不連続になることがあります。 選択されたテキストの論理的な範囲は、
getLogicalRangesForVisualSelection
を使用して取得できます。 たとえば、「ABCdef」というテキストを例に考えてみます。大文字は右から左のテキストを示し、右から左の行で描画され、視覚的な選択範囲は0L (「A」のリーディング・エッジ)から3T (「d」のトレーリング・エッジ)です。 このテキストは次のように表示されます。下線付き太字の領域は選択範囲を示しています。
defCBA
論理的な選択範囲は、0から3、4から6 (ABC、ef)です。なぜなら、視覚的に連続したテキストは論理的には不連続だからです。 また、レイアウトの右端の位置(「A」の右側)が選択されているので、選択範囲は境界の右まで拡張されます。- パラメータ:
firstEndpoint
- 視覚的な選択範囲の一方の端点secondEndpoint
- 視覚的な選択範囲のもう一方の端点bounds
- 選択範囲が拡張される境界の矩形。 これはベースラインを基準にした座標で表されます。- 戻り値:
- 選択範囲を囲む
Shape
。 これは標準の座標で表される。 - 関連項目:
getLogicalRangesForVisualSelection(TextHitInfo, TextHitInfo)
,getLogicalHighlightShape(int, int, Rectangle2D)
-
getVisualHighlightShape
public Shape getVisualHighlightShape(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint)
指定された範囲の視覚的な選択範囲を囲むShape
を、境界まで拡張して返します。 このメソッドは、getVisualHighlightShape
の簡易オーバーロードであり、このTextLayout
の自然境界を使用します。- パラメータ:
firstEndpoint
- 視覚的な選択範囲の一方の端点secondEndpoint
- 視覚的な選択範囲のもう一方の端点- 戻り値:
- 選択範囲を囲む
Shape
。 これは標準の座標で表される。
-
getLogicalHighlightShape
public Shape getLogicalHighlightShape(int firstEndpoint, int secondEndpoint, Rectangle2D bounds)
指定された範囲の論理的な選択範囲を囲むShape
を、指定されたbounds
まで拡張して返します。選択範囲に最初の論理文字が含まれている場合、その選択範囲はこの
TextLayout
の先頭の前のbounds
の部分まで拡張されます。 選択範囲に最後の論理文字が含まれている場合、その選択範囲はこのTextLayout
の最後のあとのbounds
の部分まで拡張されます。 選択範囲の高さ(垂直線上の幅)は、常にbounds
まで拡張されます。混合方向テキストの行の場合、選択範囲が不連続になることがあります。 先頭とリミットの間の論理的な範囲に位置する文字だけが選択されているように見えます。 たとえば、「ABCdef」というテキストを例に考えてみます。大文字は右から左のテキストを示し、右から左の行で描画され、論理的な選択範囲は0から4 (ABCd)です。 テキストは次のように表示されます。選択範囲は太字で表示され、拡張部分は下線で表示されます。
defCBA
選択範囲は不連続です。その理由は、選択された文字が視覚的に不連続だからです。 また、選択範囲に最初の論理文字(A)が含まれるため、選択範囲はレイアウトの先頭より前のbounds
の部分まで拡張されます。この場合(右から左の行)は、bounds
の右の部分です。- パラメータ:
firstEndpoint
- 選択する文字の範囲の端点secondEndpoint
- 選択する文字の範囲のもう一方の端点。firstEndpoint
より小さくても可。 この範囲には、min(firstEndpoint, secondEndpoint)の文字は含まれるが、max(firstEndpoint, secondEndpoint)の文字は除外される。bounds
- 選択範囲が拡張される境界の矩形。 これはベースラインを基準にした座標で表されます。- 戻り値:
- 選択範囲を囲む領域。 これは標準の座標で表される。
- 関連項目:
getVisualHighlightShape(TextHitInfo, TextHitInfo, Rectangle2D)
-
getLogicalHighlightShape
public Shape getLogicalHighlightShape(int firstEndpoint, int secondEndpoint)
指定された範囲の論理的な選択範囲を囲むShape
を、このTextLayout
の自然境界まで拡張して返します。 このメソッドは、getLogicalHighlightShape
の簡易オーバーロードであり、このTextLayout
の自然境界を使用します。- パラメータ:
firstEndpoint
- 選択する文字の範囲の端点secondEndpoint
- 選択する文字の範囲のもう一方の端点。firstEndpoint
より小さくても可。 この範囲には、min(firstEndpoint, secondEndpoint)の文字は含まれるが、max(firstEndpoint, secondEndpoint)の文字は除外される。- 戻り値:
- 選択範囲を囲む
Shape
。 これは標準の座標で表される。
-
getBlackBoxBounds
public Shape getBlackBoxBounds(int firstEndpoint, int secondEndpoint)
指定された範囲にあるすべての文字のブラック・ボックス境界を返します。 ブラック・ボックス境界とは、開始とリミットの間のすべての文字に対応するすべてのグリフのバウンディング・ボックスの結合で構成される領域です。 この領域は不連続になる場合があります。- パラメータ:
firstEndpoint
- 文字の範囲の一方の端点secondEndpoint
- 文字の範囲のもう一方の端点。firstEndpoint
より小さくても可。- 戻り値:
- ブラック・ボックス境界を囲む
Shape
。 これは標準の座標で表される。
-
hitTestChar
public TextHitInfo hitTestChar(float x, float y, Rectangle2D bounds)
指定された点に対応するTextHitInfo
を返します。TextLayout
の境界の外側の座標は、行の文字の位置に関係なく、最初の論理文字のリーディング・エッジ、または最後の論理文字のトレーリング・エッジのどちらか適切な方のヒットに対応します。 ベースラインに沿った方向だけが、この評価に使用されます。- パラメータ:
x
- このTextLayout
の原点からのxオフセット。 これは標準の座標で表される。y
- このTextLayout
の原点からのyオフセット。 これは標準の座標で表される。bounds
- このTextLayout
の境界。 これはベースラインを基準にした座標で表されます。- 戻り値:
- 指定された点の下の文字およびエッジ(リーディング・エッジまたはトレーリング・エッジ)を記述するヒット。
-
hitTestChar
public TextHitInfo hitTestChar(float x, float y)
指定された点に対応するTextHitInfo
を返します。 このメソッドは、hitTestChar
の簡易オーバーロードであり、このTextLayout
の自然境界を使用します。- パラメータ:
x
- このTextLayout
の原点からのxオフセット。 これは標準の座標で表される。y
- このTextLayout
の原点からのyオフセット。 これは標準の座標で表される。- 戻り値:
- 指定された点の下の文字およびエッジ(リーディング・エッジまたはトレーリング・エッジ)を記述するヒット。
-
equals
public boolean equals(TextLayout rhs)
2つのレイアウトが等しい場合にtrue
を返します。equals(Object)
の一般的な契約をしています。- パラメータ:
rhs
- このTextLayout
と比較するTextLayout
- 戻り値:
- 指定された
TextLayout
がこのTextLayout
と等しい場合はtrue
。
-
toString
public String toString()
このTextLayout
のデバッグ情報を返します。
-
draw
public void draw(Graphics2D g2, float x, float y)
指定されたGraphics2D
コンテキストの指定された位置にこのTextLayout
を描画します。 レイアウトの原点はx, yです。 描画は、この位置のgetBounds()
内の任意の点に接します。g2
は変更されません。 テキストはベースラインのパスに沿って描画されます。- パラメータ:
g2
- レイアウトの描画先のGraphics2D
コンテキストx
- このTextLayout
の原点のX座標y
- このTextLayout
の原点のY座標- 関連項目:
getBounds()
-
getOutline
public Shape getOutline(AffineTransform tx)
このTextLayout
の輪郭を表すShape
を返します。- パラメータ:
tx
- このTextLayout
の輪郭に適用するオプションのAffineTransform
。- 戻り値:
- この
TextLayout
の輪郭であるShape
。 これは標準の座標で表される。
-
getLayoutPath
public LayoutPath getLayoutPath()
LayoutPathを返します。レイアウト・パスがデフォルトのパスである場合は(xが有効幅、yがオフセットにマップされます)、nullを返します。- 戻り値:
- レイアウト・パス
- 導入されたバージョン:
- 1.6
-
hitToPoint
public void hitToPoint(TextHitInfo hit, Point2D point)
ヒットを標準座標のポイントに変換します。 このポイントは、文字のベースライン上にあり、場合に応じて文字のリーディング・エッジまたはトレーリング・エッジに当たります。 このヒットで表される文字の横でパスが分割されている場合、ポイントは文字に隣接します。- パラメータ:
hit
- チェック対象のヒット。 これはTextLayout上の有効なヒットでなければならない。point
- 返されるポイント。 ポイントは標準の座標で表される。- 例外:
IllegalArgumentException
- ヒットがTextLayoutに対して有効でない場合。NullPointerException
- hitまたはpointがnullの場合。- 導入されたバージョン:
- 1.6
-
-