モジュール java.desktop
パッケージ java.awt

クラスFontMetrics

java.lang.Object
java.awt.FontMetrics
すべての実装されたインタフェース:
Serializable

public abstract class FontMetrics extends Object implements Serializable
FontMetricsクラスは、特定の画面上での特定のフォントの描画に関する情報をカプセル化するフォント・メトリックス・オブジェクトを定義します。

サブクラスについてのノート: これらのメソッドの多くは相互に再帰的な閉じたループを形成するため、サブクラスを使用するときは無限の再帰を避けるために、このようなループの各々に少なくとも1つのメソッドを実装するように留意する必要があります。 特に次に挙げるものは、正確さを保証し無限の再帰を避けるために、オーバーライドが推奨される最低限のメソッドです(同様のメソッドは他にもあります)。

文字「p」はその参照点を示すこのクラスの各メソッドでの実装は効率的ではないため、通常は、より効率的なツールキット特有の実装でオーバーライドされます。

アプリケーションが座標(xy)に文字を配置するように要求すると、文字はその参照ポイント(添付イメージでドットとして表示されている)がその位置に置かれるように配置されます。 参照ポイントは、文字のベースラインと呼ばれる水平ラインを指定します。 通常の出力では、文字のベースラインの位置揃えをしてください。

さらに、フォントのすべての文字はアセントディセント、および有効幅を持ちます。 アセントは、ベースラインから文字の上端までの量のことです。 ディセントは、ベースラインから文字の下端までの量のことです。 有効幅は、AWTによる次の文字の配置位置を示します。

文字配列または文字列も、アセント、ディセント、および有効幅を持つことができます。 配列のアセントは、配列内の文字の最大アセントです。 ディセントは配列内の文字の最大ディセントです。 有効幅は、配列内の各文字の有効幅の合計です。 Stringの有効幅は、Stringのベースラインに沿った距離です。 この距離は、Stringのセンタリングまたは、右揃えのために使用される幅です。

文字の幅はそのコンテキストによりばらつきがあるため、Stringの有効幅は必ずしも単独で測定した文字の有効幅の合計ではありません。 たとえば、アラビア語のテキストの場合、ほかの文字と結合するために文字の形が変わります。 ほかのスクリプトの場合でも、特定の文字シーケンスは合字という単一形状で表現されます。 個々に文字をカウントするときには、このような変換はカウントされません。

フォント・メトリックスはベースラインを基準にしています。つまり、通常は、フォントに適用される回転には依存しません(可能なグリッド・ヒンティング効果を法とします)。 Fontを参照してください。

導入されたバージョン:
1.0
関連項目:
Font, 直列化された形式
  • フィールドのサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    protected Font
    フォント・メトリックスの作成元になる実際の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フォント・ディセントを判定します。
    この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コンテキスト内の指定されたStringLineMetricsオブジェクトを返します。
    getLineMetrics​(String str, Graphics context)
    指定されたGraphicsコンテキスト内の指定されたStringLineMetricsオブジェクトを返します。
    getLineMetrics​(CharacterIterator ci, int beginIndex, int limit, Graphics context)
    指定されたGraphicsコンテキスト内の指定されたCharacterIteratorLineMetricsオブジェクトを返します。
    int
    次に列挙されている重要な注意事項とともに、このFontMetricsオブジェクトによって記述されるFont内の任意の文字の最大有効幅の推定値を返します。
    int
    このFontMetricsオブジェクトによって記述されたFontの最大アセントを判定します。
    指定されたGraphicsコンテキスト内の最大の境界を持つ文字の境界を返します。
    int
    非推奨。
    JDK Version 1.1.1以降は、getMaxDescent()に置き換えられています。
    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
    指定されたStringをこのFontで表示するための有効幅の合計を返します。
    このFontMetricsオブジェクトの値の表現をStringとして返します。

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • フィールド詳細

    • font

      protected Font font
      フォント・メトリックスの作成元になる実際のFont nullを指定することはできません。
      関連項目:
      getFont()
  • コンストラクタの詳細

    • FontMetrics

      protected FontMetrics(Font font)
      指定されたFontおよびそのFont内の特定の文字グリフに関する高さと幅の情報を見つけるための新しいFontMetricsオブジェクトを作成します。
      パラメータ:
      font - Font
      関連項目:
      Font
  • メソッドの詳細

    • 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コンテキスト内の指定されたStringLineMetricsオブジェクトを返します。
      パラメータ:
      str - 指定されたString
      context - 指定されたGraphicsコンテキスト
      戻り値:
      指定されたStringGraphicsコンテキストで作成されたLineMetricsオブジェクト。
      関連項目:
      Font.getLineMetrics(String, FontRenderContext)
    • getLineMetrics

      public LineMetrics getLineMetrics(String str, int beginIndex, int limit, Graphics context)
      指定されたGraphicsコンテキスト内の指定されたStringLineMetricsオブジェクトを返します。
      パラメータ:
      str - 指定されたString
      beginIndex - 次の初期オフセット: str
      limit - 次の終了オフセット: str
      context - 指定されたGraphicsコンテキスト
      戻り値:
      指定されたStringGraphicsコンテキストで作成された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コンテキスト内の指定されたCharacterIteratorLineMetricsオブジェクトを返します。
      パラメータ:
      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として返します。
      オーバーライド:
      toString 、クラス:  Object
      戻り値:
      このFontMetricsオブジェクトのString表現。