Update ICU to 77.1

Downloaded from https://github.com/unicode-org/icu/releases/tag/release-77-1

Change-Id: I05060c281b70ad7e9733268796b695d1cf4ea30a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175841
Tested-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
This commit is contained in:
Taichi Haradaguchi
2025-03-14 09:54:11 +01:00
committed by Xisco Fauli
parent 16f76c36a6
commit 5d09908418
9 changed files with 105 additions and 40 deletions
+1 -1
View File
@@ -11284,7 +11284,7 @@ fi
dnl ===================================================================
dnl Check for system icu
dnl ===================================================================
ICU_MAJOR=75
ICU_MAJOR=77
ICU_MINOR=1
ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib -licuuc"
+4 -4
View File
@@ -352,10 +352,10 @@ IACCESSIBLE2_TARBALL := IAccessible2-1.3+git20231013.3d8c7f0.tar.gz
# three static lines
# so that git cherry-pick
# will not run into conflicts
ICU_SHA256SUM := cb968df3e4d2e87e8b11c49a5d01c787bd13b9545280fc6642f826527618caef
ICU_TARBALL := icu4c-75_1-src.tgz
ICU_DATA_SHA256SUM := a5104212dc317a64f9b035723ea706f2f4fd5a0f37b7923fae7aeb9d1d0061b1
ICU_DATA_TARBALL := icu4c-75_1-data.zip
ICU_SHA256SUM := 588e431f77327c39031ffbb8843c0e3bc122c211374485fa87dc5f3faff24061
ICU_TARBALL := icu4c-77_1-src.tgz
ICU_DATA_SHA256SUM := 1e08bfafa442260ccabf9a872d4eab12de813d42b90769df056bab032b37e1d3
ICU_DATA_TARBALL := icu4c-77_1-data.zip
# three static lines
# so that git cherry-pick
# will not run into conflicts
+4 -4
View File
@@ -1,10 +1,10 @@
diff -ur icu.org/source/common/unicode/platform.h icu/source/common/unicode/platform.h
--- icu.org/source/common/unicode/platform.h 2021-10-28 18:04:57.000000000 +0200
+++ icu/source/common/unicode/platform.h 2021-11-15 21:03:11.474638494 +0100
@@ -818,7 +818,7 @@
--- icu.org/source/common/unicode/platform.h 2024-10-25 03:24:00.000000000 +0900
+++ icu/source/common/unicode/platform.h 2024-11-04 20:40:39.757438800 +0900
@@ -779,7 +779,7 @@
UPRV_HAS_DECLSPEC_ATTRIBUTE(__dllimport__))
# define U_EXPORT __declspec(dllexport)
#elif defined(__GNUC__)
#elif defined(__GNUC__) || defined(__open_xl__)
-# define U_EXPORT __attribute__((visibility("default")))
+# define U_EXPORT
#elif (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x550) \
+12 -12
View File
@@ -1,3 +1,15 @@
diff -ur icu.org/source/configure.ac icu/source/configure.ac
--- icu.org/source/configure.ac 2024-10-25 03:24:00.000000000 +0900
+++ icu/source/configure.ac 2024-11-11 07:54:15.090673278 +0900
@@ -8,7 +8,7 @@
# Check for minimum autoconf version. Use exactly this version when rebuilding
# 'aclocal.m4' and 'configure' for merging upstream, to avoid spurious diffs.
-AC_PREREQ([2.72])
+AC_PREREQ([2.69])
# Process this file with autoreconf to produce a configure script
AC_INIT([ICU],
diff -ur icu.org/source/config/mh-darwin icu/source/config/mh-darwin
--- icu.org/source/config/mh-darwin 2016-06-15 20:58:17.000000000 +0200
+++ icu/source/config/mh-darwin 2017-04-21 21:30:23.584568210 +0200
@@ -77,15 +89,3 @@ diff -ur icu.org/source/tools/toolutil/pkg_genc.cpp icu/source/tools/toolutil/pk
/* 16 bytes alignment. */
/* http://docs.oracle.com/cd/E19641-01/802-1947/802-1947.pdf */
{"sun",
diff -ur icu.org/source/tools/toolutil/pkg_genc.h icu/source/tools/toolutil/pkg_genc.h
--- icu.org/source/tools/toolutil/pkg_genc.h 2017-01-20 01:20:31.000000000 +0100
+++ icu/source/tools/toolutil/pkg_genc.h 2017-04-21 21:30:23.582568215 +0200
@@ -60,7 +60,7 @@
#endif
#define LARGE_BUFFER_MAX_SIZE 2048
-#define SMALL_BUFFER_MAX_SIZE 512
+#define SMALL_BUFFER_MAX_SIZE 2048
#define SMALL_BUFFER_FLAG_NAMES 32
#define BUFFER_PADDING_SIZE 20
+17 -17
View File
@@ -1,6 +1,6 @@
diff -ur icu.org/source/common/dictbe.cpp icu/source/common/dictbe.cpp
--- icu.org/source/common/dictbe.cpp 2023-06-14 06:23:55.000000000 +0900
+++ icu/source/common/dictbe.cpp 2023-06-26 17:43:53.034173100 +0900
--- icu.org/source/common/dictbe.cpp 2024-10-25 03:24:00.000000000 +0900
+++ icu/source/common/dictbe.cpp 2024-11-05 20:38:59.457423900 +0900
@@ -35,7 +35,19 @@
******************************************************************
*/
@@ -208,7 +208,7 @@ diff -ur icu.org/source/common/dictbe.cpp icu/source/common/dictbe.cpp
-int32_t PossibleWord::candidates( UText *text, DictionaryMatcher *dict, int32_t rangeEnd ) {
+int32_t PossibleWord::candidates( UText *text, DictionaryMatcher *dict, int32_t rangeEnd, UnicodeSet const *ignoreSet, int32_t minLength) {
// TODO: If getIndex is too slow, use offset < 0 and add discardAll()
int32_t start = (int32_t)utext_getNativeIndex(text);
int32_t start = static_cast<int32_t>(utext_getNativeIndex(text));
if (start != offset) {
offset = start;
- count = dict->matches(text, rangeEnd-start, UPRV_LENGTHOF(cuLengths), cuLengths, cpLengths, nullptr, &prefix);
@@ -324,7 +324,7 @@ diff -ur icu.org/source/common/dictbe.cpp icu/source/common/dictbe.cpp
+ return foundBreaks.size() - wordsFound;
+ }
- while (U_SUCCESS(status) && (current = (int32_t)utext_getNativeIndex(text)) < rangeEnd) {
- while (U_SUCCESS(status) && (current = static_cast<int32_t>(utext_getNativeIndex(text))) < rangeEnd) {
- cuWordLength = 0;
- cpWordLength = 0;
-
@@ -351,7 +351,7 @@ diff -ur icu.org/source/common/dictbe.cpp icu/source/common/dictbe.cpp
- // If there was more than one, see which one can take us forward the most words
- else if (candidates > 1) {
- // If we're already at the end of the range, we're done
- if ((int32_t)utext_getNativeIndex(text) >= rangeEnd) {
- if (static_cast<int32_t>(utext_getNativeIndex(text)) >= rangeEnd) {
- goto foundBest;
- }
- do {
@@ -369,7 +369,7 @@ diff -ur icu.org/source/common/dictbe.cpp icu/source/common/dictbe.cpp
+ }
- // If we're already at the end of the range, we're done
- if ((int32_t)utext_getNativeIndex(text) >= rangeEnd) {
- if (static_cast<int32_t>(utext_getNativeIndex(text)) >= rangeEnd) {
- goto foundBest;
- }
+ // prev[i] is the index of the last code point in the previous word in
@@ -437,7 +437,7 @@ diff -ur icu.org/source/common/dictbe.cpp icu/source/common/dictbe.cpp
- // just found (if there is one), but only if the preceding word does not exceed
- // the threshold.
- // The text iterator should now be positioned at the end of the word we found.
- if ((int32_t)utext_getNativeIndex(text) < rangeEnd && cpWordLength < KHMER_ROOT_COMBINE_THRESHOLD) {
- if (static_cast<int32_t>(utext_getNativeIndex(text)) < rangeEnd && cpWordLength < KHMER_ROOT_COMBINE_THRESHOLD) {
- // if it is a dictionary word, do nothing. If it isn't, then if there is
- // no preceding word, or the non-word shares less than the minimum threshold
- // of characters with a dictionary word, then scan to resynchronize
@@ -450,9 +450,9 @@ diff -ur icu.org/source/common/dictbe.cpp icu/source/common/dictbe.cpp
- UChar32 uc;
- int32_t chars = 0;
- for (;;) {
- int32_t pcIndex = (int32_t)utext_getNativeIndex(text);
- int32_t pcIndex = static_cast<int32_t>(utext_getNativeIndex(text));
- pc = utext_next32(text);
- int32_t pcSize = (int32_t)utext_getNativeIndex(text) - pcIndex;
- int32_t pcSize = static_cast<int32_t>(utext_getNativeIndex(text)) - pcIndex;
- chars += pcSize;
- remaining -= pcSize;
- if (remaining <= 0) {
@@ -536,9 +536,9 @@ diff -ur icu.org/source/common/dictbe.cpp icu/source/common/dictbe.cpp
-
- // Never stop before a combining mark.
- int32_t currPos;
- while ((currPos = (int32_t)utext_getNativeIndex(text)) < rangeEnd && fMarkSet.contains(utext_current32(text))) {
- while ((currPos = static_cast<int32_t>(utext_getNativeIndex(text))) < rangeEnd && fMarkSet.contains(utext_current32(text))) {
- utext_next32(text);
- cuWordLength += (int32_t)utext_getNativeIndex(text) - currPos;
- cuWordLength += static_cast<int32_t>(utext_getNativeIndex(text)) - currPos;
+ }
+ // Start pushing the optimal offset index into t_boundary (t for tentative).
+ // prev[numCodePts] is guaranteed to be meaningful.
@@ -748,8 +748,8 @@ diff -ur icu.org/source/common/dictbe.h icu/source/common/dictbe.h
public:
diff -ur icu.org/source/common/dictionarydata.cpp icu/source/common/dictionarydata.cpp
--- icu.org/source/common/dictionarydata.cpp 2023-06-14 06:23:55.000000000 +0900
+++ icu/source/common/dictionarydata.cpp 2023-06-26 02:18:05.709454400 +0900
--- icu.org/source/common/dictionarydata.cpp 2024-10-25 03:24:00.000000000 +0900
+++ icu/source/common/dictionarydata.cpp 2024-11-04 20:38:59.462426800 +0900
@@ -44,7 +44,7 @@
int32_t UCharsDictionaryMatcher::matches(UText *text, int32_t maxLength, int32_t limit,
@@ -758,10 +758,10 @@ diff -ur icu.org/source/common/dictionarydata.cpp icu/source/common/dictionaryda
+ int32_t *prefix, UnicodeSet const* ignoreSet, int32_t minLength) const {
UCharsTrie uct(characters);
int32_t startingTextIndex = (int32_t)utext_getNativeIndex(text);
int32_t startingTextIndex = static_cast<int32_t>(utext_getNativeIndex(text));
@@ -55,7 +55,13 @@
UStringTrieResult result = (codePointsMatched == 0) ? uct.first(c) : uct.next(c);
int32_t lengthMatched = (int32_t)utext_getNativeIndex(text) - startingTextIndex;
int32_t lengthMatched = static_cast<int32_t>(utext_getNativeIndex(text)) - startingTextIndex;
codePointsMatched += 1;
+ if (ignoreSet != NULL && ignoreSet->contains(c)) {
+ continue;
@@ -780,11 +780,11 @@ diff -ur icu.org/source/common/dictionarydata.cpp icu/source/common/dictionaryda
- int32_t *prefix) const {
+ int32_t *prefix, UnicodeSet const* ignoreSet, int32_t minLength) const {
BytesTrie bt(characters);
int32_t startingTextIndex = (int32_t)utext_getNativeIndex(text);
int32_t startingTextIndex = static_cast<int32_t>(utext_getNativeIndex(text));
int32_t wordCount = 0;
@@ -122,7 +128,13 @@
UStringTrieResult result = (codePointsMatched == 0) ? bt.first(transform(c)) : bt.next(transform(c));
int32_t lengthMatched = (int32_t)utext_getNativeIndex(text) - startingTextIndex;
int32_t lengthMatched = static_cast<int32_t>(utext_getNativeIndex(text)) - startingTextIndex;
codePointsMatched += 1;
+ if (ignoreSet != NULL && ignoreSet->contains(c)) {
+ continue;
+2 -2
View File
@@ -1,7 +1,7 @@
--- source/configure.ac
+++ source/configure.ac
@@ -213,7 +213,7 @@
#AC_CHECK_PROG(STRIP, strip, strip, true)
@@ -195,7 +195,7 @@
fi
# TODO(ICU-20301): Remove fallback to Python 2.
-AC_CHECK_PROGS(PYTHON, python3 "py -3" python "py")
+23
View File
@@ -1005,6 +1005,29 @@ OString unicode::getExemplarLanguageForUScriptCode(UScriptCode eScript)
case USCRIPT_ARABIC_NASTALIQ:
sRet = "fa-Aran"_ostr;
break;
#endif
#if (U_ICU_VERSION_MAJOR_NUM >= 76)
case USCRIPT_GARAY:
sRet = "wo-Gara"_ostr;
break;
case USCRIPT_GURUNG_KHEMA:
sRet = "gvr-Gukh"_ostr;
break;
case USCRIPT_KIRAT_RAI:
sRet = "bap-Krai"_ostr;
break;
case USCRIPT_OL_ONAL:
sRet = "unr-Onao"_ostr;
break;
case USCRIPT_SUNUWAR:
sRet = "suz-Sunu"_ostr;
break;
case USCRIPT_TODHRI:
sRet = "sq-Todr"_ostr;
break;
case USCRIPT_TULU_TIGALARI:
sRet = "sa-Tutg"_ostr;
break;
#endif
}
return sRet;
+10
View File
@@ -1801,6 +1801,16 @@
#define RID_SUBSETSTR_KAWI NC_("RID_SUBSETMAP", "Kawi")
#define RID_SUBSETSTR_NAG_MUNDARI NC_("RID_SUBSETMAP", "Nag Mundari")
#define RID_SUBSETSTR_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I NC_("RID_SUBSETMAP", "CJK Unified Ideographs Extension I")
#define RID_SUBSETSTR_EGYPTIAN_HIEROGLYPHS_EXTENDED_A NC_("RID_SUBSETMAP", "Egyptian Hieroglyphs Extended-A")
#define RID_SUBSETSTR_GARAY NC_("RID_SUBSETMAP", "Garay")
#define RID_SUBSETSTR_GURUNG_KHEMA NC_("RID_SUBSETMAP", "Gurung Khema")
#define RID_SUBSETSTR_KIRAT_RAI NC_("RID_SUBSETMAP", "Kirat Rai")
#define RID_SUBSETSTR_MYANMAR_EXTENDED_C NC_("RID_SUBSETMAP", "Myanmar Extended-C")
#define RID_SUBSETSTR_OL_ONAL NC_("RID_SUBSETMAP", "Ol Onal")
#define RID_SUBSETSTR_SUNUWAR NC_("RID_SUBSETMAP", "Sunuwar")
#define RID_SUBSETSTR_SYMBOLS_FOR_LEGACY_COMPUTING_SUPPLEMENT NC_("RID_SUBSETMAP", "Symbols for Legacy Computing Supplement")
#define RID_SUBSETSTR_TODHRI NC_("RID_SUBSETMAP", "Todhri")
#define RID_SUBSETSTR_TULU_TIGALARI NC_("RID_SUBSETMAP", "Tulu-Tigalari")
#define RID_SVXSTR_FRAMEDIR_LTR NC_("RID_SVXSTR_FRAMEDIR_LTR", "Left-to-right (LTR)")
#define RID_SVXSTR_FRAMEDIR_RTL NC_("RID_SVXSTR_FRAMEDIR_RTL", "Right-to-left (RTL)")
+32
View File
@@ -1928,6 +1928,38 @@ void SubsetMap::InitList()
case UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I:
aAllSubsets.emplace_back( 0x2EBF0, 0x2EE5F, SvxResId(RID_SUBSETSTR_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I) );
break;
#endif
#if (U_ICU_VERSION_MAJOR_NUM >= 76)
case UBLOCK_EGYPTIAN_HIEROGLYPHS_EXTENDED_A:
aAllSubsets.emplace_back( 0x13460, 0x1355F, SvxResId(RID_SUBSETSTR_EGYPTIAN_HIEROGLYPHS_EXTENDED_A) );
break;
case UBLOCK_GARAY:
aAllSubsets.emplace_back( 0x10D40, 0x10D8F, SvxResId(RID_SUBSETSTR_GARAY) );
break;
case UBLOCK_GURUNG_KHEMA:
aAllSubsets.emplace_back( 0x16100, 0x1613F, SvxResId(RID_SUBSETSTR_GURUNG_KHEMA) );
break;
case UBLOCK_KIRAT_RAI:
aAllSubsets.emplace_back( 0x16D40, 0x16D7F, SvxResId(RID_SUBSETSTR_KIRAT_RAI) );
break;
case UBLOCK_MYANMAR_EXTENDED_C:
aAllSubsets.emplace_back( 0x116D0, 0x116FF, SvxResId(RID_SUBSETSTR_MYANMAR_EXTENDED_C) );
break;
case UBLOCK_OL_ONAL:
aAllSubsets.emplace_back( 0x1E5D0, 0x1E5FF, SvxResId(RID_SUBSETSTR_OL_ONAL) );
break;
case UBLOCK_SUNUWAR:
aAllSubsets.emplace_back( 0x11BC0, 0x11BFF, SvxResId(RID_SUBSETSTR_SUNUWAR) );
break;
case UBLOCK_SYMBOLS_FOR_LEGACY_COMPUTING_SUPPLEMENT:
aAllSubsets.emplace_back( 0x1CC00, 0x1CEBF, SvxResId(RID_SUBSETSTR_SYMBOLS_FOR_LEGACY_COMPUTING_SUPPLEMENT) );
break;
case UBLOCK_TODHRI:
aAllSubsets.emplace_back( 0x105C0, 0x105FF, SvxResId(RID_SUBSETSTR_TODHRI) );
break;
case UBLOCK_TULU_TIGALARI:
aAllSubsets.emplace_back( 0x11380, 0x113FF, SvxResId(RID_SUBSETSTR_TULU_TIGALARI) );
break;
#endif
}