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

org.apache.fop.fonts

## Interface FontMetrics

- All Known Subinterfaces:
    FontDescriptor, FontMetricsMapper
  All Known Implementing Classes:
    AbstractOutlineFont, AFPFont, AFPFontConfig.AFPTrueTypeFont, Base14Font, CFFToType1Font, CIDFont, Courier, CourierBold, CourierBoldOblique, CourierOblique, CustomFont, CustomFontMetricsMapper, DoubleByteFont, Helvetica, HelveticaBold, HelveticaBoldOblique, HelveticaOblique, LazyFont, MultiByteFont, OutlineFont, RasterFont, SingleByteFont, Symbol, SystemFontMetricsMapper, TimesBold, TimesBoldItalic, TimesItalic, TimesRoman, Typeface, ZapfDingbats

      public interface FontMetrics

  Main interface for access to font metrics.

- - ### Method Summary

    All Methods Instance Methods Abstract 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").
    `Set<String>` | `getFamilyNames()` Returns the font's family names as a Set of Strings (Example: "Helvetica").
    `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<Integer,Map<Integer,Integer>>` | `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` | `hasFeature(int tableType, String script, String language, String feature)` Determine if metrics supports specific feature in specified font table.
    `boolean` | `hasKerningInfo()` Indicates if the font has kerning information.
    `boolean` | `isMultiByte()` Determines whether the font is a multibyte font.

- - ### Method Detail

    - #### getFontURI

          URI getFontURI()

      Returns the URI of the font file from which these metrics were loaded.
      Returns:
        the font file's URI

    - #### getFontName

          String getFontName()

      Returns the "PostScript" font name (Example: "Helvetica-BoldOblique").
      Returns:
        the font name

    - #### getFullName

          String getFullName()

      Returns the font's full name (Example: "Helvetica Bold Oblique").
      Returns:
        the font's full name

    - #### getFamilyNames

          Set<String> getFamilyNames()

      Returns the font's family names as a Set of Strings (Example: "Helvetica").
      Returns:
        the font's family names (a Set of Strings)

    - #### getEmbedFontName

          String getEmbedFontName()

      Returns the font name for font embedding (may include a prefix, Example: "1E28bcArialMT").
      Returns:
        the name for font embedding

    - #### getFontType

          FontType getFontType()

      Returns the type of the font.
      Returns:
        the font type

    - #### getMaxAscent

          int getMaxAscent(int size)

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

    - #### getAscender

          int getAscender(int size)

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

    - #### getCapHeight

          int getCapHeight(int size)

      Returns the size of a capital letter measured from the font's baseline.
      Parameters:
        `size` - font size
      Returns:
        height of capital characters

    - #### getDescender

          int getDescender(int size)

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

    - #### getXHeight

          int getXHeight(int size)

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

    - #### getWidth

          int getWidth(int i,
                       int size)

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

    - #### getWidths

          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.

      Returns:
        an array of widths

    - #### getBoundingBox

          Rectangle getBoundingBox(int glyphIndex,
                                   int size)

      Returns the bounding box of the glyph at the given index, for the given font size.
      Parameters:
        `glyphIndex` - glyph index
        `size` - font size
      Returns:
        the scaled bounding box scaled in 1/1000ths of the given size

    - #### hasKerningInfo

          boolean hasKerningInfo()

      Indicates if the font has kerning information.
      Returns:
        true if kerning is available.

    - #### getKerningInfo

          Map<Integer,Map<Integer,Integer>> getKerningInfo()

      Returns the kerning map for the font.
      Returns:
        the kerning map

    - #### getUnderlinePosition

          int getUnderlinePosition(int size)

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

    - #### getUnderlineThickness

          int getUnderlineThickness(int size)

      Returns the thickness of the underline.
      Parameters:
        `size` - font size
      Returns:
        the thickness in 1/1000ths of the font size

    - #### getStrikeoutPosition

          int getStrikeoutPosition(int size)

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

    - #### getStrikeoutThickness

          int getStrikeoutThickness(int size)

      Returns the thickness of the strikeout line.
      Parameters:
        `size` - font size
      Returns:
        the thickness in 1/1000ths of the font size

    - #### hasFeature

          boolean hasFeature(int tableType,
                             String script,
                             String language,
                             String feature)

      Determine if metrics supports specific feature in specified font table.
      Parameters:
        `tableType` - type of table (GSUB, GPOS, ...), see GlyphTable.GLYPH_TABLE_TYPE_*
        `script` - to qualify feature lookup
        `language` - to qualify feature lookup
        `feature` - to test
      Returns:
        true if feature supported (and has at least one lookup)

    - #### isMultiByte

          boolean isMultiByte()

      Determines whether the font is a multibyte font.
      Returns:
        True if it is multibyte

Copyright © 2025 Apache Software Foundation. All rights reserved.