diff options
Diffstat (limited to 'i18npool/source/defaultnumberingprovider/defaultnumberingprovider.cxx')
-rw-r--r-- | i18npool/source/defaultnumberingprovider/defaultnumberingprovider.cxx | 70 |
1 files changed, 58 insertions, 12 deletions
diff --git a/i18npool/source/defaultnumberingprovider/defaultnumberingprovider.cxx b/i18npool/source/defaultnumberingprovider/defaultnumberingprovider.cxx index 831b502a2771..1caca1b3d054 100644 --- a/i18npool/source/defaultnumberingprovider/defaultnumberingprovider.cxx +++ b/i18npool/source/defaultnumberingprovider/defaultnumberingprovider.cxx @@ -63,9 +63,9 @@ #define S_FA_THREE "\xDB\xB3" // Indic Devanagari -#define S_HI_ONE "\xDB\xB1" -#define S_HI_TWO "\xDB\xB2" -#define S_HI_THREE "\xDB\xB3" +#define S_HI_ONE "\xE0\xA5\xA7" +#define S_HI_TWO "\xE0\xA5\xA8" +#define S_HI_THREE "\xE0\xA5\xA9" // Chicago footnote symbols #define S_DAGGER "\xE2\x80\xA0" @@ -200,6 +200,24 @@ const sal_Unicode table_CyrillicLowerLetter_sr[] = { 0x0444, 0x0445, 0x0446, 0x0447, 0x045F, 0x0448 }; +// Ukrainian Cyrillic upper letters +const sal_Unicode table_CyrillicUpperLetter_uk[] = { + 0x0410, 0x0411, 0x0412, 0x0413, 0x0490, 0x0414, 0x0415, 0x0404, + 0x0416, 0x0417, 0x0418, 0x0406, 0x0407, 0x0419, 0x041A, 0x041B, + 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, 0x0423, + 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042C, 0x042E, + 0x042F +}; + +// Ukrainian cyrillic lower letters +const sal_Unicode table_CyrillicLowerLetter_uk[] = { + 0x0430, 0x0431, 0x0432, 0x0433, 0x0491, 0x0434, 0x0435, 0x0454, + 0x0436, 0x0437, 0x0438, 0x0456, 0x0457, 0x0439, 0x043A, 0x043B, + 0x043C, 0x043D, 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, + 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044C, 0x044E, + 0x044F +}; + const sal_Unicode table_GreekUpperLetter[] = { 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x03DB, 0x0396, 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0, 0x03DF, @@ -366,7 +384,7 @@ static OUString toRoman( sal_Int32 n ) case 3: sTmp.append(*cRomanStr); [[fallthrough]]; case 2: sTmp.append(*cRomanStr); [[fallthrough]]; case 1: sTmp.append(*cRomanStr); break; - case 4: sTmp.append(*cRomanStr).append(*(cRomanStr-nDiff)); break; + case 4: sTmp.append(OUStringChar(*cRomanStr) + OUStringChar(*(cRomanStr-nDiff))); break; case 5: sTmp.append(*(cRomanStr-nDiff)); break; } @@ -452,7 +470,7 @@ void lcl_formatPersianWord( sal_Int32 nNumber, OUString& rsResult ) { if (nSection > SAL_N_ELEMENTS( table_PersianWord_decadeX)) throw IllegalArgumentException(); // does not happen with sal_Int32 - aTemp.insert( 0, asPersianWord_conjunction).insert( 0, table_PersianWord_decadeX[nSection-1]); + aTemp.insert( 0, table_PersianWord_decadeX[nSection-1] + asPersianWord_conjunction ); } unsigned int nDigit; @@ -499,7 +517,7 @@ static void lcl_formatKoreanLegalWord(sal_Int32 nNumber, OUString& rsResult) { aTemp.insert(0, (table_KoreanLegalWord_decade1[digit1 - 1])); if (digit2 > 0) aTemp.insert(0, (table_KoreanLegalWord_decade2[digit2 - 1])); - rsResult += aTemp.makeStringAndClear(); + rsResult += aTemp; } // Greek Letter Numbering @@ -752,15 +770,15 @@ DefaultNumberingProvider::makeNumberingString( const Sequence<beans::PropertyVal locale = aLocale; break; case NUMBER_LOWER_ZH: - natNum = NativeNumberMode::NATNUM7; + natNum = NativeNumberMode::NATNUM12; locale.Language = "zh"; break; case NUMBER_UPPER_ZH: - natNum = NativeNumberMode::NATNUM8; + natNum = NativeNumberMode::NATNUM5; locale.Language = "zh"; break; case NUMBER_UPPER_ZH_TW: - natNum = NativeNumberMode::NATNUM8; + natNum = NativeNumberMode::NATNUM5; locale.Language = "zh"; locale.Country = "TW"; break; @@ -958,6 +976,29 @@ DefaultNumberingProvider::makeNumberingString( const Sequence<beans::PropertyVal result); // 1=>a, 2=>b, ..., 27=>z, 28=>aa, 29=>bb, ... break; + case CHARS_CYRILLIC_UPPER_LETTER_UK: + lcl_formatChars2( table_CyrillicUpperLetter_uk, + table_CyrillicLowerLetter_uk, + SAL_N_ELEMENTS(table_CyrillicLowerLetter_uk), number-1, + result); + break; + case CHARS_CYRILLIC_LOWER_LETTER_UK: + lcl_formatChars( table_CyrillicLowerLetter_uk, + SAL_N_ELEMENTS(table_CyrillicLowerLetter_uk), number-1, + result); + break; + case CHARS_CYRILLIC_UPPER_LETTER_N_UK: + lcl_formatChars3( table_CyrillicUpperLetter_uk, + table_CyrillicLowerLetter_uk, + SAL_N_ELEMENTS(table_CyrillicLowerLetter_uk), number-1, + result); + break; + case CHARS_CYRILLIC_LOWER_LETTER_N_UK: + lcl_formatChars1( table_CyrillicLowerLetter_uk, + SAL_N_ELEMENTS(table_CyrillicLowerLetter_uk), number-1, + result); + break; + case CHARS_GREEK_LOWER_LETTER: lcl_formatCharsGR( table_GreekLowerLetter, number, result); break; @@ -1054,7 +1095,9 @@ const Supported_NumberingType aSupportedTypes[] = {style::NumberingType::NATIVE_NUMBERING, "Native Numbering", LANG_CJK|LANG_CTL}, {style::NumberingType::FULLWIDTH_ARABIC, nullptr, LANG_CJK}, {style::NumberingType::CIRCLE_NUMBER, nullptr, LANG_CJK}, - {style::NumberingType::NUMBER_LOWER_ZH, nullptr, LANG_CJK}, + // The cSymbol is defined here for compatibility with files created by old releases. + // Otherwise if nullptr, these 3 digits may change as NATNUM12 depends on 3rd-party lib. + {style::NumberingType::NUMBER_LOWER_ZH, "一, 二, 三, ...", LANG_CJK}, {style::NumberingType::NUMBER_UPPER_ZH, nullptr, LANG_CJK}, {style::NumberingType::NUMBER_UPPER_ZH_TW, nullptr, LANG_CJK}, {style::NumberingType::TIAN_GAN_ZH, nullptr, LANG_CJK}, @@ -1098,6 +1141,10 @@ const Supported_NumberingType aSupportedTypes[] = {style::NumberingType::CHARS_CYRILLIC_LOWER_LETTER_SR, S_CYR_A ", " S_CYR_B ", .., " S_CYR_A S_CYR_A ", " S_CYR_A S_CYR_B ", ... (sr)", LANG_ALL}, {style::NumberingType::CHARS_CYRILLIC_UPPER_LETTER_N_SR, C_CYR_A ", " C_CYR_B ", .., " C_CYR_A S_CYR_A ", " C_CYR_B S_CYR_B ", ... (sr)", LANG_ALL}, {style::NumberingType::CHARS_CYRILLIC_LOWER_LETTER_N_SR, S_CYR_A ", " S_CYR_B ", .., " S_CYR_A S_CYR_A ", " S_CYR_B S_CYR_B ", ... (sr)", LANG_ALL}, + {style::NumberingType::CHARS_CYRILLIC_UPPER_LETTER_UK, C_CYR_A ", " C_CYR_B ", .., " C_CYR_A S_CYR_A ", " C_CYR_A S_CYR_B ", ... (uk)", LANG_ALL}, + {style::NumberingType::CHARS_CYRILLIC_LOWER_LETTER_UK, S_CYR_A ", " S_CYR_B ", .., " S_CYR_A S_CYR_A ", " S_CYR_A S_CYR_B ", ... (uk)", LANG_ALL}, + {style::NumberingType::CHARS_CYRILLIC_UPPER_LETTER_N_UK, C_CYR_A ", " C_CYR_B ", .., " C_CYR_A S_CYR_A ", " C_CYR_B S_CYR_B ", ... (uk)", LANG_ALL}, + {style::NumberingType::CHARS_CYRILLIC_LOWER_LETTER_N_UK, S_CYR_A ", " S_CYR_B ", .., " S_CYR_A S_CYR_A ", " S_CYR_B S_CYR_B ", ... (uk)", LANG_ALL}, {style::NumberingType::CHARS_PERSIAN, nullptr, LANG_CTL}, {style::NumberingType::CHARS_PERSIAN_WORD, nullptr, LANG_CTL}, {style::NumberingType::SZEKELY_ROVAS, nullptr, LANG_CTL}, @@ -1127,8 +1174,7 @@ OUString DefaultNumberingProvider::makeNumberingIdentifier(sal_Int16 index) aPropertiesRange[1].Name = "Value"; for (sal_Int32 j = 1; j <= 3; j++) { aPropertiesRange[1].Value <<= j; - result.append( makeNumberingString( aProperties, aLocale ) ); - result.append(", "); + result.append( makeNumberingString( aProperties, aLocale ) + ", " ); } result.append("..."); // Make known duplicate generated identifiers unique. |