Class Font

    • Constructor Summary

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

      All Methods Instance Methods Concrete Methods 
      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.
      private FontMetrics getRealFontMetrics()
      Get the real underlying font if it is wrapped inside some container such as a LazyFont or a CustomFontMetricsMapper.
      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 Detail

      • WEIGHT_EXTRA_BOLD

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

        public static final int WEIGHT_NORMAL
        Normal 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
      • log

        private static org.apache.commons.logging.Log log
        logger
      • fontName

        private final java.lang.String fontName
      • fontSize

        private final int fontSize
      • metric

        private final FontMetrics metric
        normal or small-caps font
    • Constructor Detail

      • 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 Detail

      • 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
      • getRealFontMetrics

        private FontMetrics getRealFontMetrics()
        Get the real underlying font if it is wrapped inside some container such as a LazyFont or a CustomFontMetricsMapper.
        Returns:
        instance of the font
      • 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