Class OTFSubSetFile


  • public class OTFSubSetFile
    extends OTFSubSetWriter
    Reads an OpenType CFF file and generates a subset The OpenType specification can be found at the Microsoft Typography site: http://www.microsoft.com/typography/otspec/
    • Field Detail

      • subsetGlyphs

        protected java.util.Map<java.lang.Integer,​java.lang.Integer> subsetGlyphs
        A map containing each glyph to be included in the subset with their existing and new GID's
      • gidToSID

        protected java.util.Map<java.lang.Integer,​java.lang.Integer> gidToSID
        A map of the new GID to SID used to construct the charset table
      • subsetLocalIndexSubr

        protected java.util.List<byte[]> subsetLocalIndexSubr
        List of subroutines to write to the local / global indexes in the subset font
      • subsetGlobalIndexSubr

        protected java.util.List<byte[]> subsetGlobalIndexSubr
      • fdSubrs

        protected java.util.List<java.util.List<byte[]>> fdSubrs
        For fonts which have an FDSelect or ROS flag in Top Dict, this is used to store the local subroutine indexes for each group as opposed to the above subsetLocalIndexSubr
      • localUniques

        protected java.util.List<java.lang.Integer> localUniques
        A list of unique subroutines from the global / local subroutine indexes
      • globalUniques

        protected java.util.List<java.lang.Integer> globalUniques
      • subsetLocalSubrCount

        protected int subsetLocalSubrCount
        A store of the number of subroutines each global / local subroutine will store
      • subsetGlobalSubrCount

        protected int subsetGlobalSubrCount
      • subsetCharStringsIndex

        protected java.util.List<byte[]> subsetCharStringsIndex
        A list of char string data for each glyph to be stored in the subset font
      • embeddedName

        protected java.lang.String embeddedName
        The embedded name to change in the name table
      • stringIndexData

        protected java.util.List<byte[]> stringIndexData
        An array used to hold the string index data for the subset font
      • cffReader

        protected CFFDataReader cffReader
        The CFF reader object used to read data and offsets from the original font file
      • NUM_STANDARD_STRINGS

        public static final int NUM_STANDARD_STRINGS
        The number of standard strings in CFF
        See Also:
        Constant Field Values
    • Constructor Detail

      • OTFSubSetFile

        public OTFSubSetFile()
                      throws java.io.IOException
        Throws:
        java.io.IOException
    • Method Detail

      • readFont

        public void readFont​(FontFileReader in,
                             java.lang.String embeddedName,
                             MultiByteFont mbFont)
                      throws java.io.IOException
        Description copied from class: OpenFont
        Reads a font.
        Overrides:
        readFont in class OpenFont
        Parameters:
        in - FontFileReader to read from
        Throws:
        java.io.IOException - in case of an I/O problem
      • createCFF

        protected void createCFF()
                          throws java.io.IOException
        Throws:
        java.io.IOException
      • storeFDStrings

        protected java.util.List<java.lang.Integer> storeFDStrings​(java.util.List<java.lang.Integer> uniqueNewRefs)
                                                            throws java.io.IOException
        Throws:
        java.io.IOException
      • writeTopDICT

        protected int writeTopDICT()
                            throws java.io.IOException
        Throws:
        java.io.IOException
      • writeCIDCount

        protected byte[] writeCIDCount​(CFFDataReader.DICTEntry dictEntry)
                                throws java.io.IOException
        Throws:
        java.io.IOException
      • createCharStringDataCID

        protected void createCharStringDataCID()
                                        throws java.io.IOException
        Throws:
        java.io.IOException
      • writeFDSelect

        protected void writeFDSelect()
      • getUsedFDFonts

        protected java.util.List<java.lang.Integer> getUsedFDFonts()
      • writeCIDDictsAndSubrs

        protected java.util.List<java.lang.Integer> writeCIDDictsAndSubrs​(java.util.List<java.lang.Integer> uniqueNewRefs)
                                                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • writeFDArray

        protected int writeFDArray​(java.util.List<java.lang.Integer> uniqueNewRefs,
                                   java.util.List<java.lang.Integer> privateDictOffsets,
                                   java.util.List<java.lang.Integer> fontNameSIDs)
                            throws java.io.IOException
        Throws:
        java.io.IOException
      • createNewRef

        public static byte[] createNewRef​(int newRef,
                                          int[] operatorCode,
                                          int forceLength,
                                          boolean isDict)
      • writeIndex

        protected int writeIndex​(java.util.List<byte[]> dataArray)
      • writeIndex

        protected int writeIndex​(java.util.List<byte[]> dataArray,
                                 int offSize)
      • writePrivateDict

        protected void writePrivateDict()
                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • updateOffsets

        protected void updateOffsets​(org.apache.fop.fonts.truetype.OTFSubSetFile.Offsets offsets)
                              throws java.io.IOException
        Throws:
        java.io.IOException
      • updateFixedOffsets

        protected void updateFixedOffsets​(java.util.Map<java.lang.String,​CFFDataReader.DICTEntry> topDICT,
                                          org.apache.fop.fonts.truetype.OTFSubSetFile.Offsets offsets)
                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • updateCIDOffsets

        protected void updateCIDOffsets​(org.apache.fop.fonts.truetype.OTFSubSetFile.Offsets offsets)
                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • getCFFReader

        public CFFDataReader getCFFReader()
        Returns the parsed CFF data for the original font.
        Returns:
        The CFFDataReader contaiing the parsed data