fop 2.1

org.apache.fop.complexscripts.fonts
Class GlyphSubtable

java.lang.Object
  extended by org.apache.fop.complexscripts.fonts.GlyphSubtable
All Implemented Interfaces:
java.lang.Comparable
Direct Known Subclasses:
GlyphDefinitionSubtable, GlyphPositioningSubtable, GlyphSubstitutionSubtable

public abstract class GlyphSubtable
extends java.lang.Object
implements java.lang.Comparable

The GlyphSubtable implements an abstract glyph subtable that encapsulates identification, type, format, and coverage information.

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


Field Summary
static int LF_IGNORE_BASE
          lookup flag - ignore base glyphs
static int LF_IGNORE_LIGATURE
          lookup flag - ignore ligatures
static int LF_IGNORE_MARK
          lookup flag - ignore marks
static int LF_INTERNAL_USE_REVERSE_SCAN
          internal flag - use reverse scan
static int LF_MARK_ATTACHMENT_TYPE
          lookup flag - mark attachment type
static int LF_RESERVED
          lookup flag - reserved
static int LF_RIGHT_TO_LEFT
          lookup flag - right to left
static int LF_USE_MARK_FILTERING_SET
          lookup flag - use mark filtering set
 
Constructor Summary
protected GlyphSubtable(java.lang.String lookupId, int sequence, int flags, int format, GlyphMappingTable mapping)
          Instantiate this glyph subtable.
 
Method Summary
 int compareTo(java.lang.Object o)
          
 boolean equals(java.lang.Object o)
          
 GlyphClassMapping getClasses()
           
 GlyphCoverageMapping getCoverage()
           
 int getCoverageIndex(int gid)
          Map glyph id to coverage index.
 int getCoverageSize()
          Map glyph id to coverage index.
abstract  java.util.List getEntries()
           
 int getFlags()
           
static int getFlags(GlyphSubtable[] subtables)
          Determine consistent flags for a set of subtables.
 int getFormat()
           
 GlyphDefinitionTable getGDEF()
           
 java.lang.String getLookupId()
           
 int getSequence()
           
 GlyphTable getTable()
           
abstract  int getTableType()
           
abstract  int getType()
           
abstract  java.lang.String getTypeName()
           
 int hashCode()
          
abstract  boolean isCompatible(GlyphSubtable subtable)
          Determine if a glyph subtable is compatible with this glyph subtable.
 void resolveLookupReferences(java.util.Map lookupTables)
          Resolve references to lookup tables, e.g., in RuleLookup, to the lookup tables themselves.
 void setTable(GlyphTable table)
          Establish a weak reference from this subtable to its parent table.
abstract  boolean usesReverseScan()
           
static boolean usesReverseScan(GlyphSubtable[] subtables)
          Determine if any of the specified subtables uses reverse scanning.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LF_RIGHT_TO_LEFT

public static final int LF_RIGHT_TO_LEFT
lookup flag - right to left

See Also:
Constant Field Values

LF_IGNORE_BASE

public static final int LF_IGNORE_BASE
lookup flag - ignore base glyphs

See Also:
Constant Field Values

LF_IGNORE_LIGATURE

public static final int LF_IGNORE_LIGATURE
lookup flag - ignore ligatures

See Also:
Constant Field Values

LF_IGNORE_MARK

public static final int LF_IGNORE_MARK
lookup flag - ignore marks

See Also:
Constant Field Values

LF_USE_MARK_FILTERING_SET

public static final int LF_USE_MARK_FILTERING_SET
lookup flag - use mark filtering set

See Also:
Constant Field Values

LF_RESERVED

public static final int LF_RESERVED
lookup flag - reserved

See Also:
Constant Field Values

LF_MARK_ATTACHMENT_TYPE

public static final int LF_MARK_ATTACHMENT_TYPE
lookup flag - mark attachment type

See Also:
Constant Field Values

LF_INTERNAL_USE_REVERSE_SCAN

public static final int LF_INTERNAL_USE_REVERSE_SCAN
internal flag - use reverse scan

See Also:
Constant Field Values
Constructor Detail

GlyphSubtable

protected GlyphSubtable(java.lang.String lookupId,
                        int sequence,
                        int flags,
                        int format,
                        GlyphMappingTable mapping)
Instantiate this glyph subtable.

Parameters:
lookupId - lookup identifier, having form of "lu%d" where %d is index of lookup in lookup list
sequence - subtable sequence (within lookup), starting with zero
flags - subtable flags
format - subtable format
mapping - subtable mapping table
Method Detail

getLookupId

public java.lang.String getLookupId()
Returns:
this subtable's lookup identifer

getTableType

public abstract int getTableType()
Returns:
this subtable's table type

getType

public abstract int getType()
Returns:
this subtable's type

getTypeName

public abstract java.lang.String getTypeName()
Returns:
this subtable's type name

isCompatible

public abstract 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.

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

getSequence

public int getSequence()
Returns:
this subtable's sequence (index) within lookup

getFlags

public int getFlags()
Returns:
this subtable's flags

getFormat

public int getFormat()
Returns:
this subtable's format

getGDEF

public GlyphDefinitionTable getGDEF()
Returns:
this subtable's governing glyph definition table or null if none available

getCoverage

public GlyphCoverageMapping getCoverage()
Returns:
this subtable's coverage mapping or null if mapping is not a coverage mapping

getClasses

public GlyphClassMapping getClasses()
Returns:
this subtable's class mapping or null if mapping is not a class mapping

getEntries

public abstract java.util.List getEntries()
Returns:
this subtable's lookup entries

getTable

public GlyphTable getTable()
Returns:
this subtable's parent table (or null if undefined)

setTable

public void setTable(GlyphTable table)
              throws java.lang.IllegalStateException
Establish a weak reference from this subtable to its parent table. If table parameter is specified as null, then clear and remove weak reference.

Parameters:
table - the table or null
Throws:
java.lang.IllegalStateException - if table is already set to non-null

resolveLookupReferences

public void resolveLookupReferences(java.util.Map lookupTables)
Resolve references to lookup tables, e.g., in RuleLookup, to the lookup tables themselves.

Parameters:
lookupTables - map from lookup table identifers, e.g. "lu4", to lookup tables

getCoverageIndex

public int getCoverageIndex(int gid)
Map glyph id to coverage index.

Parameters:
gid - glyph id
Returns:
the corresponding coverage index of the specified glyph id

getCoverageSize

public int getCoverageSize()
Map glyph id to coverage index.

Returns:
the corresponding coverage index of the specified glyph id

hashCode

public int hashCode()

Overrides:
hashCode in class java.lang.Object

equals

public boolean equals(java.lang.Object o)

Overrides:
equals in class java.lang.Object
Returns:
true if the lookup identifier and the sequence number of the specified subtable is the same as the lookup identifier and sequence number of this subtable

compareTo

public int compareTo(java.lang.Object o)

Specified by:
compareTo in interface java.lang.Comparable
Returns:
the result of comparing the lookup identifier and the sequence number of the specified subtable with the lookup identifier and sequence number of this subtable

usesReverseScan

public static boolean usesReverseScan(GlyphSubtable[] subtables)
Determine if any of the specified subtables uses reverse scanning.

Parameters:
subtables - array of glyph subtables
Returns:
true if any of the specified subtables uses reverse scanning.

getFlags

public static int getFlags(GlyphSubtable[] subtables)
                    throws java.lang.IllegalStateException
Determine consistent flags for a set of subtables.

Parameters:
subtables - array of glyph subtables
Returns:
consistent flags
Throws:
java.lang.IllegalStateException - if inconsistent flags

fop 2.1

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