Top Description Inners Fields Constructors Methods
com.ibm.icu.impl

public final Class Normalizer2Impl

extends Object
Class Inheritance
Imports
java.io.IOException, java.nio.ByteBuffer, java.util.ArrayList, com.ibm.icu.text.UTF16, .UnicodeSet, com.ibm.icu.util.CodePointMap, .CodePointTrie, .ICUUncheckedIOException, .MutableCodePointTrie, .VersionInfo

Low-level implementation of the Unicode Normalization Algorithm. For the data structure and details see the documentation at the end of C++ normalizer2impl.h and in the design doc at https://icu.unicode.org/design/normalization/custom

Nested and Inner Type Summary

Modifier and TypeClass and Description
public static class
private static class
public static class
Normalizer2Impl.ReorderingBuffer

Writable buffer that takes care of canonical ordering.

public static class

Field Summary

Modifier and TypeField and Description
private static final int
private static final int
private static final int
private static final int
private CodePointTrie
private ArrayList<UnicodeSet>
private int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
private static final int
private VersionInfo
public static final int
public static final int
public static final int
public static final int
public static final int
private String
public static final int
public static final int
private static final Normalizer2Impl.IsAcceptable
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
IX_MIN_NO_NO

Mappings are comp-normalized.

public static final int
IX_MIN_NO_NO_COMP_BOUNDARY_BEFORE

Mappings are not comp-normalized but have a comp boundary before.

public static final int
IX_MIN_NO_NO_COMP_NO_MAYBE_CC

Mappings do not have a comp boundary before.

public static final int
IX_MIN_NO_NO_EMPTY

Mappings to the empty string.

public static final int
IX_MIN_YES_NO

