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 Details

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

      protected CFFDataReader.CFFIndexData localIndexSubr
    • globalIndexSubr

      protected CFFDataReader.CFFIndexData globalIndexSubr
    • 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 Details

    • OTFSubSetFile

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

    • 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.docx4j.fonts.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.docx4j.fonts.fop.fonts.truetype.OTFSubSetFile.Offsets offsets) throws java.io.IOException
      Throws:
      java.io.IOException
    • updateCIDOffsets

      protected void updateCIDOffsets​(org.docx4j.fonts.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