Class GlyphSubstitutionTableReader


  • public class GlyphSubstitutionTableReader
    extends OpenTypeFontTableReader

    Parses an OpenTypeFont file and reads the Glyph Substitution Table. This table governs how two or more Glyphs should be merged to a single Glyph. This is especially useful for Asian languages like Bangla, Hindi, etc.

    This has been written according to the OPenTypeFont specifications. This may be found here.

    • Field Detail

      • glyphWidthsByIndex

        private final int[] glyphWidthsByIndex
      • glyphToCharacterMap

        private final java.util.Map<java.lang.Integer,​java.lang.Character> glyphToCharacterMap
      • rawLigatureSubstitutionMap

        private java.util.Map<java.lang.Integer,​java.util.List<java.lang.Integer>> rawLigatureSubstitutionMap
    • Constructor Detail

      • GlyphSubstitutionTableReader

        public GlyphSubstitutionTableReader​(RandomAccessFileOrArray rf,
                                            int gsubTableLocation,
                                            java.util.Map<java.lang.Integer,​java.lang.Character> glyphToCharacterMap,
                                            int[] glyphWidthsByIndex)
                                     throws java.io.IOException
        Throws:
        java.io.IOException
    • Method Detail

      • getTextFromGlyph

        private java.lang.String getTextFromGlyph​(int glyphId,
                                                  java.util.Map<java.lang.Integer,​java.lang.Character> glyphToCharacterMap)
                                           throws FontReadingException
        Throws:
        FontReadingException
      • readSubTable

        protected void readSubTable​(int lookupType,
                                    int subTableLocation)
                             throws java.io.IOException
        Specified by:
        readSubTable in class OpenTypeFontTableReader
        Throws:
        java.io.IOException
      • readSingleSubstitutionSubtable

        private void readSingleSubstitutionSubtable​(int subTableLocation)
                                             throws java.io.IOException
        LookupType 1: Single Substitution Subtable
        Throws:
        java.io.IOException
      • readLigatureSubstitutionSubtable

        private void readLigatureSubstitutionSubtable​(int ligatureSubstitutionSubtableLocation)
                                               throws java.io.IOException
        LookupType 4: Ligature Substitution Subtable
        Throws:
        java.io.IOException
      • readLigatureSetTable

        private void readLigatureSetTable​(int ligatureSetTableLocation,
                                          int coverageGlyphId)
                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • readLigatureTable

        private void readLigatureTable​(int ligatureTableLocation,
                                       int coverageGlyphId)
                                throws java.io.IOException
        Throws:
        java.io.IOException