From b7c707223cb44f9423294295ac5d04cc1e2314a2 Mon Sep 17 00:00:00 2001 From: Eike Rathke Date: Wed, 10 Nov 2021 16:00:42 +0100 Subject: Resolves: tdf#110003 tdf#143128 handle lowercase ß vs uppercase ẞ folding MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Tested-by: Jenkins Signed-off-by: Xisco Fauli Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125033 --- i18nutil/source/utility/casefolding_data.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'i18nutil') 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 -- cgit