fop 2.2

org.apache.fop.complexscripts.fonts
Class GlyphTable

java.lang.Object
  extended by org.apache.fop.complexscripts.fonts.GlyphTable
Direct Known Subclasses:
GlyphDefinitionTable, GlyphPositioningTable, GlyphSubstitutionTable

public class GlyphTable
extends java.lang.Object

Base class for all advanced typographic glyph tables.

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


Nested Class Summary
static class GlyphTable.ChainedClassSequenceRule
          The ChainedClassSequenceRule class implements a subclass of ClassSequenceRule that supports matching on a specific glyph class sequence in a specific chained contextual.
static class GlyphTable.ChainedCoverageSequenceRule
          The ChainedCoverageSequenceRule class implements a subclass of CoverageSequenceRule that supports matching on a specific glyph class sequence in a specific chained contextual.
static class GlyphTable.ChainedGlyphSequenceRule
          The ChainedGlyphSequenceRule class implements a subclass of GlyphSequenceRule that supports matching on a specific glyph sequence in a specific chained contextual.
static class GlyphTable.ClassSequenceRule
          The ClassSequenceRule class implements a subclass of Rule that supports matching on a specific glyph class sequence.
static class GlyphTable.CoverageSequenceRule
          The CoverageSequenceRule class implements a subclass of Rule that supports matching on a specific glyph coverage sequence.
static class GlyphTable.GlyphSequenceRule
          The GlyphSequenceRule class implements a subclass of Rule that supports matching on a specific glyph sequence.
static class GlyphTable.HomogeneousRuleSet
          The HomogenousRuleSet class implements a collection of rules, which must be the same rule type (i.e., same concrete rule class) or null.
static class GlyphTable.LookupSpec
          A structure class encapsulating a lookup specification as a tuple.
static class GlyphTable.LookupTable
          The LookupTable class comprising an identifier and an ordered list of glyph subtables, each of which employ the same lookup identifier.
static class GlyphTable.Rule
          The Rule class implements an array of rule lookup records.
static class GlyphTable.RuleLookup
          The RuleLookup class implements a rule lookup record, comprising a glyph sequence index and a lookup table index (in an applicable lookup list).
static class GlyphTable.RuleSet
          The RuleSet class implements a collection of rules, which may or may not be the same rule type.
static class GlyphTable.UseSpec
          The UseSpec class comprises a lookup table reference and the feature that selected the lookup table.
 
Field Summary
static int GLYPH_TABLE_TYPE_BASELINE
          baseline glyph table type
static int GLYPH_TABLE_TYPE_DEFINITION
          definition glyph table type
static int GLYPH_TABLE_TYPE_JUSTIFICATION
          justification glyph table type
static int GLYPH_TABLE_TYPE_POSITIONING
          positioning glyph table type
static int GLYPH_TABLE_TYPE_SUBSTITUTION
          substitution glyph table type
protected  java.util.Map<java.lang.String,ScriptProcessor> processors
           
 
Constructor Summary
GlyphTable(GlyphTable gdef, java.util.Map<GlyphTable.LookupSpec,java.util.List<java.lang.String>> lookups, java.util.Map<java.lang.String,ScriptProcessor> processors)
          Instantiate glyph table with specified lookups.
 
Method Summary
protected  void addSubtable(GlyphSubtable subtable)
          Add a subtable.
 GlyphTable.UseSpec[] assembleLookups(java.lang.String[] features, java.util.Map<GlyphTable.LookupSpec,java.util.List<GlyphTable.LookupTable>> lookups)
          Assemble ordered array of lookup table use specifications according to the specified features and candidate lookups, where the order of the array is in accordance to the order of the applicable lookup list.
 java.util.List<GlyphTable.LookupTable> findLookupTables(GlyphTable.LookupSpec ls)
          Obtain ordered list of glyph lookup tables that match a specific lookup specification.
protected  void freezeSubtables()
          Freeze subtables, i.e., do not allow further subtable addition, and create resulting cached state.
 GlyphDefinitionTable getGlyphDefinitions()
          Obtain glyph definition table.
 java.util.List<GlyphTable.LookupSpec> getLookups()
          Obtain list of all lookup specifications.
 GlyphTable.LookupTable getLookupTable(java.lang.String lid)
          Obtain lookup table by lookup id.
 java.util.List<GlyphTable.LookupTable> getLookupTables()
          Obtain ordered list of all lookup tables, where order is by lookup identifier, which lexicographic ordering follows the lookup list order.
static int getTableTypeFromName(java.lang.String name)
          Obtain glyph table type from name.
 boolean hasFeature(java.lang.String script, java.lang.String language, java.lang.String feature)
          Determine if table supports specific feature, i.e., supports at least one lookup.
 java.util.Map<GlyphTable.LookupSpec,java.util.List<GlyphTable.LookupTable>> matchLookups(java.lang.String script, java.lang.String language, java.lang.String feature)
          Match lookup specifications according to tuple, where '*' is a wildcard for a tuple component.
 java.util.List<GlyphTable.LookupSpec> matchLookupSpecs(java.lang.String script, java.lang.String language, java.lang.String feature)
          Match lookup specifications according to tuple, where '*' is a wildcard for a tuple component.
static void resolveLookupReferences(GlyphTable.RuleSet[] rsa, java.util.Map<java.lang.String,GlyphTable.LookupTable> lookupTables)
          Resolve references to lookup tables in a collection of rules sets.
 java.lang.String toString()
          
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

