モジュール java.desktop
パッケージ 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
      フォント・メトリックスの作成元になる実際の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コンテキスト内の指定されたchar配列のLineMetricsオブジェクトを返します。
      LineMetrics getLineMetrics​(String str, int beginIndex, int limit, Graphics context)
      指定されたGraphicsコンテキスト内の指定されたStringLineMetricsオブジェクトを返します。
      LineMetrics getLineMetrics​(String str, Graphics context)
      指定されたGraphicsコンテキスト内の指定されたStringLineMetricsオブジェクトを返します。
      LineMetrics getLineMetrics​(CharacterIterator ci, int beginIndex, int limit, Graphics context)
      指定されたGraphicsコンテキスト内の指定されたCharacterIteratorLineMetricsオブジェクトを返します。
      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​(String str, int beginIndex, int limit, Graphics context)
      指定されたGraphicsコンテキスト内の指定されたStringの境界を返します。
      Rectangle2D getStringBounds​(String str, Graphics context)
      指定されたGraphicsコンテキスト内の指定されたStringの境界を返します。
      Rectangle2D getStringBounds​(CharacterIterator ci, int beginIndex, int limit, Graphics context)
      指定されたGraphicsコンテキスト内の指定されたCharacterIteratorでインデックスが付けられた文字の境界を返します。
      int[] getWidths()
      Font内の最初の256文字の有効幅を取得します。
      boolean hasUniformLineMetrics()
      Fontに均一のライン・メトリックスが含まれているかどうかを確認します。
      int stringWidth​(String str)
      指定されたStringをこのFontで表示するための有効幅の合計を返します。
      String toString()
      このFontMetricsオブジェクトの値の表現をStringとして返します。
    • フィールドの詳細

      • 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()
        このFont内の任意の文字の最大有効幅を取得します。 有効幅は、文字列のベースラインの左端の点から右端の点までの距離です。 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)
      • 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表現。