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

org.apache.fop.render.java2d

## Class SystemFontMetricsMapper

- java.lang.Object
- - org.apache.fop.fonts.Typeface
  - - org.apache.fop.render.java2d.SystemFontMetricsMapper

- All Implemented Interfaces:
    FontMetrics, FontMetricsMapper

      public class SystemFontMetricsMapper
      extends Typeface
      implements FontMetricsMapper

  This class implements org.apache.fop.layout.FontMetrics and is added to the hash table in FontInfo. It deferes the actual calculation of the metrics to Java2DFontMetrics. It only keeps the java name and style as member varibles

- - ### Field Summary

    - ### Fields inherited from class org.apache.fop.fonts.Typeface

      `eventListener, NOT_FOUND`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SystemFontMetricsMapper(String family, int style, Java2DFontMetrics java2DFontMetrics)` Constructs a new Font-metrics.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `getAscender(int size)` Returns the ascent of the font described by this FontMetrics object.
    `Rectangle` | `getBoundingBox(int glyphIndex, int size)` Returns the bounding box of the glyph at the given index, for the given font size.
    `int` | `getCapHeight(int size)` Returns the size of a capital letter measured from the font's baseline.
    `int` | `getDescender(int size)` Returns the descent of the font described by this FontMetrics object.
    `String` | `getEmbedFontName()` Returns the font name for font embedding (may include a prefix, Example: "1E28bcArialMT").
    `String` | `getEncodingName()` Get the encoding of the font.
    `Set` | `getFamilyNames()` Returns the font's family names as a Set of Strings (Example: "Helvetica").
    `Font` | `getFont(int size)` Gets a `Font` instance of the font that this `FontMetrics` describes in the desired size.
    `String` | `getFontName()` Returns the "PostScript" font name (Example: "Helvetica-BoldOblique").
    `FontType` | `getFontType()` Returns the type of the font.
    `URI` | `getFontURI()` Returns the URI of the font file from which these metrics were loaded.
    `String` | `getFullName()` Returns the font's full name (Example: "Helvetica Bold Oblique").
    `Map` | `getKerningInfo()` Returns the kerning map for the font.
    `int` | `getMaxAscent(int size)` Returns the maximum ascent of the font described by this FontMetrics object.
    `int` | `getStrikeoutPosition(int size)` Returns the distance from the baseline to the center of the strikeout line (negative value indicates below baseline).
    `int` | `getStrikeoutThickness(int size)` Returns the thickness of the strikeout line.
    `int` | `getUnderlinePosition(int size)` Returns the distance from the baseline to the center of the underline (negative value indicates below baseline).
    `int` | `getUnderlineThickness(int size)` Returns the thickness of the underline.
    `int` | `getWidth(int i, int size)` Return the width (in 1/1000ths of point size) of the character at code point i.
    `int[]` | `getWidths()` Return the array of widths.
    `int` | `getXHeight(int size)` Determines the typical font height of this FontMetrics object
    `boolean` | `hasChar(char c)` Determines whether this font contains a particular character/glyph.
    `boolean` | `hasKerningInfo()` Indicates if the font has kerning information.
    `char` | `mapChar(char c)` Map a Unicode character to a code point in the font.

    - ### Methods inherited from class org.apache.fop.fonts.Typeface

      `hadMappingOperations, hasFeature, isCID, isMultiByte, notifyMapOperation, setEventListener, toString, warnMissingGlyph`

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

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

    - ### Methods inherited from interface org.apache.fop.fonts.FontMetrics

      `hasFeature, isMultiByte`

- - ### Constructor Detail

    - #### SystemFontMetricsMapper

          public SystemFontMetricsMapper(String family,
                                         int style,
                                         Java2DFontMetrics java2DFontMetrics)

      Constructs a new Font-metrics.
      Parameters:
        `family` - the family name of the font (java value)
        `style` - the java type style value of the font
        `java2DFontMetrics` - metric calculations delegated to this

  - ### Method Detail

    - #### getFontURI

          public final URI getFontURI()

      Returns the URI of the font file from which these metrics were loaded.
      Specified by:
        `getFontURI` in interface `FontMetrics`
      Returns:
        the font file's URI

    - #### getFontName

          public String getFontName()

      Returns the "PostScript" font name (Example: "Helvetica-BoldOblique").
      Specified by:
        `getFontName` in interface `FontMetrics`
      Returns:
        the font name

    - #### getEmbedFontName

          public String getEmbedFontName()

      Returns the font name for font embedding (may include a prefix, Example: "1E28bcArialMT").
      Specified by:
        `getEmbedFontName` in interface `FontMetrics`
      Returns:
        the name for font embedding

    - #### getFullName

          public String getFullName()

      Returns the font's full name (Example: "Helvetica Bold Oblique").
      Specified by:
        `getFullName` in interface `FontMetrics`
      Returns:
        the font's full name

    - #### getFamilyNames

          public Set getFamilyNames()

      Returns the font's family names as a Set of Strings (Example: "Helvetica").
      Specified by:
        `getFamilyNames` in interface `FontMetrics`
      Returns:
        the font's family names (a Set of Strings)

    - #### getFontType

          public FontType getFontType()

      Returns the type of the font.
      Specified by:
        `getFontType` in interface `FontMetrics`
      Returns:
        the font type

    - #### getMaxAscent

          public int getMaxAscent(int size)

      Returns the maximum ascent of the font described by this FontMetrics object. Note: This is not the same as getAscender().
      Specified by:
        `getMaxAscent` in interface `FontMetrics`
      Overrides:
        `getMaxAscent` in class `Typeface`
      Parameters:
        `size` - font size
      Returns:
        ascent in milliponts

    - #### getAscender

          public int getAscender(int size)

      Returns the ascent of the font described by this FontMetrics object. It returns the nominal ascent within the em box.
      Specified by:
        `getAscender` in interface `FontMetrics`
      Parameters:
        `size` - font size
      Returns:
        ascent in milliponts

    - #### getCapHeight

          public int getCapHeight(int size)

      Returns the size of a capital letter measured from the font's baseline.
      Specified by:
        `getCapHeight` in interface `FontMetrics`
      Parameters:
        `size` - font size
      Returns:
        height of capital characters

    - #### getDescender

          public int getDescender(int size)

      Returns the descent of the font described by this FontMetrics object.
      Specified by:
        `getDescender` in interface `FontMetrics`
      Parameters:
        `size` - font size
      Returns:
        descent in milliponts

    - #### getXHeight

          public int getXHeight(int size)

      Determines the typical font height of this FontMetrics object
      Specified by:
        `getXHeight` in interface `FontMetrics`
      Parameters:
        `size` - font size
      Returns:
        font height in millipoints

    - #### getUnderlinePosition

          public int getUnderlinePosition(int size)

      Description copied from interface: `FontMetrics`
      Returns the distance from the baseline to the center of the underline (negative value indicates below baseline).
      Specified by:
        `getUnderlinePosition` in interface `FontMetrics`
      Parameters:
        `size` - font size
      Returns:
        the position in 1/1000ths of the font size

    - #### getUnderlineThickness

          public int getUnderlineThickness(int size)

      Description copied from interface: `FontMetrics`
      Returns the thickness of the underline.
      Specified by:
        `getUnderlineThickness` in interface `FontMetrics`
      Parameters:
        `size` - font size
      Returns:
        the thickness in 1/1000ths of the font size

    - #### getStrikeoutPosition

          public int getStrikeoutPosition(int size)

      Description copied from interface: `FontMetrics`
      Returns the distance from the baseline to the center of the strikeout line (negative value indicates below baseline).
      Specified by:
        `getStrikeoutPosition` in interface `FontMetrics`
      Parameters:
        `size` - font size
      Returns:
        the position in 1/1000ths of the font size

    - #### getStrikeoutThickness

          public int getStrikeoutThickness(int size)

      Description copied from interface: `FontMetrics`
      Returns the thickness of the strikeout line.
      Specified by:
        `getStrikeoutThickness` in interface `FontMetrics`
      Parameters:
        `size` - font size
      Returns:
        the thickness in 1/1000ths of the font size

    - #### getWidth

          public int getWidth(int i,
                              int size)

      Return the width (in 1/1000ths of point size) of the character at code point i.
      Specified by:
        `getWidth` in interface `FontMetrics`
      Parameters:
        `i` - code point index
        `size` - font size
      Returns:
        the width of the character

    - #### getWidths

          public int[] getWidths()

      Return the array of widths.

      This is used to get an array for inserting in an output format. It should not be used for lookup.

      Specified by:
        `getWidths` in interface `FontMetrics`
      Returns:
        an array of widths

    - #### getBoundingBox

          public Rectangle getBoundingBox(int glyphIndex,
                                          int size)

      Description copied from interface: `FontMetrics`
      Returns the bounding box of the glyph at the given index, for the given font size.
      Specified by:
        `getBoundingBox` in interface `FontMetrics`
      Parameters:
        `glyphIndex` - glyph index
        `size` - font size
      Returns:
        the scaled bounding box scaled in 1/1000ths of the given size

    - #### getFont

          public Font getFont(int size)

      Gets a `Font` instance of the font that this `FontMetrics` describes in the desired size.
      Specified by:
        `getFont` in interface `FontMetricsMapper`
      Parameters:
        `size` - font size
      Returns:
        font with the desired characteristics.

    - #### getKerningInfo

          public Map getKerningInfo()

      Returns the kerning map for the font.
      Specified by:
        `getKerningInfo` in interface `FontMetrics`
      Returns:
        the kerning map

    - #### hasKerningInfo

          public boolean hasKerningInfo()

      Indicates if the font has kerning information.
      Specified by:
        `hasKerningInfo` in interface `FontMetrics`
      Returns:
        true if kerning is available.

    - #### getEncodingName

          public String getEncodingName()

      Get the encoding of the font.
      Specified by:
        `getEncodingName` in class `Typeface`
      Returns:
        the encoding

    - #### mapChar

          public char mapChar(char c)

      Map a Unicode character to a code point in the font.
      Specified by:
        `mapChar` in class `Typeface`
      Parameters:
        `c` - character to map
      Returns:
        the mapped character

    - #### hasChar

          public boolean hasChar(char c)

      Determines whether this font contains a particular character/glyph.
      Specified by:
        `hasChar` in class `Typeface`
      Parameters:
        `c` - character to check
      Returns:
        True if the character is supported, Falso otherwise

Copyright © 2025 Apache Software Foundation. All rights reserved.