org.apache.fop.complexscripts.fonts

## Class GlyphSubstitutionState

- java.lang.Object
- - org.apache.fop.complexscripts.fonts.GlyphProcessingState
  - - org.apache.fop.complexscripts.fonts.GlyphSubstitutionState

-     public class GlyphSubstitutionState
      extends GlyphProcessingState

  The `GlyphSubstitutionState` implements an state object used during glyph substitution processing.

  This work was originally authored by Glenn Adams (gadams@apache.org).

- - ### Field Summary

    - ### Fields inherited from class org.apache.fop.complexscripts.fonts.GlyphProcessingState

      `classMatchSet, consumed, feature, gct, gdef, ignoreBase, ignoreDefault, ignoreLigature, ignoreMark, igs, index, indexLast, language, lookupFlags, script, sct`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `GlyphSubstitutionState()` Construct default (reset) glyph substitution state.
    `GlyphSubstitutionState(GlyphSequence gs, String script, String language, String feature, ScriptContextTester sct)` Construct glyph substitution state.
    `GlyphSubstitutionState(GlyphSubstitutionState ss)` Construct glyph substitution state using an existing state object using shallow copy except as follows: input glyph sequence is copied deep except for its characters array.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `apply(GlyphSubstitutionSubtable st)` Apply substitution subtable to current state at current position (only), resulting in the consumption of zero or more input glyphs, and possibly replacing the current input glyphs starting at the current position, in which case it is possible that indexLast is altered to be either less than or greater than its value prior to this application.
    `boolean` | `apply(GlyphTable.RuleLookup[] lookups, int nig)` Apply a sequence of matched rule lookups to the `nig` input glyphs starting at the current position.
    `void` | `applyDefault()` Apply default application semantices; namely, consume one input glyph, writing that glyph (and its association) to the output glyphs (and associations).
    `int` | `getAlternatesIndex(int ci)` Obtain alternates index associated with specified coverage index.
    `GlyphSequence` | `getOutput()` Obtain output glyph sequence.
    `void` | `putGlyph(int glyph, CharAssociation a, Object predication)` Put (write) glyph into glyph output buffer.
    `void` | `putGlyphs(int[] glyphs, CharAssociation[] associations, Object predication)` Put (write) array of glyphs into glyph output buffer.
    `GlyphSubstitutionState` | `reset(GlyphSequence gs, String script, String language, String feature, ScriptContextTester sct)` Reset glyph substitution state.
    `void` | `setAlternates(int[] alternates)` Set alternates indices.

    - ### Methods inherited from class org.apache.fop.complexscripts.fonts.GlyphProcessingState

      `consume, didConsume, erase, getAssociation, getAssociation, getAssociations, getAssociations, getClassMatchSet, getCombinedAndTester, getCombinedIgnoreTester, getCombinedOrTester, getGDEF, getGlyph, getGlyph, getGlyphs, getGlyphs, getGlyphs, getGlyphsAvailable, getGlyphsAvailable, getGlyphsAvailable, getIgnoredAssociations, getIgnoredAssociations, getIgnoreDefault, getIgnoredGlyphs, getIgnoredGlyphs, getIgnoreTester, getInput, getLastPosition, getLookupFlags, getPosition, getUnprocessedGlyph, hasNext, hasNext, hasPrev, hasPrev, isBase, isIgnoredBase, isIgnoredGlyph, isIgnoredGlyph, isIgnoredGlyph, isIgnoredLigature, isIgnoredMark, isLigature, isMark, maybeApplicable, next, prev, replaceInput, replaceInput, setGDEF, setGlyph, setIgnoreDefault, setLookupFlags, setPosition, updateSubtableState`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### GlyphSubstitutionState

          public GlyphSubstitutionState()

      Construct default (reset) glyph substitution state.

    - #### GlyphSubstitutionState

          public GlyphSubstitutionState(GlyphSequence gs,
                                        String script,
                                        String language,
                                        String feature,
                                        ScriptContextTester sct)

      Construct glyph substitution state.
      Parameters:
        `gs` - input glyph sequence
        `script` - script identifier
        `language` - language identifier
        `feature` - feature identifier
        `sct` - script context tester (or null)

    - #### GlyphSubstitutionState

          public GlyphSubstitutionState(GlyphSubstitutionState ss)

      Construct glyph substitution state using an existing state object using shallow copy except as follows: input glyph sequence is copied deep except for its characters array.
      Parameters:
        `ss` - existing positioning state to copy from

  - ### Method Detail

    - #### reset

          public GlyphSubstitutionState reset(GlyphSequence gs,
                                              String script,
                                              String language,
                                              String feature,
                                              ScriptContextTester sct)

      Reset glyph substitution state.
      Overrides:
        `reset` in class `GlyphProcessingState`
      Parameters:
        `gs` - input glyph sequence
        `script` - script identifier
        `language` - language identifier
        `feature` - feature identifier
        `sct` - script context tester (or null)
      Returns:
        this instance

    - #### setAlternates

          public void setAlternates(int[] alternates)

      Set alternates indices.
      Parameters:
        `alternates` - array of alternates indices ordered by coverage index

    - #### getAlternatesIndex

          public int getAlternatesIndex(int ci)

      Obtain alternates index associated with specified coverage index. An alternates index is used to select among stylistic alternates of a glyph at a particular coverage index. This information must be provided by the document itself (in the form of an extension attribute value), since a font has no way to determine which alternate the user desires.
      Parameters:
        `ci` - coverage index
      Returns:
        an alternates index

    - #### putGlyph

          public void putGlyph(int glyph,
                               CharAssociation a,
                               Object predication)

      Put (write) glyph into glyph output buffer.
      Parameters:
        `glyph` - to write
        `a` - character association that applies to glyph
        `predication` - a predication value to add to association A if predications enabled

    - #### putGlyphs

          public void putGlyphs(int[] glyphs,
                                CharAssociation[] associations,
                                Object predication)

      Put (write) array of glyphs into glyph output buffer.
      Parameters:
        `glyphs` - to write
        `associations` - array of character associations that apply to glyphs
        `predication` - optional predicaion object to be associated with glyphs' associations

    - #### getOutput

          public GlyphSequence getOutput()

      Obtain output glyph sequence.
      Returns:
        newly constructed glyph sequence comprised of original characters, output glyphs, and output associations

    - #### apply

          public boolean apply(GlyphSubstitutionSubtable st)

      Apply substitution subtable to current state at current position (only), resulting in the consumption of zero or more input glyphs, and possibly replacing the current input glyphs starting at the current position, in which case it is possible that indexLast is altered to be either less than or greater than its value prior to this application.
      Parameters:
        `st` - the glyph substitution subtable to apply
      Returns:
        true if subtable applied, or false if it did not (e.g., its input coverage table did not match current input context)

    - #### apply

          public boolean apply(GlyphTable.RuleLookup[] lookups,
                               int nig)

      Apply a sequence of matched rule lookups to the `nig` input glyphs starting at the current position. If lookups are non-null and non-empty, then all input glyphs specified by `nig` are consumed irregardless of whether any specified lookup applied.
      Parameters:
        `lookups` - array of matched lookups (or null)
        `nig` - number of glyphs in input sequence, starting at current position, to which the lookups are to apply, and to be consumed once the application has finished
      Returns:
        true if lookups are non-null and non-empty; otherwise, false

    - #### applyDefault

          public void applyDefault()

      Apply default application semantices; namely, consume one input glyph, writing that glyph (and its association) to the output glyphs (and associations).
      Overrides:
        `applyDefault` in class `GlyphProcessingState`

Copyright © 2023 Apache Software Foundation. All rights reserved.