- すべての実装されたインタフェース:
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
このFontMetrics
オブジェクトによって記述されたFont
のフォント・アセントを判定します。int
このFontMetrics
オブジェクトによって記述されたFont
のフォント・ディセントを判定します。getFont()
このFontMetrics
オブジェクトによって記述されたFont
を取得します。テキストを測定するためにこのFontMetrics
オブジェクトによって使用されるFontRenderContext
を取得します。int
このフォントのテキスト1行の標準の高さを取得します。int
このFontMetrics
オブジェクトによって記述されたFont
の標準レディングを判定します。getLineMetrics(char[] chars, int beginIndex, int limit, Graphics context)
指定されたGraphics
コンテキスト内の指定されたchar配列のLineMetrics
オブジェクトを返します。getLineMetrics(String str, int beginIndex, int limit, Graphics context)
指定されたGraphics
コンテキスト内の指定されたString
のLineMetrics
オブジェクトを返します。getLineMetrics(String str, Graphics context)
指定されたGraphics
コンテキスト内の指定されたString
のLineMetrics
オブジェクトを返します。getLineMetrics(CharacterIterator ci, int beginIndex, int limit, Graphics context)
指定されたGraphics
コンテキスト内の指定されたCharacterIterator
のLineMetrics
オブジェクトを返します。int
次に列挙されている重要な注意事項とともに、このFontMetrics
オブジェクトによって記述されるFont
内の任意の文字の最大有効幅の推定値を返します。int
このFontMetrics
オブジェクトによって記述されたFont
の最大アセントを判定します。getMaxCharBounds(Graphics context)
指定されたGraphics
コンテキスト内の最大の境界を持つ文字の境界を返します。int
非推奨。int
このFontMetrics
オブジェクトによって記述されたFont
の最大ディセントを判定します。getStringBounds(char[] chars, int beginIndex, int limit, Graphics context)
指定されたGraphics
コンテキスト内の指定された文字の配列の境界を返します。getStringBounds(String str, int beginIndex, int limit, Graphics context)
指定されたGraphics
コンテキスト内の指定されたString
の境界を返します。getStringBounds(String str, Graphics context)
指定されたGraphics
コンテキスト内の指定されたString
の境界を返します。getStringBounds(CharacterIterator ci, int beginIndex, int limit, Graphics context)
指定されたGraphics
コンテキスト内の指定されたCharacterIterator
でインデックスが付けられた文字の境界を返します。int[]
Font
内の最初の256文字の有効幅を取得します。boolean
Font
に均一のライン・メトリックスが含まれているかどうかを確認します。int
stringWidth(String str)
指定されたString
をこのFont
で表示するための有効幅の合計を返します。toString()
このFontMetrics
オブジェクトの値の表現をString
として返します。
-
フィールド詳細
-
コンストラクタの詳細
-
メソッドの詳細
-
getFont
public Font getFont()このFontMetrics
オブジェクトによって記述されたFont
を取得します。- 戻り値:
- この
FontMetrics
オブジェクトによって記述されたFont
。
-
getFontRenderContext
public FontRenderContext getFontRenderContext()テキストを測定するためにこのFontMetrics
オブジェクトによって使用されるFontRenderContext
を取得します。Graphics
パラメータを取るこのクラスのメソッドは、このFontRenderContext
ではなく、そのGraphics
オブジェクトのFontRenderContext
を使用してテキストを測定します。- 戻り値:
- この
FontMetrics
オブジェクトが使用するFontRenderContext
。 - 導入されたバージョン:
- 1.6
-
getLeading
public int getLeading()このFontMetrics
オブジェクトによって記述されたFont
の標準レディングを判定します。 標準レディング(行間の間隔)は、テキストのある行のディセントとその次の行のアセントの間で確保される論理的な量です。 高さのメトリックスは、この余分な空間を含めて計算されます。- 戻り値:
Font
の標準レディング。- 関連項目:
getHeight()
,getAscent()
,getDescent()
-
getAscent
public int getAscent()このFontMetrics
オブジェクトによって記述されたFont
のフォント・アセントを判定します。 フォント・アセントは、フォントのベースラインからほとんどの英数字の上端までの距離です。Font
の文字によっては、フォントのアセント・ラインからはみ出す場合があります。- 戻り値:
Font
のフォント・アセント。- 関連項目:
getMaxAscent()
-
getDescent
public int getDescent()このFontMetrics
オブジェクトによって記述されたFont
のフォント・ディセントを判定します。 フォント・ディセントは、フォントのベースラインからディセンダを持つほとんどの英数字の下端までの距離です。Font
の文字によっては、フォントのディセント・ラインからはみ出す場合があります。- 戻り値:
Font
のフォント・ディセント。- 関連項目:
getMaxDescent()
-
getHeight
public int getHeight()このフォントのテキスト1行の標準の高さを取得します。 これは、隣接するテキスト行のベースラインの間の距離です。 この距離は、レディング、アセント、およびディセントの合計値です。 四捨五入の都合上、この値はgetAscent()、getDescent()、getLeading()の合計と一致しないことがあります。 ただし、この距離間隔で位置付けられるテキスト行が互いに離れている保証はありません。たとえば、ある文字が標準アセント・メトリックスまたは標準ディセント・メトリックスのどちらかを越えている場合、行がオーバーラップすることがあります。- 戻り値:
- フォントの標準高さ
- 関連項目:
getLeading()
,getAscent()
,getDescent()
-
getMaxAscent
public int getMaxAscent()このFontMetrics
オブジェクトによって記述されたFont
の最大アセントを判定します。 文字がこの高さからはみ出すことはありません。- 戻り値:
Font
内の任意の文字の最大アセント。- 関連項目:
getAscent()
-
getMaxDescent
public int getMaxDescent()このFontMetrics
オブジェクトによって記述されたFont
の最大ディセントを判定します。 文字がこの高さからはみ出すことはありません。- 戻り値:
Font
内の任意の文字の最大ディセント。- 関連項目:
getDescent()
-
getMaxDecent
@Deprecated public int getMaxDecent()非推奨。JDK Version 1.1.1以降は、getMaxDescent()
に置き換えられています。下位互換性のためだけに用意されています。- 戻り値:
Font
内の任意の文字の最大ディセント。- 関連項目:
getMaxDescent()
-
getMaxAdvance
public int getMaxAdvance()次に列挙されている重要な注意事項とともに、このFontMetrics
オブジェクトによって記述されるFont
内の任意の文字の最大有効幅の推定値を返します。前進は、キャラクタをベースラインに沿って右端のポイントに配置するために使用される左端のポイントからの距離です。 これは、文字を表すイメージの表示幅とは異なります。
String
の有効幅は、必ずしも各文字の有効幅の合計ではありません。 適切なレンダリングのために複雑なテキスト・レイアウトが必要な場合は、大幅に異なることがあります。レポートされる値の注意事項には、次のものがあります。
- 戻り値は、基礎となるシステム・フォントの情報に依存しており、その情報の正確性はAWTコントロール外です。
- 特定の文字がレンダリング・コンテキストでグリフにマップされている場合、フォント自体の命令がラスタライズ・プロセスとともに原因で、一部のグリフがレポートされるよりも広範囲に進める可能性があります。
- 完全一致を使用できないスタイル(
Font.BOLD
など)でフォントがリクエストされた場合、リクエストされたレンダリングを満たす技術によっては、報告された最大値よりも広いグリフが生じる可能性があります。 - 実装によっては、AWT論理フォントまたは物理フォントでは、プライマリの基礎となる物理フォントで文字がサポートされていない場合に、1つ以上の"フォールバック"フォントから一部の文字を検索する必要があります。 これらのフォントはすべて、レポートされた最大仮払金の計算で認識または考慮されるわけではありません。 このようなフォールバック・フォントのデザイン・センターは、プライマリ・フォントのデザイン・センターとは異なるスクリプト用であることが一般的であるため、進歩は大きく異なる場合があります。 これにより、
Font.MONOSPACED
などのフォントがすべて同じ幅ではないグリフをレンダリングできるという予期しない結果になる可能性もあります。
String
の表示幅は必ずしも注意して使用する必要がある仮払金の合計ではないため、最大仮払金の見積りをより適切に必要とし、表示する文字のサブセットを知っているアプリケーションでは、前述のように、各文字の拡張を問い合せて最も幅を見つけることができます。要約すると、このメソッドでは絶対的な保証は行われず、エラーのマージン内での正しい保証も行われません。 そのため、フォントから一部の数の未知の文字を表示するのに十分な合計領域を見積もるためにのみ使用する必要があります。 また、特定のテキストおよびレンダリング・コンテキストに応じて、過度の見積りまたは過小見積りのいずれかになります。
- 戻り値:
Font
内の任意の文字の最大拡張幅の見積り。最大拡張幅が不明な場合は-1
。
-
charWidth
public int charWidth(int codePoint)このFont
内の指定された文字の有効幅を返します。 有効幅は、文字列のベースラインの左端の点から右端の点までの距離です。String
の有効幅は、必ずしも各文字の有効幅の合計ではありません。このメソッドは、指定された文字が有効なUnicodeコード・ポイントであることを検証しません。 呼出し側で、必要に応じて
Character.isValidCodePoint
を使用して、文字値を検証する必要があります。- パラメータ:
codePoint
- 測定する文字(Unicodeコード・ポイント)- 戻り値:
- この
FontMetrics
オブジェクトによって記述されたFont
内の指定された文字の有効幅。 - 関連項目:
charsWidth(char[], int, int)
,stringWidth(String)
-
charWidth
public int charWidth(char ch)このFont
内の指定された文字の有効幅を返します。 有効幅は、文字列のベースラインの左端の点から右端の点までの距離です。String
の有効幅は、必ずしも各文字の有効幅の合計ではありません。ノート: このメソッドは、補助文字を処理できません。 補助文字を含むすべてのUnicode文字をサポートするには、
charWidth(int)
メソッドを使用してください。- パラメータ:
ch
- 測定対象の文字- 戻り値:
- この
FontMetrics
オブジェクトによって記述されたFont
内の指定された文字の有効幅。 - 関連項目:
charsWidth(char[], int, int)
,stringWidth(String)
-
stringWidth
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)
-
charsWidth
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)
-
bytesWidth
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)
-
getWidths
public int[] getWidths()Font
内の最初の256文字の有効幅を取得します。 有効幅は、文字列のベースラインの左端の点から右端の点までの距離です。String
の有効幅は、必ずしも各文字の有効幅の合計ではありません。- 戻り値:
- この
FontMetrics
オブジェクトが記述するFont
の文字の有効幅が格納されている配列。
-
hasUniformLineMetrics
public boolean hasUniformLineMetrics()Font
に均一のライン・メトリックスが含まれているかどうかを確認します。 複合フォントは、さまざまな文字セットを網羅するために複数のフォントで構成されることがあります。 その場合、FontLineMetrics
オブジェクトは均一ではありません。 フォントごとに、別々のアセント、ディセント、メトリックスなどを持つことがあります。 この情報は、行測定および行分割に必要になる場合があります。- 戻り値:
- このフォントが均一のライン・メトリックスを持つ場合は
true
、そうでない場合はfalse
。 - 関連項目:
Font.hasUniformLineMetrics()
-
getLineMetrics
public LineMetrics getLineMetrics(String str, Graphics context)指定されたGraphics
コンテキスト内の指定されたString
のLineMetrics
オブジェクトを返します。- パラメータ:
str
- 指定されたString
context
- 指定されたGraphics
コンテキスト- 戻り値:
- 指定された
String
とGraphics
コンテキストで作成されたLineMetrics
オブジェクト。 - 関連項目:
Font.getLineMetrics(String, FontRenderContext)
-
getLineMetrics
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)
-
getLineMetrics
public LineMetrics getLineMetrics(char[] chars, int beginIndex, int limit, Graphics context)指定されたGraphics
コンテキスト内の指定されたchar配列のLineMetrics
オブジェクトを返します。- パラメータ:
chars
- 指定された文字配列beginIndex
- 次の初期オフセット:chars
limit
- 次の終了オフセット:chars
context
- 指定されたGraphics
コンテキスト- 戻り値:
- 指定された文字配列と
Graphics
コンテキストで作成されたLineMetrics
オブジェクト。 - 関連項目:
Font.getLineMetrics(char[], int, int, FontRenderContext)
-
getLineMetrics
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)
-
getStringBounds
public Rectangle2D getStringBounds(String str, Graphics context)指定されたGraphics
コンテキスト内の指定されたString
の境界を返します。 この境界は、String
をレイアウトするために使用されます。ノート: 返された境界は、ベースラインを基準にした座標で表されています(
class notes
を参照してください)。- パラメータ:
str
- 指定されたString
context
- 指定されたGraphics
コンテキスト- 戻り値:
- 指定された
Graphics
コンテキストで、指定されたString
のバウンディング・ボックスを表すRectangle2D
。 - 関連項目:
Font.getStringBounds(String, FontRenderContext)
-
getStringBounds
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)
-
getStringBounds
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)
-
getStringBounds
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)
-
getMaxCharBounds
public Rectangle2D getMaxCharBounds(Graphics context)指定されたGraphics
コンテキスト内の最大の境界を持つ文字の境界を返します。- パラメータ:
context
- 指定されたGraphics
コンテキスト- 戻り値:
- 最大の境界を持つ文字のバウンディング・ボックスである
Rectangle2D
。 - 関連項目:
Font.getMaxCharBounds(FontRenderContext)
-
toString
public String toString()このFontMetrics
オブジェクトの値の表現をString
として返します。
-
getMaxDescent()
に置き換えられています。