3 /*---------------------------------------------------------------------
7 katakana, hiragana, dakuon - JIS X0201 kana to JIS kanji in DEC
8 ---------------------------------------------------------------------*/
9 unsigned short katakana
[] = {
10 0, 0xa1a3, 0xa1d6, 0xa1d7, 0xa1a2, 0xa1a6, 0xa5f2, 0xa5a1,
11 0xa5a3, 0xa5a5, 0xa5a7, 0xa5a9, 0xa5e3, 0xa5e5, 0xa5e7, 0xa5c3,
12 0xa1bc, 0xa5a2, 0xa5a4, 0xa5a6, 0xa5a8, 0xa5aa, 0xa5ab, 0xa5ad,
13 0xa5af, 0xa5b1, 0xa5b3, 0xa5b5, 0xa5b7, 0xa5b9, 0xa5bb, 0xa5bd,
14 0xa5bf, 0xa5c1, 0xa5c4, 0xa5c6, 0xa5c8, 0xa5ca, 0xa5cb, 0xa5cc,
15 0xa5cd, 0xa5ce, 0xa5cf, 0xa5d2, 0xa5d5, 0xa5d8, 0xa5db, 0xa5de,
16 0xa5df, 0xa5e0, 0xa5e1, 0xa5e2, 0xa5e4, 0xa5e6, 0xa5e8, 0xa5e9,
17 0xa5ea, 0xa5eb, 0xa5ec, 0xa5ed, 0xa5ef, 0xa5f3, 0xa1ab, 0xa1ac,
20 unsigned short hiragana
[] = {
21 0, 0xa1a3, 0xa1d6, 0xa1d7, 0xa1a2, 0xa1a6, 0xa4f2, 0xa4a1,
22 0xa4a3, 0xa4a5, 0xa4a7, 0xa4a9, 0xa4e3, 0xa4e5, 0xa4e7, 0xa4c3,
23 0xa1bc, 0xa4a2, 0xa4a4, 0xa4a6, 0xa4a8, 0xa4aa, 0xa4ab, 0xa4ad,
24 0xa4af, 0xa4b1, 0xa4b3, 0xa4b5, 0xa4b7, 0xa4b9, 0xa4bb, 0xa4bd,
25 0xa4bf, 0xa4c1, 0xa4c4, 0xa4c6, 0xa4c8, 0xa4ca, 0xa4cb, 0xa4cc,
26 0xa4cd, 0xa4ce, 0xa4cf, 0xa4d2, 0xa4d5, 0xa4d8, 0xa4db, 0xa4de,
27 0xa4df, 0xa4e0, 0xa4e1, 0xa4e2, 0xa4e4, 0xa4e6, 0xa4e8, 0xa4e9,
28 0xa4ea, 0xa4eb, 0xa4ec, 0xa4ed, 0xa4ef, 0xa4f3, 0xa1ab, 0xa1ac,
31 unsigned char dakuon
[] = {
32 0, 0, 0, 0, 0, 0, 0, 0,
33 0, 0, 0, 0, 0, 0, 0, 0,
34 0, 0, 0, 0, 0, 0, 1, 1,
35 1, 1, 1, 1, 1, 1, 1, 1,
36 1, 1, 1, 1, 1, 0, 0, 0,
37 0, 0, 3, 3, 3, 3, 3, 0,
38 0, 0, 0, 0, 0, 0, 0, 0,
39 0, 0, 0, 0, 0, 0, 0, 0,
42 /*********************************************************/
43 unsigned short *kanatbl
= katakana
;
47 /*---------------------------------------------------------------------
50 ---------------------------------------------------------------------*/
51 void Kcc_decascii(ddd
, c
)
56 **ddd
= kanatbl
[lastkana
] >> 8; (*ddd
)++;
57 **ddd
= kanatbl
[lastkana
] & 0xff; (*ddd
)++;
63 /*---------------------------------------------------------------------
66 ---------------------------------------------------------------------*/
67 void Kcc_decgaiji(ddd
, c1
, c2
)
72 **ddd
= kanatbl
[lastkana
] >> 8; (*ddd
)++;
73 **ddd
= kanatbl
[lastkana
] & 0xff; (*ddd
)++;
77 **ddd
= ZENPAD
>> 8 | 0x80; (*ddd
)++;
78 **ddd
= (ZENPAD
& 0xff) | 0x80; (*ddd
)++;
80 **ddd
= c1
| 0x80; (*ddd
)++;
85 /*---------------------------------------------------------------------
88 ---------------------------------------------------------------------*/
89 void Kcc_deckana(ddd
, c
)
95 extern unsigned char dakuon
[];
98 cc
= kanatbl
[lastkana
];
99 if ((c
== 0x5e || c
== 0x5f) &&
100 (i
= dakuon
[lastkana
] & (c
== 0x5e ? 1 : 2))) {
104 **ddd
= cc
>> 8; (*ddd
)++;
105 **ddd
= cc
& 0xff; (*ddd
)++;
107 if (c
< 0x21 || 0x5f < c
) {
109 **ddd
= ZENPAD
>> 8; (*ddd
)++;
110 **ddd
= ZENPAD
& 0xff; (*ddd
)++;
116 /*---------------------------------------------------------------------
119 ---------------------------------------------------------------------*/
120 void Kcc_deckanji(ddd
, c1
, c2
)
125 **ddd
= kanatbl
[lastkana
] >> 8; (*ddd
)++;
126 **ddd
= kanatbl
[lastkana
] & 0xff; (*ddd
)++;
129 **ddd
= c1
| 0x80; (*ddd
)++;
130 **ddd
= c2
| 0x80; (*ddd
)++;