fop 2.2

org.apache.fop.complexscripts.fonts
Class GlyphSubstitutionSubtable

java.lang.Object
  extended by org.apache.fop.complexscripts.fonts.GlyphSubtable
      extended by org.apache.fop.complexscripts.fonts.GlyphSubstitutionSubtable
All Implemented Interfaces:
java.lang.Comparable, GlyphSubstitution

public abstract class GlyphSubstitutionSubtable
extends GlyphSubtable
implements 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
protected GlyphSubstitutionSubtable(java.lang.String id, int sequence, int flags, int format, GlyphCoverageTable coverage)
          Instantiate a GlyphSubstitutionSubtable.
 
Method Summary
 int getTableType()
          
 java.lang.String getTypeName()
          
 boolean isCompatible(GlyphSubtable subtable)
          Determine if a glyph subtable is compatible with this glyph subtable.
static GlyphSequence substitute(GlyphSequence gs, java.lang.String script, java.lang.String language, java.lang.String feature, GlyphSubstitutionSubtable[] sta, ScriptContextTester sct)
          Apply substitutions.
 boolean substitute(GlyphSubstitutionState ss)
          Perform glyph substitution at the current index, mutating the substitution state object as required.
static GlyphSequence substitute(GlyphSubstitutionState ss, GlyphSubstitutionSubtable[] sta, int sequenceIndex)
          Apply substitutions using specified state and subtable array.
 boolean usesReverseScan()
          
 
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
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

GlyphSubstitutionSubtable

protected GlyphSubstitutionSubtable(java.lang.String id,
                                    int sequence,
                                    int flags,
                                    int format,
                                    GlyphCoverageTable coverage)
Instantiate a GlyphSubstitutionSubtable.

Parameters:
id - subtable identifier
sequence - subtable sequence
flags - subtable flags
format - subtable format
coverage - subtable coverage table
Method Detail

getTableType

public int getTableType()

Specified by:
getTableType in class GlyphSubtable
Returns:
this subtable's table type

getTypeName

public java.lang.String getTypeName()

Specified by:
getTypeName in class GlyphSubtable
Returns:
this subtable's type name

isCompatible

public boolean isCompatible(GlyphSubtable subtable)
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 class GlyphSubtable
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 class GlyphSubtable
Returns:
true if subtable uses reverse scanning of glyph sequence, meaning from the last glyph in a glyph sequence to the first glyph

substitute

public boolean substitute(GlyphSubstitutionState ss)
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 interface GlyphSubstitution
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). If sequenceIndex is non-negative, then apply subtables only when current position matches sequenceIndex in relation to the starting position. Furthermore, upon successful application at sequenceIndex, then apply default action for all remaining glyphs in input sequence.

Parameters:
ss - substitution state
sta - array of subtables to apply
sequenceIndex - if non negative, then apply subtables only at specified sequence index
Returns:
output glyph sequence

substitute

public static final GlyphSequence substitute(GlyphSequence gs,
                                             java.lang.String script,
                                             java.lang.String language,
                                             java.lang.String feature,
                                             GlyphSubstitutionSubtable[] sta,
                                             ScriptContextTester sct)
Apply substitutions.

Parameters:
gs - input glyph sequence
script - tag
language - tag
feature - tag
sta - subtable array
sct - script context tester
Returns:
output glyph sequence

fop 2.2

Copyright 1999-2017 The Apache Software Foundation. All Rights Reserved.