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
`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