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) |
指定された
Graphics コンテキスト内の指定されたCharacterIterator のLineMetrics オブジェクトを返します。 |
LineMetrics |
getLineMetrics(String str, Graphics context) |
指定された
Graphics コンテキスト内の指定されたString のLineMetrics オブジェクトを返します。 |
LineMetrics |
getLineMetrics(String str, int beginIndex, int limit, Graphics context) |
指定された
Graphics コンテキスト内の指定されたString のLineMetrics オブジェクトを返します。 |
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)
Graphics
コンテキスト内の指定されたString
のLineMetrics
オブジェクトを返します。str
- 指定されたString
context
- 指定されたGraphics
コンテキストString
とGraphics
コンテキストで作成されたLineMetrics
オブジェクト。Font.getLineMetrics(String, FontRenderContext)
public LineMetrics getLineMetrics(String str, int beginIndex, int limit, Graphics context)
Graphics
コンテキスト内の指定されたString
のLineMetrics
オブジェクトを返します。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)
Graphics
コンテキスト内の指定されたCharacterIterator
のLineMetrics
オブジェクトを返します。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, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。