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 - 測定対象のStringFontMetricsが記述する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 - 指定されたStringcontext - 指定されたGraphicsコンテキストStringとGraphicsコンテキストで作成されたLineMetricsオブジェクト。Font.getLineMetrics(String, FontRenderContext)public LineMetrics getLineMetrics(String str, int beginIndex, int limit, Graphics context)
Graphicsコンテキスト内の指定されたStringのLineMetricsオブジェクトを返します。str - 指定されたStringbeginIndex - 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 - 指定されたCharacterIteratorbeginIndex - 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 - 指定されたStringcontext - 指定された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 - 指定されたStringbeginIndex - 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 - 指定されたCharacterIteratorbeginIndex - 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も参照してください。