xref: /trunk/main/i18npool/source/transliteration/data/numberchar.h (revision 1ecadb572e7010ff3b3382ad9bf179dbc6efadbb)
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