GLYPH_TABLE_TYPE_SUBSTITUTION

public static final int GLYPH_TABLE_TYPE_SUBSTITUTION
substitution glyph table type

See Also:
Constant Field Values

GLYPH_TABLE_TYPE_POSITIONING

public static final int GLYPH_TABLE_TYPE_POSITIONING
positioning glyph table type

See Also:
Constant Field Values

GLYPH_TABLE_TYPE_JUSTIFICATION

public static final int GLYPH_TABLE_TYPE_JUSTIFICATION
justification glyph table type

See Also:
Constant Field Values

GLYPH_TABLE_TYPE_BASELINE

public static final int GLYPH_TABLE_TYPE_BASELINE
baseline glyph table type

See Also:
Constant Field Values

GLYPH_TABLE_TYPE_DEFINITION

public static final int GLYPH_TABLE_TYPE_DEFINITION
definition glyph table type

See Also:
Constant Field Values

processors

protected java.util.Map<java.lang.String,ScriptProcessor> processors
Constructor Detail

GlyphTable

public GlyphTable(GlyphTable gdef,
                  java.util.Map<GlyphTable.LookupSpec,java.util.List<java.lang.String>> lookups,
                  java.util.Map<java.lang.String,ScriptProcessor> processors)
Instantiate glyph table with specified lookups.

Parameters:
gdef - glyph definition table that applies
lookups - map from lookup specs to lookup tables
Method Detail

getGlyphDefinitions

public GlyphDefinitionTable getGlyphDefinitions()
Obtain glyph definition table.

Returns:
(possibly null) glyph definition table

getLookups

public java.util.List<GlyphTable.LookupSpec> getLookups()
Obtain list of all lookup specifications.

Returns:
(possibly empty) list of all lookup specifications

getLookupTables

public java.util.List<GlyphTable.LookupTable> getLookupTables()
Obtain ordered list of all lookup tables, where order is by lookup identifier, which lexicographic ordering follows the lookup list order.

Returns:
(possibly empty) ordered list of all lookup tables

getLookupTable

public GlyphTable.LookupTable getLookupTable(java.lang.String lid)
Obtain lookup table by lookup id. This method is used by test code, and provides access to embedded lookups not normally accessed by {script, language, feature} lookup spec.

Parameters:
lid - lookup id
Returns:
table associated with lookup id or null if none

addSubtable

protected void addSubtable(GlyphSubtable subtable)
Add a subtable.

Parameters:
subtable - a (non-null) glyph subtable

freezeSubtables

protected void freezeSubtables()
Freeze subtables, i.e., do not allow further subtable addition, and create resulting cached state.


matchLookupSpecs

public java.util.List<GlyphTable.LookupSpec> matchLookupSpecs(java.lang.String script,
                                                              java.lang.String language,
                                                              java.lang.String feature)
Match lookup specifications according to tuple, where '*' is a wildcard for a tuple component.

Parameters:
script - a script identifier
language - a language identifier
feature - a feature identifier
Returns:
a (possibly empty) array of matching lookup specifications

matchLookups

public java.util.Map<GlyphTable.LookupSpec,java.util.List<GlyphTable.LookupTable>> matchLookups(java.lang.String script,
                                                                                                java.lang.String language,
                                                                                                java.lang.String feature)
Match lookup specifications according to tuple, where '*' is a wildcard for a tuple component.

Parameters:
script - a script identifier
language - a language identifier
feature - a feature identifier
Returns:
a (possibly empty) map from matching lookup specifications to lists of corresponding lookup tables

findLookupTables

public java.util.List<GlyphTable.LookupTable> findLookupTables(GlyphTable.LookupSpec ls)
Obtain ordered list of glyph lookup tables that match a specific lookup specification.

Parameters:
ls - a (non-null) lookup specification
Returns:
a (possibly empty) ordered list of lookup tables whose corresponding lookup specifications match the specified lookup spec

assembleLookups

public GlyphTable.UseSpec[] assembleLookups(java.lang.String[] features,
                                            java.util.Map<GlyphTable.LookupSpec,java.util.List<GlyphTable.LookupTable>> lookups)
Assemble ordered array of lookup table use specifications according to the specified features and candidate lookups, where the order of the array is in accordance to the order of the applicable lookup list.

Parameters:
features - array of feature identifiers to apply
lookups - a mapping from lookup specifications to lists of look tables from which to select lookup tables according to the specified features
Returns:
ordered array of assembled lookup table use specifications

hasFeature

public boolean hasFeature(java.lang.String script,
                          java.lang.String language,
                          java.lang.String feature)
Determine if table supports specific feature, i.e., supports at least one lookup.

Parameters:
script - to qualify feature lookup
language - to qualify feature lookup
feature - to test
Returns:
true if feature supported (has at least one lookup)

toString

public java.lang.String toString()

Overrides:
toString in class java.lang.Object

getTableTypeFromName

public static int getTableTypeFromName(java.lang.String name)
Obtain glyph table type from name.

Parameters:
name - of table type to map to type value
Returns:
glyph table type (as an integer constant)

resolveLookupReferences

public static void resolveLookupReferences(GlyphTable.RuleSet[] rsa,
                                           java.util.Map<java.lang.String,GlyphTable.LookupTable> lookupTables)
Resolve references to lookup tables in a collection of rules sets.

Parameters:
rsa - array of rule sets
lookupTables - map from lookup table identifers, e.g. "lu4", to lookup tables

fop 2.2

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