JavaTM 2 Platform
Standard Ed. 6

java.awt
類別 FontMetrics

java.lang.Object
  繼承者 java.awt.FontMetrics
所有已實作的介面:
Serializable

public abstract class FontMetrics
extends Object
implements Serializable

FontMetrics 類別定義字體規格物件,該物件封裝將在特定螢幕上呈現特定字體的有關資訊。

子類別注意事項:由於當中很多方法都形成關閉的、相互遞歸的循環,所以必須注意,在每個這樣的循環中至少要實作其中一個方法,以防止在使用子類別時產生無窮遞歸。特別建議,至少要覆寫以下方法集合以確保正確性,並防止無窮遞歸(雖然其他子集也可以)。

字母 'p' 顯示其“參考點” 注意,這些方法的實作效率低下,因此通常利用更高效的特定於工具套件的實作覆寫它們。

當應用程序要求將字元放置在 (x, y) 位置時,放置字元的方式是使其參考點(附圖中顯示的點)放置在該位置。參考點指定一條水平線,稱為字元的基線 (baseline)。在正常的列印中,字元的基線應該對齊。

此外,字體中的每個字元都具有 ascentdescentadvance width 屬性。ascent 是字元超出基線之上的距離。descent 是字元超出基線以下的距離。advance width 指示 AWT 應該放置下一個字元的位置。

字元陣列或字元串也可以具有 ascent、descent 和 advance width 屬性。陣列的 ascent 是陣列中所有字元的最大 ascent。descent 是陣列中所有字元的最大 descent。advance width 是字元陣列中每個字元的 advance width 之和。String 的 advance 是 String 沿基線的距離。此距離是 String 居中或右對齊應該使用的 width。

注意,String 的 advance 不一定是每個字元單獨測量的 advance 之和,因為字元的 width 可隨上下文變動。例如,在 Arabic 文本中,可以更改一個字元的形狀,以連接到其他字元。而在有些文稿中,某些字元序列可以由單個形狀(稱為連字)表示。單獨測量的字元並不能說明這些轉換。

字體規格是基線相關的,意味著它們通常是獨立應用於該字體的循環(模可能的網格提示作用)。請參閱 Font

從以下版本開始:
JDK1.0
另請參見:
Font, 序列化表格

欄位摘要
protected  Font font
          實際的 Font,字體規格是由此創建的。
 
建構子摘要
protected FontMetrics(Font font)
          創建一個新 FontMetrics 物件,用於尋找該 Font 中關於指定 Font 和特定字元字形的 height 和 width 資訊。
 
方法摘要
 int bytesWidth(byte[] data, int off, int len)
          返回顯示此 Font 中指定位元組陣列的總 advance width。
 int charsWidth(char[] data, int off, int len)
          返回顯示此 Font 中指定字元陣列的總 advance width。
 int charWidth(char ch)
          返回此 Font 中指定字元的 advance width。
 int charWidth(int codePoint)
          返回此 Font 中指定字元的 advance width。
 int getAscent()
          確定此 FontMetrics 物件所描述的 Fontfont ascent
 int getDescent()
          確定此 FontMetrics 物件所描述的 Fontfont descent
 Font getFont()
          獲取此 FontMetrics 物件所描述的 Font
 FontRenderContext getFontRenderContext()
          獲取此 FontMetrics 物件用來測量文本的 FontRenderContext
 int getHeight()
          獲取此 Font 中文本行的標準 height。
 int getLeading()
          確定此 FontMetrics 物件所描述的 Font標準行間距
 LineMetrics getLineMetrics(char[] chars, int beginIndex, int limit, Graphics context)
          返回指定 Graphics 上下文中指定字元陣列的 LineMetrics 物件。
 LineMetrics getLineMetrics(CharacterIterator ci, int beginIndex, int limit, Graphics context)
          返回指定 Graphics 上下文中指定 CharacterIteratorLineMetrics 物件。
 LineMetrics getLineMetrics(String str, Graphics context)
          返回指定 Graphics 上下文中指定 StringLineMetrics 物件。
 LineMetrics getLineMetrics(String str, int beginIndex, int limit, Graphics context)
          返回指定 Graphics 上下文中指定 StringLineMetrics 物件。
 int getMaxAdvance()
          獲取此 Font 中所有字元的最大 advance width。
 int getMaxAscent()
          確定此 FontMetrics 物件所描述的 Font 的最大 ascent。
 Rectangle2D getMaxCharBounds(Graphics context)
          返回指定 Graphics 上下文中具有最大邊界的字元的邊界。
 int getMaxDecent()
          已過時。 從 JDK version 1.1.1 開始,由 getMaxDescent() 取代。
 int getMaxDescent()
          確定此 FontMetrics 物件所描述的 Font 的最大 descent。
 Rectangle2D getStringBounds(char[] chars, int beginIndex, int limit, Graphics context)
          返回指定 Graphics 上下文中指定字元陣列的邊界。
 Rectangle2D getStringBounds(CharacterIterator ci, int beginIndex, int limit, Graphics context)
          返回用指定 Graphics 上下文中指定 CharacterIterator 進行索引的字元的邊界。
 Rectangle2D getStringBounds(String str, Graphics context)
          返回指定 Graphics 上下文中指定 String 的邊界。
 Rectangle2D getStringBounds(String str, int beginIndex, int limit, Graphics context)
          返回指定 Graphics 上下文中指定 String 的邊界。
 int[] getWidths()
          獲取此 Font 中前 256 個字元的 advance width。
 boolean hasUniformLineMetrics()
          檢查 Font 是否具有統一的行規格。
 int stringWidth(String str)
          返回此 Font 中指定 String 的總 advance width。
 String toString()
          返回此 FontMetrics 物件的值的 String 表示形式。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

欄位詳細資訊

font

protected Font font
實際的 Font,字體規格是由此創建的。它不能為 null。

另請參見:
getFont()
建構子詳細資訊

FontMetrics

protected FontMetrics(Font font)
創建一個新 FontMetrics 物件,用於尋找該 Font 中關於指定 Font 和特定字元字形的 height 和 width 資訊。

參數:
font - Font
另請參見:
Font
方法詳細資訊

getFont

public Font getFont()
獲取此 FontMetrics 物件所描述的 Font

返回:
FontMetrics 物件所描述的 Font

getFontRenderContext

public FontRenderContext getFontRenderContext()
獲取此 FontMetrics 物件用來測量文本的 FontRenderContext

注意,此類別中帶有 Graphics 參數的方法測量使用該 Graphics 物件的 FontRenderContext 文本,而非此 FontRenderContext

返回:
FontMetrics 物件使用的 FontRenderContext
從以下版本開始:
1.6

getLeading

public int getLeading()
確定此 FontMetrics 物件所描述的 Font標準行間距。標準行間距(或行間間隔)是保留在一個文本行的 descent 和下一個文本行的 ascent 之間的邏輯間隔量。計算 height 規格時要包括這一額外間隔。

返回:
Font 的標準行間距。
另請參見:
getHeight(), getAscent(), getDescent()

getAscent

public int getAscent()
確定此 FontMetrics 物件所描述的 Fontfont ascent。font ascent 是字體基線到大多數字母數字字元頂部的距離。在 Font 中,有些字元可能擴展超過 font ascent 線。

返回:
Font 的 font ascent。
另請參見:
getMaxAscent()

getDescent

public int getDescent()
確定此 FontMetrics 物件所描述的 Fontfont descent。font descent 是字體基線到大多數字母數字字元底部的距離。在 Font 中,有些字元可能擴展到 font descent 線之下。

返回:
Font 的 font descent。
另請參見:
getMaxDescent()

getHeight

public int getHeight()
獲取此 Font 中文本行的標準 height。它是相鄰文本行基線之間的距離。它是 leading、ascent、descent 的總和。由於採用了捨入方法,它可能不同於 getAscent()、getDescent()、getLeading() 的總和。不保證以此距離間隔的文本行是不相交的;如果有些字元超出了標準 ascent 或標準 descent,則這些文本行可能會重疊。

