Class GlyphSubstitutionSubtable
java.lang.Object
org.apache.fop.complexscripts.fonts.GlyphSubtable
org.apache.fop.complexscripts.fonts.GlyphSubstitutionSubtable
- All Implemented Interfaces:
Comparable
,GlyphSubstitution
The GlyphSubstitutionSubtable
implements an abstract base of a glyph substitution subtable,
providing a default implementation of the GlyphSubstitution
interface.
This work was originally authored by Glenn Adams (gadams@apache.org).
-
Field Summary
Fields inherited from class org.apache.fop.complexscripts.fonts.GlyphSubtable
LF_IGNORE_BASE, LF_IGNORE_LIGATURE, LF_IGNORE_MARK, LF_INTERNAL_USE_REVERSE_SCAN, LF_MARK_ATTACHMENT_TYPE, LF_RESERVED, LF_RIGHT_TO_LEFT, LF_USE_MARK_FILTERING_SET
-
Constructor Summary
ModifierConstructorDescriptionprotected
GlyphSubstitutionSubtable
(String id, int sequence, int flags, int format, GlyphCoverageTable coverage) Instantiate aGlyphSubstitutionSubtable
. -
Method Summary
Modifier and TypeMethodDescriptionint
boolean
isCompatible
(GlyphSubtable subtable) Determine if a glyph subtable is compatible with this glyph subtable.boolean
Perform glyph substitution at the current index, mutating the substitution state object as required.static final GlyphSequence
substitute
(GlyphSubstitutionState ss, GlyphSubstitutionSubtable[] sta, int sequenceIndex) Apply substitutions using specified state and subtable array.static final GlyphSequence
substitute
(GlyphSequence gs, String script, String language, String feature, GlyphSubstitutionSubtable[] sta, ScriptContextTester sct) Apply substitutions.boolean
Methods inherited from class org.apache.fop.complexscripts.fonts.GlyphSubtable
compareTo, equals, getClasses, getCoverage, getCoverageIndex, getCoverageSize, getEntries, getFlags, getFlags, getFormat, getGDEF, getLookupId, getSequence, getTable, getType, hashCode, resolveLookupReferences, setTable, usesReverseScan
-
Constructor Details
-
GlyphSubstitutionSubtable
protected GlyphSubstitutionSubtable(String id, int sequence, int flags, int format, GlyphCoverageTable coverage) Instantiate aGlyphSubstitutionSubtable
.- Parameters:
id
- subtable identifiersequence
- subtable sequenceflags
- subtable flagsformat
- subtable formatcoverage
- subtable coverage table
-
-
Method Details
-
getTableType
public int getTableType()- Specified by:
getTableType
in classGlyphSubtable
- Returns:
- this subtable's table type
-
getTypeName
- Specified by:
getTypeName
in classGlyphSubtable
- Returns:
- this subtable's type name
-
isCompatible
Determine if a glyph subtable is compatible with this glyph subtable. Two glyph subtables are compatible if the both may appear in a single lookup table.- Specified by:
isCompatible
in classGlyphSubtable
- Parameters:
subtable
- a glyph subtable to determine compatibility- Returns:
- true if specified subtable is compatible with this glyph subtable, where by compatible is meant that they share the same lookup type
-
usesReverseScan
public boolean usesReverseScan()- Specified by:
usesReverseScan
in classGlyphSubtable
- Returns:
- true if subtable uses reverse scanning of glyph sequence, meaning from the last glyph in a glyph sequence to the first glyph
-
substitute
Perform glyph substitution at the current index, mutating the substitution state object as required. Only the context associated with the current index is processed.- Specified by:
substitute
in interfaceGlyphSubstitution
- Parameters:
ss
- glyph substitution state object- Returns:
- true if the glyph subtable was applied, meaning that the current context matches the associated input context glyph coverage table
-
substitute
public static final GlyphSequence substitute(GlyphSubstitutionState ss, GlyphSubstitutionSubtable[] sta, int sequenceIndex) Apply substitutions using specified state and subtable array. For each position in input sequence, apply subtables in order until some subtable applies or none remain. If no subtable applied or no input was consumed for a given position, then apply default action (copy input glyph and advance). IfsequenceIndex
is non-negative, then apply subtables only when current position matchessequenceIndex
in relation to the starting position. Furthermore, upon successful application atsequenceIndex
, then apply default action for all remaining glyphs in input sequence.- Parameters:
ss
- substitution statesta
- array of subtables to applysequenceIndex
- if non negative, then apply subtables only at specified sequence index- Returns:
- output glyph sequence
-
substitute
public static final GlyphSequence substitute(GlyphSequence gs, String script, String language, String feature, GlyphSubstitutionSubtable[] sta, ScriptContextTester sct) Apply substitutions.- Parameters:
gs
- input glyph sequencescript
- taglanguage
- tagfeature
- tagsta
- subtable arraysct
- script context tester- Returns:
- output glyph sequence
-