Java2DFontMetrics (Apache FOP Core 2.11 API)
Date: 2025-04-24

org.apache.fop.render.java2d

## Class Java2DFontMetrics

- java.lang.Object
- - org.apache.fop.render.java2d.Java2DFontMetrics

-     public class Java2DFontMetrics
      extends Object

  This is a FontMetrics to be used for AWT rendering. It instanciates a font, depening on family and style values. The java.awt.FontMetrics for this font is then created to be used for the actual measurement. Since layout is word by word and since it is expected that two subsequent words often share the same style, the Font and FontMetrics is buffered and only changed if needed.

  Since FontState and FontInfo multiply all factors by size, we assume a "standard" font of FONT_SIZE.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `FONT_FACTOR` This factor multiplies the calculated values to scale to FOP internal measurements
    `static int` | `FONT_SIZE` Font size standard used for metric measurements

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Java2DFontMetrics()` Constructs a new Font-metrics.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `getAscender(String family, int style, int size)` Determines the font ascent of the Font described by this FontMetrics object
    `int` | `getCapHeight(String family, int style, int size)` The size of a capital letter measured from the font's baseline
    `int` | `getDescender(String family, int style, int size)` Determines the font descent of the Font described by this FontMetrics object
    `Font` | `getFont(String family, int style, int size)` Returns a java.awt.Font instance for the desired family, style and size type.
    `int` | `getMaxAscent(String family, int style, int size)` Determines the font's maximum ascent of the Font described by the current FontMetrics object
    `int` | `getStrikeoutPosition(String family, int style, int size)`
    `int` | `getStrikeoutThickness(String family, int style, int size)`
    `int` | `getUnderlinePosition(String family, int style, int size)`
    `int` | `getUnderlineThickness(String family, int style, int size)`
    `int[]` | `getWidths(String family, int style, int size)` Return widths (in 1/1000ths of point size) of all characters
    `int` | `getXHeight(String family, int style, int size)` Determines the typical font height of a small cap letter FontMetrics object
    `boolean` | `hasChar(String family, int style, int size, char c)` Indicates whether the font contains a particular character/glyph.
    `int` | `width(int i, String family, int style, int size)` Returns width (in 1/1000ths of point size) of character at code point i

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### FONT_SIZE

          public static final int FONT_SIZE

      Font size standard used for metric measurements
      See Also:
        Constant Field Values

    - #### FONT_FACTOR

          public static final int FONT_FACTOR

      This factor multiplies the calculated values to scale to FOP internal measurements
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### Java2DFontMetrics

          public Java2DFontMetrics()

      Constructs a new Font-metrics.

  - ### Method Detail

    - #### getMaxAscent

          public int getMaxAscent(String family,
                                  int style,
                                  int size)

      Determines the font's maximum ascent of the Font described by the current FontMetrics object
      Parameters:
        `family` - font family (java name) to use
        `style` - font style (java def.) to use
        `size` - font size
      Returns:
        ascent in milliponts

    - #### getAscender

          public int getAscender(String family,
                                 int style,
                                 int size)

      Determines the font ascent of the Font described by this FontMetrics object
      Parameters:
        `family` - font family (java name) to use
        `style` - font style (java def.) to use
        `size` - font size
      Returns:
        ascent in milliponts

    - #### getCapHeight

          public int getCapHeight(String family,
                                  int style,
                                  int size)

      The size of a capital letter measured from the font's baseline
      Parameters:
        `family` - font family
        `style` - font style
        `size` - font size
      Returns:
        capital height in millipoints

    - #### getDescender

          public int getDescender(String family,
                                  int style,
                                  int size)

      Determines the font descent of the Font described by this FontMetrics object
      Parameters:
        `family` - font family (jave name) to use
        `style` - font style (jave def.) to use
        `size` - font size
      Returns:
        descent in milliponts

    - #### getXHeight

          public int getXHeight(String family,
                                int style,
                                int size)

      Determines the typical font height of a small cap letter FontMetrics object
      Parameters:
        `family` - font family (jave name) to use
        `style` - font style (jave def.) to use
        `size` - font size
      Returns:
        font height in milliponts

    - #### getUnderlinePosition

          public int getUnderlinePosition(String family,
                                          int style,
                                          int size)

    - #### getUnderlineThickness

          public int getUnderlineThickness(String family,
                                           int style,
                                           int size)

    - #### getStrikeoutPosition

          public int getStrikeoutPosition(String family,
                                          int style,
                                          int size)

    - #### getStrikeoutThickness

          public int getStrikeoutThickness(String family,
                                           int style,
                                           int size)

    - #### width

          public int width(int i,
                           String family,
                           int style,
                           int size)

      Returns width (in 1/1000ths of point size) of character at code point i
      Parameters:
        `i` - the character for which to get the width
        `family` - font family (jave name) to use
        `style` - font style (jave def.) to use
        `size` - font size
      Returns:
        character width in millipoints

    - #### getWidths

          public int[] getWidths(String family,
                                 int style,
                                 int size)

      Return widths (in 1/1000ths of point size) of all characters
      Parameters:
        `family` - font family (jave name) to use
        `style` - font style (jave def.) to use
        `size` - font size
      Returns:
        array of character widths in millipoints

    - #### getFont

          public Font getFont(String family,
                              int style,
                              int size)

      Returns a java.awt.Font instance for the desired family, style and size type. This is here, so that the font-mapping of FOP-defined fonts to java-fonts can be done in one place and does not need to occur in AWTFontRenderer.
      Parameters:
        `family` - font family (jave name) to use
        `style` - font style (jave def.) to use
        `size` - font size
      Returns:
        font with the desired characeristics.

    - #### hasChar

          public boolean hasChar(String family,
                                 int style,
                                 int size,
                                 char c)

      Indicates whether the font contains a particular character/glyph.
      Parameters:
        `family` - font family (jave name) to use
        `style` - font style (jave def.) to use
        `size` - font size
        `c` - the glyph to check
      Returns:
        true if the character is supported

Copyright © 2025 Apache Software Foundation. All rights reserved.