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 tranlated 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(AttributedCharacterIterator text,           FontRenderContext frc)書式付きテキストのイテレータから  TextLayoutを構築します。 | 
| TextLayout(String string,           Font font,           FontRenderContext frc) | 
| TextLayout(String string,           Map<? extends AttributedCharacterIterator.Attribute,?> attributes,           FontRenderContext frc)Stringおよび属性セットからTextLayoutを構築します。 | 
| 修飾子と型 | メソッドと説明 | 
|---|---|
| protected Object | clone()この  TextLayoutのコピーを作成します。 | 
| void | draw(Graphics2D g2,     float x,     float y)指定された  Graphics2Dコンテキストの指定された位置にこのTextLayoutを描画します。 | 
| boolean | equals(Object obj)指定された  ObjectがTextLayoutオブジェクトで、指定されたObjectがこのTextLayoutと等しい場合にtrueを返します。 | 
| 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)このレイアウトを行揃えします。 | 
| int | hashCode()この  TextLayoutのハッシュコードを返します。 | 
| 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のデバッグ情報を返します。 | 
public static final TextLayout.CaretPolicy DEFAULT_CARET_POLICY
CaretPolicy は、ポリシーがクライアントによって指定されていない場合に使用されます。このポリシーでは、方向が行の方向と同じ文字のヒットが、反対方向の文字のヒットより強くなります。文字の方向が同じ場合、文字のリーディングエッジのヒットの方が、文字のトレーリングエッジのヒットより強くなります。public TextLayout(String string, Font font, FontRenderContext frc)
String および Font から TextLayout を構築します。すべてのテキストは、指定された Font を使用して書式が設定されます。
 
String には、1 段落のテキストを指定する必要があります。双方向アルゴリズムでは、段落全体が要求されるからです。
string - 表示するテキストfont - テキストの書式を設定するために使用される Fontfrc - テキストを正確に測定するために必要なグラフィックスデバイスに関する情報を格納する。テキスト測定は、デバイスの解像度によりわずかに異なることがあり、アンチエイリアスなどの属性によっても異なることがある。このパラメータは、TextLayout とユーザー空間の間の変換は指定しない。public TextLayout(String string, Map<? extends AttributedCharacterIterator.Attribute,?> attributes, FontRenderContext frc)
String および属性セットから TextLayout を構築します。
 すべてのテキストは、指定された属性により書式が設定されます。
string には、1 段落のテキストを指定する必要があります。双方向アルゴリズムでは、段落全体が要求されるからです。
string - 表示するテキストattributes - テキストの書式を設定するために使用される属性frc - テキストを正確に測定するために必要なグラフィックスデバイスに関する情報を格納する。テキスト測定は、デバイスの解像度によりわずかに異なることがあり、アンチエイリアスなどの属性によっても異なることがある。このパラメータは、TextLayout とユーザー空間の間の変換は指定しない。public TextLayout(AttributedCharacterIterator text, FontRenderContext frc)
TextLayout を構築します。
 イテレータは、1 段落のテキストを指定する必要があります。双方向アルゴリズムでは、段落全体が要求されるからです。
text - 表示する書式付きテキストfrc - テキストを正確に測定するために必要なグラフィックスデバイスに関する情報を格納する。テキスト測定は、デバイスの解像度によりわずかに異なることがあり、アンチエイリアスなどの属性によっても異なることがある。このパラメータは、TextLayout とユーザー空間の間の変換は指定しない。protected Object clone()
TextLayout のコピーを作成します。public TextLayout getJustifiedLayout(float justificationWidth)
TextLayout のコピーを作成します。
 
この TextLayout がすでに行揃えされている場合は例外がスローされます。この TextLayout オブジェクトの行揃え比率がゼロの場合、この TextLayout と同一の TextLayout が返されます。
justificationWidth - 行揃えするために使用する幅。最良の結果を得るためには、行の現在の有効幅との違いは小さい方がよい。TextLayout。Error - このレイアウトがすでに行揃えされている場合、Error がスローされる。protected void handleJustify(float justificationWidth)
コードによっては、レイアウトの不変性に依存する場合があります。サブクラスはこのメソッドを直接呼び出すのではなく、getJustifiedLayout を呼び出した方がよいでしょう。 getJustifiedLayout は、このレイアウトの複製に対してこのメソッドを呼び出すので、元のレイアウトは保存されます。
justificationWidth - 行揃えするために使用する幅。最良の結果を得るためには、行の現在の有効幅との違いは小さい方がよい。getJustifiedLayout(float)public byte getBaseline()
TextLayout のベースラインを返します。ベースラインは、Font で定義される値 (roman、centered、hanging) の 1 つです。アセントおよびディセントは、このベースラインを基準にします。baselineOffsets もこのベースラインを基準にします。TextLayout のベースライン。getBaselineOffsets()、Fontpublic float[] getBaselineOffsets()
TextLayout で使用されるベースラインのオフセット配列を返します。
 
