config_host.mk.in                                       |    3 
 configure.ac                                            |   34 --
 editeng/source/editeng/impedit3.cxx                     |   10 
 i18npool/CustomTarget_breakiterator.mk                  |   30 --
 i18npool/qa/cppunit/test_breakiterator.cxx              |    6 
 i18npool/source/breakiterator/breakiterator_unicode.cxx |   24 -
 i18npool/source/breakiterator/data/line.txt             |    2 
 i18npool/source/collator/collator_unicode.cxx           |   10 
 i18nutil/source/utility/unicode.cxx                     |   22 -
 sc/source/core/tool/interpr1.cxx                        |   10 
 solenv/clang-format/excludelist                         |    1 
 svl/source/misc/urihelper.cxx                           |    6 
 svx/source/dialog/charmap.cxx                           |   17 -
 sw/source/core/text/porlay.cxx                          |   10 
 vcl/source/gdi/CommonSalLayout.cxx                      |   56 ----
 vcl/source/gdi/VerticalOrientationData.cxx              |   78 ------
 vcl/source/gdi/genVerticalOrientationData.pl            |  206 ----------------
 vcl/unx/generic/fontmanager/fontconfig.cxx              |    4 
 18 files changed, 18 insertions(+), 511 deletions(-)

New commits:
commit c276694bc06ae460a78532757db08e531b478e20
Author:     Khaled Hosny <kha...@libreoffice.org>
AuthorDate: Wed Jun 21 13:14:42 2023 +0300
Commit:     خالد حسني <kha...@libreoffice.org>
CommitDate: Wed Jun 21 16:59:29 2023 +0200

    Remove another workaround for old versions of ICU
    
    Change-Id: Id13bdb10bf4bf89a136b28a26c4b3d1113971871
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153388
    Tested-by: Jenkins
    Reviewed-by: خالد حسني <kha...@libreoffice.org>

diff --git a/config_host.mk.in b/config_host.mk.in
index eb5e751e100b..4652474720b7 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -330,9 +330,6 @@ export ICU_CFLAGS=$(gb_SPACE)@ICU_CFLAGS@
 export ICU_LIBS=$(gb_SPACE)@ICU_LIBS@
 export ICU_MAJOR=@ICU_MAJOR@
 export ICU_MINOR=@ICU_MINOR@
-export 
ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=@ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER@
-export ICU_RECLASSIFIED_HEBREW_LETTER=@ICU_RECLASSIFIED_HEBREW_LETTER@
-export ICU_RECLASSIFIED_PREPEND_SET_EMPTY=@ICU_RECLASSIFIED_PREPEND_SET_EMPTY@
 export ICU_UCHAR_TYPE=@ICU_UCHAR_TYPE@
 export INTROSPECTION_SCANNER=@INTROSPECTION_SCANNER@
 export ILIB=@ILIB@
diff --git a/configure.ac b/configure.ac
index 0299ad9ef8e6..a494a2bd9515 100644
--- a/configure.ac
+++ b/configure.ac
@@ -10748,9 +10748,6 @@ dnl Check for system icu
 dnl ===================================================================
 ICU_MAJOR=72
 ICU_MINOR=1
-ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
-ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
-ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
 ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n 
-I${WORKDIR}/UnpackedTarball/icu/source/common"
 ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
 libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 66])
@@ -10793,9 +10790,6 @@ AC_SUBST(SYSTEM_GENCCODE)
 AC_SUBST(SYSTEM_GENCMN)
 AC_SUBST(ICU_MAJOR)
 AC_SUBST(ICU_MINOR)
-AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
-AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
-AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
 AC_SUBST(ICU_UCHAR_TYPE)
 
 dnl ==================================================================
diff --git a/i18npool/CustomTarget_breakiterator.mk 
b/i18npool/CustomTarget_breakiterator.mk
index e4c87238bdd1..26647da8e4df 100644
--- a/i18npool/CustomTarget_breakiterator.mk
+++ b/i18npool/CustomTarget_breakiterator.mk
@@ -84,7 +84,8 @@ $(i18npool_BIDIR)/%_brk.c : $(i18npool_BIDIR)/%.brk $(call 
gb_ExternalExecutable
                        $(if $(findstring s,$(MAKEFLAGS)),> /dev/null))
        $(call gb_Trace_EndRange,$(subst $(WORKDIR)/,,$@),CCD)
 
-$(i18npool_BIDIR)/%.brk : $(i18npool_BIDIR)/%.txt $(call 
gb_ExternalExecutable_get_dependencies,genbrk)
+$(i18npool_BIDIR)/%.brk : $(SRCDIR)/i18npool/source/breakiterator/data/%.txt \
+               $(call gb_ExternalExecutable_get_dependencies,genbrk)
        $(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),$(true),BRK,1)
        $(call gb_Trace_StartRange,$(subst $(WORKDIR)/,,$@),BRK)
        $(call gb_Helper_abbreviate_dirs,\
@@ -93,31 +94,4 @@ $(i18npool_BIDIR)/%.brk : $(i18npool_BIDIR)/%.txt $(call 
gb_ExternalExecutable_g
                -r $< -o $@ $(if $(findstring s,$(MAKEFLAGS)),> /dev/null))
        $(call gb_Trace_EndRange,$(subst $(WORKDIR)/,,$@),BRK)
 
-# fdo#31271 ")" reclassified in more recent Unicode Standards / ICU 4.4
-# * Prepend set empty as of Unicode Version 6.1 / ICU 49, which bails out if 
used.
-#   NOTE: strips every line with _word_ 'Prepend', including $Prepend
-# * Conditional_Japanese_Starter does not exist in ICU < 49, which bail out if 
used.
-# * Hebrew_Letter does not exist in ICU < 49, which bail out if used.
-#   NOTE: I sincerely hope there is a better way to avoid problems than this 
abominable
-#   sed substitution...
-$(i18npool_BIDIR)/%.txt : \
-       $(SRCDIR)/i18npool/source/breakiterator/data/%.txt | 
$(i18npool_BIDIR)/.dir
-       sed -e "s#\[:LineBreak =  Close_Punctuation:\]#\[& \[:LineBreak = 
Close_Parenthesis:\]\]#" \
-               $(if $(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER),,\
-                       -e '/\[:LineBreak =  Conditional_Japanese_Starter:\]/d' 
\
-                       -e 's# $$CJ##' \
-               ) \
-               $(if $(ICU_RECLASSIFIED_HEBREW_LETTER),,\
-                       -e '/\[:LineBreak =  Hebrew_Letter:\]/d' \
-                       -e '/^$$HLcm =/d' \
-                       -e '/^$$HLcm $$NUcm;/d' \
-                       -e '/^$$NUcm $$HLcm;/d' \
-                       -e '/^$$HL $$CM+;/d' \
-                       -e 's# | $$HL\(cm\)\?##g' \
-                       -e 's#$$HLcm ##g' \
-                       -e 's# $$HL##g' \
-               ) \
-               $(if $(ICU_RECLASSIFIED_PREPEND_SET_EMPTY),-e "/Prepend/d") \
-               $< > $@
-
 # vim: set noet sw=4 ts=4:
