Class Font

java.lang.Object
org.apache.fop.fonts.Font
All Implemented Interfaces:
Positionable, Substitutable

public class Font extends Object implements Substitutable, Positionable
This class holds font state information and provides access to the font metrics.
  • Field Details

  • Constructor Details

    • Font

      public Font(String key, FontTriplet triplet, FontMetrics met, int fontSize)
      Main constructor
      Parameters:
      key - key of the font
      triplet - the font triplet that was used to lookup this font (may be null)
      met - font metrics
      fontSize - font size
  • Method Details

    • getFontMetrics

      public FontMetrics getFontMetrics()
      Returns the associated font metrics object.
      Returns:
      the font metrics
    • isMultiByte

      public boolean isMultiByte()
      Determines whether the font is a multibyte font.
      Returns:
      True if it is multibyte
    • getAscender

      public int getAscender()
      Returns the font's ascender.
      Returns:
      the ascender
    • getCapHeight

      public int getCapHeight()
      Returns the font's CapHeight.
      Returns:
      the capital height
    • getDescender

      public int getDescender()
      Returns the font's Descender.
      Returns:
      the descender
    • getFontName

      public String getFontName()
      Returns the font's name.
      Returns:
      the font name
    • getFontTriplet

      public FontTriplet getFontTriplet()
      Returns:
      the font triplet that selected this font
    • getFontSize

      public int getFontSize()
      Returns the font size
      Returns:
      the font size
    • getXHeight

      public int getXHeight()
      Returns the XHeight
      Returns:
      the XHeight
    • hasKerning

      public boolean hasKerning()
      Returns:
      true if the font has kerning info
    • hasFeature

      public boolean hasFeature(int tableType, String script, String language, String feature)
      Returns:
      true if the font has feature (i.e., at least one lookup matches)
    • getKerning

      public Map<Integer,Map<Integer,Integer>> getKerning()
      Returns the font's kerning table
      Returns:
      the kerning table
    • getKernValue

      public int getKernValue(int ch1, int ch2)
      Returns the amount of kerning between two characters. The value returned measures in pt. So it is already adjusted for font size.
      Parameters:
      ch1 - first character
      ch2 - second character
      Returns:
      the distance to adjust for kerning, 0 if there's no kerning
    • getWidth

      public int getWidth(int charnum)
      Returns the width of a character
      Parameters:
      charnum - character to look up
      Returns:
      width of the character
    • mapChar

      public char mapChar(char c)
      Map a java character (unicode) to a font character. Default uses CodePointMapping.
      Parameters:
      c - character to map
      Returns:
      the mapped character
    • mapCodePoint

      public int mapCodePoint(int cp)
      Map a unicode code point to a font character. Default uses CodePointMapping.
      Parameters:
      cp - code point to map
      Returns:
      the mapped character
    • hasChar

      public boolean hasChar(char c)
      Determines whether this font contains a particular character/glyph.
      Parameters:
      c - character to check
      Returns:
      True if the character is supported, False otherwise
    • hasCodePoint

      public boolean hasCodePoint(int cp)
      Determines whether this font contains a particular code point/glyph.
      Parameters:
      cp - code point to check
      Returns:
      True if the code point is supported, False otherwise
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getCharWidth

      public int getCharWidth(char c)
      Helper method for getting the width of a unicode char from the current fontstate. This also performs some guessing on widths on various versions of space that might not exists in the font.
      Parameters:
      c - character to inspect
      Returns:
      the width of the character or -1 if no width available
    • getCharWidth

      public int getCharWidth(int c)
      Helper method for getting the width of a unicode char from the current fontstate. This also performs some guessing on widths on various versions of space that might not exists in the font.
      Parameters:
      c - character to inspect
      Returns:
      the width of the character or -1 if no width available
    • getWordWidth

      public int getWordWidth(String word)
      Calculates the word width.
      Parameters:
      word - text to get width for
      Returns:
      the width of the text
    • 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"
    • 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