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
IndicScriptProcessor
class 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 class
IndicScriptProcessor.DefaultSyllabizer
Default syllabizer.private static class
IndicScriptProcessor.PositioningScriptContextTester
protected static class
IndicScriptProcessor.Segment
Syllabic segment.private static class
IndicScriptProcessor.SubstitutionScriptContextTester
protected static class
IndicScriptProcessor.Syllabizer
Abstract syllabizer.
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.String[]
BASIC_SHAPING_FEATURE_STRINGS
private static java.util.Set<java.lang.String>
basicShapingFeatures
private static java.lang.String[]
GPOS_OPT_FEATURES
required features to use for positioningprivate static java.lang.String[]
GPOS_REQ_FEATURES
required features to use for positioningprivate static java.lang.String[]
GSUB_OPT_FEATURES
optional features to use for substitutionsprivate static java.lang.String[]
GSUB_REQ_FEATURES
required features to use for substitutionsprivate static org.apache.commons.logging.Log
log
logging instanceprivate ScriptContextTester
posContextTester
private static java.lang.String[]
PRESENTATION_FEATURE_STRINGS
private static java.util.Set<java.lang.String>
presentationFeatures
private ScriptContextTester
subContextTester
-
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 int
findPreBaseMatra(GlyphSequence gs)
Find pre-base matra in sequence.protected int
findPreBaseMatraTarget(GlyphSequence gs, int source)
Find pre-base matra target in sequence.protected int
findReph(GlyphSequence gs)
Find reph in sequence.protected int
findRephTarget(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.ScriptContextTester
getPositioningContextTester()
Obtain script specific positioning context tester.java.lang.String[]
getPositioningFeatures()
Obtain script specific required positioning features.ScriptContextTester
getSubstitutionContextTester()
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 boolean
isBasicShapingUse(GlyphTable.UseSpec us)
private boolean
isPresentationUse(GlyphTable.UseSpec us)
static ScriptProcessor
makeProcessor(java.lang.String script)
Make script specific flavor of Indic script processor.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.private GlyphSequence
reorder(GlyphSequence gs, int source, int target)
private GlyphSequence
reorderPreBaseMatra(GlyphSequence gs)
private GlyphSequence
reorderReph(GlyphSequence gs)
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.private GlyphSequence[]
syllabize(GlyphSequence gs, java.lang.String script, java.lang.String language)
private GlyphSequence
unsyllabize(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:
getSubstitutionFeatures
in classDefaultScriptProcessor
- Returns:
- array of suppported substitution features or null
-
getOptionalSubstitutionFeatures
public java.lang.String[] getOptionalSubstitutionFeatures()
Obtain script specific optional substitution features.- Overrides:
getOptionalSubstitutionFeatures
in classScriptProcessor
- Returns:
- array of suppported substitution features or null
-
getSubstitutionContextTester
public ScriptContextTester getSubstitutionContextTester()
Obtain script specific substitution context tester.- Overrides:
getSubstitutionContextTester
in classDefaultScriptProcessor
- Returns:
- substitution context tester or null
-
getPositioningFeatures
public java.lang.String[] getPositioningFeatures()
Obtain script specific required positioning features.- Overrides:
getPositioningFeatures
in classDefaultScriptProcessor
- Returns:
- array of suppported positioning features or null
-
getOptionalPositioningFeatures
public java.lang.String[] getOptionalPositioningFeatures()
Obtain script specific optional positioning features.- Overrides:
getOptionalPositioningFeatures
in classScriptProcessor
- Returns:
- array of suppported positioning features or null
-
getPositioningContextTester
public ScriptContextTester getPositioningContextTester()
Obtain script specific positioning context tester.- Overrides:
getPositioningContextTester
in 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:
substitute
in 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:
position
in 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
-
-