返回:
Font 的標準 height。
另請參見:
getLeading(), getAscent(), getDescent()

getMaxAscent

public int getMaxAscent()
確定此 FontMetrics 物件所描述的 Font 的最大 ascent。字元超出字體基線的距離不會大於此 height。

返回:
Font 中所有字元的最大 ascent。
另請參見:
getAscent()

getMaxDescent

public int getMaxDescent()
確定此 FontMetrics 物件所描述的 Font 的最大 descent。字元低於字體基線的距離不會大於此 height。

返回:
Font 中所有字元的最大 descent。
另請參見:
getDescent()

getMaxDecent

@Deprecated
public int getMaxDecent()
已過時。 從 JDK version 1.1.1 開始,由 getMaxDescent() 取代。

只用於向後相容性。

返回:
Font 中所有字元的最大 descent。
另請參見:
getMaxDescent()

getMaxAdvance

public int getMaxAdvance()
獲取此 Font 中所有字元的最大 advance width。advance 是字元串基線上最左邊的點到最右邊的點之間的距離。String 的 advance 不一定是它所有字元的 advance 之和。

返回:
Font 中所有字元的最大 advance width;如果最大 advance width 未知,則返回 -1

charWidth

public int charWidth(int codePoint)
返回此 Font 中指定字元的 advance width。advance 是字元基線上最左邊的點到最右邊的點之間的距離。注意,String 的 advance 不一定是它所有字元的 advance 之和。

此方法沒有驗證指定的字元是否為一個有效的 Unicode 程式碼點。如有必要,調用者必須使用 Character.isValidCodePoint 驗證字元值。

參數:
codePoint - 要測量的字元(Unicode 程式碼點)
返回:
FontMetrics 物件所描述的 Font 中指定字元的 advance width。
另請參見:
charsWidth(char[], int, int), stringWidth(String)

charWidth

public int charWidth(char ch)
返回此 Font 中指定字元的 advance width。advance 是字元基線上最左邊的點到最右邊的點之間的距離。注意,String 的 advance 不一定是它所有字元的 advance 之和。

註: 此方法無法處理增補字元。要支持包括增補字元在內的所有 Unicode 字元,請使用 charWidth(int) 方法。

參數:
ch - 要測量的字元
返回:
FontMetrics 物件所描述的 Font 中指定字元的 advance width。
另請參見:
charsWidth(char[], int, int), stringWidth(String)

stringWidth

public int stringWidth(String str)
返回此 Font 中指定 String 的總 advance width。advance 是字元串基線上最左邊的點到最右邊的點之間的距離。

注意,code>String 的 advance 不一定是它所有字元的 advance 之和。

參數:
str - 要測量的 String
返回:
FontMetrics 描述的 Font 中指定 String 的 advance width。
拋出:
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 中指定字元陣列的總 advance width。advance 是字元串基線上最左邊的點到最右邊的點之間的距離。String 的 advance 不一定是它所有字元的 advance 之和。這等同於測量 String 指定範圍內的字元。

參數:
data - 要測量的字元陣列
off - 陣列中字元的起始偏移量
len - 陣列中要測量的字元數
返回:
FontMetrics 物件所描述的字體中指定 char 陣列子陣列的 advance width。
拋出:
NullPointerException - 如果 data 為 null。
IndexOutOfBoundsException - 如果 offlen 參數索引字元超出 data 陣列範圍。
另請參見:
charWidth(int), charWidth(char), bytesWidth(byte[], int, int), stringWidth(String)

bytesWidth

public int bytesWidth(byte[] data,
                      int off,
                      int len)
返回顯示此 Font 中指定位元組陣列的總 advance width。advance 是字元串基線上最左邊的點到最右邊的點之間的距離。String 的 advance 不一定是它所有字元的 advance 之和。這等同於測量 String 指定範圍內的字元。

