- java.lang.Object
-
- java.awt.FontMetrics
-
- 实现的所有接口
-
Serializable
public abstract class FontMetrics extends Object implements Serializable
FontMetrics类定义了一个字体度量对象,它封装了有关特定字体在特定屏幕上呈现的信息。子类的注意事项 :由于许多这些方法形成了闭合的,相互递归的循环,因此必须注意在每个这样的循环中至少实现一个方法,以防止在使用子类时出现无限递归。 特别是,以下是要覆盖的最小建议方法集,以确保正确性并防止无限递归(尽管其他子集同样可行):
请注意,这些方法的实现效率很低,因此通常会使用更高效的特定于工具包的实现来覆盖它们。 当应用程序要求将字符放置在位置( x , y )时,放置该字符使得其参考点(在附图中显示为点)放在该位置。 参考点指定称为角色基线的水平线。 在正常打印中,字符的基线应该对齐。
此外,字体中的每个字符都具有上升 , 下降和前进宽度 。 上升是角色在基线上方上升的量。 下降是角色下降到基线以下的量。 提前宽度表示AWT应放置下一个字符的位置。
字符数组或字符串也可以具有上升,下降和前进宽度。 数组的上升是数组中任何字符的最大上升。 下降是阵列中任何字符的最大下降。 提前宽度是字符数组中每个字符的提前宽度的总和。
String的前进是沿String基线的距离。 该距离是用于对中或右对齐String。请注意,
String的前进String是String测量的字符前进的总和,因为字符的宽度可以根据其上下文而变化。 例如,在阿拉伯语文本中,字符的形状可以更改,以便连接到其他字符。 此外,在某些脚本中,某些字符序列可以由单个形状表示,称为连字 。 单独测量字符不能解释这些变换。字体度量是基线相对的,这意味着它们通常独立于应用于字体的旋转(模数可能的网格提示效果)。 见
Font。- 从以下版本开始:
- 1.0
- 另请参见:
-
Font, Serialized Form
-
-
构造方法摘要
构造方法 变量 构造器 描述 protectedFontMetrics(Font font)创建一个新的FontMetrics,用于查找的高度和宽度信息有关指定对象Font在和特定字符字形的Font。
-
方法摘要
所有方法 实例方法 具体的方法 弃用的方法 变量和类型 方法 描述 intbytesWidth(byte[] data, int off, int len)返回显示此Font指定字节数组的总提前宽度。intcharsWidth(char[] data, int off, int len)返回显示此Font指定字符数组的总提前宽度。intcharWidth(char ch)返回此Font指定字符的advance width。intcharWidth(int codePoint)返回此Font指定字符的advance width。intgetAscent()确定此FontMetrics对象描述的Font的 字体上升 。intgetDescent()确定此FontMetrics对象描述的Font的 字体下降 。FontgetFont()获取Font通过此描述FontMetrics对象。FontRenderContextgetFontRenderContext()获取FontRenderContext使用此FontMetrics对象测量文本。intgetHeight()获取此字体中文本行的标准高度。intgetLeading()确定此FontMetrics对象描述的Font的 标准前导 。LineMetricsgetLineMetrics(char[] chars, int beginIndex, int limit, Graphics context)返回指定的Graphics上下文中指定字符数组的LineMetrics对象。LineMetricsgetLineMetrics(String str, int beginIndex, int limit, Graphics context)返回指定的Graphics上下文中指定的String的LineMetrics对象。LineMetricsgetLineMetrics(String str, Graphics context)返回指定的Graphics上下文中指定的String的LineMetrics对象。LineMetricsgetLineMetrics(CharacterIterator ci, int beginIndex, int limit, Graphics context)返回指定的Graphics上下文中指定的CharacterIterator的LineMetrics对象。intgetMaxAdvance()获取此Font中任何字符的最大前进宽度。intgetMaxAscent()确定此FontMetrics对象描述的Font的最大上升。Rectangle2DgetMaxCharBounds(Graphics context)返回指定的Graphics上下文中具有最大边界的字符的边界。intgetMaxDecent()已过时。截至JDK 1.1.1版,由getMaxDescent()取代。intgetMaxDescent()确定此FontMetrics对象描述的Font的最大下降。Rectangle2DgetStringBounds(char[] chars, int beginIndex, int limit, Graphics context)返回指定的Graphics上下文中指定的字符数组的边界。Rectangle2DgetStringBounds(String str, int beginIndex, int limit, Graphics context)返回指定的Graphics上下文中指定的String的边界。Rectangle2DgetStringBounds(String str, Graphics context)返回指定的Graphics上下文中指定的String的边界。Rectangle2DgetStringBounds(CharacterIterator ci, int beginIndex, int limit, Graphics context)返回指定的Graphics上下文中指定的CharacterIterator中索引的字符的边界。int[]getWidths()获取Font前256个字符的Font。booleanhasUniformLineMetrics()检查Font是否具有统一的线路指标。intstringWidth(String str)返回在此Font显示指定的String的总提前宽度。StringtoString()返回此FontMetrics对象的值的表示形式为String。
-
-
-
方法详细信息
-
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 bygetMaxDescent().仅用于向后兼容。- 结果
-
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)
-
stringWidth
public int stringWidth(String str)
返回在此Font显示指定的String的总提前宽度。 前进是字符串基线上从最左侧点到最右侧点的距离。请注意,
String的前进不一定是其字符前进的总和。- 参数
-
str- 待测量的String - 结果
-
指定的超前宽度
String在Font此描述FontMetrics。 - 异常
-
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数组的子数组的advance width。 - 异常
-
NullPointerException- 如果data为空。 -
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数组的子数组的FontFontMetrics。 - 异常
-
NullPointerException- 如果data为空。 -
IndexOutOfBoundsException- 如果off和len参数索引字节超出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(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上下文中指定字符数组的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)
- 参数
-
str- 指定的String -
context- 指定的Graphics上下文 - 结果
-
a
Rectangle2D,它是指定的Graphics上下文中指定的String的边界框。 - 另请参见:
-
Font.getStringBounds(String, FontRenderContext)
-
getStringBounds
public Rectangle2D getStringBounds(String str, int beginIndex, int limit, Graphics context)
- 参数
-
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用指定字符,的阵列创建beginIndex和limit。注意:返回的边界位于基线相对坐标中(请参阅
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)
-
-