configure.ac                                                            |    2 
 download.lst                                                            |    8 
 external/icu/0001-ICU-23054-const-up-struct-that-gencmn-outputs.patch.2 |   25 
 external/icu/UnpackedTarball_icu.mk                                     |    2 
 external/icu/Wunnecessary-virtual-specifier.patch                       |  833 
----------
 external/icu/c++20-comparison.patch.1                                   |    6 
 external/icu/icu4c-scriptrun.patch.1                                    |    4 
 i18nutil/source/utility/unicode.cxx                                     |   17 
 include/svx/strings.hrc                                                 |    8 
 svx/source/dialog/charmap.cxx                                           |   26 
 10 files changed, 61 insertions(+), 870 deletions(-)

New commits:
commit a02e38567e1d5414a253e04a81b67ccfa25ed8f4
Author:     Xisco Fauli <[email protected]>
AuthorDate: Fri Oct 31 14:40:11 2025 +0100
Commit:     Xisco Fauli <[email protected]>
CommitDate: Mon Nov 3 11:40:50 2025 +0100

    ICU: upgrade to 78.1
    
    0001-ICU-23054-const-up-struct-that-gencmn-outputs.patch.2 and
    Wunnecessary-virtual-specifier.patch have been fixed
    upstream
    
    Downloaded from https://github.com/unicode-org/icu/releases/tag/release-78.1
    
    Change-Id: Iaec032611e6616f7d553d4c807b75dfa21a32e7d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193269
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>

diff --git a/configure.ac b/configure.ac
index c0b4201b4629..d97666e32610 100644
--- a/configure.ac
+++ b/configure.ac
@@ -11517,7 +11517,7 @@ fi
 dnl ===================================================================
 dnl Check for system icu
 dnl ===================================================================
-ICU_MAJOR=77
+ICU_MAJOR=78
 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"
diff --git a/download.lst b/download.lst
index 7e89beb4f27c..637a978a5c9c 100644
--- a/download.lst
+++ b/download.lst
@@ -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 := 
588e431f77327c39031ffbb8843c0e3bc122c211374485fa87dc5f3faff24061
-ICU_TARBALL := icu4c-77_1-src.tgz
-ICU_DATA_SHA256SUM := 
1e08bfafa442260ccabf9a872d4eab12de813d42b90769df056bab032b37e1d3
-ICU_DATA_TARBALL := icu4c-77_1-data.zip
+ICU_SHA256SUM := 
6217f58ca39b23127605cfc6c7e0d3475fe4b0d63157011383d716cb41617886
+ICU_TARBALL := icu4c-78.1-sources.tgz
+ICU_DATA_SHA256SUM := 
e7b652244f27194e0ea46a0d21cfc714ee8a818e1fd82d51a93bc91516fdcf65
+ICU_DATA_TARBALL := icu4c-78.1-data.zip
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
diff --git 
a/external/icu/0001-ICU-23054-const-up-struct-that-gencmn-outputs.patch.2 
b/external/icu/0001-ICU-23054-const-up-struct-that-gencmn-outputs.patch.2
deleted file mode 100644
index 6e620e883e57..000000000000
--- a/external/icu/0001-ICU-23054-const-up-struct-that-gencmn-outputs.patch.2
+++ /dev/null
@@ -1,25 +0,0 @@
-From a918593e59e4fc67055420281940f67a068e0598 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <[email protected]>
-Date: Tue, 15 Jul 2025 11:21:18 +0100
-Subject: [PATCH] ICU-23054 const up struct that gencmn outputs
-
----
- icu4c/source/tools/toolutil/pkg_gencmn.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/icu4c/source/tools/toolutil/pkg_gencmn.cpp 
b/icu4c/source/tools/toolutil/pkg_gencmn.cpp
-index 3ec965d8e6..c1a46e9aed 100644
---- a/icu4c/source/tools/toolutil/pkg_gencmn.cpp
-+++ b/icu4c/source/tools/toolutil/pkg_gencmn.cpp
-@@ -360,7 +360,7 @@ createCommonDataFile(const char *destDir, const char 
*name, const char *entrypoi
- 
-         snprintf(
-             buffer, sizeof(buffer),
--            "U_EXPORT struct {
"
-+            "U_EXPORT const struct {
"
-             "    uint16_t headerSize;
"
-             "    uint8_t magic1, magic2;
"
-             "    UDataInfo info;
"
--- 
-2.49.0
-
diff --git a/external/icu/UnpackedTarball_icu.mk 
b/external/icu/UnpackedTarball_icu.mk
index 312c82475347..92777dd331cb 100644
--- a/external/icu/UnpackedTarball_icu.mk
+++ b/external/icu/UnpackedTarball_icu.mk
@@ -40,8 +40,6 @@ $(eval $(call gb_UnpackedTarball_add_patches,icu,\
        external/icu/icu4c-$(if $(filter ANDROID,$(OS)),android,rpath).patch.1 \
        $(if $(filter-out 
ANDROID,$(OS)),external/icu/icu4c-icudata-stdlibs.patch.1) \
        external/icu/no-python.patch \
-       external/icu/Wunnecessary-virtual-specifier.patch \
-       external/icu/0001-ICU-23054-const-up-struct-that-gencmn-outputs.patch.2 
\
 ))
 
 $(eval $(call 
gb_UnpackedTarball_add_file,icu,source/data/brkitr/khmerdict.dict,external/icu/khmerdict.dict))
diff --git a/external/icu/Wunnecessary-virtual-specifier.patch 
b/external/icu/Wunnecessary-virtual-specifier.patch
deleted file mode 100644
index 9ba9c9ad317f..000000000000
--- a/external/icu/Wunnecessary-virtual-specifier.patch
+++ /dev/null
@@ -1,833 +0,0 @@
---- source/common/unicode/uniset.h
-+++ source/common/unicode/uniset.h
-@@ -495,7 +495,7 @@
-      * @return <tt>true</tt> if the specified set is equal to this set.
-      * @stable ICU 2.0
-      */
--    virtual bool operator==(const UnicodeSet& o) const;
-+    bool operator==(const UnicodeSet& o) const;
- 
-     /**
-      * Compares the specified object with this set for equality.  Returns
-@@ -522,7 +522,7 @@
-      * @see Object#hashCode()
-      * @stable ICU 2.0
-      */
--    virtual int32_t hashCode() const;
-+    int32_t hashCode() const;
- 
-     /**
-      * Get a UnicodeSet pointer from a USet
-@@ -792,7 +792,7 @@
-      * @stable ICU 2.0
-      * @see getRangeCount
-      */
--    virtual int32_t size() const;
-+    int32_t size() const;
- 
-     /**
-      * Returns <tt>true</tt> if this set contains no elements.
-@@ -800,7 +800,7 @@
-      * @return <tt>true</tt> if this set contains no elements.
-      * @stable ICU 2.0
-      */
--    virtual UBool isEmpty() const;
-+    UBool isEmpty() const;
- 
-     /**
-      * @return true if this set contains multi-character strings or the empty 
string.
-@@ -825,7 +825,7 @@
-      * @return true if the test condition is met
-      * @stable ICU 2.0
-      */
--    virtual UBool contains(UChar32 start, UChar32 end) const;
-+    UBool contains(UChar32 start, UChar32 end) const;
- 
-     /**
-      * Returns <tt>true</tt> if this set contains the given
-@@ -843,7 +843,7 @@
-      * @return true if the test condition is met
-      * @stable ICU 2.4
-      */
--    virtual UBool containsAll(const UnicodeSet& c) const;
-+    UBool containsAll(const UnicodeSet& c) const;
- 
-     /**
-      * Returns true if this set contains all the characters
-@@ -1231,7 +1231,7 @@
-      * to this set.
-      * @stable ICU 2.0
-      */
--    virtual UnicodeSet& add(UChar32 start, UChar32 end);
-+    UnicodeSet& add(UChar32 start, UChar32 end);
- 
-     /**
-      * Adds the specified character to this set if it is not already
-@@ -1337,7 +1337,7 @@
-      * @param end last character, inclusive, of range
-      * @stable ICU 2.0
-      */
--    virtual UnicodeSet& retain(UChar32 start, UChar32 end);
-+    UnicodeSet& retain(UChar32 start, UChar32 end);
- 
- 
-     /**
-@@ -1375,7 +1375,7 @@
-      * from this set.
-      * @stable ICU 2.0
-      */
--    virtual UnicodeSet& remove(UChar32 start, UChar32 end);
-+    UnicodeSet& remove(UChar32 start, UChar32 end);
- 
-     /**
-      * Removes the specified character from this set if it is present.
-@@ -1412,7 +1412,7 @@
-      * A frozen set will not be modified.
-      * @stable ICU 2.0
-      */
--    virtual UnicodeSet& complement();
-+    UnicodeSet& complement();
- 
-     /**
-      * Complements the specified range in this set.  Any character in
-@@ -1426,7 +1426,7 @@
-      * @param end last character, inclusive, of range
-      * @stable ICU 2.0
-      */
--    virtual UnicodeSet& complement(UChar32 start, UChar32 end);
-+    UnicodeSet& complement(UChar32 start, UChar32 end);
- 
-     /**
-      * Complements the specified character in this set.  The character
-@@ -1463,7 +1463,7 @@
-      * @see #add(UChar32, UChar32)
-      * @stable ICU 2.0
-      */
--    virtual UnicodeSet& addAll(const UnicodeSet& c);
-+    UnicodeSet& addAll(const UnicodeSet& c);
- 
-     /**
-      * Retains only the elements in this set that are contained in the
-@@ -1476,7 +1476,7 @@
-      * @param c set that defines which elements this set will retain.
-      * @stable ICU 2.0
-      */
--    virtual UnicodeSet& retainAll(const UnicodeSet& c);
-+    UnicodeSet& retainAll(const UnicodeSet& c);
- 
-     /**
-      * Removes from this set all of its elements that are contained in the
-@@ -1489,7 +1489,7 @@
-      *          this set.
-      * @stable ICU 2.0
-      */
--    virtual UnicodeSet& removeAll(const UnicodeSet& c);
-+    UnicodeSet& removeAll(const UnicodeSet& c);
- 
-     /**
-      * Complements in this set all elements contained in the specified
-@@ -1501,7 +1501,7 @@
-      *          this set.
-      * @stable ICU 2.4
-      */
--    virtual UnicodeSet& complementAll(const UnicodeSet& c);
-+    UnicodeSet& complementAll(const UnicodeSet& c);
- 
-     /**
-      * Removes all of the elements from this set.  This set will be
-@@ -1509,7 +1509,7 @@
-      * A frozen set will not be modified.
-      * @stable ICU 2.0
-      */
--    virtual UnicodeSet& clear();
-+    UnicodeSet& clear();
- 
-     /**
-      * Close this set over the given attribute.  For the attribute
-@@ -1546,7 +1546,7 @@
-      * @return a reference to this set.
-      * @stable ICU 4.2
-      */
--    virtual UnicodeSet &removeAllStrings();
-+    UnicodeSet &removeAllStrings();
- 
-     /**
-      * Iteration method that returns the number of ranges contained in
-@@ -1555,7 +1555,7 @@
-      * @see #getRangeEnd
-      * @stable ICU 2.4
-      */
--    virtual int32_t getRangeCount() const;
-+    int32_t getRangeCount() const;
- 
-     /**
-      * Iteration method that returns the first character in the
-@@ -1564,7 +1564,7 @@
-      * @see #getRangeEnd
-      * @stable ICU 2.4
-      */
--    virtual UChar32 getRangeStart(int32_t index) const;
-+    UChar32 getRangeStart(int32_t index) const;
- 
-     /**
-      * Iteration method that returns the last character in the
-@@ -1573,7 +1573,7 @@
-      * @see #getRangeEnd
-      * @stable ICU 2.4
-      */
--    virtual UChar32 getRangeEnd(int32_t index) const;
-+    UChar32 getRangeEnd(int32_t index) const;
- 
-     /**
-      * Serializes this set into an array of 16-bit integers.  Serialization
-@@ -1631,7 +1631,7 @@
-      * A frozen set will not be modified.
-      * @stable ICU 2.4
-      */
--    virtual UnicodeSet& compact();
-+    UnicodeSet& compact();
- 
-     /**
-      * Return the class ID for this class.  This is useful only for
---- source/i18n/unicode/regex.h
-+++ source/i18n/unicode/regex.h
-@@ -145,7 +145,7 @@
-      * @return the copy of this RegexPattern
-      * @stable ICU 2.4
-      */
--    virtual RegexPattern  *clone() const;
-+    RegexPattern  *clone() const;
- 
- 
-    /**
-@@ -325,7 +325,7 @@
-     * @return  the #URegexpFlag match mode flags
-     * @stable ICU 2.4
-     */
--    virtual uint32_t flags() const;
-+    uint32_t flags() const;
- 
-    /**
-     * Creates a RegexMatcher that will match the given input against this 
pattern.  The
-@@ -344,7 +344,7 @@
-     *
-     * @stable ICU 2.4
-     */
--    virtual RegexMatcher *matcher(const UnicodeString &input,
-+    RegexMatcher *matcher(const UnicodeString &input,
-         UErrorCode          &status) const;
-         
- private:
-@@ -376,7 +376,7 @@
-     *
-     * @stable ICU 2.6
-     */
--    virtual RegexMatcher *matcher(UErrorCode  &status) const;
-+    RegexMatcher *matcher(UErrorCode  &status) const;
- 
- 
-    /**
-@@ -425,7 +425,7 @@
-     * the returned string may no longer reflect the RegexPattern object.
-     * @stable ICU 2.4
-     */
--    virtual UnicodeString pattern() const;
-+    UnicodeString pattern() const;
-     
-     
-    /**
-@@ -438,7 +438,7 @@
-     *
-     * @stable ICU 4.6
-     */
--    virtual UText *patternText(UErrorCode      &status) const;
-+    UText *patternText(UErrorCode      &status) const;
- 
- 
-     /**
-@@ -454,7 +454,7 @@
-      *
-      * @stable ICU 55
-      */
--    virtual int32_t groupNumberFromName(const UnicodeString &groupName, 
UErrorCode &status) const;
-+    int32_t groupNumberFromName(const UnicodeString &groupName, UErrorCode 
&status) const;
- 
- 
-     /**
-@@ -473,7 +473,7 @@
-      *
-      * @stable ICU 55
-      */
--    virtual int32_t groupNumberFromName(const char *groupName, int32_t 
nameLength, UErrorCode &status) const;
-+    int32_t groupNumberFromName(const char *groupName, int32_t nameLength, 
UErrorCode &status) const;
- 
- 
-     /**
-@@ -514,7 +514,7 @@
-      * @return        The number of fields into which the input string was 
split.
-      * @stable ICU 2.4
-      */
--    virtual int32_t  split(const UnicodeString &input,
-+    int32_t  split(const UnicodeString &input,
-         UnicodeString    dest[],
-         int32_t          destCapacity,
-         UErrorCode       &status) const;
-@@ -558,7 +558,7 @@
-      *
-      * @stable ICU 4.6
-      */
--    virtual int32_t  split(UText *input,
-+    int32_t  split(UText *input,
-         UText            *dest[],
-         int32_t          destCapacity,
-         UErrorCode       &status) const;
-@@ -767,7 +767,7 @@
-     *    @return true if there is a match
-     *    @stable ICU 2.4
-     */
--    virtual UBool matches(UErrorCode &status);
-+    UBool matches(UErrorCode &status);
- 
- 
-    /**
-@@ -780,7 +780,7 @@
-     *    @return true if there is a match
-     *    @stable ICU 2.8
-     */
--    virtual UBool matches(int64_t startIndex, UErrorCode &status);
-+    UBool matches(int64_t startIndex, UErrorCode &status);
- 
- 
-    /**
-@@ -796,7 +796,7 @@
-     *    @return  true if there is a match at the start of the input string.
-     *    @stable ICU 2.4
-     */
--    virtual UBool lookingAt(UErrorCode &status);
-+    UBool lookingAt(UErrorCode &status);
- 
- 
-   /**
-@@ -812,7 +812,7 @@
-     *    @return  true if there is a match.
-     *    @stable ICU 2.8
-     */
--    virtual UBool lookingAt(int64_t startIndex, UErrorCode &status);
-+    UBool lookingAt(int64_t startIndex, UErrorCode &status);
- 
- 
-    /**
-@@ -827,7 +827,7 @@
-     *  @return  true if a match is found.
-     *  @stable ICU 2.4
-     */
--    virtual UBool find();
-+    UBool find();
- 
- 
-    /**
-@@ -844,7 +844,7 @@
-     *  @return  true if a match is found.
-     * @stable ICU 55
-     */
--    virtual UBool find(UErrorCode &status);
-+    UBool find(UErrorCode &status);
- 
-    /**
-     *   Resets this RegexMatcher and then attempts to find the next substring 
of the
-@@ -855,7 +855,7 @@
-     *   @return  true if a match is found.
-     *   @stable ICU 2.4
-     */
--    virtual UBool find(int64_t start, UErrorCode &status);
-+    UBool find(int64_t start, UErrorCode &status);
- 
- 
-    /**
-@@ -867,7 +867,7 @@
-     *   @return  a string containing the matched input text.
-     *   @stable ICU 2.4
-     */
--    virtual UnicodeString group(UErrorCode &status) const;
-+    UnicodeString group(UErrorCode &status) const;
- 
- 
-    /**
-@@ -887,14 +887,14 @@
-     *    @return the captured text
-     *    @stable ICU 2.4
-     */
--    virtual UnicodeString group(int32_t groupNum, UErrorCode &status) const;
-+    UnicodeString group(int32_t groupNum, UErrorCode &status) const;
- 
-    /**
-     *   Returns the number of capturing groups in this matcher's pattern.
-     *   @return the number of capture groups
-     *   @stable ICU 2.4
-     */
--    virtual int32_t groupCount() const;
-+    int32_t groupCount() const;
- 
- 
-    /**
-@@ -911,7 +911,7 @@
-     *
-     *   @stable ICU 4.6
-     */
--    virtual UText *group(UText *dest, int64_t &group_len, UErrorCode &status) 
const; 
-+    UText *group(UText *dest, int64_t &group_len, UErrorCode &status) const; 
- 
-    /**
-     *   Returns a shallow clone of the entire live input string with the 
UText current native index
-@@ -933,7 +933,7 @@
-     *
-     *   @stable ICU 4.6
-     */
--    virtual UText *group(int32_t groupNum, UText *dest, int64_t &group_len, 
UErrorCode &status) const;
-+    UText *group(int32_t groupNum, UText *dest, int64_t &group_len, 
UErrorCode &status) const;
- 
-    /**
-     *   Returns the index in the input string of the start of the text matched
-@@ -942,7 +942,7 @@
-     *    @return              The (native) position in the input string of 
the start of the last match.
-     *    @stable ICU 2.4
-     */
--    virtual int32_t start(UErrorCode &status) const;
-+    int32_t start(UErrorCode &status) const;
- 
-    /**
-     *   Returns the index in the input string of the start of the text matched
-@@ -951,7 +951,7 @@
-     *    @return              The (native) position in the input string of 
the start of the last match.
-     *   @stable ICU 4.6
-     */
--    virtual int64_t start64(UErrorCode &status) const;
-+    int64_t start64(UErrorCode &status) const;
- 
- 
-    /**
-@@ -967,7 +967,7 @@
-     *    @return the (native) start position of substring matched by the 
specified group.
-     *    @stable ICU 2.4
-     */
--    virtual int32_t start(int32_t group, UErrorCode &status) const;
-+    int32_t start(int32_t group, UErrorCode &status) const;
- 
-    /**
-     *   Returns the index in the input string of the start of the text 
matched by the
-@@ -982,7 +982,7 @@
-     *    @return the (native) start position of substring matched by the 
specified group.
-     *    @stable ICU 4.6
-     */
--    virtual int64_t start64(int32_t group, UErrorCode &status) const;
-+    int64_t start64(int32_t group, UErrorCode &status) const;
- 
-    /**
-     *    Returns the index in the input string of the first character 
following the
-@@ -997,7 +997,7 @@
-     *                        a byte index for UTF-8.
-     *   @stable ICU 2.4
-     */
--    virtual int32_t end(UErrorCode &status) const;
-+    int32_t end(UErrorCode &status) const;
- 
-    /**
-     *    Returns the index in the input string of the first character 
following the
-@@ -1012,7 +1012,7 @@
-     *                        a byte index for UTF-8.
-     *   @stable ICU 4.6
-     */
--    virtual int64_t end64(UErrorCode &status) const;
-+    int64_t end64(UErrorCode &status) const;
- 
- 
-    /**
-@@ -1032,7 +1032,7 @@
-     *              a byte index for UTF8.
-     *    @stable ICU 2.4
-     */
--    virtual int32_t end(int32_t group, UErrorCode &status) const;
-+    int32_t end(int32_t group, UErrorCode &status) const;
- 
-    /**
-     *    Returns the index in the input string of the character following the
-@@ -1051,7 +1051,7 @@
-     *              a byte index for UTF8.
-     *   @stable ICU 4.6
-     */
--    virtual int64_t end64(int32_t group, UErrorCode &status) const;
-+    int64_t end64(int32_t group, UErrorCode &status) const;
- 
-    /**
-     *   Resets this matcher.  The effect is to remove any memory of previous 
matches,
-@@ -1061,7 +1061,7 @@
-     *   @return this RegexMatcher.
-     *   @stable ICU 2.4
-     */
--    virtual RegexMatcher &reset();
-+    RegexMatcher &reset();
- 
- 
-    /**
-@@ -1079,7 +1079,7 @@
-     *   @return this RegexMatcher.
-     *   @stable ICU 2.8
-     */
--    virtual RegexMatcher &reset(int64_t index, UErrorCode &status);
-+    RegexMatcher &reset(int64_t index, UErrorCode &status);
- 
- 
-    /**
-@@ -1099,7 +1099,7 @@
-     *   @return this RegexMatcher.
-     *   @stable ICU 2.4
-     */
--    virtual RegexMatcher &reset(const UnicodeString &input);
-+    RegexMatcher &reset(const UnicodeString &input);
- 
- 
-    /**
-@@ -1115,7 +1115,7 @@
-     *
-     *   @stable ICU 4.6
-     */
--    virtual RegexMatcher &reset(UText *input);
-+    RegexMatcher &reset(UText *input);
- 
- 
-   /**
-@@ -1142,7 +1142,7 @@
-     *
-     * @stable ICU 4.8 
-     */
--    virtual RegexMatcher &refreshInputText(UText *input, UErrorCode &status);
-+    RegexMatcher &refreshInputText(UText *input, UErrorCode &status);
- 
- private:
-     /**
-@@ -1167,7 +1167,7 @@
-     *   @return the input string
-     *   @stable ICU 2.4
-     */
--    virtual const UnicodeString &input() const;
-+    const UnicodeString &input() const;
-     
-    /**
-     *   Returns the input string being matched.  This is the live input text; 
it should not be
-@@ -1177,7 +1177,7 @@
-     *
-     *   @stable ICU 4.6
-     */
--    virtual UText *inputText() const;
-+    UText *inputText() const;
-     
-    /**
-     *   Returns the input string being matched, either by copying it into the 
provided
-@@ -1189,7 +1189,7 @@
-     *
-     *   @stable ICU 4.6
-     */
--    virtual UText *getInput(UText *dest, UErrorCode &status) const;
-+    UText *getInput(UText *dest, UErrorCode &status) const;
-     
- 
-    /** Sets the limits of this matcher's region.
-@@ -1210,7 +1210,7 @@
-      * @param status A reference to a UErrorCode to receive any errors.
-      * @stable ICU 4.0
-      */
--     virtual RegexMatcher &region(int64_t start, int64_t limit, UErrorCode 
&status);
-+     RegexMatcher &region(int64_t start, int64_t limit, UErrorCode &status);
- 
-    /** 
-      * Identical to region(start, limit, status) but also allows a start 
position without
-@@ -1223,7 +1223,7 @@
-      *                U_INDEX_OUTOFBOUNDS_ERROR is returned.
-      * @stable ICU 4.6
-      */
--     virtual RegexMatcher &region(int64_t regionStart, int64_t regionLimit, 
int64_t startIndex, UErrorCode &status);
-+     RegexMatcher &region(int64_t regionStart, int64_t regionLimit, int64_t 
startIndex, UErrorCode &status);
- 
-    /**
-      * Reports the start index of this matcher's region. The searches this 
matcher
-@@ -1233,7 +1233,7 @@
-      * @return The starting (native) index of this matcher's region.
-      * @stable ICU 4.0
-      */
--     virtual int32_t regionStart() const;
-+     int32_t regionStart() const;
- 
-    /**
-      * Reports the start index of this matcher's region. The searches this 
matcher
-@@ -1243,7 +1243,7 @@
-      * @return The starting (native) index of this matcher's region.
-      * @stable ICU 4.6
-      */
--     virtual int64_t regionStart64() const;
-+     int64_t regionStart64() const;
- 
- 
-     /**
-@@ -1254,7 +1254,7 @@
-       * @return The ending point (native) of this matcher's region.
-       * @stable ICU 4.0
-       */
--      virtual int32_t regionEnd() const;
-+      int32_t regionEnd() const;
- 
-    /**
-      * Reports the end (limit) index (exclusive) of this matcher's region. 
The searches
-@@ -1264,7 +1264,7 @@
-      * @return The ending point (native) of this matcher's region.
-      * @stable ICU 4.6
-      */
--      virtual int64_t regionEnd64() const;
-+      int64_t regionEnd64() const;
- 
-     /**
-       * Queries the transparency of region bounds for this matcher.
-@@ -1274,7 +1274,7 @@
-       * @return true if this matcher is using opaque bounds, false if it is 
not.
-       * @stable ICU 4.0
-       */
--      virtual UBool hasTransparentBounds() const;
-+      UBool hasTransparentBounds() const;
- 
-     /**
-       * Sets the transparency of region bounds for this matcher.
-@@ -1294,7 +1294,7 @@
-       * @return  This Matcher;
-       * @stable ICU 4.0
-       **/
--      virtual RegexMatcher &useTransparentBounds(UBool b);
-+      RegexMatcher &useTransparentBounds(UBool b);
- 
-      
-     /**
-@@ -1304,7 +1304,7 @@
-       * @return true if this matcher is using anchoring bounds.
-       * @stable ICU 4.0
-       */    
--      virtual UBool hasAnchoringBounds() const;
-+      UBool hasAnchoringBounds() const;
- 
- 
-     /**
-@@ -1319,7 +1319,7 @@
-       * @return  This Matcher
-       * @stable ICU 4.0
-       */
--      virtual RegexMatcher &useAnchoringBounds(UBool b);
-+      RegexMatcher &useAnchoringBounds(UBool b);
- 
- 
-     /**
-@@ -1334,7 +1334,7 @@
-       *  @return  true if the most recent match hit the end of input
-       *  @stable ICU 4.0
-       */
--      virtual UBool hitEnd() const;
-+      UBool hitEnd() const;
- 
-     /**
-       * Return true the most recent match succeeded and additional input 
could cause
-@@ -1345,7 +1345,7 @@
-       * @return true if more input could cause the most recent match to no 
longer match.
-       * @stable ICU 4.0
-       */
--      virtual UBool requireEnd() const;
-+      UBool requireEnd() const;
- 
- 
-    /**
-@@ -1353,7 +1353,7 @@
-     *    @return  the RegexPattern for this RegexMatcher
-     *    @stable ICU 2.4
-     */
--    virtual const RegexPattern &pattern() const;
-+    const RegexPattern &pattern() const;
- 
- 
-    /**
-@@ -1372,7 +1372,7 @@
-     *    @return              a string containing the results of the find and 
replace.
-     *    @stable ICU 2.4
-     */
--    virtual UnicodeString replaceAll(const UnicodeString &replacement, 
UErrorCode &status);
-+    UnicodeString replaceAll(const UnicodeString &replacement, UErrorCode 
&status);
- 
- 
-    /**
-@@ -1395,7 +1395,7 @@
-     *
-     *    @stable ICU 4.6
-     */
--    virtual UText *replaceAll(UText *replacement, UText *dest, UErrorCode 
&status);
-+    UText *replaceAll(UText *replacement, UText *dest, UErrorCode &status);
-     
- 
-    /**
-@@ -1418,7 +1418,7 @@
-     *    @return              a string containing the results of the find and 
replace.
-     *    @stable ICU 2.4
-     */
--    virtual UnicodeString replaceFirst(const UnicodeString &replacement, 
UErrorCode &status);
-+    UnicodeString replaceFirst(const UnicodeString &replacement, UErrorCode 
&status);
-     
- 
-    /**
-@@ -1445,7 +1445,7 @@
-     *
-     *    @stable ICU 4.6
-     */
--    virtual UText *replaceFirst(UText *replacement, UText *dest, UErrorCode 
&status);
-+    UText *replaceFirst(UText *replacement, UText *dest, UErrorCode &status);
-     
-     
-    /**
-@@ -1475,7 +1475,7 @@
-     *   @stable ICU 2.4
-     *
-     */
--    virtual RegexMatcher &appendReplacement(UnicodeString &dest,
-+    RegexMatcher &appendReplacement(UnicodeString &dest,
-         const UnicodeString &replacement, UErrorCode &status);
-     
-     
-@@ -1506,7 +1506,7 @@
-     *
-     *   @stable ICU 4.6
-     */
--    virtual RegexMatcher &appendReplacement(UText *dest,
-+    RegexMatcher &appendReplacement(UText *dest,
-         UText *replacement, UErrorCode &status);
- 
- 
-@@ -1520,7 +1520,7 @@
-     *  @return  the destination string.
-     *  @stable ICU 2.4
-     */
--    virtual UnicodeString &appendTail(UnicodeString &dest);
-+    UnicodeString &appendTail(UnicodeString &dest);
- 
- 
-    /**
-@@ -1536,7 +1536,7 @@
-     *
-     *  @stable ICU 4.6
-     */
--    virtual UText *appendTail(UText *dest, UErrorCode &status);
-+    UText *appendTail(UText *dest, UErrorCode &status);
- 
- 
-     /**
-@@ -1562,7 +1562,7 @@
-      * @return        The number of fields into which the input string was 
split.
-      * @stable ICU 2.6
-      */
--    virtual int32_t  split(const UnicodeString &input,
-+    int32_t  split(const UnicodeString &input,
-         UnicodeString    dest[],
-         int32_t          destCapacity,
-         UErrorCode       &status);
-@@ -1591,7 +1591,7 @@
-      *
-      * @stable ICU 4.6
-      */
--    virtual int32_t  split(UText *input,
-+    int32_t  split(UText *input,
-         UText           *dest[],
-         int32_t          destCapacity,
-         UErrorCode       &status);
-@@ -1617,7 +1617,7 @@
-     *   @param   status      A reference to a UErrorCode to receive any 
errors.
-     *   @stable ICU 4.0
-     */
--    virtual void setTimeLimit(int32_t limit, UErrorCode &status);
-+    void setTimeLimit(int32_t limit, UErrorCode &status);
- 
-   /**
-     * Get the time limit, if any, for match operations made with this Matcher.
-@@ -1625,7 +1625,7 @@
-     *   @return the maximum allowed time for a match, in units of processing 
steps.
-     *   @stable ICU 4.0
-     */
--    virtual int32_t getTimeLimit() const;
-+    int32_t getTimeLimit() const;
- 
-   /**
-     *  Set the amount of heap storage available for use by the match 
backtracking stack.
-@@ -1648,7 +1648,7 @@
-     *
-     *  @stable ICU 4.0
-     */
--    virtual void setStackLimit(int32_t  limit, UErrorCode &status);
-+    void setStackLimit(int32_t  limit, UErrorCode &status);
-     
-   /**
-     *  Get the size of the heap storage available for use by the back 
tracking stack.
-@@ -1657,7 +1657,7 @@
-     *           stack size is unlimited.
-     *  @stable ICU 4.0
-     */
--    virtual int32_t  getStackLimit() const;
-+    int32_t  getStackLimit() const;
- 
- 
-   /**
-@@ -1673,7 +1673,7 @@
-     *    @param   status      A reference to a UErrorCode to receive any 
errors.
-     *  @stable ICU 4.0
-     */
--    virtual void setMatchCallback(URegexMatchCallback     *callback,
-+    void setMatchCallback(URegexMatchCallback     *callback,
-                                   const void              *context,
-                                   UErrorCode              &status);
- 
-@@ -1688,7 +1688,7 @@
-     *    @param   status      A reference to a UErrorCode to receive any 
errors.
-     *    @stable ICU 4.0
-     */
--    virtual void getMatchCallback(URegexMatchCallback     *&callback,
-+    void getMatchCallback(URegexMatchCallback     *&callback,
-                                   const void              *&context,
-                                   UErrorCode              &status);
- 
-@@ -1706,7 +1706,7 @@
-     *    @param   status      A reference to a UErrorCode to receive any 
errors.
-     *    @stable ICU 4.6
-     */
--    virtual void setFindProgressCallback(URegexFindProgressCallback      
*callback,
-+    void setFindProgressCallback(URegexFindProgressCallback      *callback,
-                                               const void                      
        *context,
-                                               UErrorCode                      
        &status);
- 
-@@ -1721,7 +1721,7 @@
-     *    @param   status      A reference to a UErrorCode to receive any 
errors.
-     *    @stable ICU 4.6
-     */
--    virtual void getFindProgressCallback(URegexFindProgressCallback      
*&callback,
-+    void getFindProgressCallback(URegexFindProgressCallback      *&callback,
-                                               const void                      
*&context,
-                                               UErrorCode                      
&status);
- 
---- source/i18n/unicode/tblcoll.h
-+++ source/i18n/unicode/tblcoll.h
-@@ -242,7 +242,7 @@
-      *         the based Collator.
-      * @stable ICU 2.2
-      */
--    virtual CollationElementIterator* createCollationElementIterator(
-+    CollationElementIterator* createCollationElementIterator(
-                                            const UnicodeString& source) const;
- 
-     /**
-@@ -254,7 +254,7 @@
-      *         based Collator.
-      * @stable ICU 2.2
-      */
--    virtual CollationElementIterator* createCollationElementIterator(
-+    CollationElementIterator* createCollationElementIterator(
-                                          const CharacterIterator& source) 
const;
- 
-     // Make deprecated versions of Collator::compare() visible.
diff --git a/external/icu/c++20-comparison.patch.1 
b/external/icu/c++20-comparison.patch.1
index fa10b048ce41..6e9155df57e2 100644
--- a/external/icu/c++20-comparison.patch.1
+++ b/external/icu/c++20-comparison.patch.1
@@ -23,14 +23,14 @@ diff -ur icu.org/source/i18n/unicode/simpletz.h 
icu/source/i18n/unicode/simpletz
 diff -ur icu.org/source/i18n/unicode/smpdtfmt.h 
icu/source/i18n/unicode/smpdtfmt.h
 --- icu.org/source/i18n/unicode/smpdtfmt.h     2022-10-19 02:53:21.000000000 
+0200
 +++ icu/source/i18n/unicode/smpdtfmt.h 2022-10-24 22:20:10.891969181 +0200
-@@ -877,6 +877,7 @@
+@@ -534,6 +534,7 @@
       * @stable ICU 2.0
       */
-     virtual bool operator==(const Format& other) const override;
+     U_I18N_API virtual bool operator==(const Format& other) const override;
 +    bool operator!=(const SimpleDateFormat& that) const {return 
!operator==(that);}
  
- 
      using DateFormat::format;
+ 
 diff -ur icu.org/source/i18n/unicode/stsearch.h 
icu/source/i18n/unicode/stsearch.h
 --- icu.org/source/i18n/unicode/stsearch.h     2022-10-19 02:53:21.000000000 
+0200
 +++ icu/source/i18n/unicode/stsearch.h 2022-10-24 22:20:10.892969178 +0200
diff --git a/external/icu/icu4c-scriptrun.patch.1 
b/external/icu/icu4c-scriptrun.patch.1
index f2f2cf9f3b55..ab560bee9055 100644
--- a/external/icu/icu4c-scriptrun.patch.1
+++ b/external/icu/icu4c-scriptrun.patch.1
@@ -1,7 +1,7 @@
 diff -ur icu.org/source/extra/scrptrun/scrptrun.cpp 
icu/source/extra/scrptrun/scrptrun.cpp
 --- icu.org/source/extra/scrptrun/scrptrun.cpp 2017-01-20 01:20:31.000000000 
+0100
 +++ icu/source/extra/scrptrun/scrptrun.cpp     2017-04-21 22:59:31.708037770 
+0200
-@@ -151,7 +151,11 @@
+@@ -153,7 +153,11 @@
          // characters above it on the stack will be poped.
          if (pairIndex >= 0) {
              if ((pairIndex & 1) == 0) {
@@ -12,8 +12,8 @@ diff -ur icu.org/source/extra/scrptrun/scrptrun.cpp 
icu/source/extra/scrptrun/sc
 +                    parenStack.resize(nVecSize + 128);
 +                parenStack[parenSP].pairIndex = pairIndex;
                  parenStack[parenSP].scriptCode  = scriptCode;
+                 startSP = parenSP;
              } else if (parenSP >= 0) {
-                 int32_t pi = pairIndex & ~1;
 @@ -185,7 +189,14 @@
              // pop it from the stack
              if (pairIndex >= 0 && (pairIndex & 1) != 0 && parenSP >= 0) {
diff --git a/i18nutil/source/utility/unicode.cxx 
b/i18nutil/source/utility/unicode.cxx
index ff7d6a649136..7030e72b331e 100644
--- a/i18nutil/source/utility/unicode.cxx
+++ b/i18nutil/source/utility/unicode.cxx
@@ -1025,6 +1025,23 @@ OString 
unicode::getExemplarLanguageForUScriptCode(UScriptCode eScript)
         case USCRIPT_TULU_TIGALARI:
             sRet = "sa-Tutg"_ostr;
             break;
+#endif
+#if (U_ICU_VERSION_MAJOR_NUM >= 77)
+        case USCRIPT_BERIA_ERFE:
+            sRet = "zag-Berf"_ostr;
+            break;
+        case USCRIPT_SIDETIC:
+            sRet = "xsd-Sidt"_ostr;
+            break;
+        case USCRIPT_TAI_YO:
+            sRet = "tyj-Tayo"_ostr;
+            break;
+        case USCRIPT_TOLONG_SIKI:
+            sRet = "kru-Tols"_ostr;
+            break;
+        case USCRIPT_TRADITIONAL_HAN_WITH_LATIN:
+            sRet = "zh-Hntl"_ostr;
+            break;
 #endif
     }
     return sRet;
diff --git a/include/svx/strings.hrc b/include/svx/strings.hrc
index 011092678295..48f5b89f0d54 100644
--- a/include/svx/strings.hrc
+++ b/include/svx/strings.hrc
@@ -1818,6 +1818,14 @@
 #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_SUBSETSTR_BERIA_ERFE                            
NC_("RID_SUBSETMAP", "Beria Erfe")
+#define RID_SUBSETSTR_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_J    
NC_("RID_SUBSETMAP", "CJK Unified Ideographs Extension J")
+#define RID_SUBSETSTR_MISCELLANEOUS_SYMBOLS_SUPPLEMENT      
NC_("RID_SUBSETMAP", "Miscellaneous Symbols Supplement")
+#define RID_SUBSETSTR_SHARADA_SUPPLEMENT                    
NC_("RID_SUBSETMAP", "Sharada Supplement")
+#define RID_SUBSETSTR_SIDETIC                               
NC_("RID_SUBSETMAP", "Sidetic")
+#define RID_SUBSETSTR_TAI_YO                                
NC_("RID_SUBSETMAP", "Tai Yo")
+#define RID_SUBSETSTR_TANGUT_COMPONENTS_SUPPLEMENT          
NC_("RID_SUBSETMAP", "Tangut Components Supplement")
+#define RID_SUBSETSTR_TOLONG_SIKI                           
NC_("RID_SUBSETMAP", "Tolong Siki")
 
 #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)")
diff --git a/svx/source/dialog/charmap.cxx b/svx/source/dialog/charmap.cxx
index 71c81261350d..32999d6e63fe 100644
--- a/svx/source/dialog/charmap.cxx
+++ b/svx/source/dialog/charmap.cxx
@@ -1959,6 +1959,32 @@ void SubsetMap::InitList()
                 case UBLOCK_TULU_TIGALARI:
                     aAllSubsets.emplace_back( 0x11380, 0x113FF, 
SvxResId(RID_SUBSETSTR_TULU_TIGALARI) );
                     break;
+#endif
+#if (U_ICU_VERSION_MAJOR_NUM >= 77)
+                case UBLOCK_BERIA_ERFE:
+                    aAllSubsets.emplace_back( 0x16EA0, 0x16EDF, 
SvxResId(RID_SUBSETSTR_BERIA_ERFE) );
+                    break;
+                case UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_J:
+                    aAllSubsets.emplace_back( 0x323B0, 0x3347F, 
SvxResId(RID_SUBSETSTR_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_J) );
+                    break;
+                case UBLOCK_MISCELLANEOUS_SYMBOLS_SUPPLEMENT:
+                    aAllSubsets.emplace_back( 0x1CEC0, 0x1CEFF, 
SvxResId(RID_SUBSETSTR_MISCELLANEOUS_SYMBOLS_SUPPLEMENT) );
+                    break;
+                case UBLOCK_SHARADA_SUPPLEMENT:
+                    aAllSubsets.emplace_back( 0x11B60, 0x11B7F, 
SvxResId(RID_SUBSETSTR_SHARADA_SUPPLEMENT) );
+                    break;
+                case UBLOCK_SIDETIC:
+                    aAllSubsets.emplace_back( 0x10940, 0x1095F, 
SvxResId(RID_SUBSETSTR_SIDETIC) );
+                    break;
+                case UBLOCK_TAI_YO:
+                    aAllSubsets.emplace_back( 0x1E6C0, 0x1E6FF, 
SvxResId(RID_SUBSETSTR_TAI_YO) );
+                    break;
+                case UBLOCK_TANGUT_COMPONENTS_SUPPLEMENT:
+                    aAllSubsets.emplace_back( 0x18D80, 0x18DFF, 
SvxResId(RID_SUBSETSTR_TANGUT_COMPONENTS_SUPPLEMENT) );
+                    break;
+                case UBLOCK_TOLONG_SIKI:
+                    aAllSubsets.emplace_back( 0x11DB0, 0x11DEF, 
SvxResId(RID_SUBSETSTR_TOLONG_SIKI) );
+                    break;
 #endif
             }
 

Reply via email to