Kaydet (Commit) addc7916 authored tarafından Mark Wielaard's avatar Mark Wielaard Kaydeden (comit) Luboš Luňák

Fix icu version checks.

commit 30c303 "Make charmap.cxx compile with icu >= 4.4." was incomplete
and had wrong version checks. After ICU 4.8 (4.8.1.1) the next version
of ICU was 49 (49.1) so U_ICU_VERSION_MAJOR_NUM contains two digets (49),
earlier that it was just one digit (4). The correct header to include to
do version checks is unicode/uversion.h. USCRIPT_MANDAEAN is the old
alias of USCRIPT_MANDAIC (same numeric value). U_JG_FARSI_YEH is only
available since ICU 4.4. Note that on older icu versions (4.2.1) the
200B (ZWSP) Zero Width Space breakiterator testcase fails (others
succeed).

Change-Id: If73c1402239a28546077437e9382f0bd38642bad
Reviewed-on: https://gerrit.libreoffice.org/4139Reviewed-by: 's avatarLuboš Luňák <l.lunak@suse.cz>
Tested-by: 's avatarLuboš Luňák <l.lunak@suse.cz>
üst d47fb947
......@@ -19,7 +19,7 @@
#include <com/sun/star/i18n/WordType.hpp>
#include <unotest/bootstrapfixturebase.hxx>
#include <unicode/uvernum.h>
#include <unicode/uversion.h>
#include <rtl/strbuf.hxx>
#include <rtl/ustrbuf.hxx>
......@@ -236,6 +236,8 @@ void TestBreakIterator::testWordBoundaries()
}
//See https://bugs.freedesktop.org/show_bug.cgi?id=49629
//Note that the breakiterator test will fail on older icu versions
//(4.2.1) for the 200B (ZWSP) Zero Width Space testcase.
sal_Unicode aBreakTests[] = { ' ', 1, 2, 3, 4, 5, 6, 7, 0x91, 0x92, 0x200B, 0xE8FF, 0xF8FF };
for (int mode = i18n::WordType::ANY_WORD; mode <= i18n::WordType::WORD_COUNT; ++mode)
{
......
......@@ -826,6 +826,9 @@ OString SAL_CALL unicode::getExemplerLanguageForUScriptCode(UScriptCode eScript)
case USCRIPT_TAI_VIET:
sRet = "blt";
break;
case USCRIPT_MANDAEAN: /* Aliased to USCRIPT_MANDAIC in icu 4.6. */
sRet = "mic";
break;
#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >= 4)
case USCRIPT_NABATAEAN: //no language with an assigned code yet
sRet = "mis";
......@@ -833,9 +836,6 @@ OString SAL_CALL unicode::getExemplerLanguageForUScriptCode(UScriptCode eScript)
case USCRIPT_PALMYRENE: //no language with an assigned code yet
sRet = "mis";
break;
case USCRIPT_MANDAIC:
sRet = "mic";
break;
case USCRIPT_BAMUM:
sRet = "bax";
break;
......
......@@ -1302,7 +1302,7 @@ void SubsetMap::InitList()
case UBLOCK_DOMINO_TILES:
aAllSubsets.push_back( Subset( 0x1F030, 0x1F09F, RID_SUBSETSTR_DOMINO_TILES ) );
break;
#if U_ICU_VERSION_MAJOR_NUM >= 44
#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >= 4)
case UBLOCK_SAMARITAN:
aAllSubsets.push_back( Subset( 0x0800, 0x083F, RID_SUBSETSTR_SAMARITAN ) );
break;
......@@ -1382,7 +1382,7 @@ void SubsetMap::InitList()
aAllSubsets.push_back( Subset( 0x2A700, 0x2B73F, RID_SUBSETSTR_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C ) );
break;
#endif
#if U_ICU_VERSION_MAJOR_NUM >= 46
#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >= 6)
case UBLOCK_MANDAIC:
aAllSubsets.push_back( Subset( 0x0840, 0x085F, RID_SUBSETSTR_MANDAIC ) );
break;
......@@ -1420,6 +1420,7 @@ void SubsetMap::InitList()
aAllSubsets.push_back( Subset( 0x2B740, 0x2B81F, RID_SUBSETSTR_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D ) );
break;
#endif
// 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.push_back( Subset( 0x08A0, 0x08FF, RID_SUBSETSTR_ARABIC_EXTENDED_A ) );
......
......@@ -72,7 +72,11 @@ using namespace i18n::ScriptType;
#define isRehChar(c) IS_JOINING_GROUP((c), REH)
#define isTehMarbutaChar(c) IS_JOINING_GROUP((c), TEH_MARBUTA)
#define isWawChar(c) IS_JOINING_GROUP((c), WAW)
#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >= 4)
#define isYehChar(c) (IS_JOINING_GROUP((c), YEH) || IS_JOINING_GROUP((c), FARSI_YEH))
#else
#define isYehChar(c) IS_JOINING_GROUP((c), YEH)
#endif
#define isSeenOrSadChar(c) (IS_JOINING_GROUP((c), SAD) || IS_JOINING_GROUP((c), SEEN))
bool isTransparentChar ( sal_Unicode cCh )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment