-------------------------------------------------------------------------------- 注重: 文本繪制方法對x 和 y的解釋和外形繪制方法的不同。當(dāng)繪制一個外形(例如矩形)時, x 和 y指定外形的范圍矩形的左上角而不是左下角。 --------------------------------------------------------------------------------
得到Font的信息: FontMetrics The shape-painting example from 范例 2: 外形樣本中的外形繪制的范例可以通過選擇一個比通常缺省的字體小的字體來進(jìn)行改進(jìn)。下面的例子進(jìn)行了這個工作并且擴大了外形以占據(jù)由于字體的減小而釋放的空間。下面是改進(jìn)的applet的截圖:
int getAscent(), int getMaxAscent() getAscent 方法返回頂線和基線之間的象素大小。通常,頂線代表大寫字母的典型高度。特定的,字體的設(shè)計者選擇的上行和下行值用來表示恰當(dāng)?shù)匚谋尽巴饷病保蛘哒f墨跡的密度,因此文本就可以像設(shè)計者期望的那樣顯示。上行值通常為幾乎所有的字體中的字符提供足夠的空間,除了大寫字母的accents。getMaxAscent方法計算這些異常高大的字符。
int getDescent(), int getMaxDescent() getDescent 方法返回基線和底線之間的象素大小。對應(yīng)大多字體,字體中的字符的最低點都在底線以上。可以在萬一的情況下,你可以使用getMaxDescent 方法得到能保證包容所有字符的距離。
int getHeight() 返回兩個文本的基線間的象素大小。注重這包括行間距。
int getLeading() 得到兩行文本間的暗示的距離的象素大小。明確的說,行間距是上一行的的底線和下一行的頂線間的距離。順便說一下,leading 的發(fā)音為 LEDDing。 注重字體的大小 (Font的getSize方法返回的值)是一個抽象的尺寸。理論上,它對應(yīng)上行值和下行值的和。然而,實際上,字體的設(shè)計者才最終決定一個"12 point"的字體的大小。 例如,12點Times字體通常比12點Helvetica字體稍微短一些。通常情況下,字體大小是以點來衡量的,它大約是1/72英寸。
下面的列表顯示了FontMetrics對象提供的返回字體的字符的水平大小的方法。這些方法考慮了每個字符四周的空間。更確切的講,每個方法返回的 不是某個特定字符(或者多個字符)占據(jù)的象素大小,而是 the number of pixels taken up by a particular character (or characters), but the number of pixels by which the current point will be advanced when that character (or characters) is shown. 我們稱它為advance width以和字符或者文本的寬度相區(qū)分。
int getMaxAdvance() 字體中的最寬的字符的advance width(以象素為單位)。 int bytesWidth(byte[], int, int) 由字節(jié)數(shù)組表示的文本的advance width。第一個整型參數(shù)指定數(shù)組中的開始偏移量。第二個整型參數(shù)指定數(shù)組中最后一個需要檢查的位置。 int charWidth(int), int charWidth(char) 指定字符的advance width。 int charsWidth(char[], int, int) 由指定的字符數(shù)組表示的文本的advance width。 int stringWidth(String) 指定字符串的advance width。 int[] getWidths() 字體中的前256個字符的advance width。