Class LazyFont

    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int getAscender()
      Returns the ascender value of the font.
      int getAscender​(int size)
      Returns the ascent of the font described by this FontMetrics object.
      java.awt.Rectangle getBoundingBox​(int glyphIndex, int size)
      Returns the bounding box of the glyph at the given index, for the given font size.
      int getCapHeight()
      Returns the capital height of the font.
      int getCapHeight​(int size)
      Returns the size of a capital letter measured from the font's baseline.
      int getDescender()
      Returns the descender value of the font.
      int getDescender​(int size)
      Returns the descent of the font described by this FontMetrics object.
      java.lang.String getEmbedFontName()
      Returns the font name for font embedding (may include a prefix, Example: "1E28bcArialMT").
      java.lang.String getEncodingName()
      Get the encoding of the font.
      java.util.Set<java.lang.String> getFamilyNames()
      Returns the font's family names as a Set of Strings (Example: "Helvetica").
      int getFlags()
      Returns the flags for the font.
      int[] getFontBBox()
      Returns the font's bounding box.
      java.lang.String getFontName()
      Returns the "PostScript" font name (Example: "Helvetica-BoldOblique").
      FontType getFontType()
      Returns the type of the font.
      java.net.URI getFontURI()
      Returns the URI of the font file from which these metrics were loaded.
      java.lang.String getFullName()
      Returns the font's full name (Example: "Helvetica Bold Oblique").
      int getItalicAngle()
      Returns the italic angle for the font.
      java.util.Map<java.lang.Integer,​java.util.Map<java.lang.Integer,​java.lang.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.
      Typeface getRealFont()
      Gets the real font.
      int getStemV()
      Returns the vertical stem width for the font.
      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 hadMappingOperations()
      Indicates whether this font had to do any character mapping operations.
      boolean hasChar​(char c)
      Determines whether this font contains a particular character/glyph.
      boolean hasFeature​(int tableType, java.lang.String script, java.lang.String language, java.lang.String feature)
      Determine if metrics supports specific feature in specified font table.
      boolean hasKerningInfo()
      Indicates if the font has kerning information.
      boolean isEmbeddable()
      Indicates if this font may be embedded.
      boolean isMultiByte()
      Determines whether the font is a multibyte font.
      boolean isSubsetEmbedded()
      Indicates whether this font is subset embedded.
      boolean isSymbolicFont()
      Indicates whether the font is a symbolic font.
      private void load​(boolean fail)  
      char mapChar​(char c)
      Map a Unicode character to a code point in the font.
      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

      • log

        private static org.apache.commons.logging.Log log
      • fontUris

        private final FontUris fontUris
      • useKerning

        private final boolean useKerning
      • useAdvanced

        private final boolean useAdvanced
      • simulateStyle

        private boolean simulateStyle
      • embedAsType1

        private boolean embedAsType1
      • useSVG

        private boolean useSVG
      • subFontName

        private final java.lang.String subFontName
      • embedded

        private final boolean embedded
      • isMetricsLoaded

        private boolean isMetricsLoaded
    • Constructor Detail

      • LazyFont

        public LazyFont​(EmbedFontInfo fontInfo,
                        InternalResourceResolver resourceResolver,
                        boolean useComplexScripts)
        Main constructor
        Parameters:
        fontInfo - the font info to embed
        resourceResolver - the font resolver to handle font URIs
    • Method Detail

      • toString

        public java.lang.String toString()
        Overrides:
        toString in class Typeface
      • load

        private void load​(boolean fail)
      • getRealFont

        public Typeface getRealFont()
        Gets the real font.
        Returns:
        the real font
      • getEncodingName

        public java.lang.String getEncodingName()
        Get the encoding of the font.
        Specified by:
        getEncodingName in class Typeface
        Returns:
        the encoding
      • mapChar

        public 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
      • hadMappingOperations

        public boolean hadMappingOperations()
        Indicates whether this font had to do any character mapping operations. If that was not the case, it's an indication that the font has never actually been used.
        Overrides:
        hadMappingOperations in class Typeface
        Returns:
        true if the font had to do any character mapping operations
      • hasChar

        public 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
      • 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
      • getFontURI

        public java.net.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
      • getFontName

        public java.lang.String getFontName()
        Returns the "PostScript" font name (Example: "Helvetica-BoldOblique").
        Specified by:
        getFontName in interface FontMetrics
        Returns:
        the font name
      • getEmbedFontName

        public java.lang.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
      • getFullName

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

        public java.util.Set<java.lang.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)
      • getMaxAscent

        public int getMaxAscent​(int size)
        Returns the maximum ascent of the font described by this FontMetrics object. Note: This is not the same as getAscender().
        Specified by:
        getMaxAscent in interface FontMetrics
        Overrides:
        getMaxAscent in class Typeface
        Parameters:
        size - font size
        Returns:
        ascent in milliponts
      • getAscender

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

        public 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
      • getWidth

        public 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 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 java.awt.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
      • hasKerningInfo

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

        public java.util.Map<java.lang.Integer,​java.util.Map<java.lang.Integer,​java.lang.Integer>> getKerningInfo()
        Returns the kerning map for the font.
        Specified by:
        getKerningInfo in interface FontMetrics
        Returns:
        the kerning map
      • hasFeature

        public boolean hasFeature​(int tableType,
                                  java.lang.String script,
                                  java.lang.String language,
                                  java.lang.String feature)
        Determine if metrics supports specific feature in specified font table.
        Specified by:
        hasFeature in interface FontMetrics
        Overrides:
        hasFeature in class Typeface
        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)
      • getCapHeight

        public int getCapHeight()
        Returns the capital height of the font.
        Specified by:
        getCapHeight in interface FontDescriptor
        Returns:
        the capital height
      • getDescender

        public int getDescender()
        Returns the descender value of the font. (Descent in pdf spec)
        Specified by:
        getDescender in interface FontDescriptor
        Returns:
        the descender value
      • getAscender

        public int getAscender()
        Returns the ascender value of the font. (Ascent in pdf spec)
        Specified by:
        getAscender in interface FontDescriptor
        Returns:
        the ascender
      • getFlags

        public int getFlags()
        Returns the flags for the font. (See pdf spec)
        Specified by:
        getFlags in interface FontDescriptor
        Returns:
        the flags
      • isSymbolicFont

        public boolean isSymbolicFont()
        Indicates whether the font is a symbolic font.
        Specified by:
        isSymbolicFont in interface FontDescriptor
        Returns:
        true if the font is a symbolic font (i.e. Symbol or ZapfDingbats)
      • getFontBBox

        public int[] getFontBBox()
        Returns the font's bounding box.
        Specified by:
        getFontBBox in interface FontDescriptor
        Returns:
        the bounding box
      • getItalicAngle

        public int getItalicAngle()
        Returns the italic angle for the font.
        Specified by:
        getItalicAngle in interface FontDescriptor
        Returns:
        the italic angle
      • getStemV

        public int getStemV()
        Returns the vertical stem width for the font.
        Specified by:
        getStemV in interface FontDescriptor
        Returns:
        the vertical stem width
      • getFontType

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

        public boolean isEmbeddable()
        Indicates if this font may be embedded.
        Specified by:
        isEmbeddable in interface FontDescriptor
        Returns:
        True, if embedding is possible/permitted
      • 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
      • isSubsetEmbedded

        public boolean isSubsetEmbedded()
        Indicates whether this font is subset embedded.
        Specified by:
        isSubsetEmbedded in interface FontDescriptor
        Returns:
        true if this font is subset embedded