Class CharAssociation
- java.lang.Object
-
- org.apache.fop.complexscripts.util.CharAssociation
-
- All Implemented Interfaces:
java.lang.Cloneable
public class CharAssociation extends java.lang.Object implements java.lang.Cloneable
A structure class encapsulating an interval of characters expressed as an offset and count of Unicode scalar values (in an IntBuffer). ACharAssociation
is used to maintain a backpointer from a glyph to one or more character intervals from which the glyph was derived. Each glyph in a glyph sequence is associated with a singleCharAssociation
instance. ACharAssociation
instance is additionally (and optionally) used to record predication information about the glyph, such as whether the glyph was produced by the application of a specific substitution table or whether its position was adjusted by a specific poisitioning table.This work was originally authored by Glenn Adams (gadams@apache.org).
-
-
Constructor Summary
Constructors Constructor Description CharAssociation(int[] subIntervals)
Instantiate a non-disjoint character association.CharAssociation(int offset, int count)
Instantiate a non-disjoint character association.CharAssociation(int offset, int count, int[] subIntervals)
Instantiate a character association.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Object
clone()
boolean
contained(int offset, int count)
int
getCount()
int
getEnd()
int
getOffset()
java.lang.Object
getPredication(java.lang.String key)
Get predication KEY.static org.apache.fop.complexscripts.util.CharAssociation.PredicationMerger
getPredicationMerger(java.lang.String key)
Obtain predication merger for KEY.int
getStart()
int
getSubIntervalCount()
int[]
getSubIntervals()
boolean
isDisjoint()
static CharAssociation
join(CharAssociation[] aa)
Join (merge) multiple associations into a single, potentially disjoint association.void
mergePredication(java.lang.String key, java.lang.Object value)
Merge predication <KEY,VALUE>.void
mergePredications(CharAssociation ca)
Merge predications from another CA.static java.lang.Object
mergePredicationValues(java.lang.String key, java.lang.Object v1, java.lang.Object v2)
Merge predication values V1 and V2 on KEY.static CharAssociation[]
replicate(CharAssociation a, int repeat)
Replicate association to formrepeat
new associations.void
setPredication(java.lang.String key, java.lang.Object value)
Set predication <KEY,VALUE>.static void
setPredicationMerger(java.lang.String key, org.apache.fop.complexscripts.util.CharAssociation.PredicationMerger pm)
Register predication merger PM for KEY.java.lang.String
toString()
-
-
-
Constructor Detail
-
CharAssociation
public CharAssociation(int offset, int count, int[] subIntervals)
Instantiate a character association.- Parameters:
offset
- into array of Unicode scalar values (in associated IntBuffer)count
- of Unicode scalar values (in associated IntBuffer)subIntervals
- if disjoint, then array of sub-intervals, otherwise null; even members of array are sub-interval starts, and odd members are sub-interval ends (exclusive)
-
CharAssociation
public CharAssociation(int offset, int count)
Instantiate a non-disjoint character association.- Parameters:
offset
- into array of UTF-16 code elements (in associated CharSequence)count
- of UTF-16 character code elements (in associated CharSequence)
-
CharAssociation
public CharAssociation(int[] subIntervals)
Instantiate a non-disjoint character association.- Parameters:
subIntervals
- if disjoint, then array of sub-intervals, otherwise null; even members of array are sub-interval starts, and odd members are sub-interval ends (exclusive)
-
-
Method Detail
-
getOffset
public int getOffset()
- Returns:
- offset (start of association interval)
-
getCount
public int getCount()
- Returns:
- count (number of characer codes in association)
-
getStart
public int getStart()
- Returns:
- start of association interval
-
getEnd
public int getEnd()
- Returns:
- end of association interval
-
isDisjoint
public boolean isDisjoint()
- Returns:
- true if association is disjoint
-
getSubIntervals
public int[] getSubIntervals()
- Returns:
- subintervals of disjoint association
-
getSubIntervalCount
public int getSubIntervalCount()
- Returns:
- count of subintervals of disjoint association
-
contained
public boolean contained(int offset, int count)
- Parameters:
offset
- of interval in sequencecount
- length of interval- Returns:
- true if this association is contained within [offset,offset+count)
-
setPredication
public void setPredication(java.lang.String key, java.lang.Object value)
Set predication <KEY,VALUE>.- Parameters:
key
- predication keyvalue
- predication value
-
getPredication
public java.lang.Object getPredication(java.lang.String key)
Get predication KEY.- Parameters:
key
- predication key- Returns:
- predication KEY at OFFSET or null if none exists
-
mergePredication
public void mergePredication(java.lang.String key, java.lang.Object value)
Merge predication <KEY,VALUE>.- Parameters:
key
- predication keyvalue
- predication value
-
mergePredicationValues
public static java.lang.Object mergePredicationValues(java.lang.String key, java.lang.Object v1, java.lang.Object v2)
Merge predication values V1 and V2 on KEY. Uses registeredPredicationMerger
if one exists, otherwise uses V2 if non-null, otherwise uses V1.- Parameters:
key
- predication keyv1
- first (original) predication valuev2
- second (to be merged) predication value- Returns:
- merged value
-
mergePredications
public void mergePredications(CharAssociation ca)
Merge predications from another CA.- Parameters:
ca
- from which to merge
-
clone
public java.lang.Object clone()
- Overrides:
clone
in classjava.lang.Object
-
setPredicationMerger
public static void setPredicationMerger(java.lang.String key, org.apache.fop.complexscripts.util.CharAssociation.PredicationMerger pm)
Register predication merger PM for KEY.- Parameters:
key
- for predication mergerpm
- predication merger
-
getPredicationMerger
public static org.apache.fop.complexscripts.util.CharAssociation.PredicationMerger getPredicationMerger(java.lang.String key)
Obtain predication merger for KEY.- Parameters:
key
- for predication merger- Returns:
- predication merger or null if none exists
-
replicate
public static CharAssociation[] replicate(CharAssociation a, int repeat)
Replicate association to formrepeat
new associations.- Parameters:
a
- association to replicaterepeat
- count- Returns:
- array of replicated associations
-
join
public static CharAssociation join(CharAssociation[] aa)
Join (merge) multiple associations into a single, potentially disjoint association.- Parameters:
aa
- array of associations to join- Returns:
- (possibly disjoint) association containing joined associations
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-