Class GlyfTable

java.lang.Object
org.apache.fop.fonts.truetype.GlyfTable

public class GlyfTable extends Object
This "glyf" table in a TrueType font file contains information that describes the glyphs. This class is responsible for creating a subset of the "glyf" table given a set of glyph indices.
  • Field Details

    • mtxTab

      private final OFMtxEntry[] mtxTab
    • tableOffset

      private final long tableOffset
    • remappedComposites

      private final Set<Long> remappedComposites
    • subset

      protected final Map<Integer,Integer> subset
    • in

      private final FontFileReader in
    • compositeGlyphs

      protected Set<Integer> compositeGlyphs
      All the composite glyphs that appear in the subset.
    • composedGlyphs

      protected Set<Integer> composedGlyphs
      All the glyphs that are composed, but do not appear in the subset.
  • Constructor Details

  • Method Details

    • populateGlyphsWithComposites

      protected void populateGlyphsWithComposites() throws IOException
      Populates the map of subset glyphs with all the glyphs that compose the glyphs in the subset. This also re-maps the indices of composed glyphs to their new index in the subset font.
      Throws:
      IOException - an I/O error
    • scanGlyphsRecursively

      private void scanGlyphsRecursively(int indexInOriginal) throws IOException
      Scans each glyph for any composed glyphs. This populates compositeGlyphs with all the composite glyphs being used in the subset. This also populates newGlyphs with any new glyphs that are composed and do not appear in the subset of glyphs. For example the double quote mark (") is often composed of two apostrophes ('), if an apostrophe doesn't appear in the glyphs in the subset, it will be included and will be added to newGlyphs.
      Parameters:
      indexInOriginal - the index of the glyph to test from the original font
      Throws:
      IOException - an I/O error
    • addAllComposedGlyphsToSubset

      protected void addAllComposedGlyphsToSubset()
      Adds to the subset, all the glyphs that are composed by a glyph, but do not appear themselves in the subset.
    • remapComposite

      private void remapComposite(long glyphOffset) throws IOException
      Re-maps the index of composed glyphs in the original font to the index of the same glyph in the subset font.
      Parameters:
      glyphOffset - the offset of the composite glyph
      Throws:
      IOException - an I/O error
    • isComposite

      public boolean isComposite(int indexInOriginal) throws IOException
      Throws:
      IOException
    • retrieveComposedGlyphs

      public Set<Integer> retrieveComposedGlyphs(int indexInOriginal) throws IOException
      Reads a composite glyph at a given index and retrieves all the glyph indices of contingent composed glyphs.
      Parameters:
      indexInOriginal - the glyph index of the composite glyph
      Returns:
      the set of glyph indices this glyph composes
      Throws:
      IOException - an I/O error