Package org.apache.fop.fonts.truetype
Class GlyfTable
- java.lang.Object
-
- org.apache.fop.fonts.truetype.GlyfTable
-
public class GlyfTable extends java.lang.ObjectThis "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.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classGlyfTable.GlyfFlags
-
Field Summary
Fields Modifier and Type Field Description protected java.util.Set<java.lang.Integer>composedGlyphsAll the glyphs that are composed, but do not appear in the subset.protected java.util.Set<java.lang.Integer>compositeGlyphsAll the composite glyphs that appear in the subset.private FontFileReaderinprivate OFMtxEntry[]mtxTabprivate java.util.Set<java.lang.Long>remappedCompositesprotected java.util.Map<java.lang.Integer,java.lang.Integer>subsetprivate longtableOffset
-
Constructor Summary
Constructors Constructor Description GlyfTable(FontFileReader in, OFMtxEntry[] metrics, OFDirTabEntry dirTableEntry, java.util.Map<java.lang.Integer,java.lang.Integer> glyphs)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidaddAllComposedGlyphsToSubset()Adds to the subset, all the glyphs that are composed by a glyph, but do not appear themselves in the subset.booleanisComposite(int indexInOriginal)protected voidpopulateGlyphsWithComposites()Populates the map of subset glyphs with all the glyphs that compose the glyphs in the subset.private voidremapComposite(long glyphOffset)Re-maps the index of composed glyphs in the original font to the index of the same glyph in the subset font.java.util.Set<java.lang.Integer>retrieveComposedGlyphs(int indexInOriginal)Reads a composite glyph at a given index and retrieves all the glyph indices of contingent composed glyphs.private voidscanGlyphsRecursively(int indexInOriginal)Scans each glyph for any composed glyphs.
-
-
-
Field Detail
-
mtxTab
private final OFMtxEntry[] mtxTab
-
tableOffset
private final long tableOffset
-
remappedComposites
private final java.util.Set<java.lang.Long> remappedComposites
-
subset
protected final java.util.Map<java.lang.Integer,java.lang.Integer> subset
-
in
private final FontFileReader in
-
compositeGlyphs
protected java.util.Set<java.lang.Integer> compositeGlyphs
All the composite glyphs that appear in the subset.
-
composedGlyphs
protected java.util.Set<java.lang.Integer> composedGlyphs
All the glyphs that are composed, but do not appear in the subset.
-
-
Constructor Detail
-
GlyfTable
public GlyfTable(FontFileReader in, OFMtxEntry[] metrics, OFDirTabEntry dirTableEntry, java.util.Map<java.lang.Integer,java.lang.Integer> glyphs) throws java.io.IOException
- Throws:
java.io.IOException
-
-
Method Detail
-
populateGlyphsWithComposites
protected void populateGlyphsWithComposites() throws java.io.IOExceptionPopulates 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:
java.io.IOException- an I/O error
-
scanGlyphsRecursively
private void scanGlyphsRecursively(int indexInOriginal) throws java.io.IOExceptionScans each glyph for any composed glyphs. This populatescompositeGlyphswith all the composite glyphs being used in the subset. This also populatesnewGlyphswith 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:
java.io.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 java.io.IOExceptionRe-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:
java.io.IOException- an I/O error
-
isComposite
public boolean isComposite(int indexInOriginal) throws java.io.IOException- Throws:
java.io.IOException
-
retrieveComposedGlyphs
public java.util.Set<java.lang.Integer> retrieveComposedGlyphs(int indexInOriginal) throws java.io.IOExceptionReads 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:
java.io.IOException- an I/O error
-
-