aboutsummaryrefslogtreecommitdiff
path: root/src/share/classes/sun/text/normalizer/NormalizerBase.java
diff options
context:
space:
mode:
authoryan <none@none>2009-07-07 23:12:36 -0700
committeryan <none@none>2009-07-07 23:12:36 -0700
commited51c354927127ec87e31f7f5b20547776e69690 (patch)
tree5ab9c99aebf95144ba7160efd0a474321cb929b9 /src/share/classes/sun/text/normalizer/NormalizerBase.java
parent409972b51ec9205fd74f05a2c59744353b9fe7a6 (diff)
parent1b60ea0985836b03cc0c2461b45c62cc4b635b82 (diff)
Merge
Diffstat (limited to 'src/share/classes/sun/text/normalizer/NormalizerBase.java')
-rw-r--r--src/share/classes/sun/text/normalizer/NormalizerBase.java27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/share/classes/sun/text/normalizer/NormalizerBase.java b/src/share/classes/sun/text/normalizer/NormalizerBase.java
index a82475c60..b4df3e2a6 100644
--- a/src/share/classes/sun/text/normalizer/NormalizerBase.java
+++ b/src/share/classes/sun/text/normalizer/NormalizerBase.java
@@ -1598,15 +1598,34 @@ public final class NormalizerBase implements Cloneable {
* @param options the optional features to be enabled.
*/
public static String normalize(String str, Normalizer.Form form, int options) {
+ int len = str.length();
+ boolean asciiOnly = true;
+ if (len < 80) {
+ for (int i = 0; i < len; i++) {
+ if (str.charAt(i) > 127) {
+ asciiOnly = false;
+ break;
+ }
+ }
+ } else {
+ char[] a = str.toCharArray();
+ for (int i = 0; i < len; i++) {
+ if (a[i] > 127) {
+ asciiOnly = false;
+ break;
+ }
+ }
+ }
+
switch (form) {
case NFC :
- return NFC.normalize(str, options);
+ return asciiOnly ? str : NFC.normalize(str, options);
case NFD :
- return NFD.normalize(str, options);
+ return asciiOnly ? str : NFD.normalize(str, options);
case NFKC :
- return NFKC.normalize(str, options);
+ return asciiOnly ? str : NFKC.normalize(str, options);
case NFKD :
- return NFKD.normalize(str, options);
+ return asciiOnly ? str : NFKD.normalize(str, options);
}
throw new IllegalArgumentException("Unexpected normalization form: " +