Class GlyphPositioningSubtable

java.lang.Object
org.apache.fop.complexscripts.fonts.GlyphSubtable
org.apache.fop.complexscripts.fonts.GlyphPositioningSubtable
All Implemented Interfaces:
Comparable, GlyphPositioning
Direct Known Subclasses:
GlyphPositioningTable.ChainedContextualSubtable, GlyphPositioningTable.ContextualSubtable, GlyphPositioningTable.CursiveSubtable, GlyphPositioningTable.MarkToBaseSubtable, GlyphPositioningTable.MarkToLigatureSubtable, GlyphPositioningTable.MarkToMarkSubtable, GlyphPositioningTable.PairSubtable, GlyphPositioningTable.SingleSubtable

public abstract class GlyphPositioningSubtable extends GlyphSubtable implements GlyphPositioning

The GlyphPositioningSubtable implements an abstract base of a glyph subtable, providing a default implementation of the GlyphPositioning interface.

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

  • Field Details

  • Constructor Details

    • GlyphPositioningSubtable

      protected GlyphPositioningSubtable(String id, int sequence, int flags, int format, GlyphCoverageTable coverage)
      Instantiate a GlyphPositioningSubtable.
      Parameters:
      id - subtable identifier
      sequence - subtable sequence
      flags - subtable flags
      format - subtable format
      coverage - subtable coverage table
  • Method Details

    • getTableType

      public int getTableType()
      Specified by:
      getTableType in class GlyphSubtable
      Returns:
      this subtable's table type
    • getTypeName

      public 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
    • position

      public boolean position(GlyphPositioningState ps)
      Perform glyph positioning at the current index, mutating the positioning state object as required. Only the context associated with the current index is processed.
      Specified by:
      position in interface GlyphPositioning
      Parameters:
      ps - glyph positioning state object
      Returns:
      true if the glyph subtable applies, meaning that the current context matches the associated input context glyph coverage table; note that returning true does not mean any position adjustment occurred; it only means that no further glyph subtables for the current lookup table should be applied.
    • position

      public static final boolean position(GlyphPositioningState ps, GlyphPositioningSubtable[] sta, int sequenceIndex)
      Apply positioning 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 (no adjustments 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 discontinue processing the remaining
      Parameters:
      ps - positioning state
      sta - array of subtables to apply
      sequenceIndex - if non negative, then apply subtables only at specified sequence index
      Returns:
      true if a non-zero adjustment occurred
    • position

      public static final boolean position(GlyphSequence gs, String script, String language, String feature, int fontSize, GlyphPositioningSubtable[] sta, int[] widths, int[][] adjustments, ScriptContextTester sct)
      Apply positioning.
      Parameters:
      gs - input glyph sequence
      script - tag
      language - tag
      feature - tag
      fontSize - the font size
      sta - subtable array
      widths - array
      adjustments - array (receives output adjustments)
      sct - script context tester
      Returns:
      true if a non-zero adjustment occurred