Class CustomFontMetricsMapper

java.lang.Object
org.apache.fop.fonts.Typeface
org.apache.fop.render.java2d.CustomFontMetricsMapper
All Implemented Interfaces:
Positionable, Substitutable, FontMetrics, FontMetricsMapper

public class CustomFontMetricsMapper extends Typeface implements FontMetricsMapper, Substitutable, Positionable
FontMetricsMapper that delegates most methods to an underlying FontMetrics instance. This class was designed to allow the underlying Font to be loaded from a user-configured file not registered in the current graphics environment.
  • Constructor Details

  • Method Details

    • getEncodingName

      public final String getEncodingName()
      Get the encoding of the font.
      Specified by:
      getEncodingName in class Typeface
      Returns:
      the encoding
    • hasChar

      public final 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
    • mapChar

      public final 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
    • getFont

      public final 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.
    • getAscender

      public final 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 final 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 final 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
    • getEmbedFontName

      public final 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
    • getFamilyNames

      public final Set<String> 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)
    • getFontName

      public final String getFontName()
      Returns the "PostScript" font name (Example: "Helvetica-BoldOblique").
      Specified by:
      getFontName in interface FontMetrics
      Returns:
      the font name
    • 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
    • getFontType

      public final FontType getFontType()
      Returns the type of the font.
      Specified by:
      getFontType in interface FontMetrics
      Returns:
      the font type
    • getFullName

      public final String getFullName()
      Returns the font's full name (Example: "Helvetica Bold Oblique").
      Specified by:
      getFullName in interface FontMetrics
      Returns:
      the font's full name
    • getKerningInfo

      public final Map getKerningInfo()
      Returns the kerning map for the font.
      Specified by:
      getKerningInfo in interface FontMetrics
      Returns:
      the kerning map
    • getWidth

      public final 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 final 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
    • getXHeight

      public final 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
    • hasKerningInfo

      public final boolean hasKerningInfo()
      Indicates if the font has kerning information.
      Specified by:
      hasKerningInfo in interface FontMetrics
      Returns:
      true if kerning is available.
    • isMultiByte

      public boolean isMultiByte()
      Determines whether the font is a multibyte font.
      Specified by:
      isMultiByte in interface FontMetrics
      Overrides:
      isMultiByte in class Typeface
      Returns:
      True if it is multibyte
    • performsPositioning

      public boolean performsPositioning()
      Determines if font performs glyph positioning.
      Specified by:
      performsPositioning in interface Positionable
      Returns:
      true if performs positioning
    • performPositioning

      public int[][] performPositioning(CharSequence cs, String script, String language, int fontSize)
      Perform glyph positioning.
      Specified by:
      performPositioning in interface Positionable
      Parameters:
      cs - character sequence to map to position offsets (advancement adjustments)
      script - a script identifier
      language - a language identifier
      fontSize - font size
      Returns:
      array (sequence) of 4-tuples of placement [PX,PY] and advance [AX,AY] adjustments, in that order, with one 4-tuple for each element of glyph sequence, or null if no non-zero adjustment applies
    • performPositioning

      public int[][] performPositioning(CharSequence cs, String script, String language)
      Perform glyph positioning using an implied font size.
      Specified by:
      performPositioning in interface Positionable
      Parameters:
      cs - character sequence to map to position offsets (advancement adjustments)
      script - a script identifier
      language - a language identifier
      Returns:
      array (sequence) of 4-tuples of placement [PX,PY] and advance [AX,AY] adjustments, in that order, with one 4-tuple for each element of glyph sequence, or null if no non-zero adjustment applies
    • performsSubstitution

      public boolean performsSubstitution()
      Determines if font performs glyph substitution.
      Specified by:
      performsSubstitution in interface Substitutable
      Returns:
      true if performs substitution.
    • performSubstitution

      public CharSequence performSubstitution(CharSequence cs, String script, String language, List associations, boolean retainControls)
      Perform substitutions on characters to effect glyph substitution. If some substitution is performed, it entails mapping from one or more input characters denoting textual character information to one or more output character codes denoting glyphs in this font, where the output character codes may make use of private character code values that have significance only for this font.
      Specified by:
      performSubstitution in interface Substitutable
      Parameters:
      cs - character sequence to map to output font encoding character sequence
      script - a script identifier
      language - a language identifier
      associations - optional list to receive list of character associations
      retainControls - if true, then retain control characters and their glyph mappings, otherwise remove
      Returns:
      output sequence (represented as a character sequence, where each character in the returned sequence denotes "font characters", i.e., character codes that map directly (1-1) to their associated glyphs
    • reorderCombiningMarks

      public CharSequence reorderCombiningMarks(CharSequence cs, int[][] gpa, String script, String language, List associations)
      Reorder combining marks in character sequence so that they precede (within the sequence) the base character to which they are applied. N.B. In the case of LTR segments, marks are not reordered by this, method since when the segment is reversed by BIDI processing, marks are automatically reordered to precede their base character.
      Specified by:
      reorderCombiningMarks in interface Substitutable
      Parameters:
      cs - character sequence within which combining marks to be reordered
      gpa - associated glyph position adjustments (also reordered)
      script - a script identifier
      language - a language identifier
      associations - optional list of associations to be reordered
      Returns:
      output sequence containing reordered "font characters"
    • getRealFont

      public Typeface getRealFont()