Class GlyphTable.LookupTable

java.lang.Object
org.apache.fop.complexscripts.fonts.GlyphTable.LookupTable
All Implemented Interfaces:
Comparable
Enclosing class:
GlyphTable

public static class GlyphTable.LookupTable extends Object implements Comparable
The LookupTable class comprising an identifier and an ordered list of glyph subtables, each of which employ the same lookup identifier.
  • Constructor Details

    • LookupTable

      public LookupTable(String id, GlyphSubtable subtable)
      Instantiate a LookupTable.
      Parameters:
      id - the lookup table's identifier
      subtable - an initial subtable (or null)
    • LookupTable

      public LookupTable(String id, List<GlyphSubtable> subtables)
      Instantiate a LookupTable.
      Parameters:
      id - the lookup table's identifier
      subtables - a pre-poplated list of subtables or null
  • Method Details

    • getSubtables

      public GlyphSubtable[] getSubtables()
      Returns:
      the subtables as an array
    • addSubtable

      public boolean addSubtable(GlyphSubtable subtable)
      Add a subtable into this lookup table's collecion of subtables according to its natural order.
      Parameters:
      subtable - to add
      Returns:
      true if subtable was not already present, otherwise false
    • freezeSubtables

      public void freezeSubtables(Map<String,GlyphTable.LookupTable> lookupTables)
      Freeze subtables, i.e., do not allow further subtable addition, and create resulting cached state. In addition, resolve any references to lookup tables that appear in this lookup table's subtables.
      Parameters:
      lookupTables - map from lookup table identifers, e.g. "lu4", to lookup tables
    • performsSubstitution

      public boolean performsSubstitution()
      Determine if this glyph table performs substitution.
      Returns:
      true if it performs substitution
    • substitute

      public GlyphSequence substitute(GlyphSequence gs, String script, String language, String feature, ScriptContextTester sct)
      Perform substitution processing using this lookup table's subtables.
      Parameters:
      gs - an input glyph sequence
      script - a script identifier
      language - a language identifier
      feature - a feature identifier
      sct - a script specific context tester (or null)
      Returns:
      the substituted (output) glyph sequence
    • substitute

      public GlyphSequence substitute(GlyphSubstitutionState ss, int sequenceIndex)
      Perform substitution processing on an existing glyph substitution state object using this lookup table's subtables.
      Parameters:
      ss - a glyph substitution state object
      sequenceIndex - if non negative, then apply subtables only at specified sequence index
      Returns:
      the substituted (output) glyph sequence
    • performsPositioning

      public boolean performsPositioning()
      Determine if this glyph table performs positioning.
      Returns:
      true if it performs positioning
    • position

      public boolean position(GlyphSequence gs, String script, String language, String feature, int fontSize, int[] widths, int[][] adjustments, ScriptContextTester sct)
      Perform positioning processing using this lookup table's subtables.
      Parameters:
      gs - an input glyph sequence
      script - a script identifier
      language - a language identifier
      feature - a feature identifier
      fontSize - size in device units
      widths - array of default advancements for each glyph in font
      adjustments - accumulated adjustments array (sequence) of 4-tuples of placement [PX,PY] and advance [AX,AY] adjustments, in that order, with one 4-tuple for each element of glyph sequence
      sct - a script specific context tester (or null)
      Returns:
      true if some adjustment is not zero; otherwise, false
    • position

      public boolean position(GlyphPositioningState ps, int sequenceIndex)
      Perform positioning processing on an existing glyph positioning state object using this lookup table's subtables.
      Parameters:
      ps - a glyph positioning state object
      sequenceIndex - if non negative, then apply subtables only at specified sequence index
      Returns:
      true if some adjustment is not zero; otherwise, false
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
      Returns:
      true if identifier of the specified lookup table is the same as the identifier of this lookup table
    • compareTo

      public int compareTo(Object o)
      Specified by:
      compareTo in interface Comparable
      Returns:
      the result of comparing the identifier of the specified lookup table with the identifier of this lookup table; lookup table identifiers take the form "lu(DIGIT)+", with comparison based on numerical ordering of numbers expressed by (DIGIT)+.
    • toString

      public String toString()
      Overrides:
      toString in class Object