Class Font

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

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

    Fields
    Modifier and Type Field Description
    static FontTriplet DEFAULT_FONT
    Default fallback key
    static int PRIORITY_DEFAULT
    Default selection priority
    static java.lang.String STYLE_INCLINED
    Inclined font style
    static java.lang.String STYLE_ITALIC
    Italic font style
    static java.lang.String STYLE_NORMAL
    Normal font style
    static java.lang.String STYLE_OBLIQUE
    Oblique font style
    static int WEIGHT_BOLD
    Bold font weight
    static int WEIGHT_EXTRA_BOLD
    Extra Bold font weight
    static int WEIGHT_LIGHT
    Light font weight
    static int WEIGHT_NORMAL
    Normal font weight
  • Constructor Summary

    Constructors
    Constructor Description
    Font​(java.lang.String key, FontTriplet triplet, FontMetrics met, int fontSize)
    Main constructor
  • Method Summary

    Modifier and Type Method Description
    int getAscender()
    Returns the font's ascender.
    int getCapHeight()
    Returns the font's CapHeight.
    int getCharWidth​(char c)
    Helper method for getting the width of a unicode char from the current fontstate.
    int getCharWidth​(int c)
    Helper method for getting the width of a unicode char from the current fontstate.
    int getDescender()
    Returns the font's Descender.
    FontMetrics getFontMetrics()
    Returns the associated font metrics object.
    java.lang.String getFontName()
    Returns the font's name.
    int getFontSize()
    Returns the font size
    FontTriplet getFontTriplet()  
    java.util.Map<java.lang.Integer,​java.util.Map<java.lang.Integer,​java.lang.Integer>> getKerning()
    Returns the font's kerning table
    int getKernValue​(int ch1, int ch2)
    Returns the amount of kerning between two characters.
    int getWidth​(int charnum)
    Returns the width of a character
    int getWordWidth​(java.lang.String word)
    Calculates the word width.
    int getXHeight()
    Returns the XHeight
    boolean hasChar​(char c)
    Determines whether this font contains a particular character/glyph.
    boolean hasCodePoint​(int cp)
    Determines whether this font contains a particular code point/glyph.
    boolean hasFeature​(int tableType, java.lang.String script, java.lang.String language, java.lang.String feature)  
    boolean hasKerning()  
    boolean isMultiByte()
    Determines whether the font is a multibyte font.
    char mapChar​(char c)
    Map a java character (unicode) to a font character.
    int mapCodePoint​(int cp)
    Map a unicode code point to a font character.
    int[][] performPositioning​(java.lang.CharSequence cs, java.lang.String script, java.lang.String language)
    Perform glyph positioning using an implied font size.
    int[][] performPositioning​(java.lang.CharSequence cs, java.lang.String script, java.lang.String language, int fontSize)
    Perform glyph positioning.
    boolean performsPositioning()
    Determines if font performs glyph positioning.
    boolean performsSubstitution()
    Determines if font performs glyph substitution.
    java.lang.CharSequence performSubstitution​(java.lang.CharSequence cs, java.lang.String script, java.lang.String language, java.util.List associations, boolean retainControls)
    Perform substitutions on characters to effect glyph substitution.
    java.lang.CharSequence reorderCombiningMarks​(java.lang.CharSequence cs, int[][] gpa, java.lang.String script, java.lang.String language, java.util.List associations)
    Reorder combining marks in character sequence so that they precede (within the sequence) the base character to which they are applied.
    java.lang.String toString()

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • WEIGHT_EXTRA_BOLD

      public static final int WEIGHT_EXTRA_BOLD
      Extra Bold font weight
      See Also:
      Constant Field Values
    • WEIGHT_BOLD

      public static final int WEIGHT_BOLD
      Bold font weight
      See Also:
      Constant Field Values
    • WEIGHT_NORMAL

      public static final int WEIGHT_NORMAL
      Normal font weight
      See Also:
      Constant Field Values
    • WEIGHT_LIGHT

      public static final int WEIGHT_LIGHT
      Light font weight
      See Also:
      Constant Field Values
    • STYLE_NORMAL

      public static final java.lang.String STYLE_NORMAL
      Normal font style
      See Also:
      Constant Field Values
    • STYLE_ITALIC

      public static final java.lang.String STYLE_ITALIC
      Italic font style
      See Also:
      Constant Field Values
    • STYLE_OBLIQUE

      public static final java.lang.String STYLE_OBLIQUE
      Oblique font style
      See Also:
      Constant Field Values
    • STYLE_INCLINED

      public static final java.lang.String STYLE_INCLINED
      Inclined font style
      See Also:
      Constant Field Values
    • PRIORITY_DEFAULT

      public static final int PRIORITY_DEFAULT
      Default selection priority
      See Also:
      Constant Field Values
    • DEFAULT_FONT

      public static final FontTriplet DEFAULT_FONT
      Default fallback key
  • Constructor Details

    • Font

      public Font​(java.lang.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 java.lang.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, java.lang.String script, java.lang.String language, java.lang.String feature)
      Returns:
      true if the font has feature (i.e., at least one lookup matches)
    • getKerning

      public java.util.Map<java.lang.Integer,​java.util.Map<java.lang.Integer,​java.lang.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 java.lang.String toString()
      Overrides:
      toString in class java.lang.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​(java.lang.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 java.lang.CharSequence performSubstitution​(java.lang.CharSequence cs, java.lang.String script, java.lang.String language, java.util.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 java.lang.CharSequence reorderCombiningMarks​(java.lang.CharSequence cs, int[][] gpa, java.lang.String script, java.lang.String language, java.util.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​(java.lang.CharSequence cs, java.lang.String script, java.lang.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​(java.lang.CharSequence cs, java.lang.String script, java.lang.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