1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 #ifndef _L10N_TRANSLITERATION_NUMTOCHAR_H_ 28 #define _L10N_TRANSLITERATION_NUMTOCHAR_H_ 29 30 namespace com { namespace sun { namespace star { namespace i18n { 31 32 static const sal_Int16 NumberChar_HalfWidth = 0; 33 static const sal_Int16 NumberChar_FullWidth = 1; 34 static const sal_Int16 NumberChar_Lower_zh = 2; 35 static const sal_Int16 NumberChar_Upper_zh = 3; 36 static const sal_Int16 NumberChar_Upper_zh_TW = 4; 37 static const sal_Int16 NumberChar_Modern_ja = 5; 38 static const sal_Int16 NumberChar_Traditional_ja= 6; 39 static const sal_Int16 NumberChar_Lower_ko = 7; 40 static const sal_Int16 NumberChar_Upper_ko = 8; 41 static const sal_Int16 NumberChar_Hangul_ko = 9; 42 static const sal_Int16 NumberChar_Indic_ar = 10; 43 static const sal_Int16 NumberChar_EastIndic_ar = 11; 44 static const sal_Int16 NumberChar_Indic_hi = 12; 45 static const sal_Int16 NumberChar_th = 13; 46 static const sal_Int16 NumberChar_Count = 14; 47 48 static const sal_Unicode NumberChar[][10] = { 49 // 0 1 2 3 4 5 6 7 8 9 50 { 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039 }, // Half Width (Ascii) 51 { 0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18, 0xFF19 }, // Full Width 52 { 0x3007, 0x4E00, 0x4E8c, 0x4E09, 0x56DB, 0x4E94, 0x516D, 0x4E03, 0x516B, 0x4E5D }, // Chinese Lower 53 { 0x96F6, 0x58F9, 0x8D30, 0x53C1, 0x8086, 0x4F0D, 0x9646, 0x67D2, 0x634C, 0x7396 }, // S. Chinese Upper 54 { 0x96F6, 0x58F9, 0x8CB3, 0x53C3, 0x8086, 0x4F0D, 0x9678, 0x67D2, 0x634C, 0x7396 }, // T. Chinese Upper 55 { 0x3007, 0x4E00, 0x4E8C, 0x4E09, 0x56DB, 0x4E94, 0x516D, 0x4E03, 0x516B, 0x4E5D }, // Japanese Modern 56 { 0x96F6, 0x58F1, 0x5F10, 0x53C2, 0x56DB, 0x4F0D, 0x516D, 0x4E03, 0x516B, 0x4E5D }, // Japanese Trad. 57 { 0x3007, 0x4E00, 0x4E8C, 0x4E09, 0x56DB, 0x4E94, 0x516D, 0x4E03, 0x516B, 0x4E5D }, // Korean Lower 58 { 0xF9B2, 0x58F9, 0x8CB3, 0x53C3, 0x56DB, 0x4E94, 0x516D, 0x4E03, 0x516B, 0x4E5D }, // Korean Upper 59 { 0xC601, 0xC77C, 0xC774, 0xC0BC, 0xC0AC, 0xC624, 0xC721, 0xCE60, 0xD314, 0xAD6C }, // Korean Hangul 60 { 0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667, 0x0668, 0x0669 }, // Arabic Indic 61 { 0x06F0, 0x06F1, 0x06F2, 0x06F3, 0x06F4, 0x06F5, 0x06F6, 0x06F7, 0x06F8, 0x06F9 }, // Est. Arabic Indic 62 { 0x0966, 0x0967, 0x0968, 0x0969, 0x096A, 0x096B, 0x096C, 0x096D, 0x096E, 0x096F }, // Indic 63 { 0x0E50, 0x0E51, 0x0E52, 0x0E53, 0x0E54, 0x0E55, 0x0E56, 0x0E57, 0x0E58, 0x0E59 } // Thai 64 }; 65 66 // not used 67 #if 0 68 static sal_Unicode DecimalChar[] = { 69 0x002E, // Half Width (Ascii) 70 0xFF0E, // Full Width 71 0xFF0E, // Chinese Lower 72 0x70B9, // S. Chinese Upper 73 0x9EDE, // T. Chinese Upper 74 0x30FB, // Japanese Modern 75 0x30FB, // Japanese Trad. 76 0xFF0E, // Korean Lower 77 0x9EDE, // Korean Upper 78 0xC810, // Korean Hangul 79 0x066B, // Arabic Indic 80 0x002E, // Est. Arabic Indic 81 0x002E, // Indic 82 0x002E // Thai 83 }; 84 #endif 85 86 // not used 87 #if 0 88 static sal_Unicode MinusChar[] = { 89 0x002D, // Half Width (Ascii) 90 0xFF0D, // Full Width 91 0xFF0D, // Chinese Lower 92 0x8D1F, // S. Chinese Upper 93 0x5069, // T. Chinese Upper 94 0x2212, // Japanese Modern 95 0x2212, // Japanese Trad. 96 0xFF0D, // Korean Lower 97 0x5069, // Korean Upper 98 0xFF0D, // Korean Hangul ??? 99 0x002D, // Arabic Indic 100 0x002D, // Est. Arabic Indic 101 0x002D, // Indic 102 0x002D, // Thai 103 }; 104 #endif 105 106 #define NUMBER_ZERO NumberChar[NumberChar_HalfWidth][0] // 0x0030 107 #define NUMBER_ONE NumberChar[NumberChar_HalfWidth][1] // 0x0031 108 #define NUMBER_NINE NumberChar[NumberChar_HalfWidth][9] // 0x0039 109 #define NUMBER_DECIMAL DecimalChar[0] 110 #define NUMBER_MINUS MinusChar[0] 111 #define isNumber(n) ( NUMBER_ZERO <= n && n <= NUMBER_NINE ) 112 #define isDecimal(n) ( n == NUMBER_DECIMAL ) 113 #define isMinus(n) ( n == NUMBER_MINUS ) 114 115 const sal_Int16 Multiplier_Lower_zh = 0; 116 const sal_Int16 Multiplier_Upper_zh = 1; 117 const sal_Int16 Multiplier_Lower_zh_TW = 2; 118 const sal_Int16 Multiplier_Upper_zh_TW = 3; 119 const sal_Int16 Multiplier_Hangul_ko = 4; 120 const sal_Int16 Multiplier_Modern_ja = 5; 121 const sal_Int16 Multiplier_Traditional_ja = 6; 122 const sal_Int16 Multiplier_Count = 7; 123 124 const sal_Int16 ExponentCount_CJK = 6; 125 126 // not used 127 #if 0 128 static sal_Int16 MultiplierExponent_CJK[ExponentCount_CJK] = { 129 12, 8, 4, 3, 2, 1 130 }; 131 static sal_Unicode MultiplierChar_CJK[][ExponentCount_CJK] = { 132 0x5146, 0x4EBF, 0x4E07, 0x5343, 0x767E, 0x5341, // S. Chinese Lower 133 0x5146, 0x4EBF, 0x4E07, 0x4EDF, 0x4F70, 0x62FE, // S. Chinese Upper 134 0x5146, 0x5104, 0x842C, 0x5343, 0x767E, 0x5341, // T. Chinese & Korean Lower 135 0x5146, 0x5104, 0x842C, 0x4EDF, 0x4F70, 0x62FE, // T. Chinese & Korean Upper 136 0xC870, 0xC5B5, 0xB9CC, 0xCC9C, 0xBC31, 0xC2ED, // Korean Hangul 137 0x5146, 0x5104, 0x4E07, 0x5343, 0x767E, 0x5341, // Japanese Modern 138 0x5146, 0x5104, 0x842C, 0x9621, 0x767E, 0x62FE, // Japanese Traditional 139 }; 140 #endif 141 142 const sal_Int16 ExponentCount_short_CJK = 2; 143 144 // not used 145 #if 0 146 static sal_Int16 MultiplierExponent_short_CJK[ExponentCount_short_CJK] = { 147 8, 4, 148 }; 149 150 static sal_Unicode MultiplierChar_short_CJK[][ExponentCount_short_CJK] = { 151 0x4EBF, 0x4E07, // S. Chinese Lower 152 0x4EBF, 0x4E07, // S. Chinese Upper 153 0x5104, 0x842C, // T. Chinese & Korean Lower 154 0x5104, 0x842C, // T. Chinese & Korean Upper 155 0xC5B5, 0xB9CC, // Korean Hangul 156 0x5104, 0x4E07, // Japanese Modern 157 0x5104, 0x842C, // Japanese Traditional 158 }; 159 #endif 160 161 } } } } 162 163 #endif // _L10N_TRANSLITERATION_NUMTOCHAR_H_ 164