- java.lang.Object
-
- java.awt.FontMetrics
-
- All Implemented Interfaces:
-
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
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 protectedFontMetrics(Font font)创建一个新的FontMetrics用于找出的高度和宽度信息有关指定对象Font在和特定字符字形的Font。
-
方法摘要
所有方法 接口方法 具体的方法 弃用的方法 Modifier and Type 方法 描述 intbytesWidth(byte[] data, int off, int len)返回在此Font显示指定字节数组的总进位宽度。intcharsWidth(char[] data, int off, int len)返回此Font显示指定字符数组的总进位宽度。intcharWidth(char ch)返回此Font指定字符的前进宽度。intcharWidth(int codePoint)返回此Font指定字符的前进宽度。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个字符的提前宽度。booleanhasUniformLineMetrics()检查Font是否具有统一的线度量。intstringWidth(String str)返回在此Font显示指定的String的总进位宽度。StringtoString()以FontMetrics的形式返回此FontMetrics对象的值的String。
-
-
-
方法详细信息
-
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)
-
stringWidth
public int stringWidth(String str)
返回显示指定的总的超前宽度String在此Font。 提前是从最左点到弦线基线最右点的距离。请注意,一个
String的提前不一定是它的字符的进步的总和。- 参数
-
str- 要测量的String - 结果
-
指定的超前宽度
String在Font此描述FontMetrics。 - 异常
-
NullPointerException- 如果str为空。 - 另请参见:
-
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为空。 -
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- 要从数组中测量的字节数 - 结果
-
在
Font描述的FontMetrics对象中指定的byte阵列的子阵列的前进宽度。 - 异常
-
NullPointerException- 如果data为空。 -
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上下文中指定的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上下文 - 结果
-
一个
LineMetrics对象,使用指定的String和Graphics上下文创建。 - 另请参见:
-
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上下文 - 结果
-
一个
LineMetrics对象,使用指定的字符数组和Graphics上下文创建。 - 另请参见:
-
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上下文 - 结果
-
一个
Rectangle2D,它是指定的边界框String在指定Graphics上下文。 - 另请参见:
-
Font.getStringBounds(String, FontRenderContext)
-
getStringBounds
public Rectangle2D getStringBounds(String str, int beginIndex, int limit, Graphics context)
- 参数
-
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创建的指定字符数组,beginIndex和limit。注意:返回的边界在基线相对坐标(见
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)
-
-