diff --git a/i18npool/source/breakiterator/data/line.txt 
b/i18npool/source/breakiterator/data/line.txt
index 9521c833fe74..ff3f3eafc42e 100644
--- a/i18npool/source/breakiterator/data/line.txt
+++ b/i18npool/source/breakiterator/data/line.txt
@@ -62,7 +62,7 @@ $BK = [:LineBreak =  Mandatory_Break:];
 $B2 = [:LineBreak =  Break_Both:];
 $CB = [:LineBreak =  Contingent_Break:];
 $CJ = [:LineBreak =  Conditional_Japanese_Starter:];
-$CL = [:LineBreak =  Close_Punctuation:] ;
+$CL = [[:LineBreak =  Close_Punctuation:] [:LineBreak = Close_Parenthesis:]]; 
# tdf#31271
 $CM = [:LineBreak =  Combining_Mark:];
 $CR = [:LineBreak =  Carriage_Return:];
 $EX = [:LineBreak =  Exclamation:];
commit f0b87e8162511202aa3fe0c2af09c74107a7b3ea
Author:     Khaled Hosny <kha...@libreoffice.org>
AuthorDate: Wed Jun 21 11:38:20 2023 +0300
Commit:     خالد حسني <kha...@libreoffice.org>
CommitDate: Wed Jun 21 16:59:20 2023 +0200

    Require icu-i18n >= 66
    
    We were requiring ICU 4.6 which was released in 2011, and ifdef'ing our
    way through newer ICU versions. ICU is a core dependency and it makes no
    sense to build LibreOffice with such ancient versions of it.
    
    This change requires ICU 66 (released in 2020), and removes all the
    ifdefs for older versions. There are more cleanups to do, but these will
    be done separately.
    
    Change-Id: I2e4f7608a08f4d531b0a4c74bbfdf91a451f833f
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153387
    Tested-by: Jenkins
    Reviewed-by: خالد حسني <kha...@libreoffice.org>

diff --git a/configure.ac b/configure.ac
index 688bdadf5933..0299ad9ef8e6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -10753,7 +10753,7 @@ ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
 ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n 
-I${WORKDIR}/UnpackedTarball/icu/source/common"
 ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
-libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 4.6])
+libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 66])
 if test "$SYSTEM_ICU" = TRUE; then
     AC_LANG_PUSH([C++])
     AC_MSG_CHECKING([for unicode/rbbi.h])
@@ -10764,11 +10764,6 @@ if test "$SYSTEM_ICU" = TRUE; then
     ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
     ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
 
-    if test "$ICU_MAJOR" -ge 50; then
-        AC_MSG_NOTICE([Ignore ICU_MINOR as obviously the libraries don't 
include the minor version in their names any more])
-        ICU_MINOR=
-    fi
-
     if test "$CROSS_COMPILING" != TRUE; then
         # using the system icu tools can lead to version confusion, use the
         # ones from the build environment when cross-compiling
@@ -10784,22 +10779,15 @@ if test "$SYSTEM_ICU" = TRUE; then
         if test -z "$SYSTEM_GENCMN"; then
             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu 
development tool \'gencmn\'])
         fi
-        if test "$ICU_MAJOR" -lt 49; then
-            ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
-            ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
-            ICU_RECLASSIFIED_HEBREW_LETTER=
-        fi
     fi
 fi
-if test "$ICU_MAJOR" -ge "59"; then
-    # As of ICU 59 it defaults to typedef char16_t UChar; which is available
-    # with -std=c++11 but not all external libraries can be built with that,
-    # for those use a bit-compatible typedef uint16_t UChar; see
-    # icu/source/common/unicode/umachine.h
-    ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
-else
-    ICU_UCHAR_TYPE=""
-fi
+
+# As of ICU 59 it defaults to typedef char16_t UChar; which is available
+# with -std=c++11 but not all external libraries can be built with that,
+# for those use a bit-compatible typedef uint16_t UChar; see
+# icu/source/common/unicode/umachine.h
+ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
+
 AC_SUBST(SYSTEM_GENBRK)
 AC_SUBST(SYSTEM_GENCCODE)
 AC_SUBST(SYSTEM_GENCMN)
diff --git a/editeng/source/editeng/impedit3.cxx 
b/editeng/source/editeng/impedit3.cxx
index e18562d3113f..a521d59ef1c1 100644
--- a/editeng/source/editeng/impedit3.cxx
+++ b/editeng/source/editeng/impedit3.cxx
@@ -268,20 +268,12 @@ static Point lcl_ImplCalcRotatedPos( Point rPos, Point 
rOrigin, double nSin, dou
 #define isAinChar(c)        IS_JOINING_GROUP((c), AIN)
 #define isAlefChar(c)       IS_JOINING_GROUP((c), ALEF)
 #define isDalChar(c)        IS_JOINING_GROUP((c), DAL)
-#if U_ICU_VERSION_MAJOR_NUM >= 58
 #define isFehChar(c)       (IS_JOINING_GROUP((c), FEH) || 
IS_JOINING_GROUP((c), AFRICAN_FEH))
-#else
-#define isFehChar(c)        IS_JOINING_GROUP((c), FEH)
-#endif
 #define isGafChar(c)        IS_JOINING_GROUP((c), GAF)
 #define isHehChar(c)        IS_JOINING_GROUP((c), HEH)
 #define isKafChar(c)        IS_JOINING_GROUP((c), KAF)
 #define isLamChar(c)        IS_JOINING_GROUP((c), LAM)
-#if U_ICU_VERSION_MAJOR_NUM >= 58
 #define isQafChar(c)       (IS_JOINING_GROUP((c), QAF) || 
IS_JOINING_GROUP((c), AFRICAN_QAF))
-#else
-#define isQafChar(c)        IS_JOINING_GROUP((c), QAF)
-#endif
 #define isRehChar(c)        IS_JOINING_GROUP((c), REH)
 #define isTahChar(c)        IS_JOINING_GROUP((c), TAH)
 #define isTehMarbutaChar(c) IS_JOINING_GROUP((c), TEH_MARBUTA)
@@ -296,9 +288,7 @@ static bool isBehChar(sal_Unicode cCh)
     {
     case U_JG_BEH:
     case U_JG_NOON:
-#if U_ICU_VERSION_MAJOR_NUM >= 58
     case U_JG_AFRICAN_NOON:
-#endif
     case U_JG_NYA:
     case U_JG_YEH:
     case U_JG_FARSI_YEH:
diff --git a/i18npool/qa/cppunit/test_breakiterator.cxx 
b/i18npool/qa/cppunit/test_breakiterator.cxx
index 6673fb4b8df5..18f4be09c86f 100644
--- a/i18npool/qa/cppunit/test_breakiterator.cxx
+++ b/i18npool/qa/cppunit/test_breakiterator.cxx
@@ -35,12 +35,10 @@ public:
     void testWeak();
     void testAsian();
     void testThai();
-#if (U_ICU_VERSION_MAJOR_NUM > 51)
     void testLao();
 #ifdef TODO
     void testNorthernThai();
     void testKhmer();
-#endif
 #endif
     void testJapanese();
     void testChinese();
@@ -52,12 +50,10 @@ public:
     CPPUNIT_TEST(testWeak);
     CPPUNIT_TEST(testAsian);
     CPPUNIT_TEST(testThai);
-#if (U_ICU_VERSION_MAJOR_NUM > 51)
     CPPUNIT_TEST(testLao);
 #ifdef TODO
     CPPUNIT_TEST(testKhmer);
     CPPUNIT_TEST(testNorthernThai);
-#endif
 #endif
     CPPUNIT_TEST(testJapanese);
     CPPUNIT_TEST(testChinese);
@@ -837,7 +833,6 @@ void TestBreakIterator::testAsian()
     }
 }
 
-#if (U_ICU_VERSION_MAJOR_NUM > 51)
 //A test to ensure that our Lao word boundary detection is useful
 void TestBreakIterator::testLao()
 {
@@ -870,7 +865,6 @@ void TestBreakIterator::testLao()
     CPPUNIT_ASSERT_EQUAL(sal_Int32(12), aBounds.endPos);
 #endif
 }
-#endif
 
 //A test to ensure that our thai word boundary detection is useful
 void TestBreakIterator::testThai()
diff --git a/i18npool/source/breakiterator/breakiterator_unicode.cxx 
b/i18npool/source/breakiterator/breakiterator_unicode.cxx
index 267da80894f0..7e19e863bc70 100644
--- a/i18npool/source/breakiterator/breakiterator_unicode.cxx
+++ b/i18npool/source/breakiterator/breakiterator_unicode.cxx
@@ -67,13 +67,6 @@ namespace {
 class OOoRuleBasedBreakIterator : public icu::RuleBasedBreakIterator
 {
     public:
-#if (U_ICU_VERSION_MAJOR_NUM < 58)
-    // icu::RuleBasedBreakIterator::setBreakType() is private as of ICU 58.
-    void publicSetBreakType(int32_t type)
-        {
-            setBreakType(type);
-        };
-#endif
     OOoRuleBasedBreakIterator(UDataMemory* image,
                               UErrorCode &status)
         : icu::RuleBasedBreakIterator(image, status)
@@ -244,23 +237,6 @@ void BreakIterator_Unicode::loadICUBreakIterator(const 
css::lang::Locale& rLocal
                         }
                     }
                 }
-                if (rbi) {
-    #if (U_ICU_VERSION_MAJOR_NUM < 58)
-                    // ICU 58 made RuleBasedBreakIterator::setBreakType() 
private
-                    // instead of protected, so the old workaround of
-                    // https://ssl.icu-project.org/trac/ticket/5498
-                    // doesn't work anymore. However, they also claim to have 
fixed
-                    // the cause that an initial fBreakType==-1 would lead to 
an
-                    // endless loop under some circumstances.
-                    // Let's see ...
-                    switch (rBreakType) {
-                        case LOAD_CHARACTER_BREAKITERATOR: 
rbi->publicSetBreakType(UBRK_CHARACTER); break;
-                        case LOAD_WORD_BREAKITERATOR: 
rbi->publicSetBreakType(UBRK_WORD); break;
-                        case LOAD_SENTENCE_BREAKITERATOR: 
rbi->publicSetBreakType(UBRK_SENTENCE); break;
-                        case LOAD_LINE_BREAKITERATOR: 
rbi->publicSetBreakType(UBRK_LINE); break;
-                    }
-    #endif
-                }
             } while (false);
 
         if (!icuBI->mpValue || !icuBI->mpValue->mpBreakIterator)
diff --git a/i18npool/source/collator/collator_unicode.cxx 
b/i18npool/source/collator/collator_unicode.cxx
index 8e54892efab4..7adf0f854488 100644
--- a/i18npool/source/collator/collator_unicode.cxx
+++ b/i18npool/source/collator/collator_unicode.cxx
@@ -252,16 +252,6 @@ Collator_Unicode::loadCollatorAlgorithm(const OUString& 
rAlgorithm, const lang::
                     funclen = 
get_collator_data_ja_phonetic_alphanumeric_last_length;
                 }
 #endif
-#if WITH_LOCALE_ALL || WITH_LOCALE_ko
-#if (U_ICU_VERSION_MAJOR_NUM < 53)
-            } else if ( rLocale.Language == "ko" ) {
-                if ( rAlgorithm == "charset" )
-                {
-                    func = get_collator_data_ko_charset;
-                    funclen = get_collator_data_ko_charset_length;
-                }
-#endif
-#endif
 #if WITH_LOCALE_ALL || WITH_LOCALE_ku
             } else if ( rLocale.Language == "ku" ) {
                 if ( rAlgorithm == "alphanumeric" )
diff --git a/i18nutil/source/utility/unicode.cxx 
b/i18nutil/source/utility/unicode.cxx
index e2e4199074ff..19a6bdf0b416 100644
--- a/i18nutil/source/utility/unicode.cxx
+++ b/i18nutil/source/utility/unicode.cxx
@@ -190,12 +190,8 @@ sal_Int16 
unicode::getScriptClassFromUScriptCode(UScriptCode eScript)
         case USCRIPT_TRADITIONAL_HAN:
         case USCRIPT_JAPANESE:
         case USCRIPT_KOREAN:
-#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && 
U_ICU_VERSION_MINOR_NUM >= 8)
         case USCRIPT_TANGUT:
