# Java: Font

## Description

The java.awt.Font class is used to create Font objects to set the font for drawing text, labels, text fields, buttons, etc.

## Generic Font Names

There are three logical/generic font names. Java will select a font in the system that matches the general characteristics of the logical font.

serif | This text is in a serif font. Often used for blocks of text (eg, Times).
sansserif | This text is in a SansSerif font. Often used for titles (eg, Arial or Helvetica).
monospaced | This text is in a Monospaced font, often used for computer text (eg, Courier).

You can also get a list of the system fonts on the host computer. See below.

## Constructor

`Font f = new Font(name, style, size);`

String name | int style | int size
`"serif" "sansserif" "monospaced"` or a system font. | `Font.PLAIN Font.BOLD Font.ITALIC Font.BOLD+Font.ITALIC` | Integer point size -- typically in range 10-48.

## Example

    JButton b = new JButton("OK");
    b.setFont(new Font("sansserif", Font.BOLD, 32));

## Available system fonts

For maximum portability, use the generic font names, but you can use any font installed in the system. It is suggested to use a font family name, and create the font from that, but you can also use the fonts directly. You can get an array of all available font family names or all fonts.

    // Font info is obtained from the current graphics environment.
    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();

    //--- Get an array of font names (smaller than the number of fonts)
    String[] fontNames = ge.getAvailableFontFamilyNames();

    //--- Get an array of fonts.  It's preferable to use the names above.
    Font[] allFonts = ge.getAllFonts();