この配列は、Font で定義される値 (roman、centered、hanging) の 1 つでインデックス付けされます。これらの値は、この TextLayout オブジェクトのベースラインを基準にします。そのため、getBaselineOffsets[getBaseline()] == 0 となります。オフセットを TextLayout オブジェクトのベースラインの位置に加算すると、新しいベースラインの位置を取得できます。
TextLayout に使用されるベースラインを格納するオフセット配列。getBaseline()、Fontpublic float getAdvance()
TextLayout の有効幅を返します。有効幅は、原点から右端 (下端) の文字の有効幅までの距離です。これはベースラインを基準にした座標で表されます。TextLayout の有効幅。public float getVisibleAdvance()
TextLayout の有効幅を返します。末尾の空白は含まれません。これはベースラインを基準にした座標で表されます。TextLayout の末尾の空白を除いた有効幅。getAdvance()public float getAscent()
TextLayout のアセントを返します。アセントは、TextLayout の上 (右) からベースラインまでの距離です。この距離は常に正の値またはゼロです。アセントは、上付きテキストを格納するために十分な大きさであり、各グリフのアセント、オフセット、およびベースラインの合計の最大値です。これは、TextLayout 内のすべてのテキストのベースラインからの最大アセントです。ベースラインを基準にした座標で表されます。TextLayout のアセント。public float getDescent()
TextLayout のディセントを返します。ディセントは、ベースラインから TextLayout の下 (左) までの距離です。この距離は常に正の値またはゼロです。ディセントは、下付きテキストを格納するために十分な大きさであり、各グリフのディセント、オフセット、およびベースラインの合計の最大値です。これは、TextLayout 内のすべてのテキストのベースラインからの最大ディセントです。ベースラインを基準にした座標で表されます。TextLayout のディセント。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 のリーディング。public Rectangle2D getBounds()
TextLayout の境界を返します。境界は標準の座標で表されます。
ラスター化のため、TextLayout によって描画されたピクセルがすべてこの境界内に収まるとは限りません。
TextLayout のアセント、ディセント、原点、または有効幅と完全には一致しない場合があります。TextLayout の境界である Rectangle2D。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。GlyphVector.getPixelBounds(java.awt.font.FontRenderContext, float, float)public boolean isLeftToRight()
TextLayout のベースとなる方向が左から右の場合に true を返し、右から左の場合に false を返します。TextLayout には、左から右 (LTR) または右から左 (RTL) のどちらかのベースとなる方向があります。ベースとなる方向は、行のテキストの実際の方向 (LTR、RTL、または混合) には依存しません。左から右のレイアウトは、デフォルトでは左端揃えになります。レイアウトがタブ付きの行に置かれた場合、タブは左から右になるので、論理的に連続するレイアウトは左から右に配置されます。RTL レイアウトの場合はこの反対です。この場合、デフォルトでは右端揃え、タブは右から左になります。TextLayout のベースとなる方向が左から右の場合は true、そうでない場合は false。public boolean isVertical()
TextLayout が垂直の場合に true を返します。TextLayout が垂直の場合は true、そうでない場合は false。public int getCharacterCount()
TextLayout が表す文字数を返します。TextLayout の文字数。public float[] getCaretInfo(TextHitInfo hit, Rectangle2D bounds)
hit に対応するキャレットについての情報を返します。配列の最初の要素は、キャレットとベースラインの交点です。ベースラインに沿った距離で表されます。配列の 2 番目の要素は、キャレットの逆傾き (ラン/ライズ) です。その点でのベースラインを基準にして測定されます。
 
このメソッドは、情報のためだけに使用されます。キャレットを表示するには、getCaretShapes を使用してください。
hit - 次にある文字のヒット: TextLayoutbounds - キャレット情報が構築される境界。境界はベースラインを基準にした座標で表される。getCaretShapes(int, Rectangle2D, TextLayout.CaretPolicy), Font.getItalicAngle()public float[] getCaretInfo(TextHitInfo hit)
hit に対応するキャレットについての情報を返します。このメソッドは、getCaretInfo の簡易オーバーロードであり、この TextLayout の自然境界を使用します。hit - 次にある文字のヒット:  TextLayoutpublic TextHitInfo getNextRightHit(TextHitInfo hit)
null を返します。ヒット文字のインデックスが境界内にない場合は、IllegalArgumentException がスローされます。hit - このレイアウトの文字のヒットnull。public TextHitInfo getNextRightHit(int offset, TextLayout.CaretPolicy policy)
null を返します。ヒットは、指定されたポリシーによる、指定されたオフセット位置の強いキャレットの右側にあります。返されるヒットは、指定されたポリシーによる、2 つのヒットの強い方です。offset - この TextLayout の挿入オフセット。0 より小さい値やこの TextLayout オブジェクトの文字カウントより大きな値は指定できない。policy - 強いキャレットを選択するために使用されるポリシーnull。public TextHitInfo getNextRightHit(int offset)
null を返します。ヒットは、デフォルトのポリシーによる、指定されたオフセット位置の強いキャレットの右にあります。返されるヒットは、デフォルトのポリシーによる、2 つのヒットの強い方です。offset - この TextLayout の挿入オフセット。0 より小さい値やこの TextLayout オブジェクトの文字カウントより大きな値は指定できない。null。public TextHitInfo getNextLeftHit(TextHitInfo hit)
null を返します。ヒット文字のインデックスが境界内にない場合は、IllegalArgumentException がスローされます。hit - この TextLayout の文字のヒット。null。public TextHitInfo getNextLeftHit(int offset, TextLayout.CaretPolicy policy)
null を返します。ヒットは、指定されたポリシーによる、指定されたオフセット位置の強いキャレットの左にあります。返されるヒットは、指定されたポリシーによる、2 つのヒットの強い方です。offset - この TextLayout の挿入オフセット。0 より小さい値やこの TextLayout オブジェクトの文字カウントより大きな値は指定できない。policy - 強いキャレットを選択するために使用されるポリシーnull。public TextHitInfo getNextLeftHit(int offset)
null を返します。ヒットは、デフォルトのポリシーによる、指定されたオフセット位置の強いキャレットの左です。返されるヒットは、デフォルトのポリシーによる、2 つのヒットの強い方です。offset - この TextLayout の挿入オフセット。0 より小さい値やこの TextLayout オブジェクトの文字カウントより大きな値は指定できない。null。public TextHitInfo getVisualOtherHit(TextHitInfo hit)
hit -指定されたヒットpublic Shape getCaretShape(TextHitInfo hit, Rectangle2D bounds)
Shape を返します。hit - キャレットを生成するヒットbounds - キャレットの生成で使用する TextLayout の境界。境界はベースラインを基準にした座標で表される。Shape。返される形状は標準の座標で表される。public Shape getCaretShape(TextHitInfo hit)
TextLayout の自然境界内の指定されたヒットにあるキャレットを表す Shape を返します。hit - キャレットを生成するヒットShape。返される形状は標準の座標で表される。public byte getCharacterLevel(int index)
index にある文字のレベルを返します。インデックス -1 および characterCount には、この TextLayout の基底レベルが割り当てられます。index - レベルを取得する文字のインデックスpublic Shape[] getCaretShapes(int offset, Rectangle2D bounds, TextLayout.CaretPolicy policy)
offset - 次の中にあるオフセット: TextLayoutbounds - キャレットを拡張する境界。境界はベースラインを基準にした座標で表される。policy - 指定された CaretPolicynull。返される形状は標準の座標で表される。public Shape[] getCaretShapes(int offset, Rectangle2D bounds)
getCaretShapes の簡易オーバーロードであり、デフォルトのキャレットポリシーを使用します。offset - 次の中にあるオフセット: TextLayoutbounds - キャレットを拡張する境界。これはベースラインを基準にした座標で表されます。DEFAULT_CARET_POLICY での定義による、強いキャレットと弱いキャレットに対応する 2 つのパス。これらは標準の座標で表される。public Shape[] getCaretShapes(int offset)
getCaretShapes の簡易オーバーロードであり、デフォルトのキャレットポリシーおよびこの TextLayout オブジェクトの自然境界を使用します。offset - 次の中にあるオフセット:  TextLayoutDEFAULT_CARET_POLICY での定義による、強いキャレットと弱いキャレットに対応する 2 つのパス。これらは標準の座標で表される。public int[] getLogicalRangesForVisualSelection(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint)
firstEndpoint - 視覚的な範囲の一方の端点secondEndpoint - 視覚的な範囲のもう一方の端点。この端点は firstEndpoint より小さくても可。getVisualHighlightShape(TextHitInfo, TextHitInfo, Rectangle2D)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)public Shape getVisualHighlightShape(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint)
Shape を、境界まで拡張して返します。このメソッドは、getVisualHighlightShape の簡易オーバーロードであり、この TextLayout の自然境界を使用します。firstEndpoint - 視覚的な選択範囲の一方の端点secondEndpoint - 視覚的な選択範囲のもう一方の端点Shape。これは標準の座標で表される。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)public Shape getLogicalHighlightShape(int firstEndpoint, int secondEndpoint)
Shape を、この TextLayout の自然境界まで拡張して返します。このメソッドは、getLogicalHighlightShape の簡易オーバーロードであり、この TextLayout の自然境界を使用します。firstEndpoint - 選択する文字の範囲の端点secondEndpoint - 選択する文字の範囲のもう一方の端点。firstEndpoint より小さくても可。この範囲には、min(firstEndpoint, secondEndpoint) の文字は含まれるが、max(firstEndpoint, secondEndpoint) の文字は除外される。Shape。これは標準の座標で表される。public Shape getBlackBoxBounds(int firstEndpoint, int secondEndpoint)
firstEndpoint - 文字の範囲の一方の端点secondEndpoint - 文字の範囲のもう一方の端点。firstEndpoint より小さくても可。Shape。これは標準の座標で表される。public TextHitInfo hitTestChar(float x, float y, Rectangle2D bounds)
TextHitInfo を返します。TextLayout の境界の外側の座標は、行の文字の位置に関係なく、最初の論理文字のリーディングエッジ、または最後の論理文字のトレーリングエッジのどちらか適切な方のヒットに対応します。ベースラインに沿った方向だけが、この評価に使用されます。x - この TextLayout の原点からの x オフセット。これは標準の座標で表される。y - この TextLayout の原点からの y オフセット。これは標準の座標で表される。bounds - この TextLayout の境界。これはベースラインを基準にした座標で表されます。public TextHitInfo hitTestChar(float x, float y)
TextHitInfo を返します。このメソッドは、hitTestChar の簡易オーバーロードであり、この TextLayout の自然境界を使用します。x - この TextLayout の原点からの x オフセット。これは標準の座標で表される。y - この TextLayout の原点からの y オフセット。これは標準の座標で表される。public int hashCode()
TextLayout のハッシュコードを返します。hashCode、クラス: ObjectTextLayout のハッシュコード。Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)public boolean equals(Object obj)
Object が TextLayout オブジェクトで、指定された Object がこの TextLayout と等しい場合に true を返します。equals、クラス: Objectobj - 等しいかどうかが判定される ObjectTextLayout がこの Object の場合は true、それ以外の場合は false。Object.hashCode()、HashMappublic boolean equals(TextLayout rhs)
true を返します。2 つのレイアウトは、それらが同じ順序で同じグリフベクトルを格納している場合に等しくなります。rhs - この TextLayout と比較する TextLayoutTextLayout がこの TextLayout と等しい場合は true。public String toString()
TextLayout のデバッグ情報を返します。public void draw(Graphics2D g2, float x, float y)
Graphics2D コンテキストの指定された位置にこの TextLayout を描画します。レイアウトの原点は x, y です。描画は、この位置の getBounds() 内の任意の点に接します。g2 は変更されません。テキストはベースラインのパスに沿って描画されます。g2 - レイアウトの描画先の Graphics2D コンテキストx - この TextLayout の原点の X 座標y - この TextLayout の原点の Y 座標getBounds()public Shape getOutline(AffineTransform tx)
TextLayout の輪郭を表す Shape を返します。tx - この TextLayout の輪郭に適用するオプションの AffineTransform。TextLayout の輪郭である Shape。これは標準の座標で表される。public LayoutPath getLayoutPath()
public void hitToPoint(TextHitInfo hit, Point2D point)
hit - チェック対象のヒット。これは TextLayout 上の有効なヒットでなければならない。point - 返されるポイント。ポイントは標準の座標で表される。IllegalArgumentException - ヒットが TextLayout に対して有効でない場合。NullPointerException - hit または point が null の場合。 バグまたは機能を送信 
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.