java.awt.font

Class NumericShaper

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

UNKNOWN: This class does not handle LIMBU or OSMANYA. The JDK does not seem to properly handle ranges without a digit zero, such as TAMIL. This implementation does.

Field Summary
static intALL_RANGES
Convenience constant representing all the valid Unicode ranges.
static intARABIC
Constant representing the Unicode ARABIC range.
static intBENGALI
Constant representing the Unicode BENGALI range.
static intDEVANAGARI
Constant representing the Unicode DEVANAGARI range.
static intEASTERN_ARABIC
Constant representing the Unicode extended arabic range.
static intETHIOPIC
Constant representing the Unicode ETHIOPIC range.
static intEUROPEAN
Constant representing the Unicode EUROPEAN range.
static intGUJARATI
Constant representing the Unicode GUJARATI range.
static intGURMUKHI
Constant representing the Unicode GURMUKHI range.
static intKANNADA
Constant representing the Unicode KANNADA range.
static intKHMER
Constant representing the Unicode KHMER range.
static intLAO
Constant representing the Unicode LAO range.
static intMALAYALAM
Constant representing the Unicode MALAYALAM range.
static intMONGOLIAN
Constant representing the Unicode MONGOLIAN range.
static intMYANMAR
Constant representing the Unicode MYANMAR range.
static intORIYA
Constant representing the Unicode ORIYA range.
static intTAMIL
Constant representing the Unicode TAMIL range.
static intTELUGU
Constant representing the Unicode TELUGU range.
static intTHAI
Constant representing the Unicode THAI range.
static intTIBETAN
Constant representing the Unicode TIBETAN range.
Method Summary
booleanequals(Object obj)
static NumericShapergetContextualShaper(int ranges)
Return a contextual shaper which can shape to any of the indicated languages.
static NumericShapergetContextualShaper(int ranges, int defaultContext)
Return a contextual shaper which can shape to any of the indicated languages.
intgetRanges()
Return an integer representing all the languages for which this shaper will shape.
static NumericShapergetShaper(int singleRange)
Return a non-contextual shaper which can shape to a single range.
inthashCode()
booleanisContextual()
Return true if this shaper is contextual, false if it is not.
voidshape(char[] text, int start, int count)
Shape the text in the given array.
voidshape(char[] text, int start, int count, int context)
Shape the given text, using the indicated initial context.
StringtoString()

Field Detail

ALL_RANGES

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

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.

BENGALI

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

DEVANAGARI

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

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.

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.

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.

GUJARATI

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

GURMUKHI

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

KANNADA

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

KHMER

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

LAO

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

MALAYALAM

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

MONGOLIAN

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

MYANMAR

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

ORIYA

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

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.

TELUGU

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

THAI

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

TIBETAN

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

Method Detail

equals

public boolean equals(Object obj)

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

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.

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

hashCode

public int hashCode()

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

toString

public String toString()