Class GlyphDefinitionTable

java.lang.Object
org.apache.fop.complexscripts.fonts.GlyphTable
org.apache.fop.complexscripts.fonts.GlyphDefinitionTable

public class GlyphDefinitionTable extends GlyphTable

The GlyphDefinitionTable class is a glyph table that implements glyph definition functionality according to the OpenType GDEF table.

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

  • Field Details

    • GDEF_LOOKUP_TYPE_GLYPH_CLASS

      public static final int GDEF_LOOKUP_TYPE_GLYPH_CLASS
      glyph class subtable type
      See Also:
    • GDEF_LOOKUP_TYPE_ATTACHMENT_POINT

      public static final int GDEF_LOOKUP_TYPE_ATTACHMENT_POINT
      attachment point subtable type
      See Also:
    • GDEF_LOOKUP_TYPE_LIGATURE_CARET

      public static final int GDEF_LOOKUP_TYPE_LIGATURE_CARET
      ligature caret subtable type
      See Also:
    • GDEF_LOOKUP_TYPE_MARK_ATTACHMENT

      public static final int GDEF_LOOKUP_TYPE_MARK_ATTACHMENT
      mark attachment subtable type
      See Also:
    • GLYPH_CLASS_BASE

      public static final int GLYPH_CLASS_BASE
      pre-defined glyph class - base glyph
      See Also:
    • GLYPH_CLASS_LIGATURE

      public static final int GLYPH_CLASS_LIGATURE
      pre-defined glyph class - ligature glyph
      See Also:
    • GLYPH_CLASS_MARK

      public static final int GLYPH_CLASS_MARK
      pre-defined glyph class - mark glyph
      See Also:
    • GLYPH_CLASS_COMPONENT

      public static final int GLYPH_CLASS_COMPONENT
      pre-defined glyph class - component glyph
      See Also:
  • Constructor Details

    • GlyphDefinitionTable

      public GlyphDefinitionTable(List subtables, Map<String,ScriptProcessor> processors)
      Instantiate a GlyphDefinitionTable object using the specified subtables.
      Parameters:
      subtables - a list of identified subtables
  • Method Details

    • reorderCombiningMarks

      public GlyphSequence reorderCombiningMarks(GlyphSequence gs, int[] widths, int[][] gpa, String script, String language)
      Reorder combining marks in glyph sequence so that they precede (within the sequence) the base character to which they are applied. N.B. In the case of LTR segments, marks are not reordered by this, method since when the segment is reversed by BIDI processing, marks are automatically reordered to precede their base glyph.
      Parameters:
      gs - an input glyph sequence
      widths - associated advance widths (also reordered)
      gpa - associated glyph position adjustments (also reordered)
      script - a script identifier
      language - a language identifier
      Returns:
      the reordered (output) glyph sequence
    • addSubtable

      protected void addSubtable(GlyphSubtable subtable)
      Add a subtable.
      Overrides:
      addSubtable in class GlyphTable
      Parameters:
      subtable - a (non-null) glyph subtable
    • isGlyphClass

      public boolean isGlyphClass(int gid, int gc)
      Determine if glyph belongs to pre-defined glyph class.
      Parameters:
      gid - a glyph identifier (index)
      gc - a pre-defined glyph class (GLYPH_CLASS_BASE|GLYPH_CLASS_LIGATURE|GLYPH_CLASS_MARK|GLYPH_CLASS_COMPONENT).
      Returns:
      true if glyph belongs to specified glyph class
    • getGlyphClass

      public int getGlyphClass(int gid)
      Determine glyph class.
      Parameters:
      gid - a glyph identifier (index)
      Returns:
      a pre-defined glyph class (GLYPH_CLASS_BASE|GLYPH_CLASS_LIGATURE|GLYPH_CLASS_MARK|GLYPH_CLASS_COMPONENT).
    • isMarkAttachClass

      public boolean isMarkAttachClass(int gid, int mac)
      Determine if glyph belongs to (font specific) mark attachment class.
      Parameters:
      gid - a glyph identifier (index)
      mac - a (font specific) mark attachment class
      Returns:
      true if glyph belongs to specified mark attachment class
    • getMarkAttachClass

      public int getMarkAttachClass(int gid)
      Determine mark attachment class.
      Parameters:
      gid - a glyph identifier (index)
      Returns:
      a non-negative mark attachment class, or -1 if no class defined
    • getLookupTypeFromName

      public static int getLookupTypeFromName(String name)
      Map a lookup type name to its constant (integer) value.
      Parameters:
      name - lookup type name
      Returns:
      lookup type
    • getLookupTypeName

      public static String getLookupTypeName(int type)
      Map a lookup type constant (integer) value to its name.
      Parameters:
      type - lookup type
      Returns:
      lookup type name
    • createSubtable

      public static GlyphSubtable createSubtable(int type, String id, int sequence, int flags, int format, GlyphMappingTable mapping, List entries)
      Create a definition subtable according to the specified arguments.
      Parameters:
      type - subtable type
      id - subtable identifier
      sequence - subtable sequence
      flags - subtable flags (must be zero)
      format - subtable format
      mapping - subtable mapping table
      entries - subtable entries
      Returns:
      a glyph subtable instance