View | Details | Raw Unified | Return to issue 81366
Collapse All | Expand All

(-)inc/i18nutil/oneToOneMapping.hxx (-12 / +50 lines)
Lines 40-68 Link Here
40
40
41
namespace com { namespace sun { namespace star { namespace i18n {
41
namespace com { namespace sun { namespace star { namespace i18n {
42
42
43
class widthfolding;
44
43
typedef std::pair< sal_Unicode, sal_Unicode > OneToOneMappingTable_t;
45
typedef std::pair< sal_Unicode, sal_Unicode > OneToOneMappingTable_t;
44
46
45
#define MAKE_PAIR(item1,item2) std::make_pair< sal_Unicode, sal_Unicode >((sal_Unicode)item1,(sal_Unicode)item2)
47
#define MAKE_PAIR(item1,item2) std::make_pair< sal_Unicode, sal_Unicode >((sal_Unicode)item1,(sal_Unicode)item2)
46
48
49
typedef sal_Int8 UnicodePairFlag;
50
typedef struct _UnicodePairWithFlag
51
{
52
    sal_Unicode     first;
53
    sal_Unicode     second;
54
    UnicodePairFlag flag;
55
} UnicodePairWithFlag;
56
47
class oneToOneMapping
57
class oneToOneMapping
48
{
58
{
59
private:
60
    // no copy, no substitution
61
    oneToOneMapping( const oneToOneMapping& );
62
    oneToOneMapping& operator=( const oneToOneMapping& );
49
public:
63
public:
50
        oneToOneMapping(OneToOneMappingTable_t *_table, const size_t _bytes);
64
    oneToOneMapping( OneToOneMappingTable_t *rpTable, const size_t rnSize, const size_t rnUnitSize = sizeof(OneToOneMappingTable_t) );
51
        ~oneToOneMapping();
65
    virtual ~oneToOneMapping();
66
67
    // make index for fast search
68
    // bluedawrf: not used
69
//        void makeIndex();
70
71
    // binary search
72
    virtual sal_Unicode find( const sal_Unicode nKey ) const;
73
74
    // translator
75
    sal_Unicode operator[] ( const sal_Unicode nKey ) const { return find( nKey ); };
52
76
53
        // make index for fast search
77
protected:
54
        void makeIndex();
78
    OneToOneMappingTable_t *mpTable;
55
        // binary search / idex search
79
    size_t                  mnSize;
56
        sal_Unicode find(const sal_Unicode key) const;
80
};
81
82
class oneToOneMappingWithFlag : public oneToOneMapping
83
{
84
    friend class widthfolding;
85
86
private:
87
    // no copy, no substitution
88
    oneToOneMappingWithFlag( const oneToOneMappingWithFlag& );
89
    oneToOneMappingWithFlag& operator=( const oneToOneMappingWithFlag& );
90
public:
91
    oneToOneMappingWithFlag( UnicodePairWithFlag *rpTableWF, const size_t rnSize, const UnicodePairFlag rnFlag );
92
    virtual ~oneToOneMappingWithFlag();
57
93
58
        // translator
94
    // make index for fast search
59
        sal_Unicode operator[] (const sal_Unicode key) const { return find (key); };
95
    void makeIndex();
60
96
97
    // index search
98
    virtual sal_Unicode find( const sal_Unicode nKey ) const;
61
protected:
99
protected:
62
        OneToOneMappingTable_t *table;
100
    UnicodePairWithFlag  *mpTableWF;
63
        size_t max_size;
101
    UnicodePairFlag       mnFlag;
64
        int *index[256];
102
    UnicodePairWithFlag **mpIndex[256];
65
        sal_Bool hasIndex;
103
    sal_Bool              mbHasIndex;
66
};
104
};
67
105
68
} } } }
106
} } } }
(-)inc/i18nutil/widthfolding.hxx (-1 / +10 lines)
Lines 41-54 Link Here
41
41
42
namespace com { namespace sun { namespace star { namespace i18n {
42
namespace com { namespace sun { namespace star { namespace i18n {
43
43
44
#define WIDTHFOLDNIG_DONT_USE_COMBINED_VU 0x01
45
44
class widthfolding
46
class widthfolding
45
{
47
{
46
public:
48
public:
47
    static oneToOneMapping& getfull2halfTable();
49
    static oneToOneMapping& getfull2halfTable();
48
    static oneToOneMapping& gethalf2fullTable();
50
    static oneToOneMapping& gethalf2fullTable();
51
52
    static oneToOneMapping& getfull2halfTableForASC();
53
    static oneToOneMapping& gethalf2fullTableForJIS();
54
55
    static oneToOneMapping& getfullKana2halfKanaTable();
56
    static oneToOneMapping& gethalfKana2fullKanaTable();
57
    
49
    static rtl::OUString decompose_ja_voiced_sound_marks(const rtl::OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, com::sun::star::uno::Sequence< sal_Int32 >& offset, sal_Bool useOffset);
58
    static rtl::OUString decompose_ja_voiced_sound_marks(const rtl::OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, com::sun::star::uno::Sequence< sal_Int32 >& offset, sal_Bool useOffset);
50
    static sal_Unicode decompose_ja_voiced_sound_marksChar2Char (sal_Unicode inChar);
59
    static sal_Unicode decompose_ja_voiced_sound_marksChar2Char (sal_Unicode inChar);
51
    static rtl::OUString compose_ja_voiced_sound_marks(const rtl::OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, com::sun::star::uno::Sequence< sal_Int32 >& offset, sal_Bool useOffset);
60
    static rtl::OUString compose_ja_voiced_sound_marks(const rtl::OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, com::sun::star::uno::Sequence< sal_Int32 >& offset, sal_Bool useOffset, sal_Int32 nFlags = 0 );
52
    static sal_Unicode getCompositionChar(sal_Unicode c1, sal_Unicode c2);
61
    static sal_Unicode getCompositionChar(sal_Unicode c1, sal_Unicode c2);
53
};
62
};
54
63
(-)source/utility/oneToOneMapping.cxx (-53 / +108 lines)
Lines 37-112 Link Here
37
37
38
namespace com { namespace sun { namespace star { namespace i18n {
38
namespace com { namespace sun { namespace star { namespace i18n {
39
39
40
oneToOneMapping::oneToOneMapping(OneToOneMappingTable_t *_table, const size_t _bytes)
40
oneToOneMapping::oneToOneMapping( OneToOneMappingTable_t *rpTable, const size_t rnBytes, const size_t rnUnitSize )
41
    : mpTable( rpTable ),
42
      mnSize( rnBytes / rnUnitSize )
41
{
43
{
42
	table = _table;
43
	max_size = _bytes / sizeof(std::pair< sal_Unicode, sal_Unicode >);
44
	hasIndex = sal_False;
45
}
44
}
46
45
47
oneToOneMapping::~oneToOneMapping()
46
oneToOneMapping::~oneToOneMapping()
48
{
47
{
49
	if( hasIndex )
50
	    for (int i = 0; i < 256; i++)
51
		if (index[i])
52
		    delete [] index[i];
53
}
48
}
54
49
55
sal_Unicode oneToOneMapping::find(const sal_Unicode key) const 
50
sal_Unicode oneToOneMapping::find(const sal_Unicode nKey) const 
56
{
51
{
57
	if (hasIndex) {
52
    if( mpTable )
58
	    // index search
53
    {
59
	    int high, low;
54
        // binary search
60
	    high = (key >> 8) & 0xFF;
61
	    low = key & 0xFF;
62
	    if (index[high] != (int*)0 && index[high][low] != 0) {
63
	      return table[index[high][low] - 1].second;
64
	    }
65
	    else {
66
	      return sal_Unicode(key);
67
	    }
68
	} else {
69
	    int bottom = 0;
55
	    int bottom = 0;
70
	    int top = max_size - 1;
56
	    int top = mnSize - 1;
71
	    int current;
57
	    int current;
72
58
73
	    for (;;) {
59
	    for (;;) {
74
		current = (top + bottom) / 2;
60
            current = (top + bottom) / 2;
75
		if (key < table[current].first) {
61
            if( nKey < mpTable[current].first )
76
		    top = current - 1;
62
                top = current - 1;
77
		}
63
            else if( nKey > mpTable[current].first )
78
		else if (key > table[current].first) {
64
                bottom = current + 1;
79
		    bottom = current + 1;
65
            else
80
		} else {
66
                return mpTable[current].second;
81
		    return table[current].second;
67
82
		}
68
            if( bottom > top )
83
		if (bottom > top) {
69
                return sal_Unicode( nKey );
84
		    return sal_Unicode(key);
85
		}
86
	    }
70
	    }
87
	}
71
    }
72
    else
73
        return sal_Unicode( nKey );
88
}
74
}
89
75
90
void oneToOneMapping::makeIndex()
76
oneToOneMappingWithFlag::oneToOneMappingWithFlag( UnicodePairWithFlag *rpTableWF, const size_t rnSize, const UnicodePairFlag rnFlag )
77
    : oneToOneMapping( NULL, rnSize, sizeof(UnicodePairWithFlag) ),
78
      mpTableWF ( rpTableWF ),
79
      mnFlag    ( rnFlag ),
80
      mbHasIndex( sal_False )
91
{
81
{
92
	if (!hasIndex) {
82
}
93
	    int i, j, high, low, current = -1;
83
94
	    hasIndex = sal_True;
84
oneToOneMappingWithFlag::~oneToOneMappingWithFlag()
95
	    for (i = 0; i < 256; i++)
85
{
96
		index[i] = (int*)0;
86
	if( mbHasIndex )
97
87
        for( int i = 0; i < 256; i++ )
98
	    for (size_t k = 0; k < max_size; k++) {
88
            if( mpIndex[i] )
99
		high = (table[k].first >> 8) & 0xFF;
89
                delete [] mpIndex[i];
100
		low = (table[k].first) & 0xFF;
90
}
101
		if (high != current) {
91
102
		    current = high;
92
103
		    index[high] = new int[256];
93
void oneToOneMappingWithFlag::makeIndex()
104
		    for (j = 0; j < 256; j++)
94
{
105
			index[high][j] = 0;
95
    if( !mbHasIndex && mpTableWF )
106
		}
96
    {
107
		index[high][low] = k + 1;
97
        int i, j, high, low, current = -1;
98
99
        for( i = 0; i < 256; i++ )
100
            mpIndex[i] = NULL;
101
102
        for( size_t k = 0; k < mnSize; k++ )
103
        {
104
            high = (mpTableWF[k].first >> 8) & 0xFF;
105
            low  = (mpTableWF[k].first)      & 0xFF;
106
            if( high != current )
107
            {
108
                current = high;
109
                mpIndex[high] = new UnicodePairWithFlag*[256];
110
111
                for( j = 0; j < 256; j++ )
112
                    mpIndex[high][j] = NULL;
113
            }
114
            mpIndex[high][low] = &mpTableWF[k];
115
        }
116
117
        mbHasIndex = sal_True;
118
    }
119
}
120
121
sal_Unicode oneToOneMappingWithFlag::find( const sal_Unicode nKey ) const 
122
{
123
    if( mpTableWF )
124
    {
125
        if( mbHasIndex )
126
        {
127
            // index search
128
            int high, low;
129
            high = (nKey >> 8) & 0xFF;
130
            low = nKey & 0xFF;
131
            if( mpIndex[high] != NULL &&
132
                mpIndex[high][low] != NULL &&
133
                mpIndex[high][low]->flag & mnFlag )
134
                return mpIndex[high][low]->second;
135
            else
136
                return sal_Unicode( nKey );
137
        }
138
        else
139
        {
140
            // binary search
141
            int bottom = 0;
142
            int top = mnSize - 1;
143
            int current;
144
145
            for (;;) {
146
                current = (top + bottom) / 2;
147
                if( nKey < mpTableWF[current].first )
148
                    top = current - 1;
149
                else if( nKey > mpTableWF[current].first )
150
                    bottom = current + 1;
151
                else
152
                {
153
                    if( mpTableWF[current].flag & mnFlag )
154
                        return mpTableWF[current].second;
155
                    else
156
                        return sal_Unicode( nKey );
157
                }
158
159
                if( bottom > top )
160
                    return sal_Unicode( nKey );
161
            }
108
	    }
162
	    }
109
	}
163
	}
110
}
164
}
111
165
166
112
} } } }
167
} } } }
(-)source/utility/widthfolding.cxx (-6 / +103 lines)
Lines 111-117 Link Here
111
111
112
oneToOneMapping& widthfolding::getfull2halfTable(void)
112
oneToOneMapping& widthfolding::getfull2halfTable(void)
113
{
113
{
114
    static oneToOneMapping table(full2half, sizeof(full2half)); 
114
    static oneToOneMappingWithFlag table(full2half, sizeof(full2half), FULL2HALF_NORMAL);
115
    table.makeIndex();
115
    table.makeIndex();
116
    return table;
116
    return table;
117
}
117
}
Lines 119-125 Link Here
119
/**
119
/**
120
 * Compose Japanese specific voiced and semi-voiced sound marks.
120
 * Compose Japanese specific voiced and semi-voiced sound marks.
121
 */
121
 */
122
OUString widthfolding::compose_ja_voiced_sound_marks (const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset, sal_Bool useOffset )
122
OUString widthfolding::compose_ja_voiced_sound_marks (const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset, sal_Bool useOffset, sal_Int32 nFlags )
123
{
123
{
124
  // Create a string buffer which can hold nCount + 1 characters.
124
  // Create a string buffer which can hold nCount + 1 characters.
125
  // Its size may become equal to nCount or smaller.
125
  // Its size may become equal to nCount or smaller.
Lines 162-171 Link Here
162
    // see http://charts.unicode.org/Web/U30A0.html Katakana (U+30A0..U+30FF)
162
    // see http://charts.unicode.org/Web/U30A0.html Katakana (U+30A0..U+30FF)
163
    // 0x3099 COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
163
    // 0x3099 COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
164
    // 0x309a COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
164
    // 0x309a COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
165
    int j = currentChar - 0x3099; // 0x3099 or 0x309a ?
165
    // 0x309b KATAKANA-HIRAGANA VOICED SOUND MARK
166
    if (0 <= j && j <= 1) {  // 0 addresses a code point regarding 0x3099, 1 is 0x309a
166
    // 0x309c KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
167
    int j = currentChar - 0x3099; // 0x3099, 0x309a, 0x309b, 0x309c ?
168
169
    if (2 <= j && j <= 3) // 0x309b or 0x309c
170
        j -= 2;
171
172
    if (0 <= j && j <= 1) {
173
      // 0 addresses a code point regarding 0x3099 or 0x309b (voiced sound mark),
174
      // 1 is 0x309a or 0x309c (semi-voiced sound mark)
167
      int i = int(previousChar - 0x3040); // i acts as an index of array
175
      int i = int(previousChar - 0x3040); // i acts as an index of array
168
      if (0 <= i && i <= (0x30ff - 0x3040) && composition_table[i][j]) {
176
      sal_Bool bCompose = sal_False;
177
178
      if (0 <= i && i <= (0x30ff - 0x3040) && composition_table[i][j])
179
        bCompose = sal_True;
180
181
      // not to use combined KATAKANA LETTER VU
182
      if ( previousChar == 0x30a6 && (nFlags & WIDTHFOLDNIG_DONT_USE_COMBINED_VU) )
183
        bCompose = sal_False;
184
185
      if( bCompose ){
169
        if (useOffset) {
186
        if (useOffset) {
170
            position ++;
187
            position ++;
171
            *p ++ = position ++;
188
            *p ++ = position ++;
Lines 199-205 Link Here
199
216
200
oneToOneMapping& widthfolding::gethalf2fullTable(void)
217
oneToOneMapping& widthfolding::gethalf2fullTable(void)
201
{
218
{
202
    static oneToOneMapping table(half2full, sizeof(half2full)); 
219
    static oneToOneMappingWithFlag table(half2full, sizeof(half2full), HALF2FULL_NORMAL);
203
    table.makeIndex();
220
    table.makeIndex();
204
    return table;
221
    return table;
205
}
222
}
Lines 209-212 Link Here
209
    return composition_table[c1 - 0x3040][c2 - 0x3099];
226
    return composition_table[c1 - 0x3040][c2 - 0x3099];
210
}
227
}
211
228
229
230
oneToOneMapping& widthfolding::getfull2halfTableForASC()
231
{
232
    static oneToOneMappingWithFlag table(full2half, sizeof(full2half), FULL2HALF_ASC_FUNCTION);
233
    table.makeIndex();
234
235
    // bluedwarf: dirty hack!
236
    // There is an exception. Additional conversion is required following:
237
    //  0xFFE5 (FULLWIDTH YEN SIGN)  --> 0x005C (REVERSE SOLIDUS)
238
    //
239
    //  See the following page for detail:
240
    // http://wiki.services.openoffice.org/wiki/Calc/Features/JIS_and_ASC_functions
241
    int i, j, high, low;
242
    int n = sizeof(full2halfASCException) / sizeof(UnicodePairWithFlag);
243
    for( i = 0; i < n; i++ )
244
    {
245
        high = (full2halfASCException[i].first >> 8) & 0xFF;
246
        low  = (full2halfASCException[i].first)      & 0xFF;
247
248
        if( !table.mpIndex[high] )
249
        {
250
            table.mpIndex[high] = new UnicodePairWithFlag*[256];
251
252
            for( j = 0; j < 256; j++ )
253
                table.mpIndex[high][j] = NULL;
254
        }
255
        table.mpIndex[high][low] = &full2halfASCException[i];
256
    }
257
258
    return table;
259
}
260
261
oneToOneMapping& widthfolding::gethalf2fullTableForJIS()
262
{
263
    static oneToOneMappingWithFlag table(half2full, sizeof(half2full), HALF2FULL_JIS_FUNCTION);
264
    table.makeIndex();
265
266
    // bluedwarf: dirty hack!
267
    //  There are some exceptions. Additional conversion are required following:
268
    //  0x0022 (QUOTATION MARK)  --> 0x201D (RIGHT DOUBLE QUOTATION MARK)
269
    //  0x0027 (APOSTROPHE)      --> 0x2019 (RIGHT SINGLE QUOTATION MARK)
270
    //  0x005C (REVERSE SOLIDUS) --> 0xFFE5 (FULLWIDTH YEN SIGN)
271
    //  0x0060 (GRAVE ACCENT)    --> 0x2018 (LEFT SINGLE QUOTATION MARK)
272
    //
273
    //  See the following page for detail:
274
    // http://wiki.services.openoffice.org/wiki/Calc/Features/JIS_and_ASC_functions
275
    int i, j, high, low;
276
    int n = sizeof(half2fullJISException) / sizeof(UnicodePairWithFlag);
277
    for( i = 0; i < n; i++ )
278
    {
279
        high = (half2fullJISException[i].first >> 8) & 0xFF;
280
        low  = (half2fullJISException[i].first)      & 0xFF;
281
282
        if( !table.mpIndex[high] )
283
        {
284
            table.mpIndex[high] = new UnicodePairWithFlag*[256];
285
286
            for( j = 0; j < 256; j++ )
287
                table.mpIndex[high][j] = NULL;
288
        }
289
        table.mpIndex[high][low] = &half2fullJISException[i];
290
    }
291
292
    return table;
293
}
294
295
oneToOneMapping& widthfolding::getfullKana2halfKanaTable()
296
{
297
    static oneToOneMappingWithFlag table(full2half, sizeof(full2half), FULL2HALF_KATAKANA_ONLY);
298
    table.makeIndex();
299
    return table;
300
}
301
302
oneToOneMapping& widthfolding::gethalfKana2fullKanaTable()
303
{
304
    static oneToOneMappingWithFlag table(half2full, sizeof(half2full), HALF2FULL_KATAKANA_ONLY);
305
    table.makeIndex();
306
    return table;
307
}
308
212
} } } }
309
} } } }
(-)source/utility/widthfolding_data.h (-514 / +552 lines)
Lines 50-55 Link Here
50
  sal_Unicode decomposited_character_2;
50
  sal_Unicode decomposited_character_2;
51
} decomposition_table_entry_t;
51
} decomposition_table_entry_t;
52
52
53
// bluedwarf:   0x3099 (COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK)
54
//           => 0x309b (KATAKANA-HIRAGANA VOICED SOUND MARK)
55
//
56
//              0x309a (COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK)
57
//           => 0x309c (KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK)
58
//
59
// the combining characters shouldn't be used
53
const decomposition_table_entry_t decomposition_table[] = {
60
const decomposition_table_entry_t decomposition_table[] = {
54
	{ 0x0000, 0x0000 },	// 0x3040
61
	{ 0x0000, 0x0000 },	// 0x3040
55
	{ 0x0000, 0x0000 },	// 0x3041 HIRAGANA LETTER SMALL A
62
	{ 0x0000, 0x0000 },	// 0x3041 HIRAGANA LETTER SMALL A
Lines 63-118 Link Here
63
	{ 0x0000, 0x0000 },	// 0x3049 HIRAGANA LETTER SMALL O
70
	{ 0x0000, 0x0000 },	// 0x3049 HIRAGANA LETTER SMALL O
64
	{ 0x0000, 0x0000 },	// 0x304a HIRAGANA LETTER O
71
	{ 0x0000, 0x0000 },	// 0x304a HIRAGANA LETTER O
65
	{ 0x0000, 0x0000 },	// 0x304b HIRAGANA LETTER KA
72
	{ 0x0000, 0x0000 },	// 0x304b HIRAGANA LETTER KA
66
	{ 0x304b, 0x3099 },	// 0x304c HIRAGANA LETTER GA --> HIRAGANA LETTER KA + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
73
	{ 0x304b, 0x309b },	// 0x304c HIRAGANA LETTER GA --> HIRAGANA LETTER KA + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
67
	{ 0x0000, 0x0000 },	// 0x304d HIRAGANA LETTER KI
74
	{ 0x0000, 0x0000 },	// 0x304d HIRAGANA LETTER KI
68
	{ 0x304d, 0x3099 },	// 0x304e HIRAGANA LETTER GI --> HIRAGANA LETTER KI + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
75
	{ 0x304d, 0x309b },	// 0x304e HIRAGANA LETTER GI --> HIRAGANA LETTER KI + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
69
	{ 0x0000, 0x0000 },	// 0x304f HIRAGANA LETTER KU
76
	{ 0x0000, 0x0000 },	// 0x304f HIRAGANA LETTER KU
70
	{ 0x304f, 0x3099 },	// 0x3050 HIRAGANA LETTER GU --> HIRAGANA LETTER KU + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
77
	{ 0x304f, 0x309b },	// 0x3050 HIRAGANA LETTER GU --> HIRAGANA LETTER KU + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
71
	{ 0x0000, 0x0000 },	// 0x3051 HIRAGANA LETTER KE
78
	{ 0x0000, 0x0000 },	// 0x3051 HIRAGANA LETTER KE
72
	{ 0x3051, 0x3099 },	// 0x3052 HIRAGANA LETTER GE --> HIRAGANA LETTER KE + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
79
	{ 0x3051, 0x309b },	// 0x3052 HIRAGANA LETTER GE --> HIRAGANA LETTER KE + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
73
	{ 0x0000, 0x0000 },	// 0x3053 HIRAGANA LETTER KO
80
	{ 0x0000, 0x0000 },	// 0x3053 HIRAGANA LETTER KO
74
	{ 0x3053, 0x3099 },	// 0x3054 HIRAGANA LETTER GO --> HIRAGANA LETTER KO + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
81
	{ 0x3053, 0x309b },	// 0x3054 HIRAGANA LETTER GO --> HIRAGANA LETTER KO + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
75
	{ 0x0000, 0x0000 },	// 0x3055 HIRAGANA LETTER SA
82
	{ 0x0000, 0x0000 },	// 0x3055 HIRAGANA LETTER SA
76
	{ 0x3055, 0x3099 },	// 0x3056 HIRAGANA LETTER ZA --> HIRAGANA LETTER SA + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
83
	{ 0x3055, 0x309b },	// 0x3056 HIRAGANA LETTER ZA --> HIRAGANA LETTER SA + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
77
	{ 0x0000, 0x0000 },	// 0x3057 HIRAGANA LETTER SI
84
	{ 0x0000, 0x0000 },	// 0x3057 HIRAGANA LETTER SI
78
	{ 0x3057, 0x3099 },	// 0x3058 HIRAGANA LETTER ZI --> HIRAGANA LETTER SI + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
85
	{ 0x3057, 0x309b },	// 0x3058 HIRAGANA LETTER ZI --> HIRAGANA LETTER SI + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
79
	{ 0x0000, 0x0000 },	// 0x3059 HIRAGANA LETTER SU
86
	{ 0x0000, 0x0000 },	// 0x3059 HIRAGANA LETTER SU
80
	{ 0x3059, 0x3099 },	// 0x305a HIRAGANA LETTER ZU --> HIRAGANA LETTER SU + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
87
	{ 0x3059, 0x309b },	// 0x305a HIRAGANA LETTER ZU --> HIRAGANA LETTER SU + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
81
	{ 0x0000, 0x0000 },	// 0x305b HIRAGANA LETTER SE
88
	{ 0x0000, 0x0000 },	// 0x305b HIRAGANA LETTER SE
82
	{ 0x305b, 0x3099 },	// 0x305c HIRAGANA LETTER ZE --> HIRAGANA LETTER SE + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
89
	{ 0x305b, 0x309b },	// 0x305c HIRAGANA LETTER ZE --> HIRAGANA LETTER SE + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
83
	{ 0x0000, 0x0000 },	// 0x305d HIRAGANA LETTER SO
90
	{ 0x0000, 0x0000 },	// 0x305d HIRAGANA LETTER SO
84
	{ 0x305d, 0x3099 },	// 0x305e HIRAGANA LETTER ZO --> HIRAGANA LETTER SO + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
91
	{ 0x305d, 0x309b },	// 0x305e HIRAGANA LETTER ZO --> HIRAGANA LETTER SO + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
85
	{ 0x0000, 0x0000 },	// 0x305f HIRAGANA LETTER TA
92
	{ 0x0000, 0x0000 },	// 0x305f HIRAGANA LETTER TA
86
	{ 0x305f, 0x3099 },	// 0x3060 HIRAGANA LETTER DA --> HIRAGANA LETTER TA + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
93
	{ 0x305f, 0x309b },	// 0x3060 HIRAGANA LETTER DA --> HIRAGANA LETTER TA + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
87
	{ 0x0000, 0x0000 },	// 0x3061 HIRAGANA LETTER TI
94
	{ 0x0000, 0x0000 },	// 0x3061 HIRAGANA LETTER TI
88
	{ 0x3061, 0x3099 },	// 0x3062 HIRAGANA LETTER DI --> HIRAGANA LETTER TI + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
95
	{ 0x3061, 0x309b },	// 0x3062 HIRAGANA LETTER DI --> HIRAGANA LETTER TI + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
89
	{ 0x0000, 0x0000 },	// 0x3063 HIRAGANA LETTER SMALL TU
96
	{ 0x0000, 0x0000 },	// 0x3063 HIRAGANA LETTER SMALL TU
90
	{ 0x0000, 0x0000 },	// 0x3064 HIRAGANA LETTER TU
97
	{ 0x0000, 0x0000 },	// 0x3064 HIRAGANA LETTER TU
91
	{ 0x3064, 0x3099 },	// 0x3065 HIRAGANA LETTER DU --> HIRAGANA LETTER TU + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
98
	{ 0x3064, 0x309b },	// 0x3065 HIRAGANA LETTER DU --> HIRAGANA LETTER TU + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
92
	{ 0x0000, 0x0000 },	// 0x3066 HIRAGANA LETTER TE
99
	{ 0x0000, 0x0000 },	// 0x3066 HIRAGANA LETTER TE
93
	{ 0x3066, 0x3099 },	// 0x3067 HIRAGANA LETTER DE --> HIRAGANA LETTER TE + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
100
	{ 0x3066, 0x309b },	// 0x3067 HIRAGANA LETTER DE --> HIRAGANA LETTER TE + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
94
	{ 0x0000, 0x0000 },	// 0x3068 HIRAGANA LETTER TO
101
	{ 0x0000, 0x0000 },	// 0x3068 HIRAGANA LETTER TO
95
	{ 0x3068, 0x3099 },	// 0x3069 HIRAGANA LETTER DO --> HIRAGANA LETTER TO + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
102
	{ 0x3068, 0x309b },	// 0x3069 HIRAGANA LETTER DO --> HIRAGANA LETTER TO + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
96
	{ 0x0000, 0x0000 },	// 0x306a HIRAGANA LETTER NA
103
	{ 0x0000, 0x0000 },	// 0x306a HIRAGANA LETTER NA
97
	{ 0x0000, 0x0000 },	// 0x306b HIRAGANA LETTER NI
104
	{ 0x0000, 0x0000 },	// 0x306b HIRAGANA LETTER NI
98
	{ 0x0000, 0x0000 },	// 0x306c HIRAGANA LETTER NU
105
	{ 0x0000, 0x0000 },	// 0x306c HIRAGANA LETTER NU
99
	{ 0x0000, 0x0000 },	// 0x306d HIRAGANA LETTER NE
106
	{ 0x0000, 0x0000 },	// 0x306d HIRAGANA LETTER NE
100
	{ 0x0000, 0x0000 },	// 0x306e HIRAGANA LETTER NO
107
	{ 0x0000, 0x0000 },	// 0x306e HIRAGANA LETTER NO
101
	{ 0x0000, 0x0000 },	// 0x306f HIRAGANA LETTER HA
108
	{ 0x0000, 0x0000 },	// 0x306f HIRAGANA LETTER HA
102
	{ 0x306f, 0x3099 },	// 0x3070 HIRAGANA LETTER BA --> HIRAGANA LETTER HA + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
109
	{ 0x306f, 0x309b },	// 0x3070 HIRAGANA LETTER BA --> HIRAGANA LETTER HA + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
103
	{ 0x306f, 0x309a },	// 0x3071 HIRAGANA LETTER PA --> HIRAGANA LETTER HA + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
110
	{ 0x306f, 0x309c },	// 0x3071 HIRAGANA LETTER PA --> HIRAGANA LETTER HA + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
104
	{ 0x0000, 0x0000 },	// 0x3072 HIRAGANA LETTER HI
111
	{ 0x0000, 0x0000 },	// 0x3072 HIRAGANA LETTER HI
105
	{ 0x3072, 0x3099 },	// 0x3073 HIRAGANA LETTER BI --> HIRAGANA LETTER HI + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
112
	{ 0x3072, 0x309b },	// 0x3073 HIRAGANA LETTER BI --> HIRAGANA LETTER HI + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
106
	{ 0x3072, 0x309a },	// 0x3074 HIRAGANA LETTER PI --> HIRAGANA LETTER HI + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
113
	{ 0x3072, 0x309c },	// 0x3074 HIRAGANA LETTER PI --> HIRAGANA LETTER HI + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
107
	{ 0x0000, 0x0000 },	// 0x3075 HIRAGANA LETTER HU
114
	{ 0x0000, 0x0000 },	// 0x3075 HIRAGANA LETTER HU
108
	{ 0x3075, 0x3099 },	// 0x3076 HIRAGANA LETTER BU --> HIRAGANA LETTER HU + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
115
	{ 0x3075, 0x309b },	// 0x3076 HIRAGANA LETTER BU --> HIRAGANA LETTER HU + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
109
	{ 0x3075, 0x309a },	// 0x3077 HIRAGANA LETTER PU --> HIRAGANA LETTER HU + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
116
	{ 0x3075, 0x309c },	// 0x3077 HIRAGANA LETTER PU --> HIRAGANA LETTER HU + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
110
	{ 0x0000, 0x0000 },	// 0x3078 HIRAGANA LETTER HE
117
	{ 0x0000, 0x0000 },	// 0x3078 HIRAGANA LETTER HE
111
	{ 0x3078, 0x3099 },	// 0x3079 HIRAGANA LETTER BE --> HIRAGANA LETTER HE + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
118
	{ 0x3078, 0x309b },	// 0x3079 HIRAGANA LETTER BE --> HIRAGANA LETTER HE + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
112
	{ 0x3078, 0x309a },	// 0x307a HIRAGANA LETTER PE --> HIRAGANA LETTER HE + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
119
	{ 0x3078, 0x309c },	// 0x307a HIRAGANA LETTER PE --> HIRAGANA LETTER HE + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
113
	{ 0x0000, 0x0000 },	// 0x307b HIRAGANA LETTER HO
120
	{ 0x0000, 0x0000 },	// 0x307b HIRAGANA LETTER HO
114
	{ 0x307b, 0x3099 },	// 0x307c HIRAGANA LETTER BO --> HIRAGANA LETTER HO + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
121
	{ 0x307b, 0x309b },	// 0x307c HIRAGANA LETTER BO --> HIRAGANA LETTER HO + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
115
	{ 0x307b, 0x309a },	// 0x307d HIRAGANA LETTER PO --> HIRAGANA LETTER HO + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
122
	{ 0x307b, 0x309c },	// 0x307d HIRAGANA LETTER PO --> HIRAGANA LETTER HO + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
116
	{ 0x0000, 0x0000 },	// 0x307e HIRAGANA LETTER MA
123
	{ 0x0000, 0x0000 },	// 0x307e HIRAGANA LETTER MA
117
	{ 0x0000, 0x0000 },	// 0x307f HIRAGANA LETTER MI
124
	{ 0x0000, 0x0000 },	// 0x307f HIRAGANA LETTER MI
118
	{ 0x0000, 0x0000 },	// 0x3080 HIRAGANA LETTER MU
125
	{ 0x0000, 0x0000 },	// 0x3080 HIRAGANA LETTER MU
Lines 135-141 Link Here
135
	{ 0x0000, 0x0000 },	// 0x3091 HIRAGANA LETTER WE
142
	{ 0x0000, 0x0000 },	// 0x3091 HIRAGANA LETTER WE
136
	{ 0x0000, 0x0000 },	// 0x3092 HIRAGANA LETTER WO
143
	{ 0x0000, 0x0000 },	// 0x3092 HIRAGANA LETTER WO
137
	{ 0x0000, 0x0000 },	// 0x3093 HIRAGANA LETTER N
144
	{ 0x0000, 0x0000 },	// 0x3093 HIRAGANA LETTER N
138
	{ 0x3046, 0x3099 },	// 0x3094 HIRAGANA LETTER VU --> HIRAGANA LETTER U + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
145
	{ 0x3046, 0x309b },	// 0x3094 HIRAGANA LETTER VU --> HIRAGANA LETTER U + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
139
	{ 0x0000, 0x0000 },	// 0x3095
146
	{ 0x0000, 0x0000 },	// 0x3095
140
	{ 0x0000, 0x0000 },	// 0x3096
147
	{ 0x0000, 0x0000 },	// 0x3096
141
	{ 0x0000, 0x0000 },	// 0x3097
148
	{ 0x0000, 0x0000 },	// 0x3097
Lines 159-214 Link Here
159
	{ 0x0000, 0x0000 },	// 0x30a9 KATAKANA LETTER SMALL O
166
	{ 0x0000, 0x0000 },	// 0x30a9 KATAKANA LETTER SMALL O
160
	{ 0x0000, 0x0000 },	// 0x30aa KATAKANA LETTER O
167
	{ 0x0000, 0x0000 },	// 0x30aa KATAKANA LETTER O
161
	{ 0x0000, 0x0000 },	// 0x30ab KATAKANA LETTER KA
168
	{ 0x0000, 0x0000 },	// 0x30ab KATAKANA LETTER KA
162
	{ 0x30ab, 0x3099 },	// 0x30ac KATAKANA LETTER GA --> KATAKANA LETTER KA + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
169
	{ 0x30ab, 0x309b },	// 0x30ac KATAKANA LETTER GA --> KATAKANA LETTER KA + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
163
	{ 0x0000, 0x0000 },	// 0x30ad KATAKANA LETTER KI
170
	{ 0x0000, 0x0000 },	// 0x30ad KATAKANA LETTER KI
164
	{ 0x30ad, 0x3099 },	// 0x30ae KATAKANA LETTER GI --> KATAKANA LETTER KI + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
171
	{ 0x30ad, 0x309b },	// 0x30ae KATAKANA LETTER GI --> KATAKANA LETTER KI + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
165
	{ 0x0000, 0x0000 },	// 0x30af KATAKANA LETTER KU
172
	{ 0x0000, 0x0000 },	// 0x30af KATAKANA LETTER KU
166
	{ 0x30af, 0x3099 },	// 0x30b0 KATAKANA LETTER GU --> KATAKANA LETTER KU + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
173
	{ 0x30af, 0x309b },	// 0x30b0 KATAKANA LETTER GU --> KATAKANA LETTER KU + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
167
	{ 0x0000, 0x0000 },	// 0x30b1 KATAKANA LETTER KE
174
	{ 0x0000, 0x0000 },	// 0x30b1 KATAKANA LETTER KE
168
	{ 0x30b1, 0x3099 },	// 0x30b2 KATAKANA LETTER GE --> KATAKANA LETTER KE + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
175
	{ 0x30b1, 0x309b },	// 0x30b2 KATAKANA LETTER GE --> KATAKANA LETTER KE + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
169
	{ 0x0000, 0x0000 },	// 0x30b3 KATAKANA LETTER KO
176
	{ 0x0000, 0x0000 },	// 0x30b3 KATAKANA LETTER KO
170
	{ 0x30b3, 0x3099 },	// 0x30b4 KATAKANA LETTER GO --> KATAKANA LETTER KO + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
177
	{ 0x30b3, 0x309b },	// 0x30b4 KATAKANA LETTER GO --> KATAKANA LETTER KO + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
171
	{ 0x0000, 0x0000 },	// 0x30b5 KATAKANA LETTER SA
178
	{ 0x0000, 0x0000 },	// 0x30b5 KATAKANA LETTER SA
172
	{ 0x30b5, 0x3099 },	// 0x30b6 KATAKANA LETTER ZA --> KATAKANA LETTER SA + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
179
	{ 0x30b5, 0x309b },	// 0x30b6 KATAKANA LETTER ZA --> KATAKANA LETTER SA + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
173
	{ 0x0000, 0x0000 },	// 0x30b7 KATAKANA LETTER SI
180
	{ 0x0000, 0x0000 },	// 0x30b7 KATAKANA LETTER SI
174
	{ 0x30b7, 0x3099 },	// 0x30b8 KATAKANA LETTER ZI --> KATAKANA LETTER SI + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
181
	{ 0x30b7, 0x309b },	// 0x30b8 KATAKANA LETTER ZI --> KATAKANA LETTER SI + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
175
	{ 0x0000, 0x0000 },	// 0x30b9 KATAKANA LETTER SU
182
	{ 0x0000, 0x0000 },	// 0x30b9 KATAKANA LETTER SU
176
	{ 0x30b9, 0x3099 },	// 0x30ba KATAKANA LETTER ZU --> KATAKANA LETTER SU + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
183
	{ 0x30b9, 0x309b },	// 0x30ba KATAKANA LETTER ZU --> KATAKANA LETTER SU + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
177
	{ 0x0000, 0x0000 },	// 0x30bb KATAKANA LETTER SE
184
	{ 0x0000, 0x0000 },	// 0x30bb KATAKANA LETTER SE
178
	{ 0x30bb, 0x3099 },	// 0x30bc KATAKANA LETTER ZE --> KATAKANA LETTER SE + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
185
	{ 0x30bb, 0x309b },	// 0x30bc KATAKANA LETTER ZE --> KATAKANA LETTER SE + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
179
	{ 0x0000, 0x0000 },	// 0x30bd KATAKANA LETTER SO
186
	{ 0x0000, 0x0000 },	// 0x30bd KATAKANA LETTER SO
180
	{ 0x30bd, 0x3099 },	// 0x30be KATAKANA LETTER ZO --> KATAKANA LETTER SO + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
187
	{ 0x30bd, 0x309b },	// 0x30be KATAKANA LETTER ZO --> KATAKANA LETTER SO + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
181
	{ 0x0000, 0x0000 },	// 0x30bf KATAKANA LETTER TA
188
	{ 0x0000, 0x0000 },	// 0x30bf KATAKANA LETTER TA
182
	{ 0x30bf, 0x3099 },	// 0x30c0 KATAKANA LETTER DA --> KATAKANA LETTER TA + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
189
	{ 0x30bf, 0x309b },	// 0x30c0 KATAKANA LETTER DA --> KATAKANA LETTER TA + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
183
	{ 0x0000, 0x0000 },	// 0x30c1 KATAKANA LETTER TI
190
	{ 0x0000, 0x0000 },	// 0x30c1 KATAKANA LETTER TI
184
	{ 0x30c1, 0x3099 },	// 0x30c2 KATAKANA LETTER DI --> KATAKANA LETTER TI + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
191
	{ 0x30c1, 0x309b },	// 0x30c2 KATAKANA LETTER DI --> KATAKANA LETTER TI + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
185
	{ 0x0000, 0x0000 },	// 0x30c3 KATAKANA LETTER SMALL TU
192
	{ 0x0000, 0x0000 },	// 0x30c3 KATAKANA LETTER SMALL TU
186
	{ 0x0000, 0x0000 },	// 0x30c4 KATAKANA LETTER TU
193
	{ 0x0000, 0x0000 },	// 0x30c4 KATAKANA LETTER TU
187
	{ 0x30c4, 0x3099 },	// 0x30c5 KATAKANA LETTER DU --> KATAKANA LETTER TU + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
194
	{ 0x30c4, 0x309b },	// 0x30c5 KATAKANA LETTER DU --> KATAKANA LETTER TU + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
188
	{ 0x0000, 0x0000 },	// 0x30c6 KATAKANA LETTER TE
195
	{ 0x0000, 0x0000 },	// 0x30c6 KATAKANA LETTER TE
189
	{ 0x30c6, 0x3099 },	// 0x30c7 KATAKANA LETTER DE --> KATAKANA LETTER TE + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
196
	{ 0x30c6, 0x309b },	// 0x30c7 KATAKANA LETTER DE --> KATAKANA LETTER TE + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
190
	{ 0x0000, 0x0000 },	// 0x30c8 KATAKANA LETTER TO
197
	{ 0x0000, 0x0000 },	// 0x30c8 KATAKANA LETTER TO
191
	{ 0x30c8, 0x3099 },	// 0x30c9 KATAKANA LETTER DO --> KATAKANA LETTER TO + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
198
	{ 0x30c8, 0x309b },	// 0x30c9 KATAKANA LETTER DO --> KATAKANA LETTER TO + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
192
	{ 0x0000, 0x0000 },	// 0x30ca KATAKANA LETTER NA
199
	{ 0x0000, 0x0000 },	// 0x30ca KATAKANA LETTER NA
193
	{ 0x0000, 0x0000 },	// 0x30cb KATAKANA LETTER NI
200
	{ 0x0000, 0x0000 },	// 0x30cb KATAKANA LETTER NI
194
	{ 0x0000, 0x0000 },	// 0x30cc KATAKANA LETTER NU
201
	{ 0x0000, 0x0000 },	// 0x30cc KATAKANA LETTER NU
195
	{ 0x0000, 0x0000 },	// 0x30cd KATAKANA LETTER NE
202
	{ 0x0000, 0x0000 },	// 0x30cd KATAKANA LETTER NE
196
	{ 0x0000, 0x0000 },	// 0x30ce KATAKANA LETTER NO
203
	{ 0x0000, 0x0000 },	// 0x30ce KATAKANA LETTER NO
197
	{ 0x0000, 0x0000 },	// 0x30cf KATAKANA LETTER HA
204
	{ 0x0000, 0x0000 },	// 0x30cf KATAKANA LETTER HA
198
	{ 0x30cf, 0x3099 },	// 0x30d0 KATAKANA LETTER BA --> KATAKANA LETTER HA + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
205
	{ 0x30cf, 0x309b },	// 0x30d0 KATAKANA LETTER BA --> KATAKANA LETTER HA + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
199
	{ 0x30cf, 0x309a },	// 0x30d1 KATAKANA LETTER PA --> KATAKANA LETTER HA + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
206
	{ 0x30cf, 0x309c },	// 0x30d1 KATAKANA LETTER PA --> KATAKANA LETTER HA + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
200
	{ 0x0000, 0x0000 },	// 0x30d2 KATAKANA LETTER HI
207
	{ 0x0000, 0x0000 },	// 0x30d2 KATAKANA LETTER HI
201
	{ 0x30d2, 0x3099 },	// 0x30d3 KATAKANA LETTER BI --> KATAKANA LETTER HI + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
208
	{ 0x30d2, 0x309b },	// 0x30d3 KATAKANA LETTER BI --> KATAKANA LETTER HI + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
202
	{ 0x30d2, 0x309a },	// 0x30d4 KATAKANA LETTER PI --> KATAKANA LETTER HI + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
209
	{ 0x30d2, 0x309c },	// 0x30d4 KATAKANA LETTER PI --> KATAKANA LETTER HI + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
203
	{ 0x0000, 0x0000 },	// 0x30d5 KATAKANA LETTER HU
210
	{ 0x0000, 0x0000 },	// 0x30d5 KATAKANA LETTER HU
204
	{ 0x30d5, 0x3099 },	// 0x30d6 KATAKANA LETTER BU --> KATAKANA LETTER HU + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
211
	{ 0x30d5, 0x309b },	// 0x30d6 KATAKANA LETTER BU --> KATAKANA LETTER HU + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
205
	{ 0x30d5, 0x309a },	// 0x30d7 KATAKANA LETTER PU --> KATAKANA LETTER HU + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
212
	{ 0x30d5, 0x309c },	// 0x30d7 KATAKANA LETTER PU --> KATAKANA LETTER HU + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
206
	{ 0x0000, 0x0000 },	// 0x30d8 KATAKANA LETTER HE
213
	{ 0x0000, 0x0000 },	// 0x30d8 KATAKANA LETTER HE
207
	{ 0x30d8, 0x3099 },	// 0x30d9 KATAKANA LETTER BE --> KATAKANA LETTER HE + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
214
	{ 0x30d8, 0x309b },	// 0x30d9 KATAKANA LETTER BE --> KATAKANA LETTER HE + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
208
	{ 0x30d8, 0x309a },	// 0x30da KATAKANA LETTER PE --> KATAKANA LETTER HE + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
215
	{ 0x30d8, 0x309c },	// 0x30da KATAKANA LETTER PE --> KATAKANA LETTER HE + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
209
	{ 0x0000, 0x0000 },	// 0x30db KATAKANA LETTER HO
216
	{ 0x0000, 0x0000 },	// 0x30db KATAKANA LETTER HO
210
	{ 0x30db, 0x3099 },	// 0x30dc KATAKANA LETTER BO --> KATAKANA LETTER HO + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
217
	{ 0x30db, 0x309b },	// 0x30dc KATAKANA LETTER BO --> KATAKANA LETTER HO + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
211
	{ 0x30db, 0x309a },	// 0x30dd KATAKANA LETTER PO --> KATAKANA LETTER HO + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
218
	{ 0x30db, 0x309c },	// 0x30dd KATAKANA LETTER PO --> KATAKANA LETTER HO + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
212
	{ 0x0000, 0x0000 },	// 0x30de KATAKANA LETTER MA
219
	{ 0x0000, 0x0000 },	// 0x30de KATAKANA LETTER MA
213
	{ 0x0000, 0x0000 },	// 0x30df KATAKANA LETTER MI
220
	{ 0x0000, 0x0000 },	// 0x30df KATAKANA LETTER MI
214
	{ 0x0000, 0x0000 },	// 0x30e0 KATAKANA LETTER MU
221
	{ 0x0000, 0x0000 },	// 0x30e0 KATAKANA LETTER MU
Lines 231-243 Link Here
231
	{ 0x0000, 0x0000 },	// 0x30f1 KATAKANA LETTER WE
238
	{ 0x0000, 0x0000 },	// 0x30f1 KATAKANA LETTER WE
232
	{ 0x0000, 0x0000 },	// 0x30f2 KATAKANA LETTER WO
239
	{ 0x0000, 0x0000 },	// 0x30f2 KATAKANA LETTER WO
233
	{ 0x0000, 0x0000 },	// 0x30f3 KATAKANA LETTER N
240
	{ 0x0000, 0x0000 },	// 0x30f3 KATAKANA LETTER N
234
	{ 0x30a6, 0x3099 },	// 0x30f4 KATAKANA LETTER VU --> KATAKANA LETTER U + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
241
	{ 0x30a6, 0x309b },	// 0x30f4 KATAKANA LETTER VU --> KATAKANA LETTER U + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
235
	{ 0x0000, 0x0000 },	// 0x30f5 KATAKANA LETTER SMALL KA
242
	{ 0x0000, 0x0000 },	// 0x30f5 KATAKANA LETTER SMALL KA
236
	{ 0x0000, 0x0000 },	// 0x30f6 KATAKANA LETTER SMALL KE
243
	{ 0x0000, 0x0000 },	// 0x30f6 KATAKANA LETTER SMALL KE
237
	{ 0x30ef, 0x3099 },	// 0x30f7 KATAKANA LETTER VA --> KATAKANA LETTER WA + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
244
	{ 0x30ef, 0x309b },	// 0x30f7 KATAKANA LETTER VA --> KATAKANA LETTER WA + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
238
	{ 0x30f0, 0x3099 },	// 0x30f8 KATAKANA LETTER VI --> KATAKANA LETTER WI + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
245
	{ 0x30f0, 0x309b },	// 0x30f8 KATAKANA LETTER VI --> KATAKANA LETTER WI + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
239
	{ 0x30f1, 0x3099 },	// 0x30f9 KATAKANA LETTER VE --> KATAKANA LETTER WE + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
246
	{ 0x30f1, 0x309b },	// 0x30f9 KATAKANA LETTER VE --> KATAKANA LETTER WE + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
240
	{ 0x30f2, 0x3099 },	// 0x30fa KATAKANA LETTER VO --> KATAKANA LETTER WO + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
247
	{ 0x30f2, 0x309b },	// 0x30fa KATAKANA LETTER VO --> KATAKANA LETTER WO + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
241
	{ 0x0000, 0x0000 },	// 0x30fb KATAKANA MIDDLE DOT
248
	{ 0x0000, 0x0000 },	// 0x30fb KATAKANA MIDDLE DOT
242
	{ 0x0000, 0x0000 },	// 0x30fc KATAKANA-HIRAGANA PROLONGED SOUND MARK
249
	{ 0x0000, 0x0000 },	// 0x30fc KATAKANA-HIRAGANA PROLONGED SOUND MARK
243
	{ 0x0000, 0x0000 },	// 0x30fd KATAKANA ITERATION MARK
250
	{ 0x0000, 0x0000 },	// 0x30fd KATAKANA ITERATION MARK
Lines 253-491 Link Here
253
  http://charts.unicode.org/Web/UFF00.html 
260
  http://charts.unicode.org/Web/UFF00.html 
254
*/
261
*/
255
262
256
OneToOneMappingTable_t full2half[] = {	
263
#define FULL2HALF_NORMAL              0x01
257
  MAKE_PAIR( 0x2190, 0xFFE9 ),	// LEFTWARDS ARROW --> HALFWIDTH LEFTWARDS ARROW
264
#define FULL2HALF_ASC_FUNCTION        0x02
258
  MAKE_PAIR( 0x2191, 0xFFEA ),	// UPWARDS ARROW --> HALFWIDTH UPWARDS ARROW
265
#define FULL2HALF_KATAKANA_ONLY       0x04 
259
  MAKE_PAIR( 0x2192, 0xFFEB ),	// RIGHTWARDS ARROW --> HALFWIDTH RIGHTWARDS ARROW
266
 
260
  MAKE_PAIR( 0x2193, 0xFFEC ),	// DOWNWARDS ARROW --> HALFWIDTH DOWNWARDS ARROW
267
UnicodePairWithFlag full2half[] = {
261
268
    { 0x2015, 0xFF70, FULL2HALF_ASC_FUNCTION },  // HORIZONTAL BAR --> KATAKANA-HIRAGANA PROLONGED SOUND MARK
262
//MAKE_PAIR( 0x2212, 0x002D ),	// MINUS SIGN --> HYPHEN-MINUS
269
    { 0x2018, 0x0060, FULL2HALF_ASC_FUNCTION },  // LEFT SINGLE QUOTATION MARK => GRAVE ACCENT
263
270
    { 0x2019, 0x0027, FULL2HALF_ASC_FUNCTION },  // RIGHT SINGLE QUOTATION MARK => APOSTROPHE
264
  MAKE_PAIR( 0x2502, 0xFFE8 ),	// BOX DRAWINGS LIGHT VERTICAL --> HALFWIDTH FORMS LIGHT VERTICAL
271
    { 0x201D, 0x0022, FULL2HALF_ASC_FUNCTION },  // RIGHT DOUBLE QUOTATION MARK => QUOTATION MARK
265
  MAKE_PAIR( 0x25A0, 0xFFED ),	// BLACK SQUARE --> HALFWIDTH BLACK SQUARE
272
    { 0x2190, 0xFFE9, FULL2HALF_NORMAL },  // LEFTWARDS ARROW --> HALFWIDTH LEFTWARDS ARROW
266
  MAKE_PAIR( 0x25CB, 0xFFEE ),	// WHITE CIRCLE --> HALFWIDTH WHITE CIRCLE
273
    { 0x2191, 0xFFEA, FULL2HALF_NORMAL },  // UPWARDS ARROW --> HALFWIDTH UPWARDS ARROW
267
  MAKE_PAIR( 0x3000, 0x0020 ),	// IDEOGRAPHIC SPACE --> SPACE
274
    { 0x2192, 0xFFEB, FULL2HALF_NORMAL },  // RIGHTWARDS ARROW --> HALFWIDTH RIGHTWARDS ARROW
268
  MAKE_PAIR( 0x3001, 0xFF64 ),	// IDEOGRAPHIC COMMA --> HALFWIDTH IDEOGRAPHIC COMMA
275
    { 0x2193, 0xFFEC, FULL2HALF_NORMAL },  // DOWNWARDS ARROW --> HALFWIDTH DOWNWARDS ARROW
269
  MAKE_PAIR( 0x3002, 0xFF61 ),	// IDEOGRAPHIC FULL STOP --> HALFWIDTH IDEOGRAPHIC FULL STOP
276
    { 0x2502, 0xFFE8, FULL2HALF_NORMAL },  // BOX DRAWINGS LIGHT VERTICAL --> HALFWIDTH FORMS LIGHT VERTICAL
270
  MAKE_PAIR( 0x300C, 0xFF62 ),	// LEFT CORNER BRACKET --> HALFWIDTH LEFT CORNER BRACKET
277
    { 0x25A0, 0xFFED, FULL2HALF_NORMAL },  // BLACK SQUARE --> HALFWIDTH BLACK SQUARE
271
  MAKE_PAIR( 0x300D, 0xFF63 ),	// RIGHT CORNER BRACKET --> HALFWIDTH RIGHT CORNER BRACKET
278
    { 0x25CB, 0xFFEE, FULL2HALF_NORMAL },  // WHITE CIRCLE --> HALFWIDTH WHITE CIRCLE
272
  MAKE_PAIR( 0x3099, 0xFF9E ),	// COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK --> HALFWIDTH KATAKANA VOICED SOUND MARK
279
    { 0x3000, 0x0020, FULL2HALF_NORMAL },  // IDEOGRAPHIC SPACE --> SPACE
273
  MAKE_PAIR( 0x309A, 0xFF9F ),	// COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK --> HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
280
    { 0x3001, 0xFF64, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // IDEOGRAPHIC COMMA --> HALFWIDTH IDEOGRAPHIC COMMA
274
  MAKE_PAIR( 0x30A1, 0xFF67 ),	// KATAKANA LETTER SMALL A --> HALFWIDTH KATAKANA LETTER SMALL A
281
    { 0x3002, 0xFF61, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // IDEOGRAPHIC FULL STOP --> HALFWIDTH IDEOGRAPHIC FULL STOP
275
  MAKE_PAIR( 0x30A2, 0xFF71 ),	// KATAKANA LETTER A --> HALFWIDTH KATAKANA LETTER A
282
    { 0x300C, 0xFF62, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // LEFT CORNER BRACKET --> HALFWIDTH LEFT CORNER BRACKET
276
  MAKE_PAIR( 0x30A3, 0xFF68 ),	// KATAKANA LETTER SMALL I --> HALFWIDTH KATAKANA LETTER SMALL I
283
    { 0x300D, 0xFF63, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // RIGHT CORNER BRACKET --> HALFWIDTH RIGHT CORNER BRACKET
277
  MAKE_PAIR( 0x30A4, 0xFF72 ),	// KATAKANA LETTER I --> HALFWIDTH KATAKANA LETTER I
284
    { 0x3099, 0xFF9E, FULL2HALF_NORMAL },  // COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK --> HALFWIDTH KATAKANA VOICED SOUND MARK
278
  MAKE_PAIR( 0x30A5, 0xFF69 ),	// KATAKANA LETTER SMALL U --> HALFWIDTH KATAKANA LETTER SMALL U
285
    { 0x309A, 0xFF9F, FULL2HALF_NORMAL },  // COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK --> HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
279
  MAKE_PAIR( 0x30A6, 0xFF73 ),	// KATAKANA LETTER U --> HALFWIDTH KATAKANA LETTER U
286
280
  MAKE_PAIR( 0x30A7, 0xFF6A ),	// KATAKANA LETTER SMALL E --> HALFWIDTH KATAKANA LETTER SMALL E
287
// bluedwarf: Added normal (semi-)voiced sound mark
281
  MAKE_PAIR( 0x30A8, 0xFF74 ),	// KATAKANA LETTER E --> HALFWIDTH KATAKANA LETTER E
288
    { 0x309B, 0xFF9E, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA-HIRAGANA VOICED SOUND MARK --> HALFWIDTH KATAKANA VOICED SOUND MARK
282
  MAKE_PAIR( 0x30A9, 0xFF6B ),	// KATAKANA LETTER SMALL O --> HALFWIDTH KATAKANA LETTER SMALL O
289
    { 0x309C, 0xFF9F, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK --> HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
283
  MAKE_PAIR( 0x30AA, 0xFF75 ),	// KATAKANA LETTER O --> HALFWIDTH KATAKANA LETTER O
290
284
  MAKE_PAIR( 0x30AB, 0xFF76 ),	// KATAKANA LETTER KA --> HALFWIDTH KATAKANA LETTER KA
291
    { 0x30A1, 0xFF67, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER SMALL A --> HALFWIDTH KATAKANA LETTER SMALL A
285
  MAKE_PAIR( 0x30AD, 0xFF77 ),	// KATAKANA LETTER KI --> HALFWIDTH KATAKANA LETTER KI
292
    { 0x30A2, 0xFF71, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER A --> HALFWIDTH KATAKANA LETTER A
286
  MAKE_PAIR( 0x30AF, 0xFF78 ),	// KATAKANA LETTER KU --> HALFWIDTH KATAKANA LETTER KU
293
    { 0x30A3, 0xFF68, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER SMALL I --> HALFWIDTH KATAKANA LETTER SMALL I
287
  MAKE_PAIR( 0x30B1, 0xFF79 ),	// KATAKANA LETTER KE --> HALFWIDTH KATAKANA LETTER KE
294
    { 0x30A4, 0xFF72, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER I --> HALFWIDTH KATAKANA LETTER I
288
  MAKE_PAIR( 0x30B3, 0xFF7A ),	// KATAKANA LETTER KO --> HALFWIDTH KATAKANA LETTER KO
295
    { 0x30A5, 0xFF69, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER SMALL U --> HALFWIDTH KATAKANA LETTER SMALL U
289
  MAKE_PAIR( 0x30B5, 0xFF7B ),	// KATAKANA LETTER SA --> HALFWIDTH KATAKANA LETTER SA
296
    { 0x30A6, 0xFF73, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER U --> HALFWIDTH KATAKANA LETTER U
290
  MAKE_PAIR( 0x30B7, 0xFF7C ),	// KATAKANA LETTER SI --> HALFWIDTH KATAKANA LETTER SI
297
    { 0x30A7, 0xFF6A, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER SMALL E --> HALFWIDTH KATAKANA LETTER SMALL E
291
  MAKE_PAIR( 0x30B9, 0xFF7D ),	// KATAKANA LETTER SU --> HALFWIDTH KATAKANA LETTER SU
298
    { 0x30A8, 0xFF74, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER E --> HALFWIDTH KATAKANA LETTER E
292
  MAKE_PAIR( 0x30BB, 0xFF7E ),	// KATAKANA LETTER SE --> HALFWIDTH KATAKANA LETTER SE
299
    { 0x30A9, 0xFF6B, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER SMALL O --> HALFWIDTH KATAKANA LETTER SMALL O
293
  MAKE_PAIR( 0x30BD, 0xFF7F ),	// KATAKANA LETTER SO --> HALFWIDTH KATAKANA LETTER SO
300
    { 0x30AA, 0xFF75, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER O --> HALFWIDTH KATAKANA LETTER O
294
  MAKE_PAIR( 0x30BF, 0xFF80 ),	// KATAKANA LETTER TA --> HALFWIDTH KATAKANA LETTER TA
301
    { 0x30AB, 0xFF76, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER KA --> HALFWIDTH KATAKANA LETTER KA
295
  MAKE_PAIR( 0x30C1, 0xFF81 ),	// KATAKANA LETTER TI --> HALFWIDTH KATAKANA LETTER TI
302
    { 0x30AD, 0xFF77, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER KI --> HALFWIDTH KATAKANA LETTER KI
296
  MAKE_PAIR( 0x30C3, 0xFF6F ),	// KATAKANA LETTER SMALL TU --> HALFWIDTH KATAKANA LETTER SMALL TU
303
    { 0x30AF, 0xFF78, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER KU --> HALFWIDTH KATAKANA LETTER KU
297
  MAKE_PAIR( 0x30C4, 0xFF82 ),	// KATAKANA LETTER TU --> HALFWIDTH KATAKANA LETTER TU
304
    { 0x30B1, 0xFF79, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER KE --> HALFWIDTH KATAKANA LETTER KE
298
  MAKE_PAIR( 0x30C6, 0xFF83 ),	// KATAKANA LETTER TE --> HALFWIDTH KATAKANA LETTER TE
305
    { 0x30B3, 0xFF7A, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER KO --> HALFWIDTH KATAKANA LETTER KO
299
  MAKE_PAIR( 0x30C8, 0xFF84 ),	// KATAKANA LETTER TO --> HALFWIDTH KATAKANA LETTER TO
306
    { 0x30B5, 0xFF7B, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER SA --> HALFWIDTH KATAKANA LETTER SA
300
  MAKE_PAIR( 0x30CA, 0xFF85 ),	// KATAKANA LETTER NA --> HALFWIDTH KATAKANA LETTER NA
307
    { 0x30B7, 0xFF7C, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER SI --> HALFWIDTH KATAKANA LETTER SI
301
  MAKE_PAIR( 0x30CB, 0xFF86 ),	// KATAKANA LETTER NI --> HALFWIDTH KATAKANA LETTER NI
308
    { 0x30B9, 0xFF7D, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER SU --> HALFWIDTH KATAKANA LETTER SU
302
  MAKE_PAIR( 0x30CC, 0xFF87 ),	// KATAKANA LETTER NU --> HALFWIDTH KATAKANA LETTER NU
309
    { 0x30BB, 0xFF7E, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER SE --> HALFWIDTH KATAKANA LETTER SE
303
  MAKE_PAIR( 0x30CD, 0xFF88 ),	// KATAKANA LETTER NE --> HALFWIDTH KATAKANA LETTER NE
310
    { 0x30BD, 0xFF7F, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER SO --> HALFWIDTH KATAKANA LETTER SO
304
  MAKE_PAIR( 0x30CE, 0xFF89 ),	// KATAKANA LETTER NO --> HALFWIDTH KATAKANA LETTER NO
311
    { 0x30BF, 0xFF80, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER TA --> HALFWIDTH KATAKANA LETTER TA
305
  MAKE_PAIR( 0x30CF, 0xFF8A ),	// KATAKANA LETTER HA --> HALFWIDTH KATAKANA LETTER HA
312
    { 0x30C1, 0xFF81, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER TI --> HALFWIDTH KATAKANA LETTER TI
306
  MAKE_PAIR( 0x30D2, 0xFF8B ),	// KATAKANA LETTER HI --> HALFWIDTH KATAKANA LETTER HI
313
    { 0x30C3, 0xFF6F, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER SMALL TU --> HALFWIDTH KATAKANA LETTER SMALL TU
307
  MAKE_PAIR( 0x30D5, 0xFF8C ),	// KATAKANA LETTER HU --> HALFWIDTH KATAKANA LETTER HU
314
    { 0x30C4, 0xFF82, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER TU --> HALFWIDTH KATAKANA LETTER TU
308
  MAKE_PAIR( 0x30D8, 0xFF8D ),	// KATAKANA LETTER HE --> HALFWIDTH KATAKANA LETTER HE
315
    { 0x30C6, 0xFF83, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER TE --> HALFWIDTH KATAKANA LETTER TE
309
  MAKE_PAIR( 0x30DB, 0xFF8E ),	// KATAKANA LETTER HO --> HALFWIDTH KATAKANA LETTER HO
316
    { 0x30C8, 0xFF84, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER TO --> HALFWIDTH KATAKANA LETTER TO
310
  MAKE_PAIR( 0x30DE, 0xFF8F ),	// KATAKANA LETTER MA --> HALFWIDTH KATAKANA LETTER MA
317
    { 0x30CA, 0xFF85, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER NA --> HALFWIDTH KATAKANA LETTER NA
311
  MAKE_PAIR( 0x30DF, 0xFF90 ),	// KATAKANA LETTER MI --> HALFWIDTH KATAKANA LETTER MI
318
    { 0x30CB, 0xFF86, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER NI --> HALFWIDTH KATAKANA LETTER NI
312
  MAKE_PAIR( 0x30E0, 0xFF91 ),	// KATAKANA LETTER MU --> HALFWIDTH KATAKANA LETTER MU
319
    { 0x30CC, 0xFF87, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER NU --> HALFWIDTH KATAKANA LETTER NU
313
  MAKE_PAIR( 0x30E1, 0xFF92 ),	// KATAKANA LETTER ME --> HALFWIDTH KATAKANA LETTER ME
320
    { 0x30CD, 0xFF88, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER NE --> HALFWIDTH KATAKANA LETTER NE
314
  MAKE_PAIR( 0x30E2, 0xFF93 ),	// KATAKANA LETTER MO --> HALFWIDTH KATAKANA LETTER MO
321
    { 0x30CE, 0xFF89, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER NO --> HALFWIDTH KATAKANA LETTER NO
315
  MAKE_PAIR( 0x30E3, 0xFF6C ),	// KATAKANA LETTER SMALL YA --> HALFWIDTH KATAKANA LETTER SMALL YA
322
    { 0x30CF, 0xFF8A, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER HA --> HALFWIDTH KATAKANA LETTER HA
316
  MAKE_PAIR( 0x30E4, 0xFF94 ),	// KATAKANA LETTER YA --> HALFWIDTH KATAKANA LETTER YA
323
    { 0x30D2, 0xFF8B, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER HI --> HALFWIDTH KATAKANA LETTER HI
317
  MAKE_PAIR( 0x30E5, 0xFF6D ),	// KATAKANA LETTER SMALL YU --> HALFWIDTH KATAKANA LETTER SMALL YU
324
    { 0x30D5, 0xFF8C, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER HU --> HALFWIDTH KATAKANA LETTER HU
318
  MAKE_PAIR( 0x30E6, 0xFF95 ),	// KATAKANA LETTER YU --> HALFWIDTH KATAKANA LETTER YU
325
    { 0x30D8, 0xFF8D, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER HE --> HALFWIDTH KATAKANA LETTER HE
319
  MAKE_PAIR( 0x30E7, 0xFF6E ),	// KATAKANA LETTER SMALL YO --> HALFWIDTH KATAKANA LETTER SMALL YO
326
    { 0x30DB, 0xFF8E, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER HO --> HALFWIDTH KATAKANA LETTER HO
320
  MAKE_PAIR( 0x30E8, 0xFF96 ),	// KATAKANA LETTER YO --> HALFWIDTH KATAKANA LETTER YO
327
    { 0x30DE, 0xFF8F, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER MA --> HALFWIDTH KATAKANA LETTER MA
321
  MAKE_PAIR( 0x30E9, 0xFF97 ),	// KATAKANA LETTER RA --> HALFWIDTH KATAKANA LETTER RA
328
    { 0x30DF, 0xFF90, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER MI --> HALFWIDTH KATAKANA LETTER MI
322
  MAKE_PAIR( 0x30EA, 0xFF98 ),	// KATAKANA LETTER RI --> HALFWIDTH KATAKANA LETTER RI
329
    { 0x30E0, 0xFF91, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER MU --> HALFWIDTH KATAKANA LETTER MU
323
  MAKE_PAIR( 0x30EB, 0xFF99 ),	// KATAKANA LETTER RU --> HALFWIDTH KATAKANA LETTER RU
330
    { 0x30E1, 0xFF92, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER ME --> HALFWIDTH KATAKANA LETTER ME
324
  MAKE_PAIR( 0x30EC, 0xFF9A ),	// KATAKANA LETTER RE --> HALFWIDTH KATAKANA LETTER RE
331
    { 0x30E2, 0xFF93, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER MO --> HALFWIDTH KATAKANA LETTER MO
325
  MAKE_PAIR( 0x30ED, 0xFF9B ),	// KATAKANA LETTER RO --> HALFWIDTH KATAKANA LETTER RO
332
    { 0x30E3, 0xFF6C, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER SMALL YA --> HALFWIDTH KATAKANA LETTER SMALL YA
326
  MAKE_PAIR( 0x30EF, 0xFF9C ),	// KATAKANA LETTER WA --> HALFWIDTH KATAKANA LETTER WA
333
    { 0x30E4, 0xFF94, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER YA --> HALFWIDTH KATAKANA LETTER YA
327
  MAKE_PAIR( 0x30F2, 0xFF66 ),	// KATAKANA LETTER WO --> HALFWIDTH KATAKANA LETTER WO
334
    { 0x30E5, 0xFF6D, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER SMALL YU --> HALFWIDTH KATAKANA LETTER SMALL YU
328
  MAKE_PAIR( 0x30F3, 0xFF9D ),	// KATAKANA LETTER N --> HALFWIDTH KATAKANA LETTER N
335
    { 0x30E6, 0xFF95, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER YU --> HALFWIDTH KATAKANA LETTER YU
329
  MAKE_PAIR( 0x30FB, 0xFF65 ),	// KATAKANA MIDDLE DOT --> HALFWIDTH KATAKANA MIDDLE DOT
336
    { 0x30E7, 0xFF6E, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER SMALL YO --> HALFWIDTH KATAKANA LETTER SMALL YO
330
  MAKE_PAIR( 0x30FC, 0xFF70 ),	// KATAKANA-HIRAGANA PROLONGED SOUND MARK --> HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
337
    { 0x30E8, 0xFF96, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER YO --> HALFWIDTH KATAKANA LETTER YO
331
  MAKE_PAIR( 0x3131, 0xFFA1 ),	// HANGUL LETTER KIYEOK --> HALFWIDTH HANGUL LETTER KIYEOK
338
    { 0x30E9, 0xFF97, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER RA --> HALFWIDTH KATAKANA LETTER RA
332
  MAKE_PAIR( 0x3132, 0xFFA2 ),	// HANGUL LETTER SSANGKIYEOK --> HALFWIDTH HANGUL LETTER SSANGKIYEOK
339
    { 0x30EA, 0xFF98, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER RI --> HALFWIDTH KATAKANA LETTER RI
333
  MAKE_PAIR( 0x3133, 0xFFA3 ),	// HANGUL LETTER KIYEOK-SIOS --> HALFWIDTH HANGUL LETTER KIYEOK-SIOS
340
    { 0x30EB, 0xFF99, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER RU --> HALFWIDTH KATAKANA LETTER RU
334
  MAKE_PAIR( 0x3134, 0xFFA4 ),	// HANGUL LETTER NIEUN --> HALFWIDTH HANGUL LETTER NIEUN
341
    { 0x30EC, 0xFF9A, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER RE --> HALFWIDTH KATAKANA LETTER RE
335
  MAKE_PAIR( 0x3135, 0xFFA5 ),	// HANGUL LETTER NIEUN-CIEUC --> HALFWIDTH HANGUL LETTER NIEUN-CIEUC
342
    { 0x30ED, 0xFF9B, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER RO --> HALFWIDTH KATAKANA LETTER RO
336
  MAKE_PAIR( 0x3136, 0xFFA6 ),	// HANGUL LETTER NIEUN-HIEUH --> HALFWIDTH HANGUL LETTER NIEUN-HIEUH
343
    { 0x30EF, 0xFF9C, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER WA --> HALFWIDTH KATAKANA LETTER WA
337
  MAKE_PAIR( 0x3137, 0xFFA7 ),	// HANGUL LETTER TIKEUT --> HALFWIDTH HANGUL LETTER TIKEUT
344
    { 0x30F2, 0xFF66, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER WO --> HALFWIDTH KATAKANA LETTER WO
338
  MAKE_PAIR( 0x3138, 0xFFA8 ),	// HANGUL LETTER SSANGTIKEUT --> HALFWIDTH HANGUL LETTER SSANGTIKEUT
345
    { 0x30F3, 0xFF9D, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION | FULL2HALF_KATAKANA_ONLY },  // KATAKANA LETTER N --> HALFWIDTH KATAKANA LETTER N
339
  MAKE_PAIR( 0x3139, 0xFFA9 ),	// HANGUL LETTER RIEUL --> HALFWIDTH HANGUL LETTER RIEUL
346
    { 0x30FB, 0xFF65, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // KATAKANA MIDDLE DOT --> HALFWIDTH KATAKANA MIDDLE DOT
340
  MAKE_PAIR( 0x313A, 0xFFAA ),	// HANGUL LETTER RIEUL-KIYEOK --> HALFWIDTH HANGUL LETTER RIEUL-KIYEOK
347
    { 0x30FC, 0xFF70, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // KATAKANA-HIRAGANA PROLONGED SOUND MARK --> HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
341
  MAKE_PAIR( 0x313B, 0xFFAB ),	// HANGUL LETTER RIEUL-MIEUM --> HALFWIDTH HANGUL LETTER RIEUL-MIEUM
348
    { 0x3131, 0xFFA1, FULL2HALF_NORMAL },  // HANGUL LETTER KIYEOK --> HALFWIDTH HANGUL LETTER KIYEOK
342
  MAKE_PAIR( 0x313C, 0xFFAC ),	// HANGUL LETTER RIEUL-PIEUP --> HALFWIDTH HANGUL LETTER RIEUL-PIEUP
349
    { 0x3132, 0xFFA2, FULL2HALF_NORMAL },  // HANGUL LETTER SSANGKIYEOK --> HALFWIDTH HANGUL LETTER SSANGKIYEOK
343
  MAKE_PAIR( 0x313D, 0xFFAD ),	// HANGUL LETTER RIEUL-SIOS --> HALFWIDTH HANGUL LETTER RIEUL-SIOS
350
    { 0x3133, 0xFFA3, FULL2HALF_NORMAL },  // HANGUL LETTER KIYEOK-SIOS --> HALFWIDTH HANGUL LETTER KIYEOK-SIOS
344
  MAKE_PAIR( 0x313E, 0xFFAE ),	// HANGUL LETTER RIEUL-THIEUTH --> HALFWIDTH HANGUL LETTER RIEUL-THIEUTH
351
    { 0x3134, 0xFFA4, FULL2HALF_NORMAL },  // HANGUL LETTER NIEUN --> HALFWIDTH HANGUL LETTER NIEUN
345
  MAKE_PAIR( 0x313F, 0xFFAF ),	// HANGUL LETTER RIEUL-PHIEUPH --> HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH
352
    { 0x3135, 0xFFA5, FULL2HALF_NORMAL },  // HANGUL LETTER NIEUN-CIEUC --> HALFWIDTH HANGUL LETTER NIEUN-CIEUC
346
  MAKE_PAIR( 0x3140, 0xFFB0 ),	// HANGUL LETTER RIEUL-HIEUH --> HALFWIDTH HANGUL LETTER RIEUL-HIEUH
353
    { 0x3136, 0xFFA6, FULL2HALF_NORMAL },  // HANGUL LETTER NIEUN-HIEUH --> HALFWIDTH HANGUL LETTER NIEUN-HIEUH
347
  MAKE_PAIR( 0x3141, 0xFFB1 ),	// HANGUL LETTER MIEUM --> HALFWIDTH HANGUL LETTER MIEUM
354
    { 0x3137, 0xFFA7, FULL2HALF_NORMAL },  // HANGUL LETTER TIKEUT --> HALFWIDTH HANGUL LETTER TIKEUT
348
  MAKE_PAIR( 0x3142, 0xFFB2 ),	// HANGUL LETTER PIEUP --> HALFWIDTH HANGUL LETTER PIEUP
355
    { 0x3138, 0xFFA8, FULL2HALF_NORMAL },  // HANGUL LETTER SSANGTIKEUT --> HALFWIDTH HANGUL LETTER SSANGTIKEUT
349
  MAKE_PAIR( 0x3143, 0xFFB3 ),	// HANGUL LETTER SSANGPIEUP --> HALFWIDTH HANGUL LETTER SSANGPIEUP
356
    { 0x3139, 0xFFA9, FULL2HALF_NORMAL },  // HANGUL LETTER RIEUL --> HALFWIDTH HANGUL LETTER RIEUL
350
  MAKE_PAIR( 0x3144, 0xFFB4 ),	// HANGUL LETTER PIEUP-SIOS --> HALFWIDTH HANGUL LETTER PIEUP-SIOS
357
    { 0x313A, 0xFFAA, FULL2HALF_NORMAL },  // HANGUL LETTER RIEUL-KIYEOK --> HALFWIDTH HANGUL LETTER RIEUL-KIYEOK
351
  MAKE_PAIR( 0x3145, 0xFFB5 ),	// HANGUL LETTER SIOS --> HALFWIDTH HANGUL LETTER SIOS
358
    { 0x313B, 0xFFAB, FULL2HALF_NORMAL },  // HANGUL LETTER RIEUL-MIEUM --> HALFWIDTH HANGUL LETTER RIEUL-MIEUM
352
  MAKE_PAIR( 0x3146, 0xFFB6 ),	// HANGUL LETTER SSANGSIOS --> HALFWIDTH HANGUL LETTER SSANGSIOS
359
    { 0x313C, 0xFFAC, FULL2HALF_NORMAL },  // HANGUL LETTER RIEUL-PIEUP --> HALFWIDTH HANGUL LETTER RIEUL-PIEUP
353
  MAKE_PAIR( 0x3147, 0xFFB7 ),	// HANGUL LETTER IEUNG --> HALFWIDTH HANGUL LETTER IEUNG
360
    { 0x313D, 0xFFAD, FULL2HALF_NORMAL },  // HANGUL LETTER RIEUL-SIOS --> HALFWIDTH HANGUL LETTER RIEUL-SIOS
354
  MAKE_PAIR( 0x3148, 0xFFB8 ),	// HANGUL LETTER CIEUC --> HALFWIDTH HANGUL LETTER CIEUC
361
    { 0x313E, 0xFFAE, FULL2HALF_NORMAL },  // HANGUL LETTER RIEUL-THIEUTH --> HALFWIDTH HANGUL LETTER RIEUL-THIEUTH
355
  MAKE_PAIR( 0x3149, 0xFFB9 ),	// HANGUL LETTER SSANGCIEUC --> HALFWIDTH HANGUL LETTER SSANGCIEUC
362
    { 0x313F, 0xFFAF, FULL2HALF_NORMAL },  // HANGUL LETTER RIEUL-PHIEUPH --> HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH
356
  MAKE_PAIR( 0x314A, 0xFFBA ),	// HANGUL LETTER CHIEUCH --> HALFWIDTH HANGUL LETTER CHIEUCH
363
    { 0x3140, 0xFFB0, FULL2HALF_NORMAL },  // HANGUL LETTER RIEUL-HIEUH --> HALFWIDTH HANGUL LETTER RIEUL-HIEUH
357
  MAKE_PAIR( 0x314B, 0xFFBB ),	// HANGUL LETTER KHIEUKH --> HALFWIDTH HANGUL LETTER KHIEUKH
364
    { 0x3141, 0xFFB1, FULL2HALF_NORMAL },  // HANGUL LETTER MIEUM --> HALFWIDTH HANGUL LETTER MIEUM
358
  MAKE_PAIR( 0x314C, 0xFFBC ),	// HANGUL LETTER THIEUTH --> HALFWIDTH HANGUL LETTER THIEUTH
365
    { 0x3142, 0xFFB2, FULL2HALF_NORMAL },  // HANGUL LETTER PIEUP --> HALFWIDTH HANGUL LETTER PIEUP
359
  MAKE_PAIR( 0x314D, 0xFFBD ),	// HANGUL LETTER PHIEUPH --> HALFWIDTH HANGUL LETTER PHIEUPH
366
    { 0x3143, 0xFFB3, FULL2HALF_NORMAL },  // HANGUL LETTER SSANGPIEUP --> HALFWIDTH HANGUL LETTER SSANGPIEUP
360
  MAKE_PAIR( 0x314E, 0xFFBE ),	// HANGUL LETTER HIEUH --> HALFWIDTH HANGUL LETTER HIEUH
367
    { 0x3144, 0xFFB4, FULL2HALF_NORMAL },  // HANGUL LETTER PIEUP-SIOS --> HALFWIDTH HANGUL LETTER PIEUP-SIOS
361
  MAKE_PAIR( 0x314F, 0xFFC2 ),	// HANGUL LETTER A --> HALFWIDTH HANGUL LETTER A
368
    { 0x3145, 0xFFB5, FULL2HALF_NORMAL },  // HANGUL LETTER SIOS --> HALFWIDTH HANGUL LETTER SIOS
362
  MAKE_PAIR( 0x3150, 0xFFC3 ),	// HANGUL LETTER AE --> HALFWIDTH HANGUL LETTER AE
369
    { 0x3146, 0xFFB6, FULL2HALF_NORMAL },  // HANGUL LETTER SSANGSIOS --> HALFWIDTH HANGUL LETTER SSANGSIOS
363
  MAKE_PAIR( 0x3151, 0xFFC4 ),	// HANGUL LETTER YA --> HALFWIDTH HANGUL LETTER YA
370
    { 0x3147, 0xFFB7, FULL2HALF_NORMAL },  // HANGUL LETTER IEUNG --> HALFWIDTH HANGUL LETTER IEUNG
364
  MAKE_PAIR( 0x3152, 0xFFC5 ),	// HANGUL LETTER YAE --> HALFWIDTH HANGUL LETTER YAE
371
    { 0x3148, 0xFFB8, FULL2HALF_NORMAL },  // HANGUL LETTER CIEUC --> HALFWIDTH HANGUL LETTER CIEUC
365
  MAKE_PAIR( 0x3153, 0xFFC6 ),	// HANGUL LETTER EO --> HALFWIDTH HANGUL LETTER EO
372
    { 0x3149, 0xFFB9, FULL2HALF_NORMAL },  // HANGUL LETTER SSANGCIEUC --> HALFWIDTH HANGUL LETTER SSANGCIEUC
366
  MAKE_PAIR( 0x3154, 0xFFC7 ),	// HANGUL LETTER E --> HALFWIDTH HANGUL LETTER E
373
    { 0x314A, 0xFFBA, FULL2HALF_NORMAL },  // HANGUL LETTER CHIEUCH --> HALFWIDTH HANGUL LETTER CHIEUCH
367
  MAKE_PAIR( 0x3155, 0xFFCA ),	// HANGUL LETTER YEO --> HALFWIDTH HANGUL LETTER YEO
374
    { 0x314B, 0xFFBB, FULL2HALF_NORMAL },  // HANGUL LETTER KHIEUKH --> HALFWIDTH HANGUL LETTER KHIEUKH
368
  MAKE_PAIR( 0x3156, 0xFFCB ),	// HANGUL LETTER YE --> HALFWIDTH HANGUL LETTER YE
375
    { 0x314C, 0xFFBC, FULL2HALF_NORMAL },  // HANGUL LETTER THIEUTH --> HALFWIDTH HANGUL LETTER THIEUTH
369
  MAKE_PAIR( 0x3157, 0xFFCC ),	// HANGUL LETTER O --> HALFWIDTH HANGUL LETTER O
376
    { 0x314D, 0xFFBD, FULL2HALF_NORMAL },  // HANGUL LETTER PHIEUPH --> HALFWIDTH HANGUL LETTER PHIEUPH
370
  MAKE_PAIR( 0x3158, 0xFFCD ),	// HANGUL LETTER WA --> HALFWIDTH HANGUL LETTER WA
377
    { 0x314E, 0xFFBE, FULL2HALF_NORMAL },  // HANGUL LETTER HIEUH --> HALFWIDTH HANGUL LETTER HIEUH
371
  MAKE_PAIR( 0x3159, 0xFFCE ),	// HANGUL LETTER WAE --> HALFWIDTH HANGUL LETTER WAE
378
    { 0x314F, 0xFFC2, FULL2HALF_NORMAL },  // HANGUL LETTER A --> HALFWIDTH HANGUL LETTER A
372
  MAKE_PAIR( 0x315A, 0xFFCF ),	// HANGUL LETTER OE --> HALFWIDTH HANGUL LETTER OE
379
    { 0x3150, 0xFFC3, FULL2HALF_NORMAL },  // HANGUL LETTER AE --> HALFWIDTH HANGUL LETTER AE
373
  MAKE_PAIR( 0x315B, 0xFFD2 ),	// HANGUL LETTER YO --> HALFWIDTH HANGUL LETTER YO
380
    { 0x3151, 0xFFC4, FULL2HALF_NORMAL },  // HANGUL LETTER YA --> HALFWIDTH HANGUL LETTER YA
374
  MAKE_PAIR( 0x315C, 0xFFD3 ),	// HANGUL LETTER U --> HALFWIDTH HANGUL LETTER U
381
    { 0x3152, 0xFFC5, FULL2HALF_NORMAL },  // HANGUL LETTER YAE --> HALFWIDTH HANGUL LETTER YAE
375
  MAKE_PAIR( 0x315D, 0xFFD4 ),	// HANGUL LETTER WEO --> HALFWIDTH HANGUL LETTER WEO
382
    { 0x3153, 0xFFC6, FULL2HALF_NORMAL },  // HANGUL LETTER EO --> HALFWIDTH HANGUL LETTER EO
376
  MAKE_PAIR( 0x315E, 0xFFD5 ),	// HANGUL LETTER WE --> HALFWIDTH HANGUL LETTER WE
383
    { 0x3154, 0xFFC7, FULL2HALF_NORMAL },  // HANGUL LETTER E --> HALFWIDTH HANGUL LETTER E
377
  MAKE_PAIR( 0x315F, 0xFFD6 ),	// HANGUL LETTER WI --> HALFWIDTH HANGUL LETTER WI
384
    { 0x3155, 0xFFCA, FULL2HALF_NORMAL },  // HANGUL LETTER YEO --> HALFWIDTH HANGUL LETTER YEO
378
  MAKE_PAIR( 0x3160, 0xFFD7 ),	// HANGUL LETTER YU --> HALFWIDTH HANGUL LETTER YU
385
    { 0x3156, 0xFFCB, FULL2HALF_NORMAL },  // HANGUL LETTER YE --> HALFWIDTH HANGUL LETTER YE
379
  MAKE_PAIR( 0x3161, 0xFFDA ),	// HANGUL LETTER EU --> HALFWIDTH HANGUL LETTER EU
386
    { 0x3157, 0xFFCC, FULL2HALF_NORMAL },  // HANGUL LETTER O --> HALFWIDTH HANGUL LETTER O
380
  MAKE_PAIR( 0x3162, 0xFFDB ),	// HANGUL LETTER YI --> HALFWIDTH HANGUL LETTER YI
387
    { 0x3158, 0xFFCD, FULL2HALF_NORMAL },  // HANGUL LETTER WA --> HALFWIDTH HANGUL LETTER WA
381
  MAKE_PAIR( 0x3163, 0xFFDC ),	// HANGUL LETTER I --> HALFWIDTH HANGUL LETTER I
388
    { 0x3159, 0xFFCE, FULL2HALF_NORMAL },  // HANGUL LETTER WAE --> HALFWIDTH HANGUL LETTER WAE
382
  MAKE_PAIR( 0x3164, 0xFFA0 ),	// HANGUL FILLER --> HALFWIDTH HANGUL FILLER
389
    { 0x315A, 0xFFCF, FULL2HALF_NORMAL },  // HANGUL LETTER OE --> HALFWIDTH HANGUL LETTER OE
383
  MAKE_PAIR( 0xFF01, 0x0021 ),	// FULLWIDTH EXCLAMATION MARK --> EXCLAMATION MARK
390
    { 0x315B, 0xFFD2, FULL2HALF_NORMAL },  // HANGUL LETTER YO --> HALFWIDTH HANGUL LETTER YO
384
  MAKE_PAIR( 0xFF02, 0x0022 ),	// FULLWIDTH QUOTATION MARK --> QUOTATION MARK
391
    { 0x315C, 0xFFD3, FULL2HALF_NORMAL },  // HANGUL LETTER U --> HALFWIDTH HANGUL LETTER U
385
  MAKE_PAIR( 0xFF03, 0x0023 ),	// FULLWIDTH NUMBER SIGN --> NUMBER SIGN
392
    { 0x315D, 0xFFD4, FULL2HALF_NORMAL },  // HANGUL LETTER WEO --> HALFWIDTH HANGUL LETTER WEO
386
  MAKE_PAIR( 0xFF04, 0x0024 ),	// FULLWIDTH DOLLAR SIGN --> DOLLAR SIGN
393
    { 0x315E, 0xFFD5, FULL2HALF_NORMAL },  // HANGUL LETTER WE --> HALFWIDTH HANGUL LETTER WE
387
  MAKE_PAIR( 0xFF05, 0x0025 ),	// FULLWIDTH PERCENT SIGN --> PERCENT SIGN
394
    { 0x315F, 0xFFD6, FULL2HALF_NORMAL },  // HANGUL LETTER WI --> HALFWIDTH HANGUL LETTER WI
388
  MAKE_PAIR( 0xFF06, 0x0026 ),	// FULLWIDTH AMPERSAND --> AMPERSAND
395
    { 0x3160, 0xFFD7, FULL2HALF_NORMAL },  // HANGUL LETTER YU --> HALFWIDTH HANGUL LETTER YU
389
  MAKE_PAIR( 0xFF07, 0x0027 ),	// FULLWIDTH APOSTROPHE --> APOSTROPHE
396
    { 0x3161, 0xFFDA, FULL2HALF_NORMAL },  // HANGUL LETTER EU --> HALFWIDTH HANGUL LETTER EU
390
  MAKE_PAIR( 0xFF08, 0x0028 ),	// FULLWIDTH LEFT PARENTHESIS --> LEFT PARENTHESIS
397
    { 0x3162, 0xFFDB, FULL2HALF_NORMAL },  // HANGUL LETTER YI --> HALFWIDTH HANGUL LETTER YI
391
  MAKE_PAIR( 0xFF09, 0x0029 ),	// FULLWIDTH RIGHT PARENTHESIS --> RIGHT PARENTHESIS
398
    { 0x3163, 0xFFDC, FULL2HALF_NORMAL },  // HANGUL LETTER I --> HALFWIDTH HANGUL LETTER I
392
  MAKE_PAIR( 0xFF0A, 0x002A ),	// FULLWIDTH ASTERISK --> ASTERISK
399
    { 0x3164, 0xFFA0, FULL2HALF_NORMAL },  // HANGUL FILLER --> HALFWIDTH HANGUL FILLER
393
  MAKE_PAIR( 0xFF0B, 0x002B ),	// FULLWIDTH PLUS SIGN --> PLUS SIGN
400
    { 0xFF01, 0x0021, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH EXCLAMATION MARK --> EXCLAMATION MARK
394
  MAKE_PAIR( 0xFF0C, 0x002C ),	// FULLWIDTH COMMA --> COMMA
401
    { 0xFF02, 0x0022, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH QUOTATION MARK --> QUOTATION MARK
395
402
    { 0xFF03, 0x0023, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH NUMBER SIGN --> NUMBER SIGN
396
  MAKE_PAIR( 0xFF0D, 0x002D ),	// FULLWIDTH HYPHEN-MINUS --> HYPHEN-MINUS
403
    { 0xFF04, 0x0024, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH DOLLAR SIGN --> DOLLAR SIGN
397
404
    { 0xFF05, 0x0025, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH PERCENT SIGN --> PERCENT SIGN
398
  MAKE_PAIR( 0xFF0E, 0x002E ),	// FULLWIDTH FULL STOP --> FULL STOP
405
    { 0xFF06, 0x0026, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH AMPERSAND --> AMPERSAND
399
  MAKE_PAIR( 0xFF0F, 0x002F ),	// FULLWIDTH SOLIDUS --> SOLIDUS
406
    { 0xFF07, 0x0027, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH APOSTROPHE --> APOSTROPHE
400
  MAKE_PAIR( 0xFF10, 0x0030 ),	// FULLWIDTH DIGIT ZERO --> DIGIT ZERO
407
    { 0xFF08, 0x0028, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LEFT PARENTHESIS --> LEFT PARENTHESIS
401
  MAKE_PAIR( 0xFF11, 0x0031 ),	// FULLWIDTH DIGIT ONE --> DIGIT ONE
408
    { 0xFF09, 0x0029, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH RIGHT PARENTHESIS --> RIGHT PARENTHESIS
402
  MAKE_PAIR( 0xFF12, 0x0032 ),	// FULLWIDTH DIGIT TWO --> DIGIT TWO
409
    { 0xFF0A, 0x002A, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH ASTERISK --> ASTERISK
403
  MAKE_PAIR( 0xFF13, 0x0033 ),	// FULLWIDTH DIGIT THREE --> DIGIT THREE
410
    { 0xFF0B, 0x002B, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH PLUS SIGN --> PLUS SIGN
404
  MAKE_PAIR( 0xFF14, 0x0034 ),	// FULLWIDTH DIGIT FOUR --> DIGIT FOUR
411
    { 0xFF0C, 0x002C, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH COMMA --> COMMA
405
  MAKE_PAIR( 0xFF15, 0x0035 ),	// FULLWIDTH DIGIT FIVE --> DIGIT FIVE
412
    { 0xFF0D, 0x002D, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH HYPHEN-MINUS --> HYPHEN-MINUS
406
  MAKE_PAIR( 0xFF16, 0x0036 ),	// FULLWIDTH DIGIT SIX --> DIGIT SIX
413
    { 0xFF0E, 0x002E, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH FULL STOP --> FULL STOP
407
  MAKE_PAIR( 0xFF17, 0x0037 ),	// FULLWIDTH DIGIT SEVEN --> DIGIT SEVEN
414
    { 0xFF0F, 0x002F, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH SOLIDUS --> SOLIDUS
408
  MAKE_PAIR( 0xFF18, 0x0038 ),	// FULLWIDTH DIGIT EIGHT --> DIGIT EIGHT
415
    { 0xFF10, 0x0030, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH DIGIT ZERO --> DIGIT ZERO
409
  MAKE_PAIR( 0xFF19, 0x0039 ),	// FULLWIDTH DIGIT NINE --> DIGIT NINE
416
    { 0xFF11, 0x0031, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH DIGIT ONE --> DIGIT ONE
410
  MAKE_PAIR( 0xFF1A, 0x003A ),	// FULLWIDTH COLON --> COLON
417
    { 0xFF12, 0x0032, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH DIGIT TWO --> DIGIT TWO
411
  MAKE_PAIR( 0xFF1B, 0x003B ),	// FULLWIDTH SEMICOLON --> SEMICOLON
418
    { 0xFF13, 0x0033, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH DIGIT THREE --> DIGIT THREE
412
  MAKE_PAIR( 0xFF1C, 0x003C ),	// FULLWIDTH LESS-THAN SIGN --> LESS-THAN SIGN
419
    { 0xFF14, 0x0034, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH DIGIT FOUR --> DIGIT FOUR
413
  MAKE_PAIR( 0xFF1D, 0x003D ),	// FULLWIDTH EQUALS SIGN --> EQUALS SIGN
420
    { 0xFF15, 0x0035, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH DIGIT FIVE --> DIGIT FIVE
414
  MAKE_PAIR( 0xFF1E, 0x003E ),	// FULLWIDTH GREATER-THAN SIGN --> GREATER-THAN SIGN
421
    { 0xFF16, 0x0036, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH DIGIT SIX --> DIGIT SIX
415
  MAKE_PAIR( 0xFF1F, 0x003F ),	// FULLWIDTH QUESTION MARK --> QUESTION MARK
422
    { 0xFF17, 0x0037, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH DIGIT SEVEN --> DIGIT SEVEN
416
  MAKE_PAIR( 0xFF20, 0x0040 ),	// FULLWIDTH COMMERCIAL AT --> COMMERCIAL AT
423
    { 0xFF18, 0x0038, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH DIGIT EIGHT --> DIGIT EIGHT
417
  MAKE_PAIR( 0xFF21, 0x0041 ),	// FULLWIDTH LATIN CAPITAL LETTER A --> LATIN CAPITAL LETTER A
424
    { 0xFF19, 0x0039, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH DIGIT NINE --> DIGIT NINE
418
  MAKE_PAIR( 0xFF22, 0x0042 ),	// FULLWIDTH LATIN CAPITAL LETTER B --> LATIN CAPITAL LETTER B
425
    { 0xFF1A, 0x003A, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH COLON --> COLON
419
  MAKE_PAIR( 0xFF23, 0x0043 ),	// FULLWIDTH LATIN CAPITAL LETTER C --> LATIN CAPITAL LETTER C
426
    { 0xFF1B, 0x003B, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH SEMICOLON --> SEMICOLON
420
  MAKE_PAIR( 0xFF24, 0x0044 ),	// FULLWIDTH LATIN CAPITAL LETTER D --> LATIN CAPITAL LETTER D
427
    { 0xFF1C, 0x003C, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LESS-THAN SIGN --> LESS-THAN SIGN
421
  MAKE_PAIR( 0xFF25, 0x0045 ),	// FULLWIDTH LATIN CAPITAL LETTER E --> LATIN CAPITAL LETTER E
428
    { 0xFF1D, 0x003D, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH EQUALS SIGN --> EQUALS SIGN
422
  MAKE_PAIR( 0xFF26, 0x0046 ),	// FULLWIDTH LATIN CAPITAL LETTER F --> LATIN CAPITAL LETTER F
429
    { 0xFF1E, 0x003E, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH GREATER-THAN SIGN --> GREATER-THAN SIGN
423
  MAKE_PAIR( 0xFF27, 0x0047 ),	// FULLWIDTH LATIN CAPITAL LETTER G --> LATIN CAPITAL LETTER G
430
    { 0xFF1F, 0x003F, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH QUESTION MARK --> QUESTION MARK
424
  MAKE_PAIR( 0xFF28, 0x0048 ),	// FULLWIDTH LATIN CAPITAL LETTER H --> LATIN CAPITAL LETTER H
431
    { 0xFF20, 0x0040, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH COMMERCIAL AT --> COMMERCIAL AT
425
  MAKE_PAIR( 0xFF29, 0x0049 ),	// FULLWIDTH LATIN CAPITAL LETTER I --> LATIN CAPITAL LETTER I
432
    { 0xFF21, 0x0041, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN CAPITAL LETTER A --> LATIN CAPITAL LETTER A
426
  MAKE_PAIR( 0xFF2A, 0x004A ),	// FULLWIDTH LATIN CAPITAL LETTER J --> LATIN CAPITAL LETTER J
433
    { 0xFF22, 0x0042, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN CAPITAL LETTER B --> LATIN CAPITAL LETTER B
427
  MAKE_PAIR( 0xFF2B, 0x004B ),	// FULLWIDTH LATIN CAPITAL LETTER K --> LATIN CAPITAL LETTER K
434
    { 0xFF23, 0x0043, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN CAPITAL LETTER C --> LATIN CAPITAL LETTER C
428
  MAKE_PAIR( 0xFF2C, 0x004C ),	// FULLWIDTH LATIN CAPITAL LETTER L --> LATIN CAPITAL LETTER L
435
    { 0xFF24, 0x0044, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN CAPITAL LETTER D --> LATIN CAPITAL LETTER D
429
  MAKE_PAIR( 0xFF2D, 0x004D ),	// FULLWIDTH LATIN CAPITAL LETTER M --> LATIN CAPITAL LETTER M
436
    { 0xFF25, 0x0045, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN CAPITAL LETTER E --> LATIN CAPITAL LETTER E
430
  MAKE_PAIR( 0xFF2E, 0x004E ),	// FULLWIDTH LATIN CAPITAL LETTER N --> LATIN CAPITAL LETTER N
437
    { 0xFF26, 0x0046, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN CAPITAL LETTER F --> LATIN CAPITAL LETTER F
431
  MAKE_PAIR( 0xFF2F, 0x004F ),	// FULLWIDTH LATIN CAPITAL LETTER O --> LATIN CAPITAL LETTER O
438
    { 0xFF27, 0x0047, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN CAPITAL LETTER G --> LATIN CAPITAL LETTER G
432
  MAKE_PAIR( 0xFF30, 0x0050 ),	// FULLWIDTH LATIN CAPITAL LETTER P --> LATIN CAPITAL LETTER P
439
    { 0xFF28, 0x0048, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN CAPITAL LETTER H --> LATIN CAPITAL LETTER H
433
  MAKE_PAIR( 0xFF31, 0x0051 ),	// FULLWIDTH LATIN CAPITAL LETTER Q --> LATIN CAPITAL LETTER Q
440
    { 0xFF29, 0x0049, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN CAPITAL LETTER I --> LATIN CAPITAL LETTER I
434
  MAKE_PAIR( 0xFF32, 0x0052 ),	// FULLWIDTH LATIN CAPITAL LETTER R --> LATIN CAPITAL LETTER R
441
    { 0xFF2A, 0x004A, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN CAPITAL LETTER J --> LATIN CAPITAL LETTER J
435
  MAKE_PAIR( 0xFF33, 0x0053 ),	// FULLWIDTH LATIN CAPITAL LETTER S --> LATIN CAPITAL LETTER S
442
    { 0xFF2B, 0x004B, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN CAPITAL LETTER K --> LATIN CAPITAL LETTER K
436
  MAKE_PAIR( 0xFF34, 0x0054 ),	// FULLWIDTH LATIN CAPITAL LETTER T --> LATIN CAPITAL LETTER T
443
    { 0xFF2C, 0x004C, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN CAPITAL LETTER L --> LATIN CAPITAL LETTER L
437
  MAKE_PAIR( 0xFF35, 0x0055 ),	// FULLWIDTH LATIN CAPITAL LETTER U --> LATIN CAPITAL LETTER U
444
    { 0xFF2D, 0x004D, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN CAPITAL LETTER M --> LATIN CAPITAL LETTER M
438
  MAKE_PAIR( 0xFF36, 0x0056 ),	// FULLWIDTH LATIN CAPITAL LETTER V --> LATIN CAPITAL LETTER V
445
    { 0xFF2E, 0x004E, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN CAPITAL LETTER N --> LATIN CAPITAL LETTER N
439
  MAKE_PAIR( 0xFF37, 0x0057 ),	// FULLWIDTH LATIN CAPITAL LETTER W --> LATIN CAPITAL LETTER W
446
    { 0xFF2F, 0x004F, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN CAPITAL LETTER O --> LATIN CAPITAL LETTER O
440
  MAKE_PAIR( 0xFF38, 0x0058 ),	// FULLWIDTH LATIN CAPITAL LETTER X --> LATIN CAPITAL LETTER X
447
    { 0xFF30, 0x0050, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN CAPITAL LETTER P --> LATIN CAPITAL LETTER P
441
  MAKE_PAIR( 0xFF39, 0x0059 ),	// FULLWIDTH LATIN CAPITAL LETTER Y --> LATIN CAPITAL LETTER Y
448
    { 0xFF31, 0x0051, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN CAPITAL LETTER Q --> LATIN CAPITAL LETTER Q
442
  MAKE_PAIR( 0xFF3A, 0x005A ),	// FULLWIDTH LATIN CAPITAL LETTER Z --> LATIN CAPITAL LETTER Z
449
    { 0xFF32, 0x0052, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN CAPITAL LETTER R --> LATIN CAPITAL LETTER R
443
  MAKE_PAIR( 0xFF3B, 0x005B ),	// FULLWIDTH LEFT SQUARE BRACKET --> LEFT SQUARE BRACKET
450
    { 0xFF33, 0x0053, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN CAPITAL LETTER S --> LATIN CAPITAL LETTER S
444
  MAKE_PAIR( 0xFF3C, 0x005C ),	// FULLWIDTH REVERSE SOLIDUS --> REVERSE SOLIDUS
451
    { 0xFF34, 0x0054, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN CAPITAL LETTER T --> LATIN CAPITAL LETTER T
445
  MAKE_PAIR( 0xFF3D, 0x005D ),	// FULLWIDTH RIGHT SQUARE BRACKET --> RIGHT SQUARE BRACKET
452
    { 0xFF35, 0x0055, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN CAPITAL LETTER U --> LATIN CAPITAL LETTER U
446
  MAKE_PAIR( 0xFF3E, 0x005E ),	// FULLWIDTH CIRCUMFLEX ACCENT --> CIRCUMFLEX ACCENT
453
    { 0xFF36, 0x0056, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN CAPITAL LETTER V --> LATIN CAPITAL LETTER V
447
  MAKE_PAIR( 0xFF3F, 0x005F ),	// FULLWIDTH LOW LINE --> LOW LINE
454
    { 0xFF37, 0x0057, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN CAPITAL LETTER W --> LATIN CAPITAL LETTER W
448
  MAKE_PAIR( 0xFF40, 0x0060 ),	// FULLWIDTH GRAVE ACCENT --> GRAVE ACCENT
455
    { 0xFF38, 0x0058, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN CAPITAL LETTER X --> LATIN CAPITAL LETTER X
449
  MAKE_PAIR( 0xFF41, 0x0061 ),	// FULLWIDTH LATIN SMALL LETTER A --> LATIN SMALL LETTER A
456
    { 0xFF39, 0x0059, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN CAPITAL LETTER Y --> LATIN CAPITAL LETTER Y
450
  MAKE_PAIR( 0xFF42, 0x0062 ),	// FULLWIDTH LATIN SMALL LETTER B --> LATIN SMALL LETTER B
457
    { 0xFF3A, 0x005A, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN CAPITAL LETTER Z --> LATIN CAPITAL LETTER Z
451
  MAKE_PAIR( 0xFF43, 0x0063 ),	// FULLWIDTH LATIN SMALL LETTER C --> LATIN SMALL LETTER C
458
    { 0xFF3B, 0x005B, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LEFT SQUARE BRACKET --> LEFT SQUARE BRACKET
452
  MAKE_PAIR( 0xFF44, 0x0064 ),	// FULLWIDTH LATIN SMALL LETTER D --> LATIN SMALL LETTER D
459
    { 0xFF3C, 0x005C, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH REVERSE SOLIDUS --> REVERSE SOLIDUS
453
  MAKE_PAIR( 0xFF45, 0x0065 ),	// FULLWIDTH LATIN SMALL LETTER E --> LATIN SMALL LETTER E
460
    { 0xFF3D, 0x005D, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH RIGHT SQUARE BRACKET --> RIGHT SQUARE BRACKET
454
  MAKE_PAIR( 0xFF46, 0x0066 ),	// FULLWIDTH LATIN SMALL LETTER F --> LATIN SMALL LETTER F
461
    { 0xFF3E, 0x005E, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH CIRCUMFLEX ACCENT --> CIRCUMFLEX ACCENT
455
  MAKE_PAIR( 0xFF47, 0x0067 ),	// FULLWIDTH LATIN SMALL LETTER G --> LATIN SMALL LETTER G
462
    { 0xFF3F, 0x005F, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LOW LINE --> LOW LINE
456
  MAKE_PAIR( 0xFF48, 0x0068 ),	// FULLWIDTH LATIN SMALL LETTER H --> LATIN SMALL LETTER H
463
    { 0xFF40, 0x0060, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH GRAVE ACCENT --> GRAVE ACCENT
457
  MAKE_PAIR( 0xFF49, 0x0069 ),	// FULLWIDTH LATIN SMALL LETTER I --> LATIN SMALL LETTER I
464
    { 0xFF41, 0x0061, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN SMALL LETTER A --> LATIN SMALL LETTER A
458
  MAKE_PAIR( 0xFF4A, 0x006A ),	// FULLWIDTH LATIN SMALL LETTER J --> LATIN SMALL LETTER J
465
    { 0xFF42, 0x0062, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN SMALL LETTER B --> LATIN SMALL LETTER B
459
  MAKE_PAIR( 0xFF4B, 0x006B ),	// FULLWIDTH LATIN SMALL LETTER K --> LATIN SMALL LETTER K
466
    { 0xFF43, 0x0063, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN SMALL LETTER C --> LATIN SMALL LETTER C
460
  MAKE_PAIR( 0xFF4C, 0x006C ),	// FULLWIDTH LATIN SMALL LETTER L --> LATIN SMALL LETTER L
467
    { 0xFF44, 0x0064, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN SMALL LETTER D --> LATIN SMALL LETTER D
461
  MAKE_PAIR( 0xFF4D, 0x006D ),	// FULLWIDTH LATIN SMALL LETTER M --> LATIN SMALL LETTER M
468
    { 0xFF45, 0x0065, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN SMALL LETTER E --> LATIN SMALL LETTER E
462
  MAKE_PAIR( 0xFF4E, 0x006E ),	// FULLWIDTH LATIN SMALL LETTER N --> LATIN SMALL LETTER N
469
    { 0xFF46, 0x0066, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN SMALL LETTER F --> LATIN SMALL LETTER F
463
  MAKE_PAIR( 0xFF4F, 0x006F ),	// FULLWIDTH LATIN SMALL LETTER O --> LATIN SMALL LETTER O
470
    { 0xFF47, 0x0067, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN SMALL LETTER G --> LATIN SMALL LETTER G
464
  MAKE_PAIR( 0xFF50, 0x0070 ),	// FULLWIDTH LATIN SMALL LETTER P --> LATIN SMALL LETTER P
471
    { 0xFF48, 0x0068, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN SMALL LETTER H --> LATIN SMALL LETTER H
465
  MAKE_PAIR( 0xFF51, 0x0071 ),	// FULLWIDTH LATIN SMALL LETTER Q --> LATIN SMALL LETTER Q
472
    { 0xFF49, 0x0069, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN SMALL LETTER I --> LATIN SMALL LETTER I
466
  MAKE_PAIR( 0xFF52, 0x0072 ),	// FULLWIDTH LATIN SMALL LETTER R --> LATIN SMALL LETTER R
473
    { 0xFF4A, 0x006A, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN SMALL LETTER J --> LATIN SMALL LETTER J
467
  MAKE_PAIR( 0xFF53, 0x0073 ),	// FULLWIDTH LATIN SMALL LETTER S --> LATIN SMALL LETTER S
474
    { 0xFF4B, 0x006B, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN SMALL LETTER K --> LATIN SMALL LETTER K
468
  MAKE_PAIR( 0xFF54, 0x0074 ),	// FULLWIDTH LATIN SMALL LETTER T --> LATIN SMALL LETTER T
475
    { 0xFF4C, 0x006C, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN SMALL LETTER L --> LATIN SMALL LETTER L
469
  MAKE_PAIR( 0xFF55, 0x0075 ),	// FULLWIDTH LATIN SMALL LETTER U --> LATIN SMALL LETTER U
476
    { 0xFF4D, 0x006D, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN SMALL LETTER M --> LATIN SMALL LETTER M
470
  MAKE_PAIR( 0xFF56, 0x0076 ),	// FULLWIDTH LATIN SMALL LETTER V --> LATIN SMALL LETTER V
477
    { 0xFF4E, 0x006E, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN SMALL LETTER N --> LATIN SMALL LETTER N
471
  MAKE_PAIR( 0xFF57, 0x0077 ),	// FULLWIDTH LATIN SMALL LETTER W --> LATIN SMALL LETTER W
478
    { 0xFF4F, 0x006F, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN SMALL LETTER O --> LATIN SMALL LETTER O
472
  MAKE_PAIR( 0xFF58, 0x0078 ),	// FULLWIDTH LATIN SMALL LETTER X --> LATIN SMALL LETTER X
479
    { 0xFF50, 0x0070, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN SMALL LETTER P --> LATIN SMALL LETTER P
473
  MAKE_PAIR( 0xFF59, 0x0079 ),	// FULLWIDTH LATIN SMALL LETTER Y --> LATIN SMALL LETTER Y
480
    { 0xFF51, 0x0071, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN SMALL LETTER Q --> LATIN SMALL LETTER Q
474
  MAKE_PAIR( 0xFF5A, 0x007A ),	// FULLWIDTH LATIN SMALL LETTER Z --> LATIN SMALL LETTER Z
481
    { 0xFF52, 0x0072, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN SMALL LETTER R --> LATIN SMALL LETTER R
475
  MAKE_PAIR( 0xFF5B, 0x007B ),	// FULLWIDTH LEFT CURLY BRACKET --> LEFT CURLY BRACKET
482
    { 0xFF53, 0x0073, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN SMALL LETTER S --> LATIN SMALL LETTER S
476
  MAKE_PAIR( 0xFF5C, 0x007C ),	// FULLWIDTH VERTICAL LINE --> VERTICAL LINE
483
    { 0xFF54, 0x0074, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN SMALL LETTER T --> LATIN SMALL LETTER T
477
  MAKE_PAIR( 0xFF5D, 0x007D ),	// FULLWIDTH RIGHT CURLY BRACKET --> RIGHT CURLY BRACKET
484
    { 0xFF55, 0x0075, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN SMALL LETTER U --> LATIN SMALL LETTER U
478
  MAKE_PAIR( 0xFF5E, 0x007E ),	// FULLWIDTH TILDE --> TILDE
485
    { 0xFF56, 0x0076, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN SMALL LETTER V --> LATIN SMALL LETTER V
479
  MAKE_PAIR( 0xFFE0, 0x00A2 ),	// FULLWIDTH CENT SIGN --> CENT SIGN
486
    { 0xFF57, 0x0077, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN SMALL LETTER W --> LATIN SMALL LETTER W
480
  MAKE_PAIR( 0xFFE1, 0x00A3 ),	// FULLWIDTH POUND SIGN --> POUND SIGN
487
    { 0xFF58, 0x0078, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN SMALL LETTER X --> LATIN SMALL LETTER X
481
  MAKE_PAIR( 0xFFE2, 0x00AC ),	// FULLWIDTH NOT SIGN --> NOT SIGN
488
    { 0xFF59, 0x0079, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN SMALL LETTER Y --> LATIN SMALL LETTER Y
482
  MAKE_PAIR( 0xFFE3, 0x00AF ),	// FULLWIDTH MACRON --> MACRON
489
    { 0xFF5A, 0x007A, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LATIN SMALL LETTER Z --> LATIN SMALL LETTER Z
483
  MAKE_PAIR( 0xFFE4, 0x00A6 ),	// FULLWIDTH BROKEN BAR --> BROKEN BAR
490
    { 0xFF5B, 0x007B, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH LEFT CURLY BRACKET --> LEFT CURLY BRACKET
484
  MAKE_PAIR( 0xFFE5, 0x00A5 ),	// FULLWIDTH YEN SIGN --> YEN SIGN
491
    { 0xFF5C, 0x007C, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH VERTICAL LINE --> VERTICAL LINE
485
  MAKE_PAIR( 0xFFE6, 0x20A9 ) 	// FULLWIDTH WON SIGN --> WON SIGN
492
    { 0xFF5D, 0x007D, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH RIGHT CURLY BRACKET --> RIGHT CURLY BRACKET
493
    { 0xFF5E, 0x007E, FULL2HALF_NORMAL | FULL2HALF_ASC_FUNCTION },  // FULLWIDTH TILDE --> TILDE
494
    { 0xFFE0, 0x00A2, FULL2HALF_NORMAL },  // FULLWIDTH CENT SIGN --> CENT SIGN
495
    { 0xFFE1, 0x00A3, FULL2HALF_NORMAL },  // FULLWIDTH POUND SIGN --> POUND SIGN
496
    { 0xFFE2, 0x00AC, FULL2HALF_NORMAL },  // FULLWIDTH NOT SIGN --> NOT SIGN
497
    { 0xFFE3, 0x00AF, FULL2HALF_NORMAL },  // FULLWIDTH MACRON --> MACRON
498
    { 0xFFE4, 0x00A6, FULL2HALF_NORMAL },  // FULLWIDTH BROKEN BAR --> BROKEN BAR
499
    { 0xFFE5, 0x00A5, FULL2HALF_NORMAL },  // FULLWIDTH YEN SIGN --> YEN SIGN
500
    { 0xFFE6, 0x20A9, FULL2HALF_NORMAL },  // FULLWIDTH WON SIGN --> WON SIGN
486
};
501
};
487
502
488
/*
503
/*
504
 Exceptional conversion table for ASC function
505
*/    
506
UnicodePairWithFlag full2halfASCException[] = {
507
    { 0xFFE5, 0x005C, FULL2HALF_ASC_FUNCTION }  // FULLWIDTH YEN SIGN --> REVERSE SOLIDUS
508
 };
509
510
/*
489
  Unicode Normalization Forms
511
  Unicode Normalization Forms
490
  http://www.unicode.org/unicode/reports/tr15/index.html
512
  http://www.unicode.org/unicode/reports/tr15/index.html
491
  http://www.w3.org/International/charlint/
513
  http://www.w3.org/International/charlint/
Lines 694-929 Link Here
694
  http://charts.unicode.org/Web/UFF00.html 
716
  http://charts.unicode.org/Web/UFF00.html 
695
*/
717
*/
696
718
697
OneToOneMappingTable_t half2full[] = {	
719
#define HALF2FULL_NORMAL        0x01
698
  MAKE_PAIR( 0x0020, 0x3000 ),	// SPACE --> IDEOGRAPHIC SPACE
720
#define HALF2FULL_JIS_FUNCTION  0x02
699
  MAKE_PAIR( 0x0021, 0xFF01 ),	// EXCLAMATION MARK --> FULLWIDTH EXCLAMATION MARK
721
#define HALF2FULL_KATAKANA_ONLY 0x04 
700
  MAKE_PAIR( 0x0022, 0xFF02 ),	// QUOTATION MARK --> FULLWIDTH QUOTATION MARK
722
 
701
  MAKE_PAIR( 0x0023, 0xFF03 ),	// NUMBER SIGN --> FULLWIDTH NUMBER SIGN
723
UnicodePairWithFlag half2full[] = {
702
  MAKE_PAIR( 0x0024, 0xFF04 ),	// DOLLAR SIGN --> FULLWIDTH DOLLAR SIGN
724
    { 0x0020, 0x3000, HALF2FULL_NORMAL },  // SPACE --> IDEOGRAPHIC SPACE
703
  MAKE_PAIR( 0x0025, 0xFF05 ),	// PERCENT SIGN --> FULLWIDTH PERCENT SIGN
725
    { 0x0021, 0xFF01, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // EXCLAMATION MARK --> FULLWIDTH EXCLAMATION MARK
704
  MAKE_PAIR( 0x0026, 0xFF06 ),	// AMPERSAND --> FULLWIDTH AMPERSAND
726
    { 0x0022, 0xFF02, HALF2FULL_NORMAL },  // QUOTATION MARK --> FULLWIDTH QUOTATION MARK
705
  MAKE_PAIR( 0x0027, 0xFF07 ),	// APOSTROPHE --> FULLWIDTH APOSTROPHE
727
    { 0x0023, 0xFF03, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // NUMBER SIGN --> FULLWIDTH NUMBER SIGN
706
  MAKE_PAIR( 0x0028, 0xFF08 ),	// LEFT PARENTHESIS --> FULLWIDTH LEFT PARENTHESIS
728
    { 0x0024, 0xFF04, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // DOLLAR SIGN --> FULLWIDTH DOLLAR SIGN
707
  MAKE_PAIR( 0x0029, 0xFF09 ),	// RIGHT PARENTHESIS --> FULLWIDTH RIGHT PARENTHESIS
729
    { 0x0025, 0xFF05, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // PERCENT SIGN --> FULLWIDTH PERCENT SIGN
708
  MAKE_PAIR( 0x002A, 0xFF0A ),	// ASTERISK --> FULLWIDTH ASTERISK
730
    { 0x0026, 0xFF06, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // AMPERSAND --> FULLWIDTH AMPERSAND
709
  MAKE_PAIR( 0x002B, 0xFF0B ),	// PLUS SIGN --> FULLWIDTH PLUS SIGN
731
    { 0x0027, 0xFF07, HALF2FULL_NORMAL },  // APOSTROPHE --> FULLWIDTH APOSTROPHE
710
  MAKE_PAIR( 0x002C, 0xFF0C ),	// COMMA --> FULLWIDTH COMMA
732
    { 0x0028, 0xFF08, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LEFT PARENTHESIS --> FULLWIDTH LEFT PARENTHESIS
711
733
    { 0x0029, 0xFF09, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // RIGHT PARENTHESIS --> FULLWIDTH RIGHT PARENTHESIS
712
  MAKE_PAIR( 0x002D, 0xFF0D ),	// HYPHEN-MINUS --> FULLWIDTH HYPHEN-MINUS
734
    { 0x002A, 0xFF0A, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // ASTERISK --> FULLWIDTH ASTERISK
713
//MAKE_PAIR( 0x002D, 0x2212 ),	// HYPHEN-MINUS --> MINUS SIGN
735
    { 0x002B, 0xFF0B, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // PLUS SIGN --> FULLWIDTH PLUS SIGN
714
736
    { 0x002C, 0xFF0C, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // COMMA --> FULLWIDTH COMMA
715
  MAKE_PAIR( 0x002E, 0xFF0E ),	// FULL STOP --> FULLWIDTH FULL STOP
737
    { 0x002E, 0xFF0E, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // FULL STOP --> FULLWIDTH FULL STOP
716
  MAKE_PAIR( 0x002F, 0xFF0F ),	// SOLIDUS --> FULLWIDTH SOLIDUS
738
    { 0x002F, 0xFF0F, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // SOLIDUS --> FULLWIDTH SOLIDUS
717
  MAKE_PAIR( 0x0030, 0xFF10 ),	// DIGIT ZERO --> FULLWIDTH DIGIT ZERO
739
    { 0x0030, 0xFF10, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // DIGIT ZERO --> FULLWIDTH DIGIT ZERO
718
  MAKE_PAIR( 0x0031, 0xFF11 ),	// DIGIT ONE --> FULLWIDTH DIGIT ONE
740
    { 0x0031, 0xFF11, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // DIGIT ONE --> FULLWIDTH DIGIT ONE
719
  MAKE_PAIR( 0x0032, 0xFF12 ),	// DIGIT TWO --> FULLWIDTH DIGIT TWO
741
    { 0x0032, 0xFF12, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // DIGIT TWO --> FULLWIDTH DIGIT TWO
720
  MAKE_PAIR( 0x0033, 0xFF13 ),	// DIGIT THREE --> FULLWIDTH DIGIT THREE
742
    { 0x0033, 0xFF13, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // DIGIT THREE --> FULLWIDTH DIGIT THREE
721
  MAKE_PAIR( 0x0034, 0xFF14 ),	// DIGIT FOUR --> FULLWIDTH DIGIT FOUR
743
    { 0x0034, 0xFF14, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // DIGIT FOUR --> FULLWIDTH DIGIT FOUR
722
  MAKE_PAIR( 0x0035, 0xFF15 ),	// DIGIT FIVE --> FULLWIDTH DIGIT FIVE
744
    { 0x0035, 0xFF15, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // DIGIT FIVE --> FULLWIDTH DIGIT FIVE
723
  MAKE_PAIR( 0x0036, 0xFF16 ),	// DIGIT SIX --> FULLWIDTH DIGIT SIX
745
    { 0x0036, 0xFF16, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // DIGIT SIX --> FULLWIDTH DIGIT SIX
724
  MAKE_PAIR( 0x0037, 0xFF17 ),	// DIGIT SEVEN --> FULLWIDTH DIGIT SEVEN
746
    { 0x0037, 0xFF17, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // DIGIT SEVEN --> FULLWIDTH DIGIT SEVEN
725
  MAKE_PAIR( 0x0038, 0xFF18 ),	// DIGIT EIGHT --> FULLWIDTH DIGIT EIGHT
747
    { 0x0038, 0xFF18, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // DIGIT EIGHT --> FULLWIDTH DIGIT EIGHT
726
  MAKE_PAIR( 0x0039, 0xFF19 ),	// DIGIT NINE --> FULLWIDTH DIGIT NINE
748
    { 0x0039, 0xFF19, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // DIGIT NINE --> FULLWIDTH DIGIT NINE
727
  MAKE_PAIR( 0x003A, 0xFF1A ),	// COLON --> FULLWIDTH COLON
749
    { 0x003A, 0xFF1A, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // COLON --> FULLWIDTH COLON
728
  MAKE_PAIR( 0x003B, 0xFF1B ),	// SEMICOLON --> FULLWIDTH SEMICOLON
750
    { 0x003B, 0xFF1B, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // SEMICOLON --> FULLWIDTH SEMICOLON
729
  MAKE_PAIR( 0x003C, 0xFF1C ),	// LESS-THAN SIGN --> FULLWIDTH LESS-THAN SIGN
751
    { 0x003C, 0xFF1C, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LESS-THAN SIGN --> FULLWIDTH LESS-THAN SIGN
730
  MAKE_PAIR( 0x003D, 0xFF1D ),	// EQUALS SIGN --> FULLWIDTH EQUALS SIGN
752
    { 0x003D, 0xFF1D, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // EQUALS SIGN --> FULLWIDTH EQUALS SIGN
731
  MAKE_PAIR( 0x003E, 0xFF1E ),	// GREATER-THAN SIGN --> FULLWIDTH GREATER-THAN SIGN
753
    { 0x003E, 0xFF1E, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // GREATER-THAN SIGN --> FULLWIDTH GREATER-THAN SIGN
732
  MAKE_PAIR( 0x003F, 0xFF1F ),	// QUESTION MARK --> FULLWIDTH QUESTION MARK
754
    { 0x003F, 0xFF1F, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // QUESTION MARK --> FULLWIDTH QUESTION MARK
733
  MAKE_PAIR( 0x0040, 0xFF20 ),	// COMMERCIAL AT --> FULLWIDTH COMMERCIAL AT
755
    { 0x0040, 0xFF20, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // COMMERCIAL AT --> FULLWIDTH COMMERCIAL AT
734
  MAKE_PAIR( 0x0041, 0xFF21 ),	// LATIN CAPITAL LETTER A --> FULLWIDTH LATIN CAPITAL LETTER A
756
    { 0x0041, 0xFF21, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN CAPITAL LETTER A --> FULLWIDTH LATIN CAPITAL LETTER A
735
  MAKE_PAIR( 0x0042, 0xFF22 ),	// LATIN CAPITAL LETTER B --> FULLWIDTH LATIN CAPITAL LETTER B
757
    { 0x0042, 0xFF22, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN CAPITAL LETTER B --> FULLWIDTH LATIN CAPITAL LETTER B
736
  MAKE_PAIR( 0x0043, 0xFF23 ),	// LATIN CAPITAL LETTER C --> FULLWIDTH LATIN CAPITAL LETTER C
758
    { 0x0043, 0xFF23, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN CAPITAL LETTER C --> FULLWIDTH LATIN CAPITAL LETTER C
737
  MAKE_PAIR( 0x0044, 0xFF24 ),	// LATIN CAPITAL LETTER D --> FULLWIDTH LATIN CAPITAL LETTER D
759
    { 0x0044, 0xFF24, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN CAPITAL LETTER D --> FULLWIDTH LATIN CAPITAL LETTER D
738
  MAKE_PAIR( 0x0045, 0xFF25 ),	// LATIN CAPITAL LETTER E --> FULLWIDTH LATIN CAPITAL LETTER E
760
    { 0x0045, 0xFF25, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN CAPITAL LETTER E --> FULLWIDTH LATIN CAPITAL LETTER E
739
  MAKE_PAIR( 0x0046, 0xFF26 ),	// LATIN CAPITAL LETTER F --> FULLWIDTH LATIN CAPITAL LETTER F
761
    { 0x0046, 0xFF26, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN CAPITAL LETTER F --> FULLWIDTH LATIN CAPITAL LETTER F
740
  MAKE_PAIR( 0x0047, 0xFF27 ),	// LATIN CAPITAL LETTER G --> FULLWIDTH LATIN CAPITAL LETTER G
762
    { 0x0047, 0xFF27, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN CAPITAL LETTER G --> FULLWIDTH LATIN CAPITAL LETTER G
741
  MAKE_PAIR( 0x0048, 0xFF28 ),	// LATIN CAPITAL LETTER H --> FULLWIDTH LATIN CAPITAL LETTER H
763
    { 0x0048, 0xFF28, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN CAPITAL LETTER H --> FULLWIDTH LATIN CAPITAL LETTER H
742
  MAKE_PAIR( 0x0049, 0xFF29 ),	// LATIN CAPITAL LETTER I --> FULLWIDTH LATIN CAPITAL LETTER I
764
    { 0x0049, 0xFF29, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN CAPITAL LETTER I --> FULLWIDTH LATIN CAPITAL LETTER I
743
  MAKE_PAIR( 0x004A, 0xFF2A ),	// LATIN CAPITAL LETTER J --> FULLWIDTH LATIN CAPITAL LETTER J
765
    { 0x004A, 0xFF2A, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN CAPITAL LETTER J --> FULLWIDTH LATIN CAPITAL LETTER J
744
  MAKE_PAIR( 0x004B, 0xFF2B ),	// LATIN CAPITAL LETTER K --> FULLWIDTH LATIN CAPITAL LETTER K
766
    { 0x004B, 0xFF2B, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN CAPITAL LETTER K --> FULLWIDTH LATIN CAPITAL LETTER K
745
  MAKE_PAIR( 0x004C, 0xFF2C ),	// LATIN CAPITAL LETTER L --> FULLWIDTH LATIN CAPITAL LETTER L
767
    { 0x004C, 0xFF2C, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN CAPITAL LETTER L --> FULLWIDTH LATIN CAPITAL LETTER L
746
  MAKE_PAIR( 0x004D, 0xFF2D ),	// LATIN CAPITAL LETTER M --> FULLWIDTH LATIN CAPITAL LETTER M
768
    { 0x004D, 0xFF2D, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN CAPITAL LETTER M --> FULLWIDTH LATIN CAPITAL LETTER M
747
  MAKE_PAIR( 0x004E, 0xFF2E ),	// LATIN CAPITAL LETTER N --> FULLWIDTH LATIN CAPITAL LETTER N
769
    { 0x004E, 0xFF2E, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN CAPITAL LETTER N --> FULLWIDTH LATIN CAPITAL LETTER N
748
  MAKE_PAIR( 0x004F, 0xFF2F ),	// LATIN CAPITAL LETTER O --> FULLWIDTH LATIN CAPITAL LETTER O
770
    { 0x004F, 0xFF2F, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN CAPITAL LETTER O --> FULLWIDTH LATIN CAPITAL LETTER O
749
  MAKE_PAIR( 0x0050, 0xFF30 ),	// LATIN CAPITAL LETTER P --> FULLWIDTH LATIN CAPITAL LETTER P
771
    { 0x0050, 0xFF30, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN CAPITAL LETTER P --> FULLWIDTH LATIN CAPITAL LETTER P
750
  MAKE_PAIR( 0x0051, 0xFF31 ),	// LATIN CAPITAL LETTER Q --> FULLWIDTH LATIN CAPITAL LETTER Q
772
    { 0x0051, 0xFF31, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN CAPITAL LETTER Q --> FULLWIDTH LATIN CAPITAL LETTER Q
751
  MAKE_PAIR( 0x0052, 0xFF32 ),	// LATIN CAPITAL LETTER R --> FULLWIDTH LATIN CAPITAL LETTER R
773
    { 0x0052, 0xFF32, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN CAPITAL LETTER R --> FULLWIDTH LATIN CAPITAL LETTER R
752
  MAKE_PAIR( 0x0053, 0xFF33 ),	// LATIN CAPITAL LETTER S --> FULLWIDTH LATIN CAPITAL LETTER S
774
    { 0x0053, 0xFF33, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN CAPITAL LETTER S --> FULLWIDTH LATIN CAPITAL LETTER S
753
  MAKE_PAIR( 0x0054, 0xFF34 ),	// LATIN CAPITAL LETTER T --> FULLWIDTH LATIN CAPITAL LETTER T
775
    { 0x0054, 0xFF34, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN CAPITAL LETTER T --> FULLWIDTH LATIN CAPITAL LETTER T
754
  MAKE_PAIR( 0x0055, 0xFF35 ),	// LATIN CAPITAL LETTER U --> FULLWIDTH LATIN CAPITAL LETTER U
776
    { 0x0055, 0xFF35, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN CAPITAL LETTER U --> FULLWIDTH LATIN CAPITAL LETTER U
755
  MAKE_PAIR( 0x0056, 0xFF36 ),	// LATIN CAPITAL LETTER V --> FULLWIDTH LATIN CAPITAL LETTER V
777
    { 0x0056, 0xFF36, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN CAPITAL LETTER V --> FULLWIDTH LATIN CAPITAL LETTER V
756
  MAKE_PAIR( 0x0057, 0xFF37 ),	// LATIN CAPITAL LETTER W --> FULLWIDTH LATIN CAPITAL LETTER W
778
    { 0x0057, 0xFF37, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN CAPITAL LETTER W --> FULLWIDTH LATIN CAPITAL LETTER W
757
  MAKE_PAIR( 0x0058, 0xFF38 ),	// LATIN CAPITAL LETTER X --> FULLWIDTH LATIN CAPITAL LETTER X
779
    { 0x0058, 0xFF38, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN CAPITAL LETTER X --> FULLWIDTH LATIN CAPITAL LETTER X
758
  MAKE_PAIR( 0x0059, 0xFF39 ),	// LATIN CAPITAL LETTER Y --> FULLWIDTH LATIN CAPITAL LETTER Y
780
    { 0x0059, 0xFF39, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN CAPITAL LETTER Y --> FULLWIDTH LATIN CAPITAL LETTER Y
759
  MAKE_PAIR( 0x005A, 0xFF3A ),	// LATIN CAPITAL LETTER Z --> FULLWIDTH LATIN CAPITAL LETTER Z
781
    { 0x005A, 0xFF3A, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN CAPITAL LETTER Z --> FULLWIDTH LATIN CAPITAL LETTER Z
760
  MAKE_PAIR( 0x005B, 0xFF3B ),	// LEFT SQUARE BRACKET --> FULLWIDTH LEFT SQUARE BRACKET
782
    { 0x005B, 0xFF3B, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LEFT SQUARE BRACKET --> FULLWIDTH LEFT SQUARE BRACKET
761
  MAKE_PAIR( 0x005C, 0xFF3C ),	// REVERSE SOLIDUS --> FULLWIDTH REVERSE SOLIDUS
783
    { 0x005C, 0xFF3C, HALF2FULL_NORMAL },  // REVERSE SOLIDUS --> FULLWIDTH REVERSE SOLIDUS
762
  MAKE_PAIR( 0x005D, 0xFF3D ),	// RIGHT SQUARE BRACKET --> FULLWIDTH RIGHT SQUARE BRACKET
784
    { 0x005D, 0xFF3D, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // RIGHT SQUARE BRACKET --> FULLWIDTH RIGHT SQUARE BRACKET
763
  MAKE_PAIR( 0x005E, 0xFF3E ),	// CIRCUMFLEX ACCENT --> FULLWIDTH CIRCUMFLEX ACCENT
785
    { 0x005E, 0xFF3E, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // CIRCUMFLEX ACCENT --> FULLWIDTH CIRCUMFLEX ACCENT
764
  MAKE_PAIR( 0x005F, 0xFF3F ),	// LOW LINE --> FULLWIDTH LOW LINE
786
    { 0x005F, 0xFF3F, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LOW LINE --> FULLWIDTH LOW LINE
765
  MAKE_PAIR( 0x0060, 0xFF40 ),	// GRAVE ACCENT --> FULLWIDTH GRAVE ACCENT
787
    { 0x0060, 0xFF40, HALF2FULL_NORMAL },  // GRAVE ACCENT --> FULLWIDTH GRAVE ACCENT
766
  MAKE_PAIR( 0x0061, 0xFF41 ),	// LATIN SMALL LETTER A --> FULLWIDTH LATIN SMALL LETTER A
788
    { 0x0061, 0xFF41, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN SMALL LETTER A --> FULLWIDTH LATIN SMALL LETTER A
767
  MAKE_PAIR( 0x0062, 0xFF42 ),	// LATIN SMALL LETTER B --> FULLWIDTH LATIN SMALL LETTER B
789
    { 0x0062, 0xFF42, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN SMALL LETTER B --> FULLWIDTH LATIN SMALL LETTER B
768
  MAKE_PAIR( 0x0063, 0xFF43 ),	// LATIN SMALL LETTER C --> FULLWIDTH LATIN SMALL LETTER C
790
    { 0x0063, 0xFF43, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN SMALL LETTER C --> FULLWIDTH LATIN SMALL LETTER C
769
  MAKE_PAIR( 0x0064, 0xFF44 ),	// LATIN SMALL LETTER D --> FULLWIDTH LATIN SMALL LETTER D
791
    { 0x0064, 0xFF44, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN SMALL LETTER D --> FULLWIDTH LATIN SMALL LETTER D
770
  MAKE_PAIR( 0x0065, 0xFF45 ),	// LATIN SMALL LETTER E --> FULLWIDTH LATIN SMALL LETTER E
792
    { 0x0065, 0xFF45, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN SMALL LETTER E --> FULLWIDTH LATIN SMALL LETTER E
771
  MAKE_PAIR( 0x0066, 0xFF46 ),	// LATIN SMALL LETTER F --> FULLWIDTH LATIN SMALL LETTER F
793
    { 0x0066, 0xFF46, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN SMALL LETTER F --> FULLWIDTH LATIN SMALL LETTER F
772
  MAKE_PAIR( 0x0067, 0xFF47 ),	// LATIN SMALL LETTER G --> FULLWIDTH LATIN SMALL LETTER G
794
    { 0x0067, 0xFF47, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN SMALL LETTER G --> FULLWIDTH LATIN SMALL LETTER G
773
  MAKE_PAIR( 0x0068, 0xFF48 ),	// LATIN SMALL LETTER H --> FULLWIDTH LATIN SMALL LETTER H
795
    { 0x0068, 0xFF48, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN SMALL LETTER H --> FULLWIDTH LATIN SMALL LETTER H
774
  MAKE_PAIR( 0x0069, 0xFF49 ),	// LATIN SMALL LETTER I --> FULLWIDTH LATIN SMALL LETTER I
796
    { 0x0069, 0xFF49, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN SMALL LETTER I --> FULLWIDTH LATIN SMALL LETTER I
775
  MAKE_PAIR( 0x006A, 0xFF4A ),	// LATIN SMALL LETTER J --> FULLWIDTH LATIN SMALL LETTER J
797
    { 0x006A, 0xFF4A, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN SMALL LETTER J --> FULLWIDTH LATIN SMALL LETTER J
776
  MAKE_PAIR( 0x006B, 0xFF4B ),	// LATIN SMALL LETTER K --> FULLWIDTH LATIN SMALL LETTER K
798
    { 0x006B, 0xFF4B, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN SMALL LETTER K --> FULLWIDTH LATIN SMALL LETTER K
777
  MAKE_PAIR( 0x006C, 0xFF4C ),	// LATIN SMALL LETTER L --> FULLWIDTH LATIN SMALL LETTER L
799
    { 0x006C, 0xFF4C, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN SMALL LETTER L --> FULLWIDTH LATIN SMALL LETTER L
778
  MAKE_PAIR( 0x006D, 0xFF4D ),	// LATIN SMALL LETTER M --> FULLWIDTH LATIN SMALL LETTER M
800
    { 0x006D, 0xFF4D, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN SMALL LETTER M --> FULLWIDTH LATIN SMALL LETTER M
779
  MAKE_PAIR( 0x006E, 0xFF4E ),	// LATIN SMALL LETTER N --> FULLWIDTH LATIN SMALL LETTER N
801
    { 0x006E, 0xFF4E, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN SMALL LETTER N --> FULLWIDTH LATIN SMALL LETTER N
780
  MAKE_PAIR( 0x006F, 0xFF4F ),	// LATIN SMALL LETTER O --> FULLWIDTH LATIN SMALL LETTER O
802
    { 0x006F, 0xFF4F, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN SMALL LETTER O --> FULLWIDTH LATIN SMALL LETTER O
781
  MAKE_PAIR( 0x0070, 0xFF50 ),	// LATIN SMALL LETTER P --> FULLWIDTH LATIN SMALL LETTER P
803
    { 0x0070, 0xFF50, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN SMALL LETTER P --> FULLWIDTH LATIN SMALL LETTER P
782
  MAKE_PAIR( 0x0071, 0xFF51 ),	// LATIN SMALL LETTER Q --> FULLWIDTH LATIN SMALL LETTER Q
804
    { 0x0071, 0xFF51, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN SMALL LETTER Q --> FULLWIDTH LATIN SMALL LETTER Q
783
  MAKE_PAIR( 0x0072, 0xFF52 ),	// LATIN SMALL LETTER R --> FULLWIDTH LATIN SMALL LETTER R
805
    { 0x0072, 0xFF52, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN SMALL LETTER R --> FULLWIDTH LATIN SMALL LETTER R
784
  MAKE_PAIR( 0x0073, 0xFF53 ),	// LATIN SMALL LETTER S --> FULLWIDTH LATIN SMALL LETTER S
806
    { 0x0073, 0xFF53, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN SMALL LETTER S --> FULLWIDTH LATIN SMALL LETTER S
785
  MAKE_PAIR( 0x0074, 0xFF54 ),	// LATIN SMALL LETTER T --> FULLWIDTH LATIN SMALL LETTER T
807
    { 0x0074, 0xFF54, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN SMALL LETTER T --> FULLWIDTH LATIN SMALL LETTER T
786
  MAKE_PAIR( 0x0075, 0xFF55 ),	// LATIN SMALL LETTER U --> FULLWIDTH LATIN SMALL LETTER U
808
    { 0x0075, 0xFF55, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN SMALL LETTER U --> FULLWIDTH LATIN SMALL LETTER U
787
  MAKE_PAIR( 0x0076, 0xFF56 ),	// LATIN SMALL LETTER V --> FULLWIDTH LATIN SMALL LETTER V
809
    { 0x0076, 0xFF56, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN SMALL LETTER V --> FULLWIDTH LATIN SMALL LETTER V
788
  MAKE_PAIR( 0x0077, 0xFF57 ),	// LATIN SMALL LETTER W --> FULLWIDTH LATIN SMALL LETTER W
810
    { 0x0077, 0xFF57, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN SMALL LETTER W --> FULLWIDTH LATIN SMALL LETTER W
789
  MAKE_PAIR( 0x0078, 0xFF58 ),	// LATIN SMALL LETTER X --> FULLWIDTH LATIN SMALL LETTER X
811
    { 0x0078, 0xFF58, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN SMALL LETTER X --> FULLWIDTH LATIN SMALL LETTER X
790
  MAKE_PAIR( 0x0079, 0xFF59 ),	// LATIN SMALL LETTER Y --> FULLWIDTH LATIN SMALL LETTER Y
812
    { 0x0079, 0xFF59, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN SMALL LETTER Y --> FULLWIDTH LATIN SMALL LETTER Y
791
  MAKE_PAIR( 0x007A, 0xFF5A ),	// LATIN SMALL LETTER Z --> FULLWIDTH LATIN SMALL LETTER Z
813
    { 0x007A, 0xFF5A, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LATIN SMALL LETTER Z --> FULLWIDTH LATIN SMALL LETTER Z
792
  MAKE_PAIR( 0x007B, 0xFF5B ),	// LEFT CURLY BRACKET --> FULLWIDTH LEFT CURLY BRACKET
814
    { 0x007B, 0xFF5B, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // LEFT CURLY BRACKET --> FULLWIDTH LEFT CURLY BRACKET
793
  MAKE_PAIR( 0x007C, 0xFF5C ),	// VERTICAL LINE --> FULLWIDTH VERTICAL LINE
815
    { 0x007C, 0xFF5C, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // VERTICAL LINE --> FULLWIDTH VERTICAL LINE
794
  MAKE_PAIR( 0x007D, 0xFF5D ),	// RIGHT CURLY BRACKET --> FULLWIDTH RIGHT CURLY BRACKET
816
    { 0x007D, 0xFF5D, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // RIGHT CURLY BRACKET --> FULLWIDTH RIGHT CURLY BRACKET
795
  MAKE_PAIR( 0x007E, 0xFF5E ),	// TILDE --> FULLWIDTH TILDE
817
    { 0x007E, 0xFF5E, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // TILDE --> FULLWIDTH TILDE
796
  MAKE_PAIR( 0x00A2, 0xFFE0 ),	// CENT SIGN --> FULLWIDTH CENT SIGN
818
    { 0x00A2, 0xFFE0, HALF2FULL_NORMAL },  // CENT SIGN --> FULLWIDTH CENT SIGN
797
  MAKE_PAIR( 0x00A3, 0xFFE1 ),	// POUND SIGN --> FULLWIDTH POUND SIGN
819
    { 0x00A3, 0xFFE1, HALF2FULL_NORMAL },  // POUND SIGN --> FULLWIDTH POUND SIGN
798
  MAKE_PAIR( 0x00A5, 0xFFE5 ),	// YEN SIGN --> FULLWIDTH YEN SIGN
820
    { 0x00A5, 0xFFE5, HALF2FULL_NORMAL },  // YEN SIGN --> FULLWIDTH YEN SIGN
799
  MAKE_PAIR( 0x00A6, 0xFFE4 ),	// BROKEN BAR --> FULLWIDTH BROKEN BAR
821
    { 0x00A6, 0xFFE4, HALF2FULL_NORMAL },  // BROKEN BAR --> FULLWIDTH BROKEN BAR
800
  MAKE_PAIR( 0x00AC, 0xFFE2 ),	// NOT SIGN --> FULLWIDTH NOT SIGN
822
    { 0x00AC, 0xFFE2, HALF2FULL_NORMAL },  // NOT SIGN --> FULLWIDTH NOT SIGN
801
  MAKE_PAIR( 0x00AF, 0xFFE3 ),	// MACRON --> FULLWIDTH MACRON
823
    { 0x00AF, 0xFFE3, HALF2FULL_NORMAL },  // MACRON --> FULLWIDTH MACRON
802
  MAKE_PAIR( 0x20A9, 0xFFE6 ),	// WON SIGN --> FULLWIDTH WON SIGN
824
    { 0x20A9, 0xFFE6, HALF2FULL_NORMAL },  // WON SIGN --> FULLWIDTH WON SIGN
803
  MAKE_PAIR( 0xFF61, 0x3002 ),	// HALFWIDTH IDEOGRAPHIC FULL STOP --> IDEOGRAPHIC FULL STOP
825
    { 0xFF61, 0x3002, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // HALFWIDTH IDEOGRAPHIC FULL STOP --> IDEOGRAPHIC FULL STOP
804
  MAKE_PAIR( 0xFF62, 0x300C ),	// HALFWIDTH LEFT CORNER BRACKET --> LEFT CORNER BRACKET
826
    { 0xFF62, 0x300C, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // HALFWIDTH LEFT CORNER BRACKET --> LEFT CORNER BRACKET
805
  MAKE_PAIR( 0xFF63, 0x300D ),	// HALFWIDTH RIGHT CORNER BRACKET --> RIGHT CORNER BRACKET
827
    { 0xFF63, 0x300D, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // HALFWIDTH RIGHT CORNER BRACKET --> RIGHT CORNER BRACKET
806
  MAKE_PAIR( 0xFF64, 0x3001 ),	// HALFWIDTH IDEOGRAPHIC COMMA --> IDEOGRAPHIC COMMA
828
    { 0xFF64, 0x3001, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // HALFWIDTH IDEOGRAPHIC COMMA --> IDEOGRAPHIC COMMA
807
  MAKE_PAIR( 0xFF65, 0x30FB ),	// HALFWIDTH KATAKANA MIDDLE DOT --> KATAKANA MIDDLE DOT
829
    { 0xFF65, 0x30FB, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // HALFWIDTH KATAKANA MIDDLE DOT --> KATAKANA MIDDLE DOT
808
  MAKE_PAIR( 0xFF66, 0x30F2 ),	// HALFWIDTH KATAKANA LETTER WO --> KATAKANA LETTER WO
830
    { 0xFF66, 0x30F2, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER WO --> KATAKANA LETTER WO
809
  MAKE_PAIR( 0xFF67, 0x30A1 ),	// HALFWIDTH KATAKANA LETTER SMALL A --> KATAKANA LETTER SMALL A
831
    { 0xFF67, 0x30A1, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER SMALL A --> KATAKANA LETTER SMALL A
810
  MAKE_PAIR( 0xFF68, 0x30A3 ),	// HALFWIDTH KATAKANA LETTER SMALL I --> KATAKANA LETTER SMALL I
832
    { 0xFF68, 0x30A3, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER SMALL I --> KATAKANA LETTER SMALL I
811
  MAKE_PAIR( 0xFF69, 0x30A5 ),	// HALFWIDTH KATAKANA LETTER SMALL U --> KATAKANA LETTER SMALL U
833
    { 0xFF69, 0x30A5, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER SMALL U --> KATAKANA LETTER SMALL U
812
  MAKE_PAIR( 0xFF6A, 0x30A7 ),	// HALFWIDTH KATAKANA LETTER SMALL E --> KATAKANA LETTER SMALL E
834
    { 0xFF6A, 0x30A7, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER SMALL E --> KATAKANA LETTER SMALL E
813
  MAKE_PAIR( 0xFF6B, 0x30A9 ),	// HALFWIDTH KATAKANA LETTER SMALL O --> KATAKANA LETTER SMALL O
835
    { 0xFF6B, 0x30A9, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER SMALL O --> KATAKANA LETTER SMALL O
814
  MAKE_PAIR( 0xFF6C, 0x30E3 ),	// HALFWIDTH KATAKANA LETTER SMALL YA --> KATAKANA LETTER SMALL YA
836
    { 0xFF6C, 0x30E3, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER SMALL YA --> KATAKANA LETTER SMALL YA
815
  MAKE_PAIR( 0xFF6D, 0x30E5 ),	// HALFWIDTH KATAKANA LETTER SMALL YU --> KATAKANA LETTER SMALL YU
837
    { 0xFF6D, 0x30E5, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER SMALL YU --> KATAKANA LETTER SMALL YU
816
  MAKE_PAIR( 0xFF6E, 0x30E7 ),	// HALFWIDTH KATAKANA LETTER SMALL YO --> KATAKANA LETTER SMALL YO
838
    { 0xFF6E, 0x30E7, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER SMALL YO --> KATAKANA LETTER SMALL YO
817
  MAKE_PAIR( 0xFF6F, 0x30C3 ),	// HALFWIDTH KATAKANA LETTER SMALL TU --> KATAKANA LETTER SMALL TU
839
    { 0xFF6F, 0x30C3, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER SMALL TU --> KATAKANA LETTER SMALL TU
818
  MAKE_PAIR( 0xFF70, 0x30FC ),	// HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK --> KATAKANA-HIRAGANA PROLONGED SOUND MARK
840
    { 0xFF70, 0x30FC, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION },  // HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK --> KATAKANA-HIRAGANA PROLONGED SOUND MARK
819
  MAKE_PAIR( 0xFF71, 0x30A2 ),	// HALFWIDTH KATAKANA LETTER A --> KATAKANA LETTER A
841
    { 0xFF71, 0x30A2, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER A --> KATAKANA LETTER A
820
  MAKE_PAIR( 0xFF72, 0x30A4 ),	// HALFWIDTH KATAKANA LETTER I --> KATAKANA LETTER I
842
    { 0xFF72, 0x30A4, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER I --> KATAKANA LETTER I
821
  MAKE_PAIR( 0xFF73, 0x30A6 ),	// HALFWIDTH KATAKANA LETTER U --> KATAKANA LETTER U
843
    { 0xFF73, 0x30A6, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER U --> KATAKANA LETTER U
822
  MAKE_PAIR( 0xFF74, 0x30A8 ),	// HALFWIDTH KATAKANA LETTER E --> KATAKANA LETTER E
844
    { 0xFF74, 0x30A8, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER E --> KATAKANA LETTER E
823
  MAKE_PAIR( 0xFF75, 0x30AA ),	// HALFWIDTH KATAKANA LETTER O --> KATAKANA LETTER O
845
    { 0xFF75, 0x30AA, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER O --> KATAKANA LETTER O
824
  MAKE_PAIR( 0xFF76, 0x30AB ),	// HALFWIDTH KATAKANA LETTER KA --> KATAKANA LETTER KA
846
    { 0xFF76, 0x30AB, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER KA --> KATAKANA LETTER KA
825
  MAKE_PAIR( 0xFF77, 0x30AD ),	// HALFWIDTH KATAKANA LETTER KI --> KATAKANA LETTER KI
847
    { 0xFF77, 0x30AD, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER KI --> KATAKANA LETTER KI
826
  MAKE_PAIR( 0xFF78, 0x30AF ),	// HALFWIDTH KATAKANA LETTER KU --> KATAKANA LETTER KU
848
    { 0xFF78, 0x30AF, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER KU --> KATAKANA LETTER KU
827
  MAKE_PAIR( 0xFF79, 0x30B1 ),	// HALFWIDTH KATAKANA LETTER KE --> KATAKANA LETTER KE
849
    { 0xFF79, 0x30B1, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER KE --> KATAKANA LETTER KE
828
  MAKE_PAIR( 0xFF7A, 0x30B3 ),	// HALFWIDTH KATAKANA LETTER KO --> KATAKANA LETTER KO
850
    { 0xFF7A, 0x30B3, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER KO --> KATAKANA LETTER KO
829
  MAKE_PAIR( 0xFF7B, 0x30B5 ),	// HALFWIDTH KATAKANA LETTER SA --> KATAKANA LETTER SA
851
    { 0xFF7B, 0x30B5, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER SA --> KATAKANA LETTER SA
830
  MAKE_PAIR( 0xFF7C, 0x30B7 ),	// HALFWIDTH KATAKANA LETTER SI --> KATAKANA LETTER SI
852
    { 0xFF7C, 0x30B7, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER SI --> KATAKANA LETTER SI
831
  MAKE_PAIR( 0xFF7D, 0x30B9 ),	// HALFWIDTH KATAKANA LETTER SU --> KATAKANA LETTER SU
853
    { 0xFF7D, 0x30B9, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER SU --> KATAKANA LETTER SU
832
  MAKE_PAIR( 0xFF7E, 0x30BB ),	// HALFWIDTH KATAKANA LETTER SE --> KATAKANA LETTER SE
854
    { 0xFF7E, 0x30BB, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER SE --> KATAKANA LETTER SE
833
  MAKE_PAIR( 0xFF7F, 0x30BD ),	// HALFWIDTH KATAKANA LETTER SO --> KATAKANA LETTER SO
855
    { 0xFF7F, 0x30BD, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER SO --> KATAKANA LETTER SO
834
  MAKE_PAIR( 0xFF80, 0x30BF ),	// HALFWIDTH KATAKANA LETTER TA --> KATAKANA LETTER TA
856
    { 0xFF80, 0x30BF, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER TA --> KATAKANA LETTER TA
835
  MAKE_PAIR( 0xFF81, 0x30C1 ),	// HALFWIDTH KATAKANA LETTER TI --> KATAKANA LETTER TI
857
    { 0xFF81, 0x30C1, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER TI --> KATAKANA LETTER TI
836
  MAKE_PAIR( 0xFF82, 0x30C4 ),	// HALFWIDTH KATAKANA LETTER TU --> KATAKANA LETTER TU
858
    { 0xFF82, 0x30C4, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER TU --> KATAKANA LETTER TU
837
  MAKE_PAIR( 0xFF83, 0x30C6 ),	// HALFWIDTH KATAKANA LETTER TE --> KATAKANA LETTER TE
859
    { 0xFF83, 0x30C6, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER TE --> KATAKANA LETTER TE
838
  MAKE_PAIR( 0xFF84, 0x30C8 ),	// HALFWIDTH KATAKANA LETTER TO --> KATAKANA LETTER TO
860
    { 0xFF84, 0x30C8, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER TO --> KATAKANA LETTER TO
839
  MAKE_PAIR( 0xFF85, 0x30CA ),	// HALFWIDTH KATAKANA LETTER NA --> KATAKANA LETTER NA
861
    { 0xFF85, 0x30CA, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER NA --> KATAKANA LETTER NA
840
  MAKE_PAIR( 0xFF86, 0x30CB ),	// HALFWIDTH KATAKANA LETTER NI --> KATAKANA LETTER NI
862
    { 0xFF86, 0x30CB, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER NI --> KATAKANA LETTER NI
841
  MAKE_PAIR( 0xFF87, 0x30CC ),	// HALFWIDTH KATAKANA LETTER NU --> KATAKANA LETTER NU
863
    { 0xFF87, 0x30CC, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER NU --> KATAKANA LETTER NU
842
  MAKE_PAIR( 0xFF88, 0x30CD ),	// HALFWIDTH KATAKANA LETTER NE --> KATAKANA LETTER NE
864
    { 0xFF88, 0x30CD, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER NE --> KATAKANA LETTER NE
843
  MAKE_PAIR( 0xFF89, 0x30CE ),	// HALFWIDTH KATAKANA LETTER NO --> KATAKANA LETTER NO
865
    { 0xFF89, 0x30CE, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER NO --> KATAKANA LETTER NO
844
  MAKE_PAIR( 0xFF8A, 0x30CF ),	// HALFWIDTH KATAKANA LETTER HA --> KATAKANA LETTER HA
866
    { 0xFF8A, 0x30CF, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER HA --> KATAKANA LETTER HA
845
  MAKE_PAIR( 0xFF8B, 0x30D2 ),	// HALFWIDTH KATAKANA LETTER HI --> KATAKANA LETTER HI
867
    { 0xFF8B, 0x30D2, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER HI --> KATAKANA LETTER HI
846
  MAKE_PAIR( 0xFF8C, 0x30D5 ),	// HALFWIDTH KATAKANA LETTER HU --> KATAKANA LETTER HU
868
    { 0xFF8C, 0x30D5, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER HU --> KATAKANA LETTER HU
847
  MAKE_PAIR( 0xFF8D, 0x30D8 ),	// HALFWIDTH KATAKANA LETTER HE --> KATAKANA LETTER HE
869
    { 0xFF8D, 0x30D8, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER HE --> KATAKANA LETTER HE
848
  MAKE_PAIR( 0xFF8E, 0x30DB ),	// HALFWIDTH KATAKANA LETTER HO --> KATAKANA LETTER HO
870
    { 0xFF8E, 0x30DB, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER HO --> KATAKANA LETTER HO
849
  MAKE_PAIR( 0xFF8F, 0x30DE ),	// HALFWIDTH KATAKANA LETTER MA --> KATAKANA LETTER MA
871
    { 0xFF8F, 0x30DE, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER MA --> KATAKANA LETTER MA
850
  MAKE_PAIR( 0xFF90, 0x30DF ),	// HALFWIDTH KATAKANA LETTER MI --> KATAKANA LETTER MI
872
    { 0xFF90, 0x30DF, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER MI --> KATAKANA LETTER MI
851
  MAKE_PAIR( 0xFF91, 0x30E0 ),	// HALFWIDTH KATAKANA LETTER MU --> KATAKANA LETTER MU
873
    { 0xFF91, 0x30E0, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER MU --> KATAKANA LETTER MU
852
  MAKE_PAIR( 0xFF92, 0x30E1 ),	// HALFWIDTH KATAKANA LETTER ME --> KATAKANA LETTER ME
874
    { 0xFF92, 0x30E1, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER ME --> KATAKANA LETTER ME
853
  MAKE_PAIR( 0xFF93, 0x30E2 ),	// HALFWIDTH KATAKANA LETTER MO --> KATAKANA LETTER MO
875
    { 0xFF93, 0x30E2, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER MO --> KATAKANA LETTER MO
854
  MAKE_PAIR( 0xFF94, 0x30E4 ),	// HALFWIDTH KATAKANA LETTER YA --> KATAKANA LETTER YA
876
    { 0xFF94, 0x30E4, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER YA --> KATAKANA LETTER YA
855
  MAKE_PAIR( 0xFF95, 0x30E6 ),	// HALFWIDTH KATAKANA LETTER YU --> KATAKANA LETTER YU
877
    { 0xFF95, 0x30E6, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER YU --> KATAKANA LETTER YU
856
  MAKE_PAIR( 0xFF96, 0x30E8 ),	// HALFWIDTH KATAKANA LETTER YO --> KATAKANA LETTER YO
878
    { 0xFF96, 0x30E8, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER YO --> KATAKANA LETTER YO
857
  MAKE_PAIR( 0xFF97, 0x30E9 ),	// HALFWIDTH KATAKANA LETTER RA --> KATAKANA LETTER RA
879
    { 0xFF97, 0x30E9, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER RA --> KATAKANA LETTER RA
858
  MAKE_PAIR( 0xFF98, 0x30EA ),	// HALFWIDTH KATAKANA LETTER RI --> KATAKANA LETTER RI
880
    { 0xFF98, 0x30EA, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER RI --> KATAKANA LETTER RI
859
  MAKE_PAIR( 0xFF99, 0x30EB ),	// HALFWIDTH KATAKANA LETTER RU --> KATAKANA LETTER RU
881
    { 0xFF99, 0x30EB, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER RU --> KATAKANA LETTER RU
860
  MAKE_PAIR( 0xFF9A, 0x30EC ),	// HALFWIDTH KATAKANA LETTER RE --> KATAKANA LETTER RE
882
    { 0xFF9A, 0x30EC, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER RE --> KATAKANA LETTER RE
861
  MAKE_PAIR( 0xFF9B, 0x30ED ),	// HALFWIDTH KATAKANA LETTER RO --> KATAKANA LETTER RO
883
    { 0xFF9B, 0x30ED, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER RO --> KATAKANA LETTER RO
862
  MAKE_PAIR( 0xFF9C, 0x30EF ),	// HALFWIDTH KATAKANA LETTER WA --> KATAKANA LETTER WA
884
    { 0xFF9C, 0x30EF, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER WA --> KATAKANA LETTER WA
863
  MAKE_PAIR( 0xFF9D, 0x30F3 ),	// HALFWIDTH KATAKANA LETTER N --> KATAKANA LETTER N
885
    { 0xFF9D, 0x30F3, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA LETTER N --> KATAKANA LETTER N
864
  MAKE_PAIR( 0xFF9E, 0x3099 ),	// HALFWIDTH KATAKANA VOICED SOUND MARK --> COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
886
865
  MAKE_PAIR( 0xFF9F, 0x309A ),	// HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK --> COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
887
// bluedwarf: A combination character cannot be used solely
866
  MAKE_PAIR( 0xFFA0, 0x3164 ),	// HALFWIDTH HANGUL FILLER --> HANGUL FILLER
888
//    { 0xFF9E, 0x3099, HALF2FULL_NORMAL },  // HALFWIDTH KATAKANA VOICED SOUND MARK --> COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
867
  MAKE_PAIR( 0xFFA1, 0x3131 ),	// HALFWIDTH HANGUL LETTER KIYEOK --> HANGUL LETTER KIYEOK
889
//    { 0xFF9F, 0x309A, HALF2FULL_NORMAL },  // HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK --> COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
868
  MAKE_PAIR( 0xFFA2, 0x3132 ),	// HALFWIDTH HANGUL LETTER SSANGKIYEOK --> HANGUL LETTER SSANGKIYEOK
890
    { 0xFF9E, 0x309B, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA VOICED SOUND MARK --> KATAKANA-HIRAGANA VOICED SOUND MARK
869
  MAKE_PAIR( 0xFFA3, 0x3133 ),	// HALFWIDTH HANGUL LETTER KIYEOK-SIOS --> HANGUL LETTER KIYEOK-SIOS
891
    { 0xFF9F, 0x309C, HALF2FULL_NORMAL | HALF2FULL_JIS_FUNCTION | HALF2FULL_KATAKANA_ONLY },  // HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK --> KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
870
  MAKE_PAIR( 0xFFA4, 0x3134 ),	// HALFWIDTH HANGUL LETTER NIEUN --> HANGUL LETTER NIEUN
892
871
  MAKE_PAIR( 0xFFA5, 0x3135 ),	// HALFWIDTH HANGUL LETTER NIEUN-CIEUC --> HANGUL LETTER NIEUN-CIEUC
893
    { 0xFFA0, 0x3164, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL FILLER --> HANGUL FILLER
872
  MAKE_PAIR( 0xFFA6, 0x3136 ),	// HALFWIDTH HANGUL LETTER NIEUN-HIEUH --> HANGUL LETTER NIEUN-HIEUH
894
    { 0xFFA1, 0x3131, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER KIYEOK --> HANGUL LETTER KIYEOK
873
  MAKE_PAIR( 0xFFA7, 0x3137 ),	// HALFWIDTH HANGUL LETTER TIKEUT --> HANGUL LETTER TIKEUT
895
    { 0xFFA2, 0x3132, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER SSANGKIYEOK --> HANGUL LETTER SSANGKIYEOK
874
  MAKE_PAIR( 0xFFA8, 0x3138 ),	// HALFWIDTH HANGUL LETTER SSANGTIKEUT --> HANGUL LETTER SSANGTIKEUT
896
    { 0xFFA3, 0x3133, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER KIYEOK-SIOS --> HANGUL LETTER KIYEOK-SIOS
875
  MAKE_PAIR( 0xFFA9, 0x3139 ),	// HALFWIDTH HANGUL LETTER RIEUL --> HANGUL LETTER RIEUL
897
    { 0xFFA4, 0x3134, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER NIEUN --> HANGUL LETTER NIEUN
876
  MAKE_PAIR( 0xFFAA, 0x313A ),	// HALFWIDTH HANGUL LETTER RIEUL-KIYEOK --> HANGUL LETTER RIEUL-KIYEOK
898
    { 0xFFA5, 0x3135, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER NIEUN-CIEUC --> HANGUL LETTER NIEUN-CIEUC
877
  MAKE_PAIR( 0xFFAB, 0x313B ),	// HALFWIDTH HANGUL LETTER RIEUL-MIEUM --> HANGUL LETTER RIEUL-MIEUM
899
    { 0xFFA6, 0x3136, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER NIEUN-HIEUH --> HANGUL LETTER NIEUN-HIEUH
878
  MAKE_PAIR( 0xFFAC, 0x313C ),	// HALFWIDTH HANGUL LETTER RIEUL-PIEUP --> HANGUL LETTER RIEUL-PIEUP
900
    { 0xFFA7, 0x3137, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER TIKEUT --> HANGUL LETTER TIKEUT
879
  MAKE_PAIR( 0xFFAD, 0x313D ),	// HALFWIDTH HANGUL LETTER RIEUL-SIOS --> HANGUL LETTER RIEUL-SIOS
901
    { 0xFFA8, 0x3138, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER SSANGTIKEUT --> HANGUL LETTER SSANGTIKEUT
880
  MAKE_PAIR( 0xFFAE, 0x313E ),	// HALFWIDTH HANGUL LETTER RIEUL-THIEUTH --> HANGUL LETTER RIEUL-THIEUTH
902
    { 0xFFA9, 0x3139, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER RIEUL --> HANGUL LETTER RIEUL
881
  MAKE_PAIR( 0xFFAF, 0x313F ),	// HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH --> HANGUL LETTER RIEUL-PHIEUPH
903
    { 0xFFAA, 0x313A, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER RIEUL-KIYEOK --> HANGUL LETTER RIEUL-KIYEOK
882
  MAKE_PAIR( 0xFFB0, 0x3140 ),	// HALFWIDTH HANGUL LETTER RIEUL-HIEUH --> HANGUL LETTER RIEUL-HIEUH
904
    { 0xFFAB, 0x313B, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER RIEUL-MIEUM --> HANGUL LETTER RIEUL-MIEUM
883
  MAKE_PAIR( 0xFFB1, 0x3141 ),	// HALFWIDTH HANGUL LETTER MIEUM --> HANGUL LETTER MIEUM
905
    { 0xFFAC, 0x313C, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER RIEUL-PIEUP --> HANGUL LETTER RIEUL-PIEUP
884
  MAKE_PAIR( 0xFFB2, 0x3142 ),	// HALFWIDTH HANGUL LETTER PIEUP --> HANGUL LETTER PIEUP
906
    { 0xFFAD, 0x313D, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER RIEUL-SIOS --> HANGUL LETTER RIEUL-SIOS
885
  MAKE_PAIR( 0xFFB3, 0x3143 ),	// HALFWIDTH HANGUL LETTER SSANGPIEUP --> HANGUL LETTER SSANGPIEUP
907
    { 0xFFAE, 0x313E, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER RIEUL-THIEUTH --> HANGUL LETTER RIEUL-THIEUTH
886
  MAKE_PAIR( 0xFFB4, 0x3144 ),	// HALFWIDTH HANGUL LETTER PIEUP-SIOS --> HANGUL LETTER PIEUP-SIOS
908
    { 0xFFAF, 0x313F, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH --> HANGUL LETTER RIEUL-PHIEUPH
887
  MAKE_PAIR( 0xFFB5, 0x3145 ),	// HALFWIDTH HANGUL LETTER SIOS --> HANGUL LETTER SIOS
909
    { 0xFFB0, 0x3140, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER RIEUL-HIEUH --> HANGUL LETTER RIEUL-HIEUH
888
  MAKE_PAIR( 0xFFB6, 0x3146 ),	// HALFWIDTH HANGUL LETTER SSANGSIOS --> HANGUL LETTER SSANGSIOS
910
    { 0xFFB1, 0x3141, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER MIEUM --> HANGUL LETTER MIEUM
889
  MAKE_PAIR( 0xFFB7, 0x3147 ),	// HALFWIDTH HANGUL LETTER IEUNG --> HANGUL LETTER IEUNG
911
    { 0xFFB2, 0x3142, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER PIEUP --> HANGUL LETTER PIEUP
890
  MAKE_PAIR( 0xFFB8, 0x3148 ),	// HALFWIDTH HANGUL LETTER CIEUC --> HANGUL LETTER CIEUC
912
    { 0xFFB3, 0x3143, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER SSANGPIEUP --> HANGUL LETTER SSANGPIEUP
891
  MAKE_PAIR( 0xFFB9, 0x3149 ),	// HALFWIDTH HANGUL LETTER SSANGCIEUC --> HANGUL LETTER SSANGCIEUC
913
    { 0xFFB4, 0x3144, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER PIEUP-SIOS --> HANGUL LETTER PIEUP-SIOS
892
  MAKE_PAIR( 0xFFBA, 0x314A ),	// HALFWIDTH HANGUL LETTER CHIEUCH --> HANGUL LETTER CHIEUCH
914
    { 0xFFB5, 0x3145, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER SIOS --> HANGUL LETTER SIOS
893
  MAKE_PAIR( 0xFFBB, 0x314B ),	// HALFWIDTH HANGUL LETTER KHIEUKH --> HANGUL LETTER KHIEUKH
915
    { 0xFFB6, 0x3146, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER SSANGSIOS --> HANGUL LETTER SSANGSIOS
894
  MAKE_PAIR( 0xFFBC, 0x314C ),	// HALFWIDTH HANGUL LETTER THIEUTH --> HANGUL LETTER THIEUTH
916
    { 0xFFB7, 0x3147, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER IEUNG --> HANGUL LETTER IEUNG
895
  MAKE_PAIR( 0xFFBD, 0x314D ),	// HALFWIDTH HANGUL LETTER PHIEUPH --> HANGUL LETTER PHIEUPH
917
    { 0xFFB8, 0x3148, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER CIEUC --> HANGUL LETTER CIEUC
896
  MAKE_PAIR( 0xFFBE, 0x314E ),	// HALFWIDTH HANGUL LETTER HIEUH --> HANGUL LETTER HIEUH
918
    { 0xFFB9, 0x3149, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER SSANGCIEUC --> HANGUL LETTER SSANGCIEUC
897
  MAKE_PAIR( 0xFFC2, 0x314F ),	// HALFWIDTH HANGUL LETTER A --> HANGUL LETTER A
919
    { 0xFFBA, 0x314A, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER CHIEUCH --> HANGUL LETTER CHIEUCH
898
  MAKE_PAIR( 0xFFC3, 0x3150 ),	// HALFWIDTH HANGUL LETTER AE --> HANGUL LETTER AE
920
    { 0xFFBB, 0x314B, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER KHIEUKH --> HANGUL LETTER KHIEUKH
899
  MAKE_PAIR( 0xFFC4, 0x3151 ),	// HALFWIDTH HANGUL LETTER YA --> HANGUL LETTER YA
921
    { 0xFFBC, 0x314C, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER THIEUTH --> HANGUL LETTER THIEUTH
900
  MAKE_PAIR( 0xFFC5, 0x3152 ),	// HALFWIDTH HANGUL LETTER YAE --> HANGUL LETTER YAE
922
    { 0xFFBD, 0x314D, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER PHIEUPH --> HANGUL LETTER PHIEUPH
901
  MAKE_PAIR( 0xFFC6, 0x3153 ),	// HALFWIDTH HANGUL LETTER EO --> HANGUL LETTER EO
923
    { 0xFFBE, 0x314E, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER HIEUH --> HANGUL LETTER HIEUH
902
  MAKE_PAIR( 0xFFC7, 0x3154 ),	// HALFWIDTH HANGUL LETTER E --> HANGUL LETTER E
924
    { 0xFFC2, 0x314F, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER A --> HANGUL LETTER A
903
  MAKE_PAIR( 0xFFCA, 0x3155 ),	// HALFWIDTH HANGUL LETTER YEO --> HANGUL LETTER YEO
925
    { 0xFFC3, 0x3150, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER AE --> HANGUL LETTER AE
904
  MAKE_PAIR( 0xFFCB, 0x3156 ),	// HALFWIDTH HANGUL LETTER YE --> HANGUL LETTER YE
926
    { 0xFFC4, 0x3151, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER YA --> HANGUL LETTER YA
905
  MAKE_PAIR( 0xFFCC, 0x3157 ),	// HALFWIDTH HANGUL LETTER O --> HANGUL LETTER O
927
    { 0xFFC5, 0x3152, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER YAE --> HANGUL LETTER YAE
906
  MAKE_PAIR( 0xFFCD, 0x3158 ),	// HALFWIDTH HANGUL LETTER WA --> HANGUL LETTER WA
928
    { 0xFFC6, 0x3153, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER EO --> HANGUL LETTER EO
907
  MAKE_PAIR( 0xFFCE, 0x3159 ),	// HALFWIDTH HANGUL LETTER WAE --> HANGUL LETTER WAE
929
    { 0xFFC7, 0x3154, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER E --> HANGUL LETTER E
908
  MAKE_PAIR( 0xFFCF, 0x315A ),	// HALFWIDTH HANGUL LETTER OE --> HANGUL LETTER OE
930
    { 0xFFCA, 0x3155, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER YEO --> HANGUL LETTER YEO
909
  MAKE_PAIR( 0xFFD2, 0x315B ),	// HALFWIDTH HANGUL LETTER YO --> HANGUL LETTER YO
931
    { 0xFFCB, 0x3156, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER YE --> HANGUL LETTER YE
910
  MAKE_PAIR( 0xFFD3, 0x315C ),	// HALFWIDTH HANGUL LETTER U --> HANGUL LETTER U
932
    { 0xFFCC, 0x3157, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER O --> HANGUL LETTER O
911
  MAKE_PAIR( 0xFFD4, 0x315D ),	// HALFWIDTH HANGUL LETTER WEO --> HANGUL LETTER WEO
933
    { 0xFFCD, 0x3158, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER WA --> HANGUL LETTER WA
912
  MAKE_PAIR( 0xFFD5, 0x315E ),	// HALFWIDTH HANGUL LETTER WE --> HANGUL LETTER WE
934
    { 0xFFCE, 0x3159, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER WAE --> HANGUL LETTER WAE
913
  MAKE_PAIR( 0xFFD6, 0x315F ),	// HALFWIDTH HANGUL LETTER WI --> HANGUL LETTER WI
935
    { 0xFFCF, 0x315A, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER OE --> HANGUL LETTER OE
914
  MAKE_PAIR( 0xFFD7, 0x3160 ),	// HALFWIDTH HANGUL LETTER YU --> HANGUL LETTER YU
936
    { 0xFFD2, 0x315B, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER YO --> HANGUL LETTER YO
915
  MAKE_PAIR( 0xFFDA, 0x3161 ),	// HALFWIDTH HANGUL LETTER EU --> HANGUL LETTER EU
937
    { 0xFFD3, 0x315C, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER U --> HANGUL LETTER U
916
  MAKE_PAIR( 0xFFDB, 0x3162 ),	// HALFWIDTH HANGUL LETTER YI --> HANGUL LETTER YI
938
    { 0xFFD4, 0x315D, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER WEO --> HANGUL LETTER WEO
917
  MAKE_PAIR( 0xFFDC, 0x3163 ),	// HALFWIDTH HANGUL LETTER I --> HANGUL LETTER I
939
    { 0xFFD5, 0x315E, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER WE --> HANGUL LETTER WE
918
  MAKE_PAIR( 0xFFE8, 0x2502 ),	// HALFWIDTH FORMS LIGHT VERTICAL --> BOX DRAWINGS LIGHT VERTICAL
940
    { 0xFFD6, 0x315F, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER WI --> HANGUL LETTER WI
919
  MAKE_PAIR( 0xFFE9, 0x2190 ),	// HALFWIDTH LEFTWARDS ARROW --> LEFTWARDS ARROW
941
    { 0xFFD7, 0x3160, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER YU --> HANGUL LETTER YU
920
  MAKE_PAIR( 0xFFEA, 0x2191 ),	// HALFWIDTH UPWARDS ARROW --> UPWARDS ARROW
942
    { 0xFFDA, 0x3161, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER EU --> HANGUL LETTER EU
921
  MAKE_PAIR( 0xFFEB, 0x2192 ),	// HALFWIDTH RIGHTWARDS ARROW --> RIGHTWARDS ARROW
943
    { 0xFFDB, 0x3162, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER YI --> HANGUL LETTER YI
922
  MAKE_PAIR( 0xFFEC, 0x2193 ),	// HALFWIDTH DOWNWARDS ARROW --> DOWNWARDS ARROW
944
    { 0xFFDC, 0x3163, HALF2FULL_NORMAL },  // HALFWIDTH HANGUL LETTER I --> HANGUL LETTER I
923
  MAKE_PAIR( 0xFFED, 0x25A0 ),	// HALFWIDTH BLACK SQUARE --> BLACK SQUARE
945
    { 0xFFE8, 0x2502, HALF2FULL_NORMAL },  // HALFWIDTH FORMS LIGHT VERTICAL --> BOX DRAWINGS LIGHT VERTICAL
924
  MAKE_PAIR( 0xFFEE, 0x25CB ) 	// HALFWIDTH WHITE CIRCLE --> WHITE CIRCLE
946
    { 0xFFE9, 0x2190, HALF2FULL_NORMAL },  // HALFWIDTH LEFTWARDS ARROW --> LEFTWARDS ARROW
947
    { 0xFFEA, 0x2191, HALF2FULL_NORMAL },  // HALFWIDTH UPWARDS ARROW --> UPWARDS ARROW
948
    { 0xFFEB, 0x2192, HALF2FULL_NORMAL },  // HALFWIDTH RIGHTWARDS ARROW --> RIGHTWARDS ARROW
949
    { 0xFFEC, 0x2193, HALF2FULL_NORMAL },  // HALFWIDTH DOWNWARDS ARROW --> DOWNWARDS ARROW
950
    { 0xFFED, 0x25A0, HALF2FULL_NORMAL },  // HALFWIDTH BLACK SQUARE --> BLACK SQUARE
951
    { 0xFFEE, 0x25CB, HALF2FULL_NORMAL },  // HALFWIDTH WHITE CIRCLE --> WHITE CIRCLE
925
};
952
};
926
953
954
/*
955
 Exceptional conversion table for JIS function
956
*/    
957
UnicodePairWithFlag half2fullJISException[] = {
958
    { 0x0022, 0x201D, HALF2FULL_JIS_FUNCTION }, // QUOTATION MARK --> RIGHT DOUBLE QUOTATION MARK
959
    { 0x0027, 0x2019, HALF2FULL_JIS_FUNCTION }, // APOSTROPHE --> RIGHT SINGLE QUOTATION MARK
960
    { 0x005C, 0xFFE5, HALF2FULL_JIS_FUNCTION }, // REVERSE SOLIDUS --> FULLWIDTH YEN SIGN
961
    { 0x0060, 0x2018, HALF2FULL_JIS_FUNCTION }, // GRAVE ACCENT --> LEFT SINGLE QUOTATION MARK
962
 };
963
964
927
} } } }
965
} } } }
928
966
929
#endif
967
#endif

Return to issue 81366