diff options
5 files changed, 5 insertions, 0 deletions
diff --git a/android_icu4j/src/main/java/android/icu/impl/CaseMapImpl.java b/android_icu4j/src/main/java/android/icu/impl/CaseMapImpl.java index 97dddc76a..3b6bbcc53 100644 --- a/android_icu4j/src/main/java/android/icu/impl/CaseMapImpl.java +++ b/android_icu4j/src/main/java/android/icu/impl/CaseMapImpl.java @@ -856,6 +856,7 @@ public final class CaseMapImpl { int type = UCaseProps.INSTANCE.getTypeOrIgnorable(c); if ((type & UCaseProps.IGNORABLE) != 0) { // Case-ignorable, continue with the loop. + i += Character.charCount(c); } else if (type != UCaseProps.NONE) { return true; // Followed by cased letter. } else { diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterCaseTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterCaseTest.java index b0728633a..731cdb692 100644 --- a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterCaseTest.java +++ b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterCaseTest.java @@ -709,6 +709,7 @@ public final class UCharacterCaseTest extends TestFmwk assertGreekUpper("Το ένα ή το άλλο.", "ΤΟ ΕΝΑ Ή ΤΟ ΑΛΛΟ."); // http://multilingualtypesetting.co.uk/blog/greek-typesetting-tips/ assertGreekUpper("ρωμέικα", "ΡΩΜΕΪΚΑ"); + assertGreekUpper("ή.", "Ή."); } private static final class EditChange { diff --git a/icu4c/source/test/intltest/strcase.cpp b/icu4c/source/test/intltest/strcase.cpp index 7054b7f1e..e0f64c945 100644 --- a/icu4c/source/test/intltest/strcase.cpp +++ b/icu4c/source/test/intltest/strcase.cpp @@ -747,6 +747,7 @@ StringCaseTest::TestGreekUpper() { // http://multilingualtypesetting.co.uk/blog/greek-typesetting-tips/ assertGreekUpper("\\u03C1\\u03C9\\u03BC\\u03AD\\u03B9\\u03BA\\u03B1", "\\u03A1\\u03A9\\u039C\\u0395\\u03AA\\u039A\\u0391"); + assertGreekUpper("\\u03AE.", "\\u0397\\u0301."); } void diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/CaseMapImpl.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/CaseMapImpl.java index f28e60ed5..1b2e8b790 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/impl/CaseMapImpl.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/CaseMapImpl.java @@ -852,6 +852,7 @@ public final class CaseMapImpl { int type = UCaseProps.INSTANCE.getTypeOrIgnorable(c); if ((type & UCaseProps.IGNORABLE) != 0) { // Case-ignorable, continue with the loop. + i += Character.charCount(c); } else if (type != UCaseProps.NONE) { return true; // Followed by cased letter. } else { diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterCaseTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterCaseTest.java index 6f8a67983..217078842 100644 --- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterCaseTest.java +++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterCaseTest.java @@ -708,6 +708,7 @@ public final class UCharacterCaseTest extends TestFmwk assertGreekUpper("Το ένα ή το άλλο.", "ΤΟ ΕΝΑ Ή ΤΟ ΑΛΛΟ."); // http://multilingualtypesetting.co.uk/blog/greek-typesetting-tips/ assertGreekUpper("ρωμέικα", "ΡΩΜΕΪΚΑ"); + assertGreekUpper("ή.", "Ή."); } private static final class EditChange { |