Class CustomFont

java.lang.Object
org.docx4j.fonts.fop.fonts.Typeface
org.docx4j.fonts.fop.fonts.CustomFont
All Implemented Interfaces:
FontDescriptor, FontMetrics, MutableFont
Direct Known Subclasses:
CIDFont, SingleByteFont

public abstract class CustomFont
extends Typeface
implements FontDescriptor, MutableFont
Abstract base class for custom fonts loaded from files, for example.
  • Field Summary

    Fields inherited from class org.docx4j.fonts.fop.fonts.Typeface

    eventListener, NOT_FOUND
  • Constructor Summary

    Constructors 
    Constructor Description
    CustomFont()  
  • Method Summary

    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.
    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 getEmbedFileName()
    Returns an URI representing an embeddable font file.
    javax.xml.transform.Source getEmbedFileSource()
    Returns a Source representing an embeddable font file.
    java.lang.String getEmbedFontName()
    Returns the font name for font embedding (may include a prefix, Example: "1E28bcArialMT").
    java.lang.String getEmbedResourceName()
    Returns the lookup name to an embeddable font file available as a resource.
    java.util.Set getFamilyNames()
    Returns the font family names.
    int getFirstChar()
    Returns the index of the first character defined in this font.
    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").
    java.lang.String getFontSubName()
    Returns font's subfamily name.
    FontType getFontType()
    Returns the type of the font.
    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 getKerningInfo()
    Returns the kerning map for the font.
    int getLastChar()
    Returns the index of the last character defined in this font.
    int getMissingWidth()
    Returns the width to be used when no width is available.
    Panose getPanose()  
    int getStemV()
    Returns the vertical stem width for the font.
    java.lang.String getStrippedFontName()
    Returns the font family name stripped of whitespace.
    int getWeight()
    Returns the font weight (100, 200...800, 900).
    int getXHeight​(int size)
    Determines the typical font height of this FontMetrics object
    boolean hasKerningInfo()
    Indicates if the font has kering information.
    boolean isEmbeddable()
    Indicates if this font may be embedded.
    boolean isKerningEnabled()
    Used to determine if kerning is enabled.
    boolean isSymbolicFont()
    Indicates whether the font is a symbolic font.
    void putKerningEntry​(java.lang.Integer key, java.util.Map value)
    Adds an entry to the kerning table.
    void replaceKerningMap​(java.util.Map kerningMap)
    Replaces the existing kerning map with a new one.
    void setAscender​(int ascender)
    Sets the ascent value.
    void setCapHeight​(int capHeight)
    Sets the capital height value.
    void setDescender​(int descender)
    Sets the descent value.
    void setEmbeddable​(boolean isEmbeddable)  
    void setEmbedFileName​(java.lang.String path)
    Sets the path to the embeddable font file.
    void setEmbedResourceName​(java.lang.String name)
    Sets the resource name of the embeddable font file.
    void setFamilyNames​(java.util.Set names)
    Sets the font's family names (Example: "Helvetica").
    void setFirstChar​(int index)
    Sets the index of the first character in the character table.
    void setFlags​(int flags)
    Sets the font's flags
    void setFontBBox​(int[] bbox)
    Sets the font's bounding box
    void setFontName​(java.lang.String name)
    Sets the "PostScript" font name (Example: "Helvetica-BoldOblique").
    void setFontSubFamilyName​(java.lang.String subFamilyName)
    Sets the font's subfamily name.
    void setFontType​(FontType fontType)
    Sets the font type.
    void setFullName​(java.lang.String name)
    Sets the font's full name (usually the one that the operating system displays).
    void setItalicAngle​(int italicAngle)
    Sets the font's italic angle.
    void setKerningEnabled​(boolean enabled)
    Enables/disabled kerning.
    void setLastChar​(int index)
    Sets the index of the last character in the character table.
    void setMissingWidth​(int width)
    Sets the font's default width
    void setPanose​(Panose panose)  
    void setResolver​(FontResolver resolver)
    Sets the font resolver.
    void setStemV​(int stemV)
    Sets the font's StemV value.
    void setWeight​(int weight)
    Sets the font weight.
    void setXHeight​(int xHeight)
    Returns the XHeight value of the font.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    Methods inherited from interface org.docx4j.fonts.fop.fonts.FontMetrics

    getMaxAscent, getWidth, getWidths
  • Constructor Details

  • Method Details

    • isEmbeddable

      public boolean isEmbeddable()
      Description copied from interface: FontDescriptor
      Indicates if this font may be embedded.
      Specified by:
      isEmbeddable in interface FontDescriptor
      Returns:
      True, if embedding is possible/permitted
    • setEmbeddable

      public void setEmbeddable​(boolean isEmbeddable)
    • getPanose

      public Panose getPanose()
    • setPanose

      public void setPanose​(Panose panose)
    • 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 getFamilyNames()
      Returns the font family names.
      Specified by:
      getFamilyNames in interface FontMetrics
      Returns:
      the font family names (a Set of Strings)
    • getStrippedFontName

      public java.lang.String getStrippedFontName()
      Returns the font family name stripped of whitespace.
      Returns:
      the stripped font family
      See Also:
      FontUtil.stripWhiteSpace(String)
    • getFontSubName

      public java.lang.String getFontSubName()
      Returns font's subfamily name.
      Returns:
      the font's subfamily name
    • getEmbedFileName

      public java.lang.String getEmbedFileName()
      Returns an URI representing an embeddable font file. The URI will often be a filename or an URL.
      Returns:
      URI to an embeddable font file or null if not available.
    • getEmbedFileSource

      public javax.xml.transform.Source getEmbedFileSource() throws java.io.IOException
      Returns a Source representing an embeddable font file.
      Returns:
      Source for an embeddable font file
      Throws:
      java.io.IOException - if embedFileName is not null but Source is not found
    • getEmbedResourceName

      public java.lang.String getEmbedResourceName()
      Returns the lookup name to an embeddable font file available as a resource. (todo) Remove this method, this should be done using a resource: URI.
      Returns:
      the lookup name
    • getAscender

      public int getAscender()
      Returns the ascender value of the font. (Ascent in pdf spec)
      Specified by:
      getAscender in interface FontDescriptor
      Returns:
      the ascender
    • 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
    • getCapHeight

      public int getCapHeight()
      Returns the capital height of the font.
      Specified by:
      getCapHeight in interface FontDescriptor
      Returns:
      the capital height
    • 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
    • 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
    • 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
    • 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
    • getFontBBox

      public int[] getFontBBox()
      Returns the font's bounding box.
      Specified by:
      getFontBBox in interface FontDescriptor
      Returns:
      the bounding box
    • 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)
    • getWeight

      public int getWeight()
      Returns the font weight (100, 200...800, 900). This value may be different from the one that was actually used to register the font.
      Returns:
      the font weight (or 0 if the font weight is unknown)
    • getStemV

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

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

      public int getMissingWidth()
      Returns the width to be used when no width is available.
      Returns:
      a character width
    • getFontType

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

      public int getFirstChar()
      Returns the index of the first character defined in this font.
      Returns:
      the index of the first character
    • getLastChar

      public int getLastChar()
      Returns the index of the last character defined in this font.
      Returns:
      the index of the last character
    • isKerningEnabled

      public boolean isKerningEnabled()
      Used to determine if kerning is enabled.
      Returns:
      True if kerning is enabled.
    • hasKerningInfo

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

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

      public void setFontName​(java.lang.String name)
      Sets the "PostScript" font name (Example: "Helvetica-BoldOblique").
      Specified by:
      setFontName in interface MutableFont
      Parameters:
      name - font name
    • setFullName

      public void setFullName​(java.lang.String name)
      Sets the font's full name (usually the one that the operating system displays). Example: "Helvetica Bold Oblique".
      Specified by:
      setFullName in interface MutableFont
      Parameters:
      name - font' full name
    • setFamilyNames

      public void setFamilyNames​(java.util.Set names)
      Sets the font's family names (Example: "Helvetica").
      Specified by:
      setFamilyNames in interface MutableFont
      Parameters:
      names - the font's family names (a Set of Strings)
    • setFontSubFamilyName

      public void setFontSubFamilyName​(java.lang.String subFamilyName)
      Sets the font's subfamily name.
      Parameters:
      subFamilyName - the subfamily name of the font
    • setEmbedFileName

      public void setEmbedFileName​(java.lang.String path)
      Sets the path to the embeddable font file.
      Specified by:
      setEmbedFileName in interface MutableFont
      Parameters:
      path - URI to the file
    • setEmbedResourceName

      public void setEmbedResourceName​(java.lang.String name)
      Sets the resource name of the embeddable font file.
      Specified by:
      setEmbedResourceName in interface MutableFont
      Parameters:
      name - resource name
    • setCapHeight

      public void setCapHeight​(int capHeight)
      Sets the capital height value.
      Specified by:
      setCapHeight in interface MutableFont
      Parameters:
      capHeight - capital height
    • setXHeight

      public void setXHeight​(int xHeight)
      Returns the XHeight value of the font.
      Parameters:
      xHeight - the XHeight value
    • setAscender

      public void setAscender​(int ascender)
      Sets the ascent value.
      Specified by:
      setAscender in interface MutableFont
      Parameters:
      ascender - ascent height
    • setDescender

      public void setDescender​(int descender)
      Sets the descent value.
      Specified by:
      setDescender in interface MutableFont
      Parameters:
      descender - descent value
    • setFontBBox

      public void setFontBBox​(int[] bbox)
      Sets the font's bounding box
      Specified by:
      setFontBBox in interface MutableFont
      Parameters:
      bbox - bounding box
    • setFlags

      public void setFlags​(int flags)
      Sets the font's flags
      Specified by:
      setFlags in interface MutableFont
      Parameters:
      flags - flags
    • setWeight

      public void setWeight​(int weight)
      Sets the font weight. Valid values are 100, 200...800, 900.
      Parameters:
      weight - the font weight
    • setStemV

      public void setStemV​(int stemV)
      Sets the font's StemV value.
      Specified by:
      setStemV in interface MutableFont
      Parameters:
      stemV - StemV
    • setItalicAngle

      public void setItalicAngle​(int italicAngle)
      Sets the font's italic angle.
      Specified by:
      setItalicAngle in interface MutableFont
      Parameters:
      italicAngle - italic angle
    • setMissingWidth

      public void setMissingWidth​(int width)
      Sets the font's default width
      Specified by:
      setMissingWidth in interface MutableFont
      Parameters:
      width - default width
    • setFontType

      public void setFontType​(FontType fontType)
      Sets the font type.
      Specified by:
      setFontType in interface MutableFont
      Parameters:
      fontType - font type
    • setFirstChar

      public void setFirstChar​(int index)
      Sets the index of the first character in the character table.
      Specified by:
      setFirstChar in interface MutableFont
      Parameters:
      index - index of first character
    • setLastChar

      public void setLastChar​(int index)
      Sets the index of the last character in the character table.
      Specified by:
      setLastChar in interface MutableFont
      Parameters:
      index - index of the last character
    • setKerningEnabled

      public void setKerningEnabled​(boolean enabled)
      Enables/disabled kerning.
      Specified by:
      setKerningEnabled in interface MutableFont
      Parameters:
      enabled - True if kerning should be enabled if available
    • setResolver

      public void setResolver​(FontResolver resolver)
      Sets the font resolver. Needed for URI resolution.
      Parameters:
      resolver - the font resolver
    • putKerningEntry

      public void putKerningEntry​(java.lang.Integer key, java.util.Map value)
      Adds an entry to the kerning table.
      Specified by:
      putKerningEntry in interface MutableFont
      Parameters:
      key - Kerning key
      value - Kerning value
    • replaceKerningMap

      public void replaceKerningMap​(java.util.Map kerningMap)
      Replaces the existing kerning map with a new one.
      Parameters:
      kerningMap - the kerning map (Map, the integers are character codes)