Mappings & compositions in [minYesNo..minYesNoMappingsOnly[.

public static final int
IX_MIN_YES_NO_MAPPINGS_ONLY

Mappings only in [minYesNoMappingsOnly..minNoNo[.

public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
private int
public static final int
public static final int
public static final int
public static final int
private String
public static final int
public static final int
private int
private int
private int
private int
private int
private int
private int
private int
private int
private int
private CodePointTrie.Fast16
public static final int
private static final CodePointMap.ValueFilter
private byte[]

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public void
private void
addComposites(int
some character's compositions list
list
,
UnicodeSet
recursively receives the composites from these compositions
set
)

public void
public void
private void
addToStartSet(MutableCodePointTrie mutableTrie, int origin, int decompLead)

private static int
combine(String compositions, int list, int trail)

Finds the recomposition result for a forward-combining "lead" character, specified with a pointer to its compositions list, and a backward-combining "trail" character.

public boolean
compose(CharSequence s, int src, int limit, boolean onlyContiguous, boolean doCompose, Normalizer2Impl.ReorderingBuffer buffer)

public void
composeAndAppend(CharSequence s, boolean doCompose, boolean onlyContiguous, Normalizer2Impl.ReorderingBuffer buffer)

public int
composePair(int a, int b)

public int

Returns:

bits 31..1: spanQuickCheckYes (==s.length() if "yes") and bit 0: set if "maybe"; otherwise, if the span length<s.length() then the quick check result is "no"
composeQuickCheck
(CharSequence s, int src, int limit, boolean onlyContiguous, boolean doSpan)

Very similar to compose(): Make the same changes in both places if relevant.

public Appendable
public void
decompose(CharSequence s, int src, int limit, StringBuilder dest, int destLengthEstimate)

Decomposes s[src, limit[ and writes the result to dest.

public int
decompose(CharSequence s, int src, int limit, Normalizer2Impl.ReorderingBuffer buffer)

private void
decompose(int c, int norm16, Normalizer2Impl.ReorderingBuffer buffer)

public void
private int
decomposeShort(CharSequence s, int src, int limit, boolean stopAtCompBoundary, boolean onlyContiguous, Normalizer2Impl.ReorderingBuffer buffer)

public synchronized Normalizer2Impl

Returns:

this
ensureCanonIterData
()

Builds the canonical-iterator data for this instance.

private int
findNextCompBoundary(CharSequence s, int p, int limit, boolean onlyContiguous)

private int
findNextFCDBoundary(CharSequence s, int p, int limit)

private int
findPreviousCompBoundary(CharSequence s, int p, boolean onlyContiguous)

private int
public boolean

Returns:

true if there are characters whose decomposition starts with c.
getCanonStartSet
(int
A Unicode code point.
c
,
UnicodeSet
A UnicodeSet to receive the characters whose decompositions start with c, if there are any.
set
)

Returns true if there are characters whose decomposition starts with c.

public int
getCC(int norm16)

private int
getCCFromNoNo(int norm16)

public static int
public static int
getCCFromYesOrMaybe(int norm16)

public int
private int

Returns:

index into maybeYesCompositions
getCompositionsList
(int
code point must have compositions
norm16
)

private int

Returns:

index into maybeYesCompositions
getCompositionsListForComposite
(int norm16)

private int

Returns:

index into maybeYesCompositions, or -1
getCompositionsListForDecompYes
(int norm16)

private int
public int
getCompQuickCheck(int norm16)

public String

Returns:

c's decomposition, if it has one; returns null if it does not have a decomposition
getDecomposition
(int
code point
c
)

Gets the decomposition for one code point.

public int

Returns:

The lccc(c) in bits 15..8 and tccc(c) in bits 7..0.
getFCD16
(int
A Unicode code point.
c
)

Returns the FCD data for code point c.

public int
getFCD16FromNormData(int c)

Gets the FCD value from the regular normalization data.

public int
getNorm16(int c)

private int
getPreviousTrailCC(CharSequence s, int start, int p)

public String

Returns:

c's raw decomposition, if it has one; returns null if it does not have a decomposition
getRawDecomposition
(int
code point
c
)

Gets the raw decomposition for one code point.

public int
getRawNorm16(int c)

pack-priv int
private int
public boolean
hasCompBoundaryAfter(int c, boolean onlyContiguous)

private boolean
hasCompBoundaryAfter(CharSequence s, int start, int p, boolean onlyContiguous)

public boolean
private boolean
hasCompBoundaryBefore(int c, int norm16)

Does c have a composition boundary before it?

private boolean
hasCompBoundaryBefore(CharSequence s, int src, int limit)

public boolean
public boolean
public boolean
public boolean
public boolean
isAlgorithmicNoNo(int norm16)

public boolean

Returns:

true if c starts a canonical-iterator string segment.
isCanonSegmentStarter
(int
A Unicode code point.
c
)

Returns true if code point c starts a canonical-iterator string segment.

public boolean
isCompInert(int c, boolean onlyContiguous)

public boolean
isCompNo(int norm16)

private boolean
isCompYesAndZeroCC(int norm16)

public boolean
private boolean
public boolean
isDecompYes(int norm16)

private boolean
public boolean
isFCDInert(int c)

private boolean
isHangulLV(int norm16)

private boolean
isHangulLVT(int norm16)

private static boolean
isInert(int norm16)

private static boolean
isJamoL(int norm16)

private static boolean
isJamoVT(int norm16)

private boolean
isMaybe(int norm16)

private boolean
isMaybeOrNonZeroCC(int norm16)

private boolean
isMostDecompYesAndZeroCC(int norm16)

A little faster and simpler than isDecompYesAndZeroCC() but does not include the MaybeYes which combine-forward and have ccc=0.

private boolean
isTrailCC01ForCompBoundaryAfter(int norm16)

For FCC: Given norm16 HAS_COMP_BOUNDARY_AFTER, does it have tccc<=1?

public Normalizer2Impl
public Normalizer2Impl
load(String name)

public int
makeFCD(CharSequence s, int src, int limit, Normalizer2Impl.ReorderingBuffer buffer)

public void
private int
mapAlgorithmic(int c, int norm16)

private boolean
norm16HasCompBoundaryAfter(int norm16, boolean onlyContiguous)

private boolean
public boolean
public boolean
private void
recompose(Normalizer2Impl.ReorderingBuffer buffer, int recomposeStartIndex, boolean onlyContiguous)

public boolean
singleLeadMightHaveNonZeroFCD16(int lead)

Returns true if the single-or-lead code unit c might have non-zero FCD data.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait