java.awt.font
Class NumericShaper

java.lang.Object
  extended by java.awt.font.NumericShaper
All Implemented Interfaces:
Serializable

public final class NumericShaper
extends Object
implements Serializable

This class handles numeric shaping. A shaper can either be contextual or not. A non-contextual shaper will always translate ASCII digits in its input into the target Unicode range. A contextual shaper will change the target Unicode range depending on the characters it has previously processed.

Since:
1.4
See Also:
Serialized Form

Field Summary
static int ALL_RANGES
          Convenience constant representing all the valid Unicode ranges.
static int ARABIC
          Constant representing the Unicode ARABIC range.
static int BENGALI
          Constant representing the Unicode BENGALI range.
static int DEVANAGARI
          Constant representing the Unicode DEVANAGARI range.
static int EASTERN_ARABIC
          Constant representing the Unicode extended arabic range.
static int ETHIOPIC
          Constant representing the Unicode ETHIOPIC range.
static int EUROPEAN
          Constant representing the Unicode EUROPEAN range.
static int GUJARATI
          Constant representing the Unicode GUJARATI range.
static int GURMUKHI
          Constant representing the Unicode GURMUKHI range.
static int KANNADA
          Constant representing the Unicode KANNADA range.
static int KHMER
          Constant representing the Unicode KHMER range.
static int LAO
          Constant representing the Unicode LAO range.
static int MALAYALAM
          Constant representing the Unicode MALAYALAM range.
static int MONGOLIAN
          Constant representing the Unicode MONGOLIAN range.
static int MYANMAR
          Constant representing the Unicode MYANMAR range.
static int ORIYA
          Constant representing the Unicode ORIYA range.
static int TAMIL
          Constant representing the Unicode TAMIL range.
static int TELUGU
          Constant representing the Unicode TELUGU range.
static int THAI
          Constant representing the Unicode THAI range.
static int TIBETAN
          Constant representing the Unicode TIBETAN range.
 
Method Summary
 boolean equals(Object obj)
          Determine whether this Object is semantically equal to another Object.
static NumericShaper getContextualShaper(int ranges)
          Return a contextual shaper which can shape to any of the indicated languages.
static NumericShaper getContextualShaper(int ranges, int defaultContext)
          Return a contextual shaper which can shape to any of the indicated languages.
 int getRanges()
          Return an integer representing all the languages for which this shaper will shape.
static NumericShaper getShaper(int singleRange)
          Return a non-contextual shaper which can shape to a single range.
 int hashCode()
          Get a value that represents this Object, as uniquely as possible within the confines of an int.
 boolean isContextual()
          Return true if this shaper is contextual, false if it is not.
 void shape(char[] text, int start, int count)
          Shape the text in the given array.
 void shape(char[] text, int start, int count, int context)
          Shape the given text, using the indicated initial context.
 String toString()
          Convert this Object to a human-readable String.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

ALL_RANGES

public static final int ALL_RANGES
Convenience constant representing all the valid Unicode ranges.

See Also:
Constant Field Values

ARABIC

public static final int ARABIC
Constant representing the Unicode ARABIC range. Shaping done using this range will translate to the arabic decimal characters. Use EASTERN_ARABIC if you want to shape to the eastern arabic (also known as the extended arabic) decimal characters.

See Also:
Constant Field Values

BENGALI

public static final int BENGALI
Constant representing the Unicode BENGALI range.

See Also:
Constant Field Values

DEVANAGARI

public static final int DEVANAGARI
Constant representing the Unicode DEVANAGARI range.

See Also:
Constant Field Values

EASTERN_ARABIC

public static final int EASTERN_ARABIC
Constant representing the Unicode extended arabic range. In Unicode there are two different sets of arabic digits; this selects the extended or eastern set.

See Also:
Constant Field Values

ETHIOPIC

public static final int ETHIOPIC
Constant representing the Unicode ETHIOPIC range. Note that there is no digit zero in this range; an ASCII digit zero is left unchanged when shaping to this range.

See Also:
Constant Field Values

EUROPEAN

public static final int EUROPEAN
Constant representing the Unicode EUROPEAN range. For contextual shaping purposes, characters in the various extended Latin character blocks are recognized as EUROPEAN.

See Also:
Constant Field Values

GUJARATI

public static final int GUJARATI
Constant representing the Unicode GUJARATI range.

See Also:
Constant Field Values

GURMUKHI

public static final int GURMUKHI
Constant representing the Unicode GURMUKHI range.

See Also:
Constant Field Values

KANNADA

public static final int KANNADA
Constant representing the Unicode KANNADA range.

See Also:
Constant Field Values

KHMER

public static final int KHMER
Constant representing the Unicode KHMER range.

See Also:
Constant Field Values

LAO

public static final int LAO
Constant representing the Unicode LAO range.

See Also:
Constant Field Values

MALAYALAM

public static final int MALAYALAM
Constant representing the Unicode MALAYALAM range.

See Also:
Constant Field Values

MONGOLIAN

public static final int MONGOLIAN
Constant representing the Unicode MONGOLIAN range.

See Also:
Constant Field Values

MYANMAR

public static final int MYANMAR
Constant representing the Unicode MYANMAR range.

See Also:
Constant Field Values

ORIYA

public static final int ORIYA
Constant representing the Unicode ORIYA range.

See Also:
Constant Field Values

TAMIL

public static final int TAMIL
Constant representing the Unicode TAMIL range. Note that there is no digit zero in this range; an ASCII digit zero is left unchanged when shaping to this range.

See Also:
Constant Field Values

TELUGU

public static final int TELUGU
Constant representing the Unicode TELUGU range.

See Also:
Constant Field Values

THAI

public static final int THAI
Constant representing the Unicode THAI range.

See Also:
Constant Field Values

TIBETAN

public static final int TIBETAN
Constant representing the Unicode TIBETAN range.

See Also:
Constant Field Values
Method Detail

getRanges

public int getRanges()
Return an integer representing all the languages for which this shaper will shape. The result is taken by "or"ing together the constants representing the various languages.


isContextual

public boolean isContextual()
Return true if this shaper is contextual, false if it is not.


shape

public void shape(char[] text,
                  int start,
                  int count)
Shape the text in the given array. The starting context will be the context passed to the shaper at creation time.

Parameters:
text - the text to shape
start - the index of the starting character of the array
count - the number of characters in the array

shape

public void shape(char[] text,
                  int start,
                  int count,
                  int context)
Shape the given text, using the indicated initial context. If this shaper is not a contextual shaper, then the given context will be ignored.

Parameters:
text - the text to shape
start - the index of the first character of the text to shape
count - the number of characters to shape in the text
context - the initial context
Throws:
IllegalArgumentException - if the initial context is invalid

equals

public boolean equals(Object obj)
Description copied from class: Object
Determine whether this Object is semantically equal to another Object.

There are some fairly strict requirements on this method which subclasses must follow:

This is typically overridden to throw a ClassCastException if the argument is not comparable to the class performing the comparison, but that is not a requirement. It is legal for a.equals(b) to be true even though a.getClass() != b.getClass(). Also, it is typical to never cause a NullPointerException.

In general, the Collections API (java.util) use the equals method rather than the == operator to compare objects. However, IdentityHashMap is an exception to this rule, for its own good reasons.

The default implementation returns this == o.

Overrides:
equals in class Object
Parameters:
obj - the Object to compare to
Returns:
whether this Object is semantically equal to another
See Also:
Object.hashCode()

hashCode

public int hashCode()
Description copied from class: Object
Get a value that represents this Object, as uniquely as possible within the confines of an int.

There are some requirements on this method which subclasses must follow:

Notice that since hashCode is used in Hashtable and other hashing classes, a poor implementation will degrade the performance of hashing (so don't blindly implement it as returning a constant!). Also, if calculating the hash is time-consuming, a class may consider caching the results.

The default implementation returns System.identityHashCode(this)

Overrides:
hashCode in class Object
Returns:
the hash code for this Object
See Also:
Object.equals(Object), System.identityHashCode(Object)

toString

public String toString()
Description copied from class: Object
Convert this Object to a human-readable String. There are no limits placed on how long this String should be or what it should contain. We suggest you make it as intuitive as possible to be able to place it into System.out.println() and such.

It is typical, but not required, to ensure that this method never completes abruptly with a RuntimeException.

This method will be called when performing string concatenation with this object. If the result is null, string concatenation will instead use "null".

The default implementation returns getClass().getName() + "@" + Integer.toHexString(hashCode()).

Overrides:
toString in class Object
Returns:
the String representing this Object, which may be null
See Also:
Object.getClass(), Object.hashCode(), Class.getName(), Integer.toHexString(int)

getShaper

public static NumericShaper getShaper(int singleRange)
Return a non-contextual shaper which can shape to a single range. All ASCII digits in the input text are translated to this language.

Parameters:
singleRange - the target language
Returns:
a non-contextual shaper for this language
Throws:
IllegalArgumentException - if the argument does not name a single language, as specified by the constants declared in this class

getContextualShaper

public static NumericShaper getContextualShaper(int ranges)
Return a contextual shaper which can shape to any of the indicated languages. The default initial context for this shaper is EUROPEAN.

Parameters:
ranges - the ranges to shape to
Returns:
a contextual shaper which will target any of these ranges
Throws:
IllegalArgumentException - if the argument specifies an unrecognized range

getContextualShaper

public static NumericShaper getContextualShaper(int ranges,
                                                int defaultContext)
Return a contextual shaper which can shape to any of the indicated languages. The default initial context for this shaper is given as an argument.

Parameters:
ranges - the ranges to shape to
defaultContext - the default initial context
Returns:
a contextual shaper which will target any of these ranges
Throws:
IllegalArgumentException - if the ranges argument specifies an unrecognized range, or if the defaultContext argument does not specify a single valid range