Class TrueTypeFontSubSet


  • class TrueTypeFontSubSet
    extends java.lang.Object
    Subsets a True Type font by removing the unneeded glyphs from the font.
    • Field Detail

      • tableNamesSimple

        static final java.lang.String[] tableNamesSimple
      • tableNamesCmap

        static final java.lang.String[] tableNamesCmap
      • tableNamesExtra

        static final java.lang.String[] tableNamesExtra
      • entrySelectors

        static final int[] entrySelectors
      • tableDirectory

        protected java.util.HashMap<java.lang.String,​int[]> tableDirectory
        Contains the location of the several tables. The key is the name of the table and the value is an int[3] where position 0 is the checksum, position 1 is the offset from the start of the file and position 2 is the length of the table.
      • fileName

        protected java.lang.String fileName
        The file name.
      • includeCmap

        protected boolean includeCmap
      • includeExtras

        protected boolean includeExtras
      • locaShortTable

        protected boolean locaShortTable
      • locaTable

        protected int[] locaTable
      • glyphsUsed

        protected java.util.HashSet<java.lang.Integer> glyphsUsed
      • glyphsInList

        protected java.util.ArrayList<java.lang.Integer> glyphsInList
      • tableGlyphOffset

        protected int tableGlyphOffset
      • newLocaTable

        protected int[] newLocaTable
      • newLocaTableOut

        protected byte[] newLocaTableOut
      • newGlyfTable

        protected byte[] newGlyfTable
      • glyfTableRealSize

        protected int glyfTableRealSize
      • locaTableRealSize

        protected int locaTableRealSize
      • outFont

        protected byte[] outFont
      • fontPtr

        protected int fontPtr
      • directoryOffset

        protected int directoryOffset
    • Constructor Detail

      • TrueTypeFontSubSet

        TrueTypeFontSubSet​(java.lang.String fileName,
                           RandomAccessFileOrArray rf,
                           java.util.HashSet<java.lang.Integer> glyphsUsed,
                           int directoryOffset,
                           boolean includeCmap,
                           boolean includeExtras)
        Creates a new TrueTypeFontSubSet
        Parameters:
        directoryOffset - The offset from the start of the file to the table directory
        fileName - the file name of the font
        glyphsUsed - the glyphs used
        includeCmap - true if the table cmap is to be included in the generated font
    • Method Detail

      • process

        byte[] process()
                throws java.io.IOException,
                       DocumentException
        Does the actual work of subsetting the font.
        Returns:
        the subset font
        Throws:
        java.io.IOException - on error
        DocumentException - on error
      • assembleFont

        protected void assembleFont()
                             throws java.io.IOException
        Throws:
        java.io.IOException
      • createNewGlyphTables

        protected void createNewGlyphTables()
                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • locaTobytes

        protected void locaTobytes()
      • checkGlyphComposite

        protected void checkGlyphComposite​(int glyph)
                                    throws java.io.IOException
        Throws:
        java.io.IOException
      • readStandardString

        protected java.lang.String readStandardString​(int length)
                                               throws java.io.IOException
        Reads a String from the font file as bytes using the Cp1252 encoding.
        Parameters:
        length - the length of bytes to read
        Returns:
        the String read
        Throws:
        java.io.IOException - the font file could not be read
      • writeFontShort

        protected void writeFontShort​(int n)
      • writeFontInt

        protected void writeFontInt​(int n)
      • writeFontString

        protected void writeFontString​(java.lang.String s)
      • calculateChecksum

        protected int calculateChecksum​(byte[] b)