1、字体和字体度量
- AWT中有两个类支持字体操作,这两个类是:Font和 FontMetrics o
- 在Font类中,提供了一套基本的字体和字体类型。因为Java不受操作平台的约束,Helvs-tica、Times Roman等字体常被转换成本地平台支持的字体。
- FontMetrics类支持和字体相关的度量,包括字体的高度、leading、ascnet、dscent、特定字符串的宽度等。
2、Font类
- 字体是一个字符集。字体通过指定其逻辑字体名、字形和字体大小来实例化。
- 对于低层的窗口系统,逻辑字体名被映射成一个本机字体。
JDK中支持的逻辑字体列表:
Dialog
SansSerif
Serif
Monospaced
Helvetica
TimesRoman
Courier
Dialoglnput
ZapfDingbats
构造字体时指定字形:
Font.BOLD
Font.ITALIC
Font.PLAIN
每个常数描绘Font类维护的字形integer中的一个比特。其中BOLD与ITALIC可以合并,PLAIN值为0,所以用 BOLD 或ITALIC与之合并的值是 BOLD或ITALIC 。
**字体大小:**用一个整数来确定。一点相当于1/72英寸。AWT中字体不保证所有大小都可以被绘制成系统字体。为了确定字体的精确大小,必须使用FontMetrics对象。
可以通过调用Toolkit.getFontList()获取支持的逻辑字体名列表
setFont(new Font(String 字体,int 风格,int 字号))
3、FontMetrics类
提供和字体相关的度量
3.1 AWT字体模式
AWT的字体模式和X Window系统中的字体模式很相似。在下图中,显示了在 AWT中怎样计算字体的高度、ascent 、descent 、leading 等。
- ascent :字符向上超出基线的距离。descent :字符向下超出基线的距离。
- leading: 上一行的descent和下一行的ascent之间的距离。
- 字体高度:ascent、descent 、leading 的和。
- FontMetrics 没有公共的构造器。调用下面的方法之一,可以得到FontMetrics的一个引用。
在上面所列出的方法中,第二个方法是用来获取和AWT构件相关的字体度量的最常用方法。该方法首先获取对构件的Graphics 的引用,然后调用Graphics.getFontMetrics ():
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 。