- java.lang.Object
-
- java.awt.FontMetrics
-
- 实现的所有接口
-
Serializable
public abstract class FontMetricsextends Objectimplements Serializable
FontMetrics
类定义了一个字体度量对象,它封装了有关特定字体在特定屏幕上呈现的信息。子类的注意事项 :由于许多这些方法形成了闭合的,相互递归的循环,因此必须注意在每个这样的循环中至少实现一个方法,以防止在使用子类时出现无限递归。 特别是,以下是要覆盖的最小建议方法集,以确保正确性并防止无限递归(尽管其他子集同样可行):
请注意,这些方法的实现效率很低,因此通常会使用更高效的特定于工具包的实现来覆盖它们。
当应用程序要求将字符放置在位置( x , y )时,放置该字符使得其参考点(在附图中显示为点)放在该位置。 参考点指定称为角色基线的水平线。 在正常打印中,字符的基线应该对齐。
此外,字体中的每个字符都具有上升 , 下降和前进宽度 。 上升是角色在基线上方上升的量。 下降是角色下降到基线以下的量。 提前宽度表示AWT应放置下一个字符的位置。
字符数组或字符串也可以具有上升,下降和前进宽度。 数组的上升是数组中任何字符的最大上升。 下降是阵列中任何字符的最大下降。 提前宽度是字符数组中每个字符的提前宽度的总和。
String
的前进是沿String
基线的距离。 该距离是用于对中或右对齐String
。请注意,
String
的前进String
是String
测量的字符前进的总和,因为字符的宽度可以根据其上下文而变化。 例如,在阿拉伯语文本中,字符的形状可以更改,以便连接到其他字符。 此外,在某些脚本中,某些字符序列可以由单个形状表示,称为连字 。 单独测量字符不能解释这些变换。字体度量是基线相对的,这意味着它们通常独立于应用于字体的旋转(模数可能的网格提示效果)。 见
Font
。- 从以下版本开始:
- 1.0
- 另请参见:
-
Font
, Serialized Form
-
-
构造方法摘要
构造方法 变量 构造器 描述 protected
FontMetrics(Font font)
创建一个新的FontMetrics
,用于查找的高度和宽度信息有关指定对象Font
在和特定字符字形的Font
。
-
方法摘要
所有方法 实例方法 具体的方法 弃用的方法 变量和类型 方法 描述 int
bytesWidth(byte[] data, int off, int len)
返回显示此Font
指定字节数组的总提前宽度。int
charsWidth(char[] data, int off, int len)
返回显示此Font
指定字符数组的总提前宽度。int
charWidth(char ch)
返回此Font
指定字符的advance width。int
charWidth(int codePoint)
返回此Font
指定字符的advance width。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个字符的Font
。boolean
hasUniformLineMetrics()
检查Font
是否具有统一的线路指标。int
stringWidth(String str)
返回在此Font
显示指定的String
的总提前宽度。String
toString()
返回此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
@Deprecatedpublic 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
数组的子数组的Font
FontMetrics
。 - 异常
-
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)
-
-