- 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 描述 protected
FontMetrics(Font font)
创建一个新的FontMetrics
用于找出的高度和宽度信息有关指定对象Font
在和特定字符字形的Font
。
-
方法摘要
所有方法 接口方法 具体的方法 弃用的方法 Modifier and Type 方法 描述 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()
获取Font
通过此描述FontMetrics
对象。FontRenderContext
getFontRenderContext()
获取FontRenderContext
使用此FontMetrics
对象测量文本。int
getHeight()
获取此字体中文本行的标准高度。int
getLeading()
确定此FontMetrics
对象描述的Font
的 标准引导 。LineMetrics
getLineMetrics(char[] chars, int beginIndex, int limit, Graphics context)
返回指定的Graphics
上下文中指定字符数组的LineMetrics
对象。LineMetrics
getLineMetrics(String str, int beginIndex, int limit, Graphics context)
返回指定的Graphics
上下文中指定的String
的LineMetrics
对象。LineMetrics
getLineMetrics(String str, Graphics context)
返回指定的Graphics
上下文中指定的String
的LineMetrics
对象。LineMetrics
getLineMetrics(CharacterIterator ci, int beginIndex, int limit, Graphics context)
返回指定的Graphics
上下文中指定的CharacterIterator
的LineMetrics
对象。int
getMaxAdvance()
获取此Font
中任何字符的最大提前宽度。int
getMaxAscent()
确定FontMetrics
对象描述的Font
的最大上限。Rectangle2D
getMaxCharBounds(Graphics context)
返回具有指定的Graphics
上下文中最大边界的字符的边界。int
getMaxDecent()
已过时。截至JDK 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)
返回在此Font
显示指定的String
的总进位宽度。String
toString()
以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)
-
-