is new.
java.lang.Objectjava.awt.FontMetrics
public abstract class FontMetrics
The FontMetrics class defines a font metrics object, which encapsulates information about the rendering of a particular font on a particular screen.
Note to subclassers : Since many of these methods form closed, mutually recursive loops, you must take care that you implement at least one of the methods in each such loop to prevent infinite recursion when your subclass is used. In particular, the following is the minimal suggested set of methods to override in order to ensure correctness and prevent infinite recursion (though other subsets are equally feasible):
Note that the implementations of these methods are inefficient, so they are usually overridden with more efficient toolkit-specific implementations.
When an application asks
AWT
to place a character at the position (
x
,
y
), the character is placed so that its reference point (shown as the dot in the accompanying image) is put at that position. The reference point specifies a horizontal line called the
baseline
of the character. In normal printing, the baselines of characters should align.
In addition, every character in a font has an ascent , a descent , and an advance width . The ascent is the amount by which the character ascends above the baseline. The descent is the amount by which the character descends below the baseline. The advance width indicates the position at which AWT should place the next character.
An array of characters or a string can also have an ascent, a descent, and an advance width. The ascent of the array is the maximum ascent of any character in the array. The descent is the maximum descent of any character in the array. The advance width is the sum of the advance widths of each of the characters in the character array. The advance of a String is the distance along the baseline of the String. This distance is the width that should be used for centering or right-aligning the String.
Note that the advance of a String is not necessarily the sum of the advances of its characters measured in isolation because the width of a character can vary depending on its context. For example, in Arabic text, the shape of a character can change in order to connect to other characters. Also, in some scripts, certain character sequences can be represented by a single shape, called a ligature. Measuring characters individually does not account for these transformations.
Note that the advance of a String is not necessarily the sum of the advances of its characters measured in isolation because the width of a character can vary depending on its context. For example, in Arabic text, the shape of a character can change in order to connect to other characters. Also, in some scripts, certain character sequences can be represented by a single shape, called a ligature. Measuring characters individually does not account for these transformations.
Font metrics are baseline-relative, meaning that they are generally independent of the rotation applied to the font (modulo possible grid hinting effects). See
Font
.
| Field Summary | |
|---|---|
| protected Font |
font
The actual Font from which the font metrics are created. |
| Constructor Summary | |
|---|---|
| protected |
FontMetrics
(
Font
font) Creates a new FontMetrics object for finding out height and width information about the specified Font and specific character glyphs in that Font. |
| Method Summary | |
|---|---|
| int |
bytesWidth
(byte[] data, int off, int len) Returns the total advance width for showing the specified array of bytes in this Font. |
| int |
charsWidth
(char[] data, int off, int len) Returns the total advance width for showing the specified array of characters in this Font. |
| int |
charWidth
(char ch) Returns the advance width of the specified character in this Font. |
| int |
charWidth
(int codePoint) Returns the advance width of the specified character in this Font. |
| int |
getAscent
() Determines the font ascent of the Font described by this FontMetrics object. |
| int |
getDescent
() Determines the font descent of the Font described by this FontMetrics object. |
| Font |
getFont
() Gets the Font described by this FontMetrics object. |
FontRenderContext
|
getFontRenderContext
()
Gets the FontRenderContext used by this FontMetrics object to measure text.
|
| int |
getHeight
() Gets the standard height of a line of text in this font. |
| int |
getLeading
() Determines the standard leading of the Font described by this FontMetrics object. |
| LineMetrics |
getLineMetrics
(char[] chars, int beginIndex, int limit,
Graphics
context) Returns the LineMetrics object for the specified character array in the specified Graphics context. |
| LineMetrics |
getLineMetrics
(
CharacterIterator
ci, int beginIndex, int limit,
Graphics
context) Returns the LineMetrics object for the specified CharacterIterator in the specified Graphics context. |
| LineMetrics |
getLineMetrics
(
String
str,
Graphics
context) Returns the LineMetrics object for the specified String in the specified Graphics context. |
| LineMetrics |
getLineMetrics
(
String
str, int beginIndex, int limit,
Graphics
context) Returns the LineMetrics object for the specified String in the specified Graphics context. |
| int |
getMaxAdvance
() Gets the maximum advance width of any character in this Font. |
| int |
getMaxAscent
() Determines the maximum ascent of the Font described by this FontMetrics object. |
| Rectangle2D |
getMaxCharBounds
(
Graphics
context) Returns the bounds for the character with the maximum bounds in the specified Graphics context. |
| int |
getMaxDecent
() Deprecated. As of JDK version 1.1.1, replaced by getMaxDescent(). |
| int |
getMaxDescent
() Determines the maximum descent of the Font described by this FontMetrics object. |
| Rectangle2D |
getStringBounds
(char[] chars, int beginIndex, int limit,
Graphics
context) Returns the bounds of the specified array of characters in the specified Graphics context. |
| Rectangle2D |
getStringBounds
(
CharacterIterator
ci, int beginIndex, int limit,
Graphics
context) Returns the bounds of the characters indexed in the specified CharacterIterator in the specified Graphics context. |
| Rectangle2D |
getStringBounds
(
String
str,
Graphics
context) Returns the bounds of the specified String in the specified Graphics context. |
| Rectangle2D |
getStringBounds
(
String
str, int beginIndex, int limit,
Graphics
context) Returns the bounds of the specified String in the specified Graphics context. |
| int[] |
getWidths
() Gets the advance widths of the first 256 characters in the Font. |
| boolean |
hasUniformLineMetrics
() Checks to see if the Font has uniform line metrics. |
| int |
stringWidth
(
String
str) Returns the total advance width for showing the specified String in this Font. |
| String |
toString
() Returns a representation of this FontMetrics object's values as a String. |
| Methods inherited from class java.lang. Object |
|---|
| clone , equals , finalize , getClass , hashCode , notify , notifyAll , wait , wait , wait |
| Field Detail |
|---|
protected Font font
| Constructor Detail |
|---|
protected FontMetrics(Font font)
| Method Detail |
|---|
public Font getFont()
getFontRenderContext
public
FontRenderContext
getFontRenderContext
()
Gets the FontRenderContext used by this FontMetrics object to measure text.
Note that methods in this class which take a Graphics parameter measure text using the FontRenderContext of that Graphics object, and not this FontRenderContext
Returns:
the FontRenderContext used by this FontMetrics object.
Since:
1.6
public int getLeading()
public int getAscent()
public int getDescent()
public int getHeight()
public int getMaxAscent()
public int getMaxDescent()
@Deprecated public int getMaxDecent()
public int getMaxAdvance()
public int charWidth(int codePoint)
This method doesn't validate the specified character to be a valid Unicode code point. The caller must validate the character value using Character.isValidCodePoint if necessary.
public int charWidth(char ch)
Note:
This method cannot handle
supplementary characters
supplementary characters
. To support all Unicode characters, including supplementary characters, use the
charWidth(int)
method.
public int stringWidth(String str)
Note that the advance of a String is not necessarily the sum of the advances of its characters.
Note that the total advance width returned from this method does not take into account the rendering context. Therefore, the anti-aliasing and fractional metrics hints can affect the value of the advance. When enabling the anti-aliasing and fractional metrics hints, use getStringBounds(String, Graphics) instead of this method. The advance of a String is not necessarily the sum of the advances of its characters.
Throws:
NullPointerException
- if str is null.
public int charsWidth(char[] data,
int off,
int len)
Throws:
NullPointerException
- if data is null.
IndexOutOfBoundsException
- if the off and len arguments index characters outside the bounds of the data array.
public int bytesWidth(byte[] data,
int off,
int len)
Throws:
NullPointerException
- if data is null.
IndexOutOfBoundsException
- if the off and len arguments index bytes outside the bounds of the data array.
public int[] getWidths()
public boolean hasUniformLineMetrics()
public LineMetrics getLineMetrics(String str,
Graphics context)
public LineMetrics getLineMetrics(String str,
int beginIndex,
int limit,
Graphics context)
end offset
public LineMetrics getLineMetrics(char[] chars,
int beginIndex,
int limit,
Graphics context)
end offset
public LineMetrics getLineMetrics(CharacterIterator ci,
int beginIndex,
int limit,
Graphics context)
public Rectangle2D getStringBounds(String str,
Graphics context)
Note: The returned bounds is in baseline-relative coordinates (see
class notes
).
public Rectangle2D getStringBounds(String str,
int beginIndex,
int limit,
Graphics context)
Note: The returned bounds is in baseline-relative coordinates (see
class notes
).
end offset
public Rectangle2D getStringBounds(char[] chars,
int beginIndex,
int limit,
Graphics context)
Note: The returned bounds is in baseline-relative coordinates (see
class notes
).
end offset
public Rectangle2D getStringBounds(CharacterIterator ci,
int beginIndex,
int limit,
Graphics context)
Note: The returned bounds is in baseline-relative coordinates (see
class notes
).
public Rectangle2D getMaxCharBounds(Graphics context)
public String toString()