參數:
data - 要測量的位元組陣列
off - 陣列中位元組的起始偏移量
len - 陣列中要測量的位元組數
返回:
FontMetrics 物件所描述的 Font 中指定 byte 陣列的子陣列的 advance width。
拋出:
NullPointerException - 如果 data 為 null。
IndexOutOfBoundsException - 如果 offlen 參數索引位元組超出 data 陣列範圍。
另請參見:
charsWidth(char[], int, int), stringWidth(String)

getWidths

public int[] getWidths()
獲取此 Font 中前 256 個字元的 advance width。advance 是字元基線上最左邊的點到最右邊的點之間的距離。注意,String 的 advance 不一定是它所有字元的 advance 之和。

返回:
一個陣列,它存儲此 FontMetrics 物件所描述的 Font 中字元的 advance width。

hasUniformLineMetrics

public boolean hasUniformLineMetrics()
檢查 Font 是否具有統一的行規格。復合字體可能由幾種不同的字體組成,涉及到各種字元集。在此情況下,FontLineMetrics 物件是不統一的。不同的字體可能有不同的 ascent、descent、metrics 等等。對於行測量和行斷開來說,此資訊有時是必需的。

返回:
如果字體具有統一的行規格,則返回 true;否則返回 false
另請參見:
Font.hasUniformLineMetrics()

getLineMetrics

public LineMetrics getLineMetrics(String str,
                                  Graphics context)
返回指定 Graphics 上下文中指定 StringLineMetrics 物件。

參數:
str - 指定的 String
context - 指定的 Graphics 上下文
返回:
使用指定 StringGraphics 上下文創建的 LineMetrics 物件。
另請參見:
Font.getLineMetrics(String, FontRenderContext)

getLineMetrics

public LineMetrics getLineMetrics(String str,
                                  int beginIndex,
                                  int limit,
                                  Graphics context)
返回指定 Graphics 上下文中指定 StringLineMetrics 物件。

參數:
str - 指定的 String
beginIndex - str 的初始偏移量
limit - str 的結束偏移量
context - 指定的 Graphics 上下文
返回:
使用指定 StringGraphics 上下文創建的 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 上下文中指定 CharacterIteratorLineMetrics 物件。

參數:
ci - 指定的 CharacterIterator
beginIndex - ci 中的初始偏移量
limit - ci 的結束索引
context - 指定的 Graphics 上下文
返回:
使用指定參數創建的 LineMetrics 物件。
另請參見:
Font.getLineMetrics(CharacterIterator, int, int, FontRenderContext)

getStringBounds

public Rectangle2D getStringBounds(String str,
                                   Graphics context)
返回指定 Graphics 上下文中指定 String 的邊界。邊界用來對 String 進行佈局。

注意:返回的邊界在基線相關的坐標內 (請參閱類別註釋)。

參數:
str - 指定的 String
context - 指定的 Graphics 上下文
返回:
一個 Rectangle2D,它是指定 Graphics 上下文中指定 String 的邊界框。
另請參見:
Font.getStringBounds(String, FontRenderContext)

getStringBounds

public Rectangle2D getStringBounds(String str,
                                   int beginIndex,
                                   int limit,
                                   Graphics context)
返回指定 Graphics 上下文中指定 String 的邊界。邊界用來對 String 進行佈局。

注意:返回的邊界在基線相關的坐標內 (請參閱類別註釋)。

參數:
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 進行佈局,String 是使用指定的字元陣列、beginIndexlimit 創建的。

注意:返回的邊界在基線相關的坐標內 (請參閱類別註釋)。

參數:
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 進行索引的字元的邊界。

注意:返回的邊界在基線相關的坐標內(請參閱類別註釋)。

參數:
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)

toString

public String toString()
返回此 FontMetrics 物件的值的 String 表示形式。

覆寫:
類別 Object 中的 toString
返回:
FontMetrics 物件的 String 表示形式。
從以下版本開始:
JDK1.0.

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only