模块  java.desktop
软件包  java.awt

Class FontMetrics

  • 实现的所有接口
    Serializable

    public abstract class FontMetrics
    extends Object
    implements Serializable
    FontMetrics类定义了一个字体度量对象,它封装了有关特定字体在特定屏幕上呈现的信息。

    子类的注意事项 :由于许多这些方法形成了闭合的,相互递归的循环,因此必须注意在每个这样的循环中至少实现一个方法,以防止在使用子类时出现无限递归。 特别是,以下是要覆盖的最小建议方法集,以确保正确性并防止无限递归(尽管其他子集同样可行):

    字母“p”显示其“参考点” 请注意,这些方法的实现效率很低,因此通常会使用更高效的特定于工具包的实现来覆盖它们。

    当应用程序要求将字符放置在位置( xy )时,放置该字符使得其参考点(在附图中显示为点)放在该位置。 参考点指定称为角色基线的水平线。 在正常打印中,字符的基线应该对齐。

    此外,字体中的每个字符都具有上升下降前进宽度 上升是角色在基线上方上升的量。 下降是角色下降到基线以下的量。 提前宽度表示AWT应放置下一个字符的位置。

    字符数组或字符串也可以具有上升,下降和前进宽度。 数组的上升是数组中任何字符的最大上升。 下降是阵列中任何字符的最大下降。 提前宽度是字符数组中每个字符的提前宽度的总和。 String的前进是沿String基线的距离。 该距离是用于对中或右对齐String

    请注意, String的前进StringString测量的字符前进的总和,因为字符的宽度可以根据其上下文而变化。 例如,在阿拉伯语文本中,字符的形状可以更改,以便连接到其他字符。 此外,在某些脚本中,某些字符序列可以由单个形状表示,称为连字 单独测量字符不能解释这些变换。

    字体度量是基线相对的,这意味着它们通常独立于应用于字体的旋转(模数可能的网格提示效果)。 Font

    从以下版本开始:
    1.0
    另请参见:
    FontSerialized Form
    • 字段详细信息

      • font

        protected Font font
        从中创建字体度量标准的实际Font 这不能为空。
        另请参见:
        getFont()
    • 构造方法详细信息

      • FontMetrics

        protected FontMetrics​(Font font)
        创建一个新的 FontMetrics ,用于查找的高度和宽度信息有关指定对象 Font在和特定字符字形的 Font
        参数
        font - Font
        另请参见:
        Font
    • 方法详细信息

      • getFont

        public Font getFont()
        获取 Font通过此描述 FontMetrics对象。
        结果
        所述 Font通过此描述 FontMetrics对象。
      • getFontRenderContext

        public FontRenderContext getFontRenderContext()
        获取FontRenderContext使用此FontMetrics对象测量文本。

        请注意,此类中采用Graphics参数的方法使用该Graphics对象的FontRenderContext测量文本,而不是FontRenderContext

        结果
        所述 FontRenderContext被此 FontMetrics对象。
        从以下版本开始:
        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()
        获取此字体中文本行的标准高度。 这是相邻文本行的基线之间的距离。 它是领先+上升+下降的总和。 由于四舍五入,这可能与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()
        Deprecated.
        As of JDK version 1.1.1, replaced by getMaxDescent().
        仅用于向后兼容。
        结果
        Font中任何字符的最大下降。
        另请参见:
        getMaxDescent()
      • getMaxAdvance

        public int getMaxAdvance()
        获取此Font中任何字符的最大前进宽度。 前进是字符串基线上从最左侧点到最右侧点的距离。 String的推进不一定是其角色进展的总和。
        结果
        Font中任何字符的最大前进宽度,如果 -1最大前进宽度, -1
      • charWidth

        public int charWidth​(int codePoint)
        返回此Font指定字符的advance width。 前进是角色基线上从最左侧点到最右侧点的距离。 请注意, String的前进不一定是其字符前进的总和。

        此方法不会将指定的字符验证为有效的Unicode代码点。 如有必要,调用者必须使用Character.isValidCodePoint验证字符值。

        参数
        codePoint - 要测量的字符(Unicode代码点)
        结果
        FontMetrics对象描述的 Font中指定字符的advance width。
        另请参见:
        charsWidth(char[], int, int)stringWidth(String)
      • charWidth

        public int charWidth​(char ch)
        返回此Font指定字符的advance width。 前进是角色基线上从最左侧点到最右侧点的距离。 请注意, String的前进不一定是其字符前进的总和。

        注意:此方法无法处理supplementary characters 要支持所有Unicode字符(包括增补字符),请使用charWidth(int)方法。

        参数
        ch - 要测量的字符
        结果
        FontMetrics对象描述的 Font中指定字符的advance width。
        另请参见:
        charsWidth(char[], int, int)stringWidth(String)
      • charsWidth

        public int charsWidth​(char[] data,
                              int off,
                              int len)
        返回显示此Font指定字符数组的总提前宽度。 前进是字符串基线上从最左侧点到最右侧点的距离。 String的推进不一定是其角色进展的总和。 这相当于测量指定范围内的字符的String
        参数
        data - 要测量的字符数组
        off - 数组中字符的起始偏移量
        len - 从阵列中测量的字符数
        结果
        FontMetrics对象描述的字体中指定的 char数组的子数组的advance width。
        异常
        NullPointerException - 如果 data为空。
        IndexOutOfBoundsException - 如果 offlen参数索引字符超出 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数组的子数组的 Font FontMetrics
        异常
        NullPointerException - 如果 data为空。
        IndexOutOfBoundsException - 如果 offlen参数索引字节超出 data数组的边界。
        另请参见:
        charsWidth(char[], int, int)stringWidth(String)
      • getWidths

        public int[] getWidths()
        获取Font前256个字符的Font 前进是角色基线上从最左侧点到最右侧点的距离。 请注意, String的前进不一定是其字符前进的总和。
        结果
        存储此 FontMetrics对象所描述的 Font中字符的前进宽度的数组。
      • hasUniformLineMetrics

        public boolean hasUniformLineMetrics()
        检查Font是否具有统一的线路指标。 复合字体可以由几种不同的字体组成,以涵盖各种字符集。 在这种情况下, FontLineMetrics对象不统一。 不同的字体可能具有不同的上升,下降,指标等。 这些信息有时是线路测量和断线所必需的。
        结果
        true如果字体具有统一的线度量; 否则为false
        另请参见:
        Font.hasUniformLineMetrics()
      • getLineMetrics

        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)
      • getStringBounds

        public Rectangle2D getStringBounds​(String str,
                                           Graphics context)
        返回指定的Graphics上下文中指定的String的边界。 边界用于布局String

        注意:返回的边界位于基线相对坐标(参见class notes )。

        参数
        str - 指定的 String
        context - 指定的 Graphics上下文
        结果
        a Rectangle2D ,它是指定的Graphics上下文中指定的String的边界框。
        另请参见:
        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上下文
        结果
        a Rectangle2D ,它是指定的 Graphics上下文中指定的 String的边界框。
        另请参见:
        Font.getStringBounds(String, int, int, FontRenderContext)
      • getStringBounds

        public Rectangle2D getStringBounds​(char[] chars,
                                           int beginIndex,
                                           int limit,
                                           Graphics context)
        返回指定的Graphics上下文中指定字符数组的边界。 边界是用来布局String用指定字符,的阵列创建beginIndexlimit

        注意:返回的边界位于基线相对坐标中(请参阅class notes )。

        参数
        chars - 一个字符数组
        beginIndex - 字符数组的初始偏移量
        limit - 字符数组的结束偏移量
        context - 指定的 Graphics上下文
        结果
        a Rectangle2D ,它是指定的 Graphics上下文中指定字符数组的边界框。
        另请参见:
        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上下文
        结果
        a Rectangle2D ,它是在指定的 Graphics上下文中指定的 CharacterIterator中索引的字符的边界框。
        另请参见:
        Font.getStringBounds(CharacterIterator, int, int, FontRenderContext)
      • getMaxCharBounds

        public Rectangle2D getMaxCharBounds​(Graphics context)
        返回指定的 Graphics上下文中具有最大边界的字符的边界。
        参数
        context - 指定的 Graphics上下文
        结果
        a Rectangle2D ,它是具有最大边界的角色的边界框。
        另请参见:
        Font.getMaxCharBounds(FontRenderContext)
      • toString

        public String toString()
        返回此 FontMetrics对象的值的表示形式为 String
        重写:
        toString ,类 Object
        结果
        StringFontMetrics对象的表示形式。