Module  java.desktop
软件包  java.awt

Class FontMetrics

  • All Implemented Interfaces:
    Serializable


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

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

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

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

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

    字符或字符串的数组也可以具有上升,下降和前进宽度。 数组的上升是数组中任何字符的最大上升。 下降是数组中任何字符的最大下降。 前进宽度是字符数组中每个字符的提前宽度的总和。 一的前进String沿着基线的距离String 该距离应为String定心或对齐方向所使用的String

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

    字体度量是基线相对的,这意味着它们通常与应用于字体的旋转无关(模可能的网格提示效果)。 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使用参数测量文本FontRenderContext说的Graphics对象这一点,而不是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​()
        已过时。 自JDK版本1.1.1起,由getMaxDescent()替代。
        仅用于向后兼容
        结果
        任何字符的最大下降在 Font
        另请参见:
        getMaxDescent()
      • getMaxAdvance

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

        public int charWidth​(int codePoint)
        返回此Font指定字符的前进宽度。 提前是从角色基线的最左点到最右点的距离。 请注意, String的预付款并不一定是其字符预付款的总和。

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

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

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

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

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

        public int charsWidth​(char[] data,
                              int off,
                              int len)
        返回此Font显示指定字符数组的总进位宽度。 提前是从最左点到弦线基线最右点的距离。 String的推进不一定是其字符的进步的总和。 这相当于在指定范围内测量一个String的字符。
        参数
        data - 要测量的字符数组
        off - 数组中字符的起始偏移量
        len - 要从数组中测量的字符数
        结果
        FontMetrics对象描述的字体指定的 char数组的子阵列的前进宽度。
        异常
        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 - 要从数组中测量的字节数
        结果
        Font描述的 FontMetrics对象中指定的 byte阵列的子阵列的前进宽度。
        异常
        NullPointerException - 如果 data为空。
        IndexOutOfBoundsException - 如果 offlen参数的索引字节超出了 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​(char[] chars,
                                          int beginIndex,
                                          int limit,
                                          Graphics context)
        返回指定的Graphics上下文中指定字符数组的LineMetrics对象。
        参数
        chars - 指定的字符数组
        beginIndex - 初始偏移 chars
        limit - 最终的偏移量为 chars
        context - 指定的 Graphics上下文
        结果
        一个 LineMetrics对象,使用指定的字符数组和 Graphics上下文创建。
        另请参见:
        Font.getLineMetrics(char[], int, int, FontRenderContext)
      • getStringBounds

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

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

        参数
        str - 指定的 String
        context - 指定的 Graphics上下文
        结果
        一个Rectangle2D ,它是指定的边界框String在指定Graphics上下文。
        另请参见:
        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上下文
        结果
        一个 Rectangle2D ,它是指定的边界框 String在指定 Graphics上下文。
        另请参见:
        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上下文
        结果
        一个 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上下文
        结果
        一个 Rectangle2D是在指定的 Graphics上下文中指定的 CharacterIterator中索引的字符的边框。
        另请参见:
        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的值。
        重写:
        toStringObject
        结果
        这个 FontMetrics对象的 String表示。