Class GlyphSubstitutionDataExtractor


  • public class GlyphSubstitutionDataExtractor
    extends java.lang.Object
    This class has utility methods to extract meaningful GsubData from the highly obfuscated GSUB Tables. This GsubData is then used to determine which combination of glyphs or words have to be replaced.
    • Field Detail

      • LOG

        private static final org.apache.commons.logging.Log LOG
    • Constructor Detail

      • GlyphSubstitutionDataExtractor

        public GlyphSubstitutionDataExtractor()
    • Method Detail

      • populateGsubData

        private void populateGsubData​(java.util.Map<java.lang.String,​java.util.Map<java.util.List<java.lang.Integer>,​java.lang.Integer>> gsubData,
                                      LangSysTable langSysTable,
                                      FeatureListTable featureListTable,
                                      LookupListTable lookupListTable)
      • populateGsubData

        private void populateGsubData​(java.util.Map<java.lang.String,​java.util.Map<java.util.List<java.lang.Integer>,​java.lang.Integer>> gsubData,
                                      FeatureRecord featureRecord,
                                      LookupListTable lookupListTable)
      • extractData

        private void extractData​(java.util.Map<java.util.List<java.lang.Integer>,​java.lang.Integer> glyphSubstitutionMap,
                                 LookupTable lookupTable)
      • extractDataFromSingleSubstTableFormat1Table

        private void extractDataFromSingleSubstTableFormat1Table​(java.util.Map<java.util.List<java.lang.Integer>,​java.lang.Integer> glyphSubstitutionMap,
                                                                 LookupTypeSingleSubstFormat1 singleSubstTableFormat1)
      • extractDataFromSingleSubstTableFormat2Table

        private void extractDataFromSingleSubstTableFormat2Table​(java.util.Map<java.util.List<java.lang.Integer>,​java.lang.Integer> glyphSubstitutionMap,
                                                                 LookupTypeSingleSubstFormat2 singleSubstTableFormat2)
      • extractDataFromMultipleSubstitutionFormat1Table

        private void extractDataFromMultipleSubstitutionFormat1Table​(java.util.Map<java.util.List<java.lang.Integer>,​java.lang.Integer> glyphSubstitutionMap,
                                                                     LookupTypeMultipleSubstitutionFormat1 multipleSubstFormat1Subtable)
      • extractDataFromLigatureSubstitutionSubstFormat1Table

        private void extractDataFromLigatureSubstitutionSubstFormat1Table​(java.util.Map<java.util.List<java.lang.Integer>,​java.lang.Integer> glyphSubstitutionMap,
                                                                          LookupTypeLigatureSubstitutionSubstFormat1 ligatureSubstitutionTable)
      • extractDataFromAlternateSubstitutionSubstFormat1Table

        private void extractDataFromAlternateSubstitutionSubstFormat1Table​(java.util.Map<java.util.List<java.lang.Integer>,​java.lang.Integer> glyphSubstitutionMap,
                                                                           LookupTypeAlternateSubstitutionFormat1 alternateSubstitutionFormat1)
        Extracts data from the AlternateSubstitutionFormat1 (lookuptype) 3 table and puts it in the glyphSubstitutionMap.
        Parameters:
        glyphSubstitutionMap - the map to store the substitution data
        alternateSubstitutionFormat1 - the alternate substitution format 1 table
      • extractDataFromLigatureTable

        private void extractDataFromLigatureTable​(java.util.Map<java.util.List<java.lang.Integer>,​java.lang.Integer> glyphSubstitutionMap,
                                                  LigatureTable ligatureTable)
      • putNewSubstitutionEntry

        private void putNewSubstitutionEntry​(java.util.Map<java.util.List<java.lang.Integer>,​java.lang.Integer> glyphSubstitutionMap,
                                             int newGlyph,
                                             java.util.List<java.lang.Integer> glyphsToBeSubstituted)