Class IndicScriptProcessor
- java.lang.Object
-
- org.apache.fop.complexscripts.scripts.ScriptProcessor
-
- org.apache.fop.complexscripts.scripts.DefaultScriptProcessor
-
- org.apache.fop.complexscripts.scripts.IndicScriptProcessor
-
- Direct Known Subclasses:
DevanagariScriptProcessor,GujaratiScriptProcessor,GurmukhiScriptProcessor,KhmerScriptProcessor,TamilScriptProcessor
public class IndicScriptProcessor extends DefaultScriptProcessor
The
IndicScriptProcessorclass implements a script processor for performing glyph substitution and positioning operations on content associated with the Indic script.This work was originally authored by Glenn Adams (gadams@apache.org).
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classIndicScriptProcessor.DefaultSyllabizerDefault syllabizer.private static classIndicScriptProcessor.PositioningScriptContextTesterprotected static classIndicScriptProcessor.SegmentSyllabic segment.private static classIndicScriptProcessor.SubstitutionScriptContextTesterprotected static classIndicScriptProcessor.SyllabizerAbstract syllabizer.
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.String[]BASIC_SHAPING_FEATURE_STRINGSprivate static java.util.Set<java.lang.String>basicShapingFeaturesprivate static java.lang.String[]GPOS_OPT_FEATURESrequired features to use for positioningprivate static java.lang.String[]GPOS_REQ_FEATURESrequired features to use for positioningprivate static java.lang.String[]GSUB_OPT_FEATURESoptional features to use for substitutionsprivate static java.lang.String[]GSUB_REQ_FEATURESrequired features to use for substitutionsprivate static org.apache.commons.logging.Logloglogging instanceprivate ScriptContextTesterposContextTesterprivate static java.lang.String[]PRESENTATION_FEATURE_STRINGSprivate static java.util.Set<java.lang.String>presentationFeaturesprivate ScriptContextTestersubContextTester
-
Constructor Summary
Constructors Constructor Description IndicScriptProcessor(java.lang.String script)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected intfindPreBaseMatra(GlyphSequence gs)Find pre-base matra in sequence.protected intfindPreBaseMatraTarget(GlyphSequence gs, int source)Find pre-base matra target in sequence.protected intfindReph(GlyphSequence gs)Find reph in sequence.protected intfindRephTarget(GlyphSequence gs, int source)Find reph target in sequence.java.lang.String[]getOptionalPositioningFeatures()Obtain script specific optional positioning features.java.lang.String[]getOptionalSubstitutionFeatures()Obtain script specific optional substitution features.ScriptContextTestergetPositioningContextTester()Obtain script specific positioning context tester.java.lang.String[]getPositioningFeatures()Obtain script specific required positioning features.ScriptContextTestergetSubstitutionContextTester()Obtain script specific substitution context tester.java.lang.String[]getSubstitutionFeatures()Obtain script specific required substitution features.protected java.lang.Class<? extends IndicScriptProcessor.Syllabizer>getSyllabizerClass()Get script specific syllabizer class.private booleanisBasicShapingUse(GlyphTable.UseSpec us)private booleanisPresentationUse(GlyphTable.UseSpec us)static ScriptProcessormakeProcessor(java.lang.String script)Make script specific flavor of Indic script processor.booleanposition(GlyphSequence gs, java.lang.String script, java.lang.String language, int fontSize, GlyphTable.UseSpec[] usa, int[] widths, int[][] adjustments, ScriptContextTester sct)Perform positioning processing using a specific set of ordered glyph table use specifications.private GlyphSequencereorder(GlyphSequence gs, int source, int target)private GlyphSequencereorderPreBaseMatra(GlyphSequence gs)private GlyphSequencereorderReph(GlyphSequence gs)GlyphSequencesubstitute(GlyphSequence gs, java.lang.String script, java.lang.String language, GlyphTable.UseSpec[] usa, ScriptContextTester sct)Perform substitution processing using a specific set of ordered glyph table use specifications.private GlyphSequence[]syllabize(GlyphSequence gs, java.lang.String script, java.lang.String language)private GlyphSequenceunsyllabize(GlyphSequence gs, GlyphSequence[] sa)-
Methods inherited from class org.apache.fop.complexscripts.scripts.DefaultScriptProcessor
isReorderedMark, reorderCombiningMarks
-
Methods inherited from class org.apache.fop.complexscripts.scripts.ScriptProcessor
assembleLookups, getInstance, getScript, position, preProcess, substitute
-
-
-
-
Field Detail
-
log
private static final org.apache.commons.logging.Log log
logging instance
-
GSUB_REQ_FEATURES
private static final java.lang.String[] GSUB_REQ_FEATURES
required features to use for substitutions
-
GSUB_OPT_FEATURES
private static final java.lang.String[] GSUB_OPT_FEATURES
optional features to use for substitutions
-
GPOS_REQ_FEATURES
private static final java.lang.String[] GPOS_REQ_FEATURES
required features to use for positioning
-
GPOS_OPT_FEATURES
private static final java.lang.String[] GPOS_OPT_FEATURES
required features to use for positioning
-
subContextTester
private final ScriptContextTester subContextTester
-
posContextTester
private final ScriptContextTester posContextTester
-
basicShapingFeatures
private static java.util.Set<java.lang.String> basicShapingFeatures
-
BASIC_SHAPING_FEATURE_STRINGS
private static final java.lang.String[] BASIC_SHAPING_FEATURE_STRINGS
-
presentationFeatures
private static java.util.Set<java.lang.String> presentationFeatures
-
PRESENTATION_FEATURE_STRINGS
private static final java.lang.String[] PRESENTATION_FEATURE_STRINGS
-
-
Method Detail
-
makeProcessor
public static ScriptProcessor makeProcessor(java.lang.String script)
Make script specific flavor of Indic script processor.- Parameters:
script- tag- Returns:
- script processor instance
-
getSubstitutionFeatures
public java.lang.String[] getSubstitutionFeatures()
Obtain script specific required substitution features.- Overrides:
getSubstitutionFeaturesin classDefaultScriptProcessor- Returns:
- array of suppported substitution features or null
-
getOptionalSubstitutionFeatures
public java.lang.String[] getOptionalSubstitutionFeatures()
Obtain script specific optional substitution features.- Overrides:
getOptionalSubstitutionFeaturesin classScriptProcessor- Returns:
- array of suppported substitution features or null
-
getSubstitutionContextTester
public ScriptContextTester getSubstitutionContextTester()
Obtain script specific substitution context tester.- Overrides:
getSubstitutionContextTesterin classDefaultScriptProcessor- Returns:
- substitution context tester or null
-
getPositioningFeatures
public java.lang.String[] getPositioningFeatures()
Obtain script specific required positioning features.- Overrides:
getPositioningFeaturesin classDefaultScriptProcessor- Returns:
- array of suppported positioning features or null
-
getOptionalPositioningFeatures
public java.lang.String[] getOptionalPositioningFeatures()
Obtain script specific optional positioning features.- Overrides:
getOptionalPositioningFeaturesin classScriptProcessor- Returns:
- array of suppported positioning features or null
-
getPositioningContextTester
public ScriptContextTester getPositioningContextTester()
Obtain script specific positioning context tester.- Overrides:
getPositioningContextTesterin classDefaultScriptProcessor- Returns:
- positioning context tester or null
-
substitute
public GlyphSequence substitute(GlyphSequence gs, java.lang.String script, java.lang.String language, GlyphTable.UseSpec[] usa, ScriptContextTester sct)
Perform substitution processing using a specific set of ordered glyph table use specifications.- Overrides:
substitutein classScriptProcessor- Parameters:
gs- an input glyph sequencescript- a script identifierlanguage- a language identifierusa- an ordered array of glyph table use specssct- a script specific context tester (or null)- Returns:
- the substituted (output) glyph sequence
-
getSyllabizerClass
protected java.lang.Class<? extends IndicScriptProcessor.Syllabizer> getSyllabizerClass()
Get script specific syllabizer class.- Returns:
- a syllabizer class object or null
-
syllabize
private GlyphSequence[] syllabize(GlyphSequence gs, java.lang.String script, java.lang.String language)
-
unsyllabize
private GlyphSequence unsyllabize(GlyphSequence gs, GlyphSequence[] sa)
-
isBasicShapingUse
private boolean isBasicShapingUse(GlyphTable.UseSpec us)
-
isPresentationUse
private boolean isPresentationUse(GlyphTable.UseSpec us)
-
reorderPreBaseMatra
private GlyphSequence reorderPreBaseMatra(GlyphSequence gs)
-
findPreBaseMatra
protected int findPreBaseMatra(GlyphSequence gs)
Find pre-base matra in sequence.- Parameters:
gs- input sequence- Returns:
- index of pre-base matra or -1 if not found
-
findPreBaseMatraTarget
protected int findPreBaseMatraTarget(GlyphSequence gs, int source)
Find pre-base matra target in sequence.- Parameters:
gs- input sequencesource- index of pre-base matra- Returns:
- index of pre-base matra target or -1
-
reorderReph
private GlyphSequence reorderReph(GlyphSequence gs)
-
findReph
protected int findReph(GlyphSequence gs)
Find reph in sequence.- Parameters:
gs- input sequence- Returns:
- index of reph or -1 if not found
-
findRephTarget
protected int findRephTarget(GlyphSequence gs, int source)
Find reph target in sequence.- Parameters:
gs- input sequencesource- index of reph- Returns:
- index of reph target or -1
-
reorder
private GlyphSequence reorder(GlyphSequence gs, int source, int target)
-
position
public boolean position(GlyphSequence gs, java.lang.String script, java.lang.String language, int fontSize, GlyphTable.UseSpec[] usa, int[] widths, int[][] adjustments, ScriptContextTester sct)
Perform positioning processing using a specific set of ordered glyph table use specifications.- Overrides:
positionin classScriptProcessor- Parameters:
gs- an input glyph sequencescript- a script identifierlanguage- a language identifierfontSize- size in device unitsusa- an ordered array of glyph table use specswidths- array of default advancements for each glyph in fontadjustments- 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 sequencesct- a script specific context tester (or null)- Returns:
- true if some adjustment is not zero; otherwise, false
-
-