# Java Notes

# FontMetrics

The `java.awt.FontMetrics` class is used to determine the measurements of characters and strings. These measurements can be used to precisely position text.

## Some font terminology

baseline | The position at the bottom of characters, but above their descenders. The y coordinate of `drawString` specifies the baseline position.
advance width | The horizontal width of a character or string.
ascent | The distance above the baseline of a character or string.
descent | The distance below the baseline of a character or string.
leading | The vertical spacing between baselines of a font.

## Getting a FontMetrics object

Font metrics are determined by the font and the graphics context. To create a FontMetrics object, where `g` is a Graphics object and `f` is a Font object:

    FontMetrics fm = g.getFontMetrics(f);

## FontMetrics methods

The following variables stand for something of a given type: `i` (int), `c` (char), `s` (String), `g` (Graphics).

Method | Description
--- | ---
`i = fm.getAscent();` | Returns ascent for font
`i = fm.getDescent();` | Returns descent for font
`i = fm.getLeading();` | Returns leading for font
`i = fm.charWidth(c);` | Advance of char c.
`i = fm.stringWidth(s);` | Advance width for String s.
`Rectangle2D r = fm.getStringBounds(s, g);` | Returns bounding box for the string.

## Webliography

- Java 2D/Swing: Finding Font Coordinates Using Font Metrics