basic/qa/vba_tests/collection.vb           |   10 ++++++----
 i18nutil/source/utility/casefolding_data.h |   10 ++++++----
 2 files changed, 12 insertions(+), 8 deletions(-)

New commits:
commit b7c707223cb44f9423294295ac5d04cc1e2314a2
Author:     Eike Rathke <er...@redhat.com>
AuthorDate: Wed Nov 10 16:00:42 2021 +0100
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Thu Nov 11 15:29:33 2021 +0100

    Resolves: tdf#110003 tdf#143128 handle lowercase ß vs uppercase ẞ folding
    
    Change lowercase ß U+00DF LATIN SMALL LETTER SHARP S from
    LowerToUpper, ToUpper: SS
    ToTitle: Ss
    FullFolding: ss
    to
    LowerToUpper, ToUpper: ẞ  U+1E9E
    ToTitle: ẞ  U+1E9E
    FullFolding: ss
    
    Add uppercase ẞ U+1E9E LATIN CAPITAL LETTER SHARP S
    UpperToLower, ToLower: ß  U+00DF
    FullFolding: ss
    
    Adjust BASIC Collection test to new reality.
    
    Change-Id: I198e06985b81a71e5de94bf7fab7a0dbaf10baef
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124988
    Reviewed-by: Eike Rathke <er...@redhat.com>
    Tested-by: Jenkins
    Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125033

diff --git a/basic/qa/vba_tests/collection.vb b/basic/qa/vba_tests/collection.vb
index 0f0c47a262d9..774f3c4c7904 100644
--- a/basic/qa/vba_tests/collection.vb
+++ b/basic/qa/vba_tests/collection.vb
@@ -56,16 +56,18 @@ Sub verify_testCollection()
     ' tdf#144245 - German Eszett is uppercased to a two-character 'SS'.
     ' This test should fail after tdf#110003 has been fixed since the 
lowercase and the uppercase
     ' German Eszett should be matched to the same index.
-    TestUtil.AssertEqual(b.Count, 3, "b.Count")
+    ' Before the fix of tdf#110003
+    'TestUtil.AssertEqual(b.Count, 3, "b.Count")
     ' After the fix of tdf#110003
-    ' TestUtil.AssertEqual(b.Count, 2, "b.Count")
+    TestUtil.AssertEqual(b.Count, 2, "b.Count")
 
     TestUtil.AssertEqual(b.Item("SS"), 1, "b.Item(""SS"")")
     TestUtil.AssertEqual(b.Item("ss"), 1, "b.Item(""ss"")")
     TestUtil.AssertEqual(b.Item("ẞ"), 3, "b.Item(""ẞ"")")
-    TestUtil.AssertEqual(b.Item("ß"), 4, "b.Item(""ß"")")
+    ' Before the fix of tdf#110003
+    'TestUtil.AssertEqual(b.Item("ß"), 4, "b.Item(""ß"")")
     ' After the fix of tdf#110003
-    ' TestUtil.AssertEqual(b.Item("ß"), 3, "b.Item(""ß"")")
+    TestUtil.AssertEqual(b.Item("ß"), 3, "b.Item(""ß"")")
 
     Exit Sub
 errorHandler:
diff --git a/i18nutil/source/utility/casefolding_data.h 
b/i18nutil/source/utility/casefolding_data.h
index debacdf8c40d..3ea677e83405 100644
--- a/i18nutil/source/utility/casefolding_data.h
+++ b/i18nutil/source/utility/casefolding_data.h
@@ -307,7 +307,7 @@ const Value CaseMappingValue[] = {
     {0x6a, 0x1E81}, {0x15, 0x1E80}, {0x6a, 0x1E83}, {0x15, 0x1E82}, {0x6a, 
0x1E85}, {0x15, 0x1E84}, {0x6a, 0x1E87}, {0x15, 0x1E86}, // 1e80 - 1e87
     {0x6a, 0x1E89}, {0x15, 0x1E88}, {0x6a, 0x1E8B}, {0x15, 0x1E8A}, {0x6a, 
0x1E8D}, {0x15, 0x1E8C}, {0x6a, 0x1E8F}, {0x15, 0x1E8E}, // 1e88 - 1e8f
     {0x6a, 0x1E91}, {0x15, 0x1E90}, {0x6a, 0x1E93}, {0x15, 0x1E92}, {0x6a, 
0x1E95}, {0x15, 0x1E94}, {0xd5, 0x004F}, {0xd5, 0x0051}, // 1e90 - 1e97
-    {0xd5, 0x0053}, {0xd5, 0x0055}, {0xd5, 0x0057}, {0xf5, 0x0059}, {0x00, 
0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 1e98 - 1e9f
+    {0xd5, 0x0053}, {0xd5, 0x0055}, {0xd5, 0x0057}, {0xf5, 0x0059}, {0x00, 
0x0000}, {0x00, 0x0000}, {0xea, 0x015E}, {0x00, 0x0000}, // 1e98 - 1e9f
     {0x6a, 0x1EA1}, {0x15, 0x1EA0}, {0x6a, 0x1EA3}, {0x15, 0x1EA2}, {0x6a, 
0x1EA5}, {0x15, 0x1EA4}, {0x6a, 0x1EA7}, {0x15, 0x1EA6}, // 1ea0 - 1ea7
     {0x6a, 0x1EA9}, {0x15, 0x1EA8}, {0x6a, 0x1EAB}, {0x15, 0x1EAA}, {0x6a, 
0x1EAD}, {0x15, 0x1EAC}, {0x6a, 0x1EAF}, {0x15, 0x1EAE}, // 1ea8 - 1eaf
     {0x6a, 0x1EB1}, {0x15, 0x1EB0}, {0x6a, 0x1EB3}, {0x15, 0x1EB2}, {0x6a, 
0x1EB5}, {0x15, 0x1EB4}, {0x6a, 0x1EB7}, {0x15, 0x1EB6}, // 1eb0 - 1eb7
@@ -700,9 +700,9 @@ Mapping const CaseMappingExtra[] = {
     {0x8a, 0, {0x0000, 0x0000, 0x0000}}, // 0x00cc (8   0x0008)
     {0x60, 1, {0x00ED, 0x0000, 0x0000}}, // 0x00cd (9   0x0009)
     {0x8a, 0, {0x0000, 0x0000, 0x0000}}, // 0x00cd (10  0x000A)
-    {0x05, 2, {0x0053, 0x0053, 0x0000}}, // 0x00df (11  0x000B)
-    {0x10, 2, {0x0053, 0x0073, 0x0000}}, // 0x00df (12  0x000C)
-    {0x40, 2, {0x0073, 0x0073, 0x0000}}, // 0x00df (13  0x000D)
+    {0x15, 1, {0x1E9E, 0x0000, 0x0000}}, // 0x00df (11  0x000B)
+    {0x40, 2, {0x0073, 0x0073, 0x0000}}, // 0x00df (12  0x000C)
+    {0x20, 1, {0x00DF, 0x0000, 0x0000}}, // 0x00df (13  0x000D) not hit, 
CaseMappingValue.type is 0xd5=0x80+0x55 not 0xf5=0x80+0x75, but keep slot
     {0x60, 1, {0x0129, 0x0000, 0x0000}}, // 0x0128 (14  0x000E)
     {0x8a, 0, {0x0000, 0x0000, 0x0000}}, // 0x0128 (15  0x000F)
     {0x60, 1, {0x012F, 0x0000, 0x0000}}, // 0x012e (16  0x0010)
@@ -1039,6 +1039,8 @@ Mapping const CaseMappingExtra[] = {
     {0x05, 2, {0x0544, 0x053D, 0x0000}}, // 0xfb17 (347 0x015B)
     {0x10, 2, {0x0544, 0x056D, 0x0000}}, // 0xfb17 (348 0x015C)
     {0x40, 2, {0x0574, 0x056D, 0x0000}}, // 0xfb17 (349 0x015D)
+    {0x2a, 1, {0x00DF, 0x0000, 0x0000}}, // 0x1e9e (350 0x015E)
+    {0x40, 2, {0x0073, 0x0073, 0x0000}}, // 0x1e9e (351 0x015F)
 };
 
 /* Following code need special handling

Reply via email to