Class GlyphDefinitionTable
- java.lang.Object
-
- org.apache.fop.complexscripts.fonts.GlyphTable
-
- org.apache.fop.complexscripts.fonts.GlyphDefinitionTable
-
public class GlyphDefinitionTable extends GlyphTable
The
GlyphDefinitionTable
class is a glyph table that implements glyph definition functionality according to the OpenType GDEF table.This work was originally authored by Glenn Adams (gadams@apache.org).
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.fop.complexscripts.fonts.GlyphTable
GlyphTable.ChainedClassSequenceRule, GlyphTable.ChainedCoverageSequenceRule, GlyphTable.ChainedGlyphSequenceRule, GlyphTable.ClassSequenceRule, GlyphTable.CoverageSequenceRule, GlyphTable.GlyphSequenceRule, GlyphTable.HomogeneousRuleSet, GlyphTable.LookupSpec, GlyphTable.LookupTable, GlyphTable.Rule, GlyphTable.RuleLookup, GlyphTable.RuleSet, GlyphTable.UseSpec
-
-
Field Summary
Fields Modifier and Type Field Description static int
GDEF_LOOKUP_TYPE_ATTACHMENT_POINT
attachment point subtable typestatic int
GDEF_LOOKUP_TYPE_GLYPH_CLASS
glyph class subtable typestatic int
GDEF_LOOKUP_TYPE_LIGATURE_CARET
ligature caret subtable typestatic int
GDEF_LOOKUP_TYPE_MARK_ATTACHMENT
mark attachment subtable typestatic int
GLYPH_CLASS_BASE
pre-defined glyph class - base glyphstatic int
GLYPH_CLASS_COMPONENT
pre-defined glyph class - component glyphstatic int
GLYPH_CLASS_LIGATURE
pre-defined glyph class - ligature glyphstatic int
GLYPH_CLASS_MARK
pre-defined glyph class - mark glyph-
Fields inherited from class org.apache.fop.complexscripts.fonts.GlyphTable
GLYPH_TABLE_TYPE_BASELINE, GLYPH_TABLE_TYPE_DEFINITION, GLYPH_TABLE_TYPE_JUSTIFICATION, GLYPH_TABLE_TYPE_POSITIONING, GLYPH_TABLE_TYPE_SUBSTITUTION, processors
-
-
Constructor Summary
Constructors Constructor Description GlyphDefinitionTable(java.util.List subtables, java.util.Map<java.lang.String,ScriptProcessor> processors)
Instantiate aGlyphDefinitionTable
object using the specified subtables.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
addSubtable(GlyphSubtable subtable)
Add a subtable.static GlyphSubtable
createSubtable(int type, java.lang.String id, int sequence, int flags, int format, GlyphMappingTable mapping, java.util.List entries)
Create a definition subtable according to the specified arguments.int
getGlyphClass(int gid)
Determine glyph class.static int
getLookupTypeFromName(java.lang.String name)
Map a lookup type name to its constant (integer) value.static java.lang.String
getLookupTypeName(int type)
Map a lookup type constant (integer) value to its name.int
getMarkAttachClass(int gid)
Determine mark attachment class.boolean
isGlyphClass(int gid, int gc)
Determine if glyph belongs to pre-defined glyph class.boolean
isMarkAttachClass(int gid, int mac)
Determine if glyph belongs to (font specific) mark attachment class.GlyphSequence
reorderCombiningMarks(GlyphSequence gs, int[] widths, int[][] gpa, java.lang.String script, java.lang.String language)
Reorder combining marks in glyph sequence so that they precede (within the sequence) the base character to which they are applied.-
Methods inherited from class org.apache.fop.complexscripts.fonts.GlyphTable
assembleLookups, findLookupTables, freezeSubtables, getGlyphDefinitions, getLookups, getLookupTable, getLookupTables, getTableTypeFromName, hasFeature, matchLookups, matchLookupSpecs, resolveLookupReferences, toString
-
-
-
-
Field Detail
-
GDEF_LOOKUP_TYPE_GLYPH_CLASS
public static final int GDEF_LOOKUP_TYPE_GLYPH_CLASS
glyph class subtable type- See Also:
- Constant Field Values
-
GDEF_LOOKUP_TYPE_ATTACHMENT_POINT
public static final int GDEF_LOOKUP_TYPE_ATTACHMENT_POINT
attachment point subtable type- See Also:
- Constant Field Values
-
GDEF_LOOKUP_TYPE_LIGATURE_CARET
public static final int GDEF_LOOKUP_TYPE_LIGATURE_CARET
ligature caret subtable type- See Also:
- Constant Field Values
-
GDEF_LOOKUP_TYPE_MARK_ATTACHMENT
public static final int GDEF_LOOKUP_TYPE_MARK_ATTACHMENT
mark attachment subtable type- See Also:
- Constant Field Values
-
GLYPH_CLASS_BASE
public static final int GLYPH_CLASS_BASE
pre-defined glyph class - base glyph- See Also:
- Constant Field Values
-
GLYPH_CLASS_LIGATURE
public static final int GLYPH_CLASS_LIGATURE
pre-defined glyph class - ligature glyph- See Also:
- Constant Field Values
-
GLYPH_CLASS_MARK
public static final int GLYPH_CLASS_MARK
pre-defined glyph class - mark glyph- See Also:
- Constant Field Values
-
GLYPH_CLASS_COMPONENT
public static final int GLYPH_CLASS_COMPONENT
pre-defined glyph class - component glyph- See Also:
- Constant Field Values
-
-
Constructor Detail
-
GlyphDefinitionTable
public GlyphDefinitionTable(java.util.List subtables, java.util.Map<java.lang.String,ScriptProcessor> processors)
Instantiate aGlyphDefinitionTable
object using the specified subtables.- Parameters:
subtables
- a list of identified subtables
-
-
Method Detail
-
reorderCombiningMarks
public GlyphSequence reorderCombiningMarks(GlyphSequence gs, int[] widths, int[][] gpa, java.lang.String script, java.lang.String language)
Reorder combining marks in glyph sequence so that they precede (within the sequence) the base character to which they are applied. N.B. In the case of LTR segments, marks are not reordered by this, method since when the segment is reversed by BIDI processing, marks are automatically reordered to precede their base glyph.- Parameters:
gs
- an input glyph sequencewidths
- associated advance widths (also reordered)gpa
- associated glyph position adjustments (also reordered)script
- a script identifierlanguage
- a language identifier- Returns:
- the reordered (output) glyph sequence
-
addSubtable
protected void addSubtable(GlyphSubtable subtable)
Add a subtable.- Overrides:
addSubtable
in classGlyphTable
- Parameters:
subtable
- a (non-null) glyph subtable
-
isGlyphClass
public boolean isGlyphClass(int gid, int gc)
Determine if glyph belongs to pre-defined glyph class.- Parameters:
gid
- a glyph identifier (index)gc
- a pre-defined glyph class (GLYPH_CLASS_BASE|GLYPH_CLASS_LIGATURE|GLYPH_CLASS_MARK|GLYPH_CLASS_COMPONENT).- Returns:
- true if glyph belongs to specified glyph class
-
getGlyphClass
public int getGlyphClass(int gid)
Determine glyph class.- Parameters:
gid
- a glyph identifier (index)- Returns:
- a pre-defined glyph class (GLYPH_CLASS_BASE|GLYPH_CLASS_LIGATURE|GLYPH_CLASS_MARK|GLYPH_CLASS_COMPONENT).
-
isMarkAttachClass
public boolean isMarkAttachClass(int gid, int mac)
Determine if glyph belongs to (font specific) mark attachment class.- Parameters:
gid
- a glyph identifier (index)mac
- a (font specific) mark attachment class- Returns:
- true if glyph belongs to specified mark attachment class
-
getMarkAttachClass
public int getMarkAttachClass(int gid)
Determine mark attachment class.- Parameters:
gid
- a glyph identifier (index)- Returns:
- a non-negative mark attachment class, or -1 if no class defined
-
getLookupTypeFromName
public static int getLookupTypeFromName(java.lang.String name)
Map a lookup type name to its constant (integer) value.- Parameters:
name
- lookup type name- Returns:
- lookup type
-
getLookupTypeName
public static java.lang.String getLookupTypeName(int type)
Map a lookup type constant (integer) value to its name.- Parameters:
type
- lookup type- Returns:
- lookup type name
-
createSubtable
public static GlyphSubtable createSubtable(int type, java.lang.String id, int sequence, int flags, int format, GlyphMappingTable mapping, java.util.List entries)
Create a definition subtable according to the specified arguments.- Parameters:
type
- subtable typeid
- subtable identifiersequence
- subtable sequenceflags
- subtable flags (must be zero)format
- subtable formatmapping
- subtable mapping tableentries
- subtable entries- Returns:
- a glyph subtable instance
-
-