-#endif
-#if (U_ICU_VERSION_MAJOR_NUM >= 66)
         case USCRIPT_KHITAN_SMALL_SCRIPT:
-#endif
             nRet = ScriptType::ASIAN;
             break;
         case USCRIPT_ARABIC:
@@ -775,7 +771,6 @@ OString 
unicode::getExemplarLanguageForUScriptCode(UScriptCode eScript)
         case USCRIPT_WARANG_CITI:
             sRet = "hoc";
             break;
-#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && 
U_ICU_VERSION_MINOR_NUM >= 8)
         case USCRIPT_AFAKA:
             sRet = "djk";
             break;
@@ -803,8 +798,6 @@ OString 
unicode::getExemplarLanguageForUScriptCode(UScriptCode eScript)
         case USCRIPT_WOLEAI:
             sRet = "woe";
             break;
-#endif
-#if (U_ICU_VERSION_MAJOR_NUM >= 49)
         case USCRIPT_ANATOLIAN_HIEROGLYPHS:
             sRet = "hlu";
             break;
@@ -814,16 +807,12 @@ OString 
unicode::getExemplarLanguageForUScriptCode(UScriptCode eScript)
         case USCRIPT_TIRHUTA:
             sRet = "mai";
             break;
-#endif
-#if (U_ICU_VERSION_MAJOR_NUM >= 52)
         case USCRIPT_CAUCASIAN_ALBANIAN:
             sRet = "xag";
             break;
         case USCRIPT_MAHAJANI:
             sRet = "mwr";
             break;
-#endif
-#if (U_ICU_VERSION_MAJOR_NUM >= 54)
         case USCRIPT_AHOM:
             sRet = "aho";
             break;
@@ -842,8 +831,6 @@ OString 
unicode::getExemplarLanguageForUScriptCode(UScriptCode eScript)
         case USCRIPT_SIDDHAM:
             sRet = "sa-Sidd";
             break;
-#endif
-#if (U_ICU_VERSION_MAJOR_NUM >= 58)
         case USCRIPT_ADLAM:
             sRet = "mis-Adlm";   // Adlam for Fulani, no language code
             break;
@@ -868,8 +855,6 @@ OString 
unicode::getExemplarLanguageForUScriptCode(UScriptCode eScript)
         case USCRIPT_SYMBOLS_EMOJI:
             sRet = "mis-Zsye";   // Emoji variant
             break;
-#endif
-#if (U_ICU_VERSION_MAJOR_NUM >= 60)
         case USCRIPT_MASARAM_GONDI:
             sRet = "gon-Gonm";  // macro language code, could be wsg,esg,gno
             break;
@@ -879,8 +864,6 @@ OString 
unicode::getExemplarLanguageForUScriptCode(UScriptCode eScript)
         case USCRIPT_ZANABAZAR_SQUARE:
             sRet = "mn-Zanb";   // abugida to write Mongolian
             break;
-#endif
-#if (U_ICU_VERSION_MAJOR_NUM >= 62)
         case USCRIPT_DOGRA:
             sRet = "dgo";       // Dogri proper
             break;
@@ -902,8 +885,6 @@ OString 
unicode::getExemplarLanguageForUScriptCode(UScriptCode eScript)
         case USCRIPT_OLD_SOGDIAN:
             sRet = "sog";
             break;
-#endif
-#if (U_ICU_VERSION_MAJOR_NUM >= 64)
         case USCRIPT_ELYMAIC:
             sRet = "arc-Elym";
             break;
@@ -916,8 +897,6 @@ OString 
unicode::getExemplarLanguageForUScriptCode(UScriptCode eScript)
         case USCRIPT_WANCHO:
             sRet = "nnp-Wcho";
             break;
-#endif
-#if (U_ICU_VERSION_MAJOR_NUM >= 66)
         case USCRIPT_CHORASMIAN:
             sRet = "xco-Chrs";
             break;
@@ -930,7 +909,6 @@ OString 
unicode::getExemplarLanguageForUScriptCode(UScriptCode eScript)
         case USCRIPT_YEZIDI:
             sRet = "kmr-Yezi";
             break;
-#endif
 #if (U_ICU_VERSION_MAJOR_NUM >= 70)
         case USCRIPT_CYPRO_MINOAN:
             sRet = "mis-Cpmn";  // Uncoded with script
diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx
index bf8c89d0d125..fc7fe021702c 100644
--- a/sc/source/core/tool/interpr1.cxx
+++ b/sc/source/core/tool/interpr1.cxx
@@ -9727,12 +9727,7 @@ void ScInterpreter::ScRegex()
     {
         // Find n-th occurrence.
         sal_Int32 nCount = 0;
-#if (U_ICU_VERSION_MAJOR_NUM < 55)
-        int32_t nStartPos = 0;
-        while (aRegexMatcher.find(nStartPos, status) && U_SUCCESS(status) && 
++nCount < nOccurrence)
-#else
         while (aRegexMatcher.find(status) && U_SUCCESS(status) && ++nCount < 
nOccurrence)
-#endif
             ;
         if (U_FAILURE(status))
         {
@@ -9772,12 +9767,7 @@ void ScInterpreter::ScRegex()
     {
         // Replace n-th occurrence of match with replacement.
         sal_Int32 nCount = 0;
-#if (U_ICU_VERSION_MAJOR_NUM < 55)
-        int32_t nStartPos = 0;
-        while (aRegexMatcher.find(nStartPos, status) && U_SUCCESS(status))
-#else
         while (aRegexMatcher.find(status) && U_SUCCESS(status))
-#endif
         {
             // XXX NOTE: After several RegexMatcher::find() the
             // RegexMatcher::appendReplacement() still starts at the
diff --git a/solenv/clang-format/excludelist b/solenv/clang-format/excludelist
index b28353a15e2a..03a8b79b6416 100644
--- a/solenv/clang-format/excludelist
+++ b/solenv/clang-format/excludelist
@@ -14734,7 +14734,6 @@ vcl/source/fontsubset/ttcr.cxx
 vcl/source/fontsubset/ttcr.hxx
 vcl/source/fontsubset/xlat.cxx
 vcl/source/gdi/CommonSalLayout.cxx
-vcl/source/gdi/VerticalOrientationData.cxx
 vcl/source/gdi/configsettings.cxx
 vcl/source/gdi/cvtgrf.cxx
 vcl/source/gdi/embeddedfontshelper.cxx
diff --git a/svl/source/misc/urihelper.cxx b/svl/source/misc/urihelper.cxx
index 9aa78a584614..6488edb5bb6d 100644
--- a/svl/source/misc/urihelper.cxx
+++ b/svl/source/misc/urihelper.cxx
@@ -850,11 +850,7 @@ OUString URIHelper::resolveIdnaHost(OUString const & url) {
     UErrorCode e = U_ZERO_ERROR;
     std::unique_ptr<icu::IDNA> idna(
         icu::IDNA::createUTS46Instance(
-            (UIDNA_USE_STD3_RULES | UIDNA_CHECK_BIDI | UIDNA_CHECK_CONTEXTJ
-#if U_ICU_VERSION_MAJOR_NUM >= 49
-             | UIDNA_CHECK_CONTEXTO
-#endif
-             ),
+            (UIDNA_USE_STD3_RULES | UIDNA_CHECK_BIDI | UIDNA_CHECK_CONTEXTJ | 
UIDNA_CHECK_CONTEXTO),
             e));
     if (U_FAILURE(e)) {
         SAL_WARN("vcl.gdi", "icu::IDNA::createUTS46Instance " << e);
diff --git a/svx/source/dialog/charmap.cxx b/svx/source/dialog/charmap.cxx
index 6d7933fe95cb..18a31b5f7a74 100644
--- a/svx/source/dialog/charmap.cxx
+++ b/svx/source/dialog/charmap.cxx
@@ -1553,8 +1553,6 @@ void SubsetMap::InitList()
                 case UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D:
                     aAllSubsets.emplace_back( 0x2B740, 0x2B81F, 
SvxResId(RID_SUBSETSTR_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D) );
                     break;
-// Note ICU version 49 (NOT 4.9), so the MAJOR_NUM is two digits.
-#if U_ICU_VERSION_MAJOR_NUM >= 49
                 case UBLOCK_ARABIC_EXTENDED_A:
                     aAllSubsets.emplace_back( 0x08A0, 0x08FF, 
SvxResId(RID_SUBSETSTR_ARABIC_EXTENDED_A) );
                     break;
@@ -1588,8 +1586,6 @@ void SubsetMap::InitList()
                 case UBLOCK_TAKRI:
                     aAllSubsets.emplace_back( 0x11680, 0x116CF, 
SvxResId(RID_SUBSETSTR_TAKRI) );
                     break;
-#endif
-#if U_ICU_VERSION_MAJOR_NUM >= 54
                 case UBLOCK_BASSA_VAH:
                     aAllSubsets.emplace_back( 0x16AD0, 0x16AFF, 
SvxResId(RID_SUBSETSTR_BASSA_VAH) );
                     break;
@@ -1686,8 +1682,6 @@ void SubsetMap::InitList()
                 case UBLOCK_WARANG_CITI:
                     aAllSubsets.emplace_back( 0x118A0, 0x118FF, 
SvxResId(RID_SUBSETSTR_WARANG_CITI) );
                     break;
-#endif
-#if U_ICU_VERSION_MAJOR_NUM >= 56
                 case UBLOCK_AHOM:
                     aAllSubsets.emplace_back( 0x11700, 0x1173F, 
SvxResId(RID_SUBSETSTR_AHOM) );
                     break;
@@ -1718,8 +1712,6 @@ void SubsetMap::InitList()
                 case UBLOCK_SUTTON_SIGNWRITING:
                     aAllSubsets.emplace_back( 0x1D800, 0x1DAAF, 
SvxResId(RID_SUBSETSTR_SUTTON_SIGNWRITING) );
                     break;
-#endif
-#if (U_ICU_VERSION_MAJOR_NUM >= 58)
                 case UBLOCK_ADLAM:
                     aAllSubsets.emplace_back( 0x1E900, 0x1E95F, 
SvxResId(RID_SUBSETSTR_ADLAM) );
                     break;
@@ -1753,8 +1745,6 @@ void SubsetMap::InitList()
                 case UBLOCK_TANGUT_COMPONENTS:
                     aAllSubsets.emplace_back( 0x18800, 0x18AFF, 
SvxResId(RID_SUBSETSTR_TANGUT_COMPONENTS) );
                     break;
-#endif
-#if (U_ICU_VERSION_MAJOR_NUM >= 60)
                 case UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F:
                     aAllSubsets.emplace_back( 0x2CEB0, 0x2EBE0, 
SvxResId(RID_SUBSETSTR_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F) );
                     break;
@@ -1776,8 +1766,6 @@ void SubsetMap::InitList()
                 case UBLOCK_ZANABAZAR_SQUARE:
                     aAllSubsets.emplace_back( 0x11A00, 0x11A4F, 
SvxResId(RID_SUBSETSTR_ZANABAZAR_SQUARE) );
                     break;
-#endif
-#if (U_ICU_VERSION_MAJOR_NUM >= 62)
                 case UBLOCK_CHESS_SYMBOLS:
                     aAllSubsets.emplace_back( 0x1FA00, 0x1FA6F, 
SvxResId(RID_SUBSETSTR_CHESS_SYMBOLS) );
                     break;
@@ -1811,8 +1799,6 @@ void SubsetMap::InitList()
                 case UBLOCK_SOGDIAN:
                     aAllSubsets.emplace_back( 0x10F30, 0x10F6F, 
SvxResId(RID_SUBSETSTR_SOGDIAN) );
                     break;
-#endif
-#if (U_ICU_VERSION_MAJOR_NUM >= 64)
                 case UBLOCK_EGYPTIAN_HIEROGLYPH_FORMAT_CONTROLS:
                     aAllSubsets.emplace_back( 0x13430, 0x1343F, 
SvxResId(RID_SUBSETSTR_EGYPTIAN_HIEROGLYPH_FORMAT_CONTROLS) );
                     break;
@@ -1840,8 +1826,6 @@ void SubsetMap::InitList()
                 case UBLOCK_WANCHO:
                     aAllSubsets.emplace_back( 0x1E2C0, 0x1E2FF, 
SvxResId(RID_SUBSETSTR_WANCHO) );
                     break;
-#endif
-#if (U_ICU_VERSION_MAJOR_NUM >= 66)
                 case UBLOCK_CHORASMIAN:
                     aAllSubsets.emplace_back( 0x10FB0, 0x10FDF, 
SvxResId(RID_SUBSETSTR_CHORASMIAN) );
                     break;
@@ -1866,7 +1850,6 @@ void SubsetMap::InitList()
                 case UBLOCK_YEZIDI:
                     aAllSubsets.emplace_back( 0x10E80, 0x10EBF, 
SvxResId(RID_SUBSETSTR_YEZIDI) );
                     break;
-#endif
 #if (U_ICU_VERSION_MAJOR_NUM >= 70)
                 case UBLOCK_ARABIC_EXTENDED_B:
                     aAllSubsets.emplace_back( 0x0870, 0x089F, 
SvxResId(RID_SUBSETSTR_ARABIC_EXTENDED_B) );
diff --git a/sw/source/core/text/porlay.cxx b/sw/source/core/text/porlay.cxx
index 37ad6edd9eff..14ac23395dcf 100644
--- a/sw/source/core/text/porlay.cxx
+++ b/sw/source/core/text/porlay.cxx
@@ -113,20 +113,12 @@ using namespace i18n::ScriptType;
 #define isAinChar(c)        IS_JOINING_GROUP((c), AIN)
 #define isAlefChar(c)       IS_JOINING_GROUP((c), ALEF)
 #define isDalChar(c)        IS_JOINING_GROUP((c), DAL)
-#if U_ICU_VERSION_MAJOR_NUM >= 58
 #define isFehChar(c)       (IS_JOINING_GROUP((c), FEH) || 
IS_JOINING_GROUP((c), AFRICAN_FEH))
-#else
-#define isFehChar(c)        IS_JOINING_GROUP((c), FEH)
-#endif
 #define isGafChar(c)        IS_JOINING_GROUP((c), GAF)
 #define isHehChar(c)        IS_JOINING_GROUP((c), HEH)
 #define isKafChar(c)        IS_JOINING_GROUP((c), KAF)
 #define isLamChar(c)        IS_JOINING_GROUP((c), LAM)
-#if U_ICU_VERSION_MAJOR_NUM >= 58
 #define isQafChar(c)       (IS_JOINING_GROUP((c), QAF) || 
IS_JOINING_GROUP((c), AFRICAN_QAF))
-#else
-#define isQafChar(c)        IS_JOINING_GROUP((c), QAF)
-#endif
 #define isRehChar(c)        IS_JOINING_GROUP((c), REH)
 #define isTahChar(c)        IS_JOINING_GROUP((c), TAH)
 #define isTehMarbutaChar(c) IS_JOINING_GROUP((c), TEH_MARBUTA)
@@ -141,9 +133,7 @@ static bool isBehChar(sal_Unicode cCh)
     {
     case U_JG_BEH:
     case U_JG_NOON:
-#if U_ICU_VERSION_MAJOR_NUM >= 58
     case U_JG_AFRICAN_NOON:
-#endif
     case U_JG_NYA:
     case U_JG_YEH:
     case U_JG_FARSI_YEH:
diff --git a/vcl/source/gdi/CommonSalLayout.cxx 
b/vcl/source/gdi/CommonSalLayout.cxx
index 7ea3ba687485..324b6fb48b07 100644
--- a/vcl/source/gdi/CommonSalLayout.cxx
+++ b/vcl/source/gdi/CommonSalLayout.cxx
@@ -82,60 +82,17 @@ struct SubRun
 }
 
 namespace {
-#if U_ICU_VERSION_MAJOR_NUM >= 63
-    enum class VerticalOrientation {
-        Upright            = U_VO_UPRIGHT,
-        Rotated            = U_VO_ROTATED,
-        TransformedUpright = U_VO_TRANSFORMED_UPRIGHT,
-        TransformedRotated = U_VO_TRANSFORMED_ROTATED
-    };
-#else
-    #include "VerticalOrientationData.cxx"
-
-    // These must match the values in the file included above.
-    enum class VerticalOrientation {
-        Upright            = 0,
-        Rotated            = 1,
-        TransformedUpright = 2,
-        TransformedRotated = 3
-    };
-#endif
-
-    VerticalOrientation GetVerticalOrientation(sal_UCS4 cCh, const 
LanguageTag& rTag)
+    int32_t GetVerticalOrientation(sal_UCS4 cCh, const LanguageTag& rTag)
     {
         // Override orientation of fullwidth colon , semi-colon,
         // and Bopomofo tonal marks.
         if ((cCh == 0xff1a || cCh == 0xff1b
            || cCh == 0x2ca || cCh == 0x2cb || cCh == 0x2c7 || cCh == 0x2d9)
                 && rTag.getLanguage() == "zh")
-            return VerticalOrientation::TransformedUpright;
+            return U_VO_TRANSFORMED_UPRIGHT;
 
-#if U_ICU_VERSION_MAJOR_NUM >= 63
-        int32_t nRet = u_getIntPropertyValue(cCh, UCHAR_VERTICAL_ORIENTATION);
-#else
-        uint8_t nRet = 1;
-
-        if (cCh < 0x10000)
-        {
-            nRet = sVerticalOrientationValues[sVerticalOrientationPages[0][cCh 
>> kVerticalOrientationCharBits]]
-                                  [cCh & ((1 << kVerticalOrientationCharBits) 
- 1)];
-        }
-        else if (cCh < (kVerticalOrientationMaxPlane + 1) * 0x10000)
-        {
-            nRet = 
sVerticalOrientationValues[sVerticalOrientationPages[sVerticalOrientationPlanes[(cCh
 >> 16) - 1]]
-                                                   [(cCh & 0xffff) >> 
kVerticalOrientationCharBits]]
-                                   [cCh & ((1 << kVerticalOrientationCharBits) 
- 1)];
-        }
-        else
-        {
-            // Default value for unassigned
-            SAL_WARN("vcl.gdi", "Getting VerticalOrientation for codepoint 
outside Unicode range");
-        }
-#endif
-
-        return VerticalOrientation(nRet);
+        return u_getIntPropertyValue(cCh, UCHAR_VERTICAL_ORIENTATION);
     }
-
 } // namespace
 
 SalLayoutGlyphs GenericSalLayout::GetGlyphs() const
@@ -358,7 +315,7 @@ bool 
GenericSalLayout::LayoutText(vcl::text::ImplLayoutArgs& rArgs, const SalLay
                     {
                         sal_Int32 nPrevIdx = nIdx;
                         sal_UCS4 aChar = rArgs.mrStr.iterateCodePoints(&nIdx);
-                        VerticalOrientation aVo = 
GetVerticalOrientation(aChar, rArgs.maLanguageTag);
+                        int32_t aVo = GetVerticalOrientation(aChar, 
rArgs.maLanguageTag);
 
                         sal_UCS4 aVariationSelector = 0;
                         if (nIdx < nEndRunPos)
@@ -379,9 +336,8 @@ bool 
GenericSalLayout::LayoutText(vcl::text::ImplLayoutArgs& rArgs, const SalLay
                         // they should be shaped in horizontal direction
                         // and then rotated.
                         // See http://unicode.org/reports/tr50/#vo
-                        if (aVo == VerticalOrientation::Upright ||
-                            aVo == VerticalOrientation::TransformedUpright ||
-                            (aVo == VerticalOrientation::TransformedRotated &&
+                        if (aVo == U_VO_UPRIGHT || aVo == 
U_VO_TRANSFORMED_UPRIGHT ||
+                            (aVo == U_VO_TRANSFORMED_ROTATED &&
                              HasVerticalAlternate(aChar, aVariationSelector)))
                         {
                             aDirection = HB_DIRECTION_TTB;
diff --git a/vcl/source/gdi/VerticalOrientationData.cxx 
b/vcl/source/gdi/VerticalOrientationData.cxx
deleted file mode 100644
index 1016b36564a9..000000000000
--- a/vcl/source/gdi/VerticalOrientationData.cxx
+++ /dev/null
@@ -1,78 +0,0 @@
-
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- */
-
-/*
- * Derived from the Unicode Character Database by genVerticalOrientationData.pl
- *
- * For Unicode terms of use, see http://www.unicode.org/terms_of_use.html
- */
-
-/*
- * Created on Wed Nov  9 21:29:02 2016 from UCD data files with version info:
- *
-
-
-# VerticalOrientation-17.txt
-# Date: 2016-10-20, 07:00:00 GMT [EM, KI, LI]
-
- *
- * * * * * This file contains MACHINE-GENERATED DATA, do not edit! * * * * *
- */
-
-#define kVerticalOrientationMaxPlane  16
-#define kVerticalOrientationIndexBits 9
-#define kVerticalOrientationCharBits  7
-static const uint8_t sVerticalOrientationPlanes[16] = 
{1,2,2,3,3,3,3,3,3,3,3,3,3,3,2,2};
-
-static const uint8_t sVerticalOrientationPages[4][512] = {
-  
{0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,4,3,3,3,3,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,7,8,9,10,0,11,12,13,3,0,14,15,3,16,17,0,0,0,0,0,0,18,19,0,0,0,0,0,3,3,3,20,21,22,23,3,3,24,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,25,0,0,0,0,0,0,0,0,26,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
 ,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,27,0,28,29},
-  
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,0,0,3,0,0,0,0,0,0,0,0,0,3,3,3,3,3,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,32,3,3,3,3,3,3,3,3,3,3
 ,3,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0},
-  
{3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 3,3,3,3,3,3,3,3,3,3,3,3,3,3,33},
-  
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
-};
-
-static const uint8_t sVerticalOrientationValues[34][128] = {
-  
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
-  
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1},
-  
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
-  
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
-  
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
-  
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
-  
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,0,1,1,1,1,0,0,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
-  
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
-  
{0,0,1,0,0,0,0,0,0,0,1,1,1,1,1,0,1,1,1,0,0,1,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,0,1,0,1,0,1,1,1,1,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
-  
{0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
-  
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
-  
{0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,3,3,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0},
-  
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
-  
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
-  
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
-  
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
-  
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0},
-  
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
-  
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
-  
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
-  
{0,2,2,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
-  
{0,0,0,2,0,2,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,2,2,0,0,0,0,2,2,0,0,0,3,2,0,2,0,2,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,2,2,0,0,0,0,0,3,0,0,0},
-  
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
-  
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
-  
{2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2},
-  
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
-  
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
-  
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,2,2,2,0,0,0,0,0,1,3,3,3,3,3,3,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
-  
{1,2,0,0,0,0,0,0,3,3,0,0,2,1,2,0,0,0,0,0,0,0,0,0,0,0,3,3,1,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
-  
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,3,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,1,1},
-  
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
-  
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
-  
{2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
-  
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1}
-};
-/*
- * * * * * This file contains MACHINE-GENERATED DATA, do not edit! * * * * *
- */
diff --git a/vcl/source/gdi/genVerticalOrientationData.pl 
b/vcl/source/gdi/genVerticalOrientationData.pl
deleted file mode 100755
index 328727b269b3..000000000000
--- a/vcl/source/gdi/genVerticalOrientationData.pl
+++ /dev/null
@@ -1,206 +0,0 @@
-#!/usr/bin/env perl
-
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-# This tool is used to prepare lookup tables of Unicode character properties.
-# The properties are read from the Unicode Character Database and compiled into
-# multi-level arrays for efficient lookup.
-#
-# To regenerate the tables in VerticalOrientationData.cxx:
-#
-# (1) Download the current Unicode data files from
-#
-#     We require the latest data file for UTR50, currently revision-17:
-#        
http://www.unicode.org/Public/vertical/revision-17/VerticalOrientation-17.txt
-#
-#
-# (2) Run this tool using a command line of the form
-#
-#         perl genVerticalOrientationData.pl      \
-#                 /path/to/VerticalOrientation-17.txt
-#
-#     This will generate (or overwrite!) the files
-#
-#         VerticalOrientationData.cxx
-#
-#     in the current directory.
-
-use strict;
-use List::Util qw(first);
-
-my $DATA_FILE = $ARGV[0];
-
-my %verticalOrientationCode = (
-  'U' => 0,  #   U - Upright, the same orientation as in the code charts
-  'R' => 1,  #   R - Rotated 90 degrees clockwise compared to the code charts
-  'Tu' => 2, #   Tu - Transformed typographically, with fallback to Upright
-  'Tr' => 3  #   Tr - Transformed typographically, with fallback to Rotated
-);
-
-my @verticalOrientation;
-for (my $i = 0; $i < 0x110000; ++$i) {
-    $verticalOrientation[$i] = 1; # default for unlisted codepoints is 'R'
-}
-
-# read VerticalOrientation-17.txt
-my @versionInfo;
-open FH, "< $DATA_FILE" or die "can't open UTR50 data file 
VerticalOrientation-17.txt\n";
-push @versionInfo, "";
-while (<FH>) {
-    chomp;
-    push @versionInfo, $_;
-    last if /Date:/;
-}
-while (<FH>) {
-    chomp;
-    s/#.*//;
-    if (m/([0-9A-F]{4,6})(?:\.\.([0-9A-F]{4,6}))*\s*;\s*([^ ]+)/) {
-        my $vo = $3;
-        warn "unknown Vertical_Orientation code $vo"
-            unless exists $verticalOrientationCode{$vo};
-        $vo = $verticalOrientationCode{$vo};
-        my $start = hex "0x$1";
-        my $end = (defined $2) ? hex "0x$2" : $start;
-        for (my $i = $start; $i <= $end; ++$i) {
-            $verticalOrientation[$i] = $vo;
-        }
-    }
-}
-close FH;
-
-my $timestamp = gmtime();
-
-open DATA_TABLES, "> VerticalOrientationData.cxx" or die "unable to open 
VerticalOrientationData.cxx for output";
-
-my $licenseBlock = q[
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- */
-
-/*
- * Derived from the Unicode Character Database by genVerticalOrientationData.pl
- *
- * For Unicode terms of use, see http://www.unicode.org/terms_of_use.html
- */
-];
-
-my $versionInfo = join("\n", @versionInfo);
-
-print DATA_TABLES <<__END;
-$licenseBlock
-/*
- * Created on $timestamp from UCD data files with version info:
- *
-
-$versionInfo
-
- *
- * * * * * This file contains MACHINE-GENERATED DATA, do not edit! * * * * *
- */
-
-__END
-
-our $totalData = 0;
-
-sub sprintVerticalOrientation
-{
-  my $usv = shift;
-  return sprintf("%d,",
-                 $verticalOrientation[$usv]);
-}
-
-&genTables("VerticalOrientation", "uint8_t", 9, 7, 
\&sprintVerticalOrientation, 16, 1, 1);
-
-sub genTables
-{
-  my ($prefix, $type, $indexBits, $charBits, $func, $maxPlane, $bytesPerEntry, 
$charsPerEntry) = @_;
-
-  print DATA_TABLES "#define k${prefix}MaxPlane  $maxPlane\n";
-  print DATA_TABLES "#define k${prefix}IndexBits $indexBits\n";
-  print DATA_TABLES "#define k${prefix}CharBits  $charBits\n";
-
-  my $indexLen = 1 << $indexBits;
-  my $charsPerPage = 1 << $charBits;
-  my %charIndex = ();
-  my %pageMapIndex = ();
-  my @pageMap = ();
-  my @char = ();
-
-  my $planeMap = "\x00" x $maxPlane;
-  foreach my $plane (0 .. $maxPlane) {
-    my $pageMap = "\x00" x $indexLen * 2;
-    foreach my $page (0 .. $indexLen - 1) {
-        my $charValues = "";
-        for (my $ch = 0; $ch < $charsPerPage; $ch += $charsPerEntry) {
-            my $usv = $plane * 0x10000 + $page * $charsPerPage + $ch;
-            $charValues .= &$func($usv);
-        }
-        chop $charValues;
-
-        unless (exists $charIndex{$charValues}) {
-            $charIndex{$charValues} = scalar keys %charIndex;
-            $char[$charIndex{$charValues}] = $charValues;
-        }
-        substr($pageMap, $page * 2, 2) = pack('S', $charIndex{$charValues});
-    }
-
-    unless (exists $pageMapIndex{$pageMap}) {
-        $pageMapIndex{$pageMap} = scalar keys %pageMapIndex;
-        $pageMap[$pageMapIndex{$pageMap}] = $pageMap;
-    }
-    if ($plane > 0) {
-        substr($planeMap, $plane - 1, 1) = pack('C', $pageMapIndex{$pageMap});
-    }
-  }
-
-  if ($maxPlane) {
-    print DATA_TABLES "static const uint8_t s${prefix}Planes[$maxPlane] = {";
-    print DATA_TABLES join(',', map { sprintf("%d", $_) } unpack('C*', 
$planeMap));
-    print DATA_TABLES "};\n\n";
-  }
-
-  my $chCount = scalar @char;
-  my $pmBits = $chCount > 255 ? 16 : 8;
-  my $pmCount = scalar @pageMap;
-  if ($maxPlane == 0) {
-    die "there should only be one pageMap entry!" if $pmCount > 1;
-    print DATA_TABLES "static const uint${pmBits}_t s${prefix}Pages[$indexLen] 
= {\n";
-  } else {
-    print DATA_TABLES "static const uint${pmBits}_t 
s${prefix}Pages[$pmCount][$indexLen] = {\n";
-  }
-  for (my $i = 0; $i < scalar @pageMap; ++$i) {
-    print DATA_TABLES $maxPlane > 0 ? "  {" : "  ";
-    print DATA_TABLES join(',', map { sprintf("%d", $_) } unpack('S*', 
$pageMap[$i]));
-    print DATA_TABLES $maxPlane > 0 ? ($i < $#pageMap ? "},\n" : "}\n") : "\n";
-  }
-  print DATA_TABLES "};\n\n";
-
-  my $pageLen = $charsPerPage / $charsPerEntry;
-  print DATA_TABLES "static const $type s${prefix}Values[$chCount][$pageLen] = 
{\n";
-  for (my $i = 0; $i < scalar @char; ++$i) {
-    print DATA_TABLES "  {";
-    print DATA_TABLES $char[$i];
-    print DATA_TABLES $i < $#char ? "},\n" : "}\n";
-  }
-  print DATA_TABLES "};\n";
-
-  my $dataSize = $pmCount * $indexLen * $pmBits/8 +
-                 $chCount * $pageLen * $bytesPerEntry +
-                 $maxPlane;
-  $totalData += $dataSize;
-
-  print STDERR "Data for $prefix = $dataSize\n";
-}
-print DATA_TABLES <<__END;
-/*
- * * * * * This file contains MACHINE-GENERATED DATA, do not edit! * * * * *
- */
-__END
-
-close DATA_TABLES;
diff --git a/vcl/unx/generic/fontmanager/fontconfig.cxx 
b/vcl/unx/generic/fontmanager/fontconfig.cxx
index a34d0e08b050..1664182e8aed 100644
--- a/vcl/unx/generic/fontmanager/fontconfig.cxx
+++ b/vcl/unx/generic/fontmanager/fontconfig.cxx
@@ -906,11 +906,7 @@ namespace
 
     bool isEmoji(sal_uInt32 nCurrentChar)
     {
-#if U_ICU_VERSION_MAJOR_NUM >= 57
         return u_hasBinaryProperty(nCurrentChar, UCHAR_EMOJI);
-#else
-       return false;
-#endif
     }
 
     //returns true if the given code-point couldn't possibly be in rLangTag.

Reply via email to