public abstract class FontMetrics extends Object implements Serializable
FontMetrics
クラスは、特定の画面上での特定のフォントの描画に関する情報をカプセル化するフォントメトリックスオブジェクトを定義します。
サブクラスについての注意:これらのメソッドの多くは相互に再帰的な閉じたループを形成するため、サブクラスを使用するときは無限の再帰を避けるために、このようなループの各々に少なくとも 1 つのメソッドを実装するように留意する必要があります。特に次に挙げるものは、正確さを保証し無限の再帰を避けるために、オーバーライドが推奨される最低限のメソッドです (同様のメソッドは他にもあります)。
このクラスの各メソッドでの実装は効率的ではないため、通常は、より効率的なツールキット特有の実装でオーバーライドされます。
アプリケーションが座標 (x, y) に文字を配置するように要求すると、文字はその参照ポイント (添付イメージでドットとして表示されている) がその位置に置かれるように配置されます。 参照ポイントは、文字のベースラインと呼ばれる水平ラインを指定します。通常の出力では、文字のベースラインの位置揃えをしてください。
さらに、フォントのすべての文字はアセント、ディセント、および有効幅を持ちます。アセントは、ベースラインから文字の上端までの量のことです。ディセントは、ベースラインから文字の下端までの量のことです。有効幅は、AWT による次の文字の配置位置を示します。
文字配列または文字列も、アセント、ディセント、および有効幅を持つことができます。配列のアセントは、配列内の文字の最大アセントです。ディセントは配列内の文字の最大ディセントです。有効幅は、配列内の各文字の有効幅の合計です。 String
の有効幅は、String
のベースラインに沿った距離です。 この距離は、String
のセンタリングまたは、右揃えのために使用される幅です。
文字の幅はそのコンテキストによりばらつきがあるため、String
の有効幅は必ずしも単独で測定した文字の有効幅の合計ではありません。たとえば、アラビア語のテキストの場合、ほかの文字と結合するために文字の形が変わります。 ほかのスクリプトの場合でも、特定の文字シーケンスは合字という単一形状で表現されます。個々に文字をカウントするときには、このような変換はカウントされません。
フォントメトリックスはベースラインを基準にしています。つまり、通常は、フォントに適用される回転には依存しません (可能なグリッドヒンティング効果を法とする)。 Font
を参照してください。
修飾子 | コンストラクタと説明 |
---|---|
protected |
FontMetrics(Font font)
指定された
Font およびその Font 内の特定の文字グリフに関する高さと幅の情報を見つけるための新しい FontMetrics オブジェクトを作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
int |
bytesWidth(byte[] data, int off, int len)
指定されたバイトの配列をこの
Font で表示するための有効幅の合計を返します。 |
int |
charsWidth(char[] data, int off, int len)
指定された文字の配列をこの
Font で表示するための有効幅の合計を返します。 |
int |
charWidth(char ch)
この
Font 内の指定された文字の有効幅を返します。 |
int |
charWidth(int codePoint)
この
Font 内の指定された文字の有効幅を返します。 |
int |
getAscent()
この
FontMetrics オブジェクトによって記述された Font のフォントアセントを判定します。 |
int |
getDescent()
この
FontMetrics オブジェクトによって記述された Font のフォントディセントを判定します。 |
Font |
getFont()
この
FontMetrics オブジェクトによって記述された Font を取得します。 |
FontRenderContext |
getFontRenderContext()
テキストを測定するためにこの
FontMetrics オブジェクトによって使用される FontRenderContext を取得します。 |
int |
getHeight()
このフォントのテキスト 1 行の標準の高さを取得します。
|
int |
getLeading()
この
FontMetrics オブジェクトによって記述された Font の標準レディングを判定します。 |
LineMetrics |
getLineMetrics(char[] chars, int beginIndex, int limit, Graphics context)
指定された
Graphics コンテキスト内の指定された文字配列の LineMetrics オブジェクトを返します。 |
LineMetrics |
getLineMetrics(CharacterIterator ci, int beginIndex, int limit, Graphics context)
|
LineMetrics |
getLineMetrics(String str, Graphics context)
|
LineMetrics |
getLineMetrics(String str, int beginIndex, int limit, Graphics context)
|
int |
getMaxAdvance()
この
Font 内の任意の文字の最大有効幅を取得します。 |
int |
getMaxAscent()
この
FontMetrics オブジェクトによって記述された Font の最大アセントを判定します。 |
Rectangle2D |
getMaxCharBounds(Graphics context)
指定された
Graphics コンテキスト内の最大の境界を持つ文字の境界を返します。 |
int |
getMaxDecent()
非推奨。
JDK Version 1.1.1 以降は、
getMaxDescent() に置き換えられています。 |
int |
getMaxDescent()
この
FontMetrics オブジェクトによって記述された Font の最大ディセントを判定します。 |
Rectangle2D |
getStringBounds(char[] chars, int beginIndex, int limit, Graphics context)
指定された
Graphics コンテキスト内の指定された文字の配列の境界を返します。 |
Rectangle2D |
getStringBounds(CharacterIterator ci, int beginIndex, int limit, Graphics context)
指定された
Graphics コンテキスト内の指定された CharacterIterator でインデックスが付けられた文字の境界を返します。 |
Rectangle2D |
getStringBounds(String str, Graphics context)
指定された
Graphics コンテキスト内の指定された String の境界を返します。 |
Rectangle2D |
getStringBounds(String str, int beginIndex, int limit, Graphics context)
指定された
Graphics コンテキスト内の指定された String の境界を返します。 |
int[] |
getWidths()
Font 内の最初の 256 文字の有効幅を取得します。 |
boolean |
hasUniformLineMetrics()
Font に均一のラインメトリックスが含まれているかどうかを確認します。 |
int |
stringWidth(String str)
指定された
String をこの Font で表示するための有効幅の合計を返します。 |
String |
toString()
この
FontMetrics オブジェクトの値の表現を String として返します。 |
public Font getFont()
FontMetrics
オブジェクトによって記述された Font
を取得します。FontMetrics
オブジェクトによって記述された Font
。public FontRenderContext getFontRenderContext()
FontMetrics
オブジェクトによって使用される FontRenderContext
を取得します。
Graphics
パラメータを取るこのクラスのメソッドは、この FontRenderContext
ではなく、その Graphics
オブジェクトの FontRenderContext
を使用してテキストを測定します。
FontMetrics
オブジェクトが使用する FontRenderContext
。public int getLeading()
FontMetrics
オブジェクトによって記述された Font
の標準レディングを判定します。標準レディング (行間の間隔) は、テキストのある行のディセントとその次の行のアセントの間で確保される論理的な量です。高さのメトリックスは、この余分な空間を含めて計算されます。Font
の標準レディング。getHeight()
, getAscent()
, getDescent()
public int getAscent()
FontMetrics
オブジェクトによって記述された Font
のフォントアセントを判定します。 フォントアセントは、フォントのベースラインからほとんどの英数字の上端までの距離です。 Font
の文字によっては、フォントのアセントラインからはみ出す場合があります。Font
のフォントアセント。getMaxAscent()
public int getDescent()
FontMetrics
オブジェクトによって記述された Font
のフォントディセントを判定します。 フォントディセントは、フォントのベースラインからディセンダを持つほとんどの英数字の下端までの距離です。 Font
の文字によっては、フォントのディセントラインからはみ出す場合があります。Font
のフォントディセント。getMaxDescent()
public int getHeight()
getLeading()
, getAscent()
, getDescent()
public int getMaxAscent()
FontMetrics
オブジェクトによって記述された Font
の最大アセントを判定します。文字がこの高さからはみ出すことはありません。Font
内の任意の文字の最大アセント。getAscent()
public int getMaxDescent()
FontMetrics
オブジェクトによって記述された Font
の最大ディセントを判定します。文字がこの高さからはみ出すことはありません。Font
内の任意の文字の最大ディセント。getDescent()
@Deprecated public int getMaxDecent()
getMaxDescent()
に置き換えられています。Font
内の任意の文字の最大ディセント。getMaxDescent()
public int getMaxAdvance()
Font
内の任意の文字の最大有効幅を取得します。有効幅は、文字列のベースラインの左端の点から右端の点までの距離です。String
の有効幅は、必ずしも各文字の有効幅の合計ではありません。Font
の任意の文字の最大有効幅。最大有効幅がわからない場合は -1
。public int charWidth(int codePoint)
Font
内の指定された文字の有効幅を返します。有効幅は、文字列のベースラインの左端の点から右端の点までの距離です。String
の有効幅は、必ずしも各文字の有効幅の合計ではありません。
このメソッドは、指定された文字が有効な Unicode コードポイントであることを検証しません。呼び出し側で、必要に応じて Character.isValidCodePoint
を使用して、文字値を検証する必要があります。
codePoint
- 測定する文字 (Unicode コードポイント)FontMetrics
オブジェクトによって記述された Font
内の指定された文字の有効幅。charsWidth(char[], int, int)
, stringWidth(String)
public int charWidth(char ch)
Font
内の指定された文字の有効幅を返します。有効幅は、文字列のベースラインの左端の点から右端の点までの距離です。String
の有効幅は、必ずしも各文字の有効幅の合計ではありません。
注: このメソッドは、補助文字を処理できません。補助文字を含むすべての Unicode 文字をサポートするには、charWidth(int)
メソッドを使用してください。
ch
- 測定対象の文字FontMetrics
オブジェクトによって記述された Font
内の指定された文字の有効幅。charsWidth(char[], int, int)
, stringWidth(String)
public int stringWidth(String str)
String
をこの Font
で表示するための有効幅の合計を返します。有効幅は、文字列のベースラインの左端の点から右端の点までの距離です。
String
の有効幅は、必ずしも各文字の有効幅の合計ではありません。
str
- 測定対象の String
FontMetrics
が記述する Font
の指定された String
の有効幅。NullPointerException
- str が null の場合。bytesWidth(byte[], int, int)
, charsWidth(char[], int, int)
, getStringBounds(String, Graphics)
public int charsWidth(char[] data, int off, int len)
Font
で表示するための有効幅の合計を返します。有効幅は、文字列のベースラインの左端の点から右端の点までの距離です。String
の有効幅は、必ずしも各文字の有効幅の合計ではありません。これは、指定された範囲内にある文字の String
を測定することと同等です。data
- 測定される文字の配列off
- 配列中の文字の開始オフセットlen
- 配列から測定される文字数FontMetrics
オブジェクトが記述するフォントの指定された char
配列の部分配列の有効幅。NullPointerException
- data
が null の場合。IndexOutOfBoundsException
- off
引数と len
引数が、data
配列の境界の外側の文字を指す場合。charWidth(int)
, charWidth(char)
, bytesWidth(byte[], int, int)
, stringWidth(String)
public int bytesWidth(byte[] data, int off, int len)
Font
で表示するための有効幅の合計を返します。有効幅は、文字列のベースラインの左端の点から右端の点までの距離です。String
の有効幅は、必ずしも各文字の有効幅の合計ではありません。これは、指定された範囲内にある文字の String
を測定することと同等です。data
- 測定されるバイトの配列off
- 配列中のバイトの開始オフセットlen
- 配列から測定されるバイト数FontMetrics
オブジェクトが記述する Font
の指定された byte
配列の部分配列の有効幅。NullPointerException
- data
が null の場合。IndexOutOfBoundsException
- off
引数と len
引数が、data
配列の境界の外側のバイトを指す場合。charsWidth(char[], int, int)
, stringWidth(String)
public int[] getWidths()
Font
内の最初の 256 文字の有効幅を取得します。有効幅は、文字列のベースラインの左端の点から右端の点までの距離です。String
の有効幅は、必ずしも各文字の有効幅の合計ではありません。FontMetrics
オブジェクトが記述する Font
の文字の有効幅が格納されている配列。public boolean hasUniformLineMetrics()
Font
に均一のラインメトリックスが含まれているかどうかを確認します。複合フォントは、さまざまな文字セットを網羅するために複数のフォントで構成されることがあります。 その場合、FontLineMetrics
オブジェクトは均一ではありません。フォントごとに、別々のアセント、ディセント、メトリックスなどを持つことがあります。この情報は、行測定および行分割に必要になる場合があります。true
、そうでない場合は false
。Font.hasUniformLineMetrics()
public LineMetrics getLineMetrics(String str, Graphics context)
str
- 指定されたString
context
- 指定された Graphics
コンテキストString
と Graphics
コンテキストで作成された LineMetrics
オブジェクト。Font.getLineMetrics(String, FontRenderContext)
public LineMetrics getLineMetrics(String str, int beginIndex, int limit, Graphics context)
str
- 指定されたString
beginIndex
- 次の初期オフセット: str
limit
- 次の終了オフセット: str
context
- 指定された Graphics
コンテキストString
と Graphics
コンテキストで作成された LineMetrics
オブジェクト。Font.getLineMetrics(String, int, int, FontRenderContext)
public LineMetrics getLineMetrics(char[] chars, int beginIndex, int limit, Graphics context)
Graphics
コンテキスト内の指定された文字配列の LineMetrics
オブジェクトを返します。chars
- 指定された文字配列beginIndex
- 次の初期オフセット: chars
limit
- 次の終了オフセット: chars
context
- 指定された Graphics
コンテキストGraphics
コンテキストで作成された LineMetrics
オブジェクト。Font.getLineMetrics(char[], int, int, FontRenderContext)
public LineMetrics getLineMetrics(CharacterIterator ci, int beginIndex, int limit, Graphics context)
ci
- 指定されたCharacterIterator
beginIndex
- 次の初期オフセット: ci
limit
- 次の終了インデックス: ci
context
- 指定された Graphics
コンテキストLineMetrics
オブジェクト。Font.getLineMetrics(CharacterIterator, int, int, FontRenderContext)
public Rectangle2D getStringBounds(String str, Graphics context)
Graphics
コンテキスト内の指定された String
の境界を返します。この境界は、String
をレイアウトするために使用されます。
注:返された境界は、ベースラインを基準にした座標で表されています (class notes
を参照)。
str
- 指定されたString
context
- 指定された Graphics
コンテキストGraphics
コンテキストで、指定された String
のバウンディングボックスを表す Rectangle2D
。Font.getStringBounds(String, FontRenderContext)
public Rectangle2D getStringBounds(String str, int beginIndex, int limit, Graphics context)
Graphics
コンテキスト内の指定された String
の境界を返します。この境界は、String
をレイアウトするために使用されます。
注:返された境界は、ベースラインを基準にした座標で表されています (class notes
を参照)。
str
- 指定された String
beginIndex
- str
の先頭のオフセットlimit
- 次の終了オフセット: str
context
- 指定された Graphics
コンテキストGraphics
コンテキストで、指定された String
のバウンディングボックスを表す Rectangle2D
。Font.getStringBounds(String, int, int, FontRenderContext)
public Rectangle2D getStringBounds(char[] chars, int beginIndex, int limit, Graphics context)
Graphics
コンテキスト内の指定された文字の配列の境界を返します。 この境界は、指定された文字配列、beginIndex
、および limit
で作成された String
を配置するために使用されます。
注:返された境界は、ベースラインを基準にした座標で表されています (class notes
を参照)。
chars
- 文字の配列beginIndex
- 文字配列の開始オフセットlimit
- 文字配列の終了オフセットcontext
- 指定された Graphics
コンテキストGraphics
コンテキストで、指定された文字配列のバウンディングボックスを表す Rectangle2D
。Font.getStringBounds(char[], int, int, FontRenderContext)
public Rectangle2D getStringBounds(CharacterIterator ci, int beginIndex, int limit, Graphics context)
Graphics
コンテキスト内の指定された CharacterIterator
でインデックスが付けられた文字の境界を返します。
注:返された境界は、ベースラインを基準にした座標で表されています (class notes
を参照)。
ci
- 指定されたCharacterIterator
beginIndex
- 次の初期オフセット: ci
limit
- 次の終了インデックス: ci
context
- 指定された Graphics
コンテキストGraphics
コンテキストで、指定された CharacterIterator
内のインデックス付き文字のバウンディングボックスを表す Rectangle2D
。Font.getStringBounds(CharacterIterator, int, int, FontRenderContext)
public Rectangle2D getMaxCharBounds(Graphics context)
Graphics
コンテキスト内の最大の境界を持つ文字の境界を返します。context
- 指定された Graphics
コンテキストRectangle2D
。Font.getMaxCharBounds(FontRenderContext)
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.