summaryrefslogtreecommitdiff
path: root/modules/hangul/tables-jamos.i
blob: e5ea59428fd010ebcf768e7d760b319f344d9346 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
/* -*-c-*- */

#define KSC_JAMOBASE		0x2420
#define UNI_JAMOBASE		0x3130

#define KSC_KIYEOK		0x2421
#define KSC_SSANGKIYEOK		0x2422
#define KSC_KIYEOK_SIOS		0x2423
#define KSC_NIEUN		0x2424
#define KSC_NIEUN_CIEUC		0x2425
#define KSC_NIEUN_HIEUH		0x2426
#define KSC_TIKEUT		0x2427
#define KSC_SSANGTIKEUT		0x2428
#define KSC_RIEUL		0x2429
#define KSC_RIEUL_KIYEOK	0x242a
#define KSC_RIEUL_MIEUM		0x242b
#define KSC_RIEUL_PIEUP		0x242c
#define KSC_RIEUL_SIOS		0x242d
#define KSC_RIEUL_THIEUTH	0x242e
#define KSC_RIEUL_PHIEUPH	0x242f
#define KSC_RIEUL_HIEUH		0x2430
#define KSC_MIEUM		0x2431
#define KSC_PIEUP		0x2432
#define KSC_SSANGPIEUP		0x2433
#define KSC_PIEUP_SIOS		0x2434
#define KSC_SIOS		0x2435
#define KSC_SSANGSIOS		0x2436
#define KSC_IEUNG		0x2437
#define KSC_CIEUC		0x2438
#define KSC_SSANGCIEUC		0x2439
#define KSC_CHIEUCH		0x243a
#define KSC_KHIEUKH		0x243b
#define KSC_THIEUTH		0x243c
#define KSC_PHIEUPH		0x243d
#define KSC_HIEUH		0x243e

#define KSC_A			0x243f
#define KSC_AE			0x2440
#define KSC_YA			0x2441
#define KSC_YAE			0x2442
#define KSC_EO			0x2443
#define KSC_E			0x2444
#define KSC_YEO			0x2445
#define KSC_YE			0x2446
#define KSC_O			0x2447
#define KSC_WA			0x2448
#define KSC_WAE			0x2449
#define KSC_OE			0x244a
#define KSC_YO			0x244b
#define KSC_U			0x244c
#define KSC_WEO			0x244d
#define KSC_WE			0x244e
#define KSC_WI			0x244f
#define KSC_YU			0x2450
#define KSC_EU			0x2451
#define KSC_YI			0x2452
#define KSC_I			0x2453

#define KSC_SSANGNIEUN		0x2455
#define KSC_NIEUN_TIKEUT	0x2456
#define KSC_NIEUN_SIOS		0x2457
#define KSC_NIEUN_PANSIOS	0x2458
#define KSC_RIEUL_KIYEOK_SIOS	0x2459
#define KSC_RIEUL_TIKEUT	0x245a
#define KSC_RIEUL_PIEUP_SIOS	0x245b
#define KSC_RIEUL_PANSIOS	0x245c
#define KSC_RIEUL_YEORINHIEUH	0x245d
#define KSC_MIEUM_PIEUP		0x245e
#define KSC_MIEUM_SIOS		0x245f
#define KSC_MIEUM_PANSIOS	0x2460
#define KSC_KAPYEOUNMIEUM	0x2461
#define KSC_PIEUP_KIYEOK	0x2462
#define KSC_PIEUP_TIKEUT	0x2463
#define KSC_PIEUP_SIOS_KIYEOK	0x2464
#define KSC_PIEUP_SIOS_TIKEUT	0x2465
#define KSC_PIEUP_CIEUC		0x2466
#define KSC_PIEUP_THIEUTH	0x2467
#define KSC_KAPYEOUNPIEUP	0x2468
#define KSC_KAPYEOUNSSANGPIEUP	0x2469
#define KSC_SIOS_KIYEOK		0x246a
#define KSC_SIOS_NIEUN		0x246b
#define KSC_SIOS_TIKEUT		0x246c
#define KSC_SIOS_PIEUP		0x246d
#define KSC_SIOS_CIEUC		0x246e
#define KSC_PANSIOS		0x246f
#define KSC_SSANGIEUNG		0x2470
#define KSC_YESIEUNG		0x2471
#define KSC_IEUNG_CIEUC		0x2472
#define KSC_IEUNG_PANSIOS	0x2473
#define KSC_KAPYEOUNPHIEUPH	0x2474
#define KSC_SSANGHIEUH		0x2475
#define KSC_YEORINHIEUH		0x2476
#define KSC_YO_YA		0x2477
#define KSC_YO_YAE		0x2478
#define KSC_YO_I		0x2479
#define KSC_YU_YEO		0x247a
#define KSC_YU_YE		0x247b
#define KSC_YU_I		0x247c
#define KSC_ARAEA		0x247d
#define KSC_ARAEA_I		0x247e

/*
 * Some jamos are not representable with KSC5601.  These are ugly
 * fallbacks:
 *
 * CHITUEUMSIOS: 0x233c (less than)
 * CEONGCHITUEUMSIOS: 0x233e (greater than)
 * CHITUEUMCIEUC 0x237b (left bracket)
 * CEONGEUMCIEUC 0x237d (right bracket)
 * CHITUEUMCHIEUCH 0x237b (left brace)
 * CEONGEUMCHIEUCH 0x237d (right brace)
 */
#define KSC_CHITUEUMSIOS	0x233c
#define KSC_CEONGCHITUEUMSIOS	0x233e
#define KSC_CHITUEUMCIEUC	0x235b
#define KSC_CEONGEUMCIEUC	0x235d
#define KSC_CHITUEUMCHIEUCH	0x237b
#define KSC_CEONGEUMCHIEUCH	0x237d

static const guint16 __jamo_to_ksc5601[0x100][3] =
{
  /*
   * CHOSEONG
   */
  /* CHOSEONG 0x1100 -- 0x1112 : matched to each ksc5601 Jamos extactly.  */
  {KSC_KIYEOK, 0, 0},
  {KSC_SSANGKIYEOK, 0, 0},
  {KSC_NIEUN, 0, 0},
  {KSC_TIKEUT, 0, 0},
  {KSC_SSANGTIKEUT, 0, 0},
  {KSC_RIEUL, 0, 0},
  {KSC_MIEUM, 0, 0},
  {KSC_PIEUP, 0, 0},
  {KSC_SSANGPIEUP, 0, 0},
  {KSC_SIOS, 0, 0},
  {KSC_SSANGSIOS, 0, 0},
  {KSC_IEUNG, 0, 0},
  {KSC_CIEUC, 0, 0},
  {KSC_SSANGCIEUC, 0, 0},
  {KSC_CHIEUCH, 0, 0},
  {KSC_KHIEUKH, 0, 0},
  {KSC_THIEUTH, 0, 0},
  {KSC_PHIEUPH, 0, 0},
  {KSC_HIEUH, 0, 0},
  /* Some of the following are representable as a glyph, the others not. */
  {KSC_NIEUN, KSC_KIYEOK, 0},
  {KSC_SSANGNIEUN, 0, 0},
  {KSC_NIEUN_TIKEUT, 0, 0},
  {KSC_NIEUN, KSC_PIEUP, 0},
  {KSC_TIKEUT, KSC_KIYEOK, 0},
  {KSC_RIEUL, KSC_NIEUN, 0},
  {KSC_RIEUL, KSC_RIEUL, 0},
  {KSC_RIEUL_HIEUH, 0, 0},
  {KSC_RIEUL, KSC_IEUNG, 0},
  {KSC_MIEUM_PIEUP, 0, 0},
  {KSC_KAPYEOUNMIEUM, 0, 0},
  {KSC_PIEUP_KIYEOK, 0, 0},
  {KSC_PIEUP, KSC_NIEUN, 0},
  {KSC_PIEUP_TIKEUT, 0, 0},
  {KSC_PIEUP_SIOS, 0, 0},
  {KSC_PIEUP_SIOS_KIYEOK, 0, 0},
  {KSC_PIEUP_SIOS_TIKEUT, 0, 0},
  {KSC_PIEUP, KSC_SIOS, KSC_PIEUP},
  {KSC_PIEUP, KSC_SIOS, KSC_SIOS},
  {KSC_PIEUP, KSC_SIOS, KSC_CIEUC},
  {KSC_PIEUP_CIEUC, 0, 0},
  {KSC_PIEUP, KSC_CHIEUCH, 0},
  {KSC_PIEUP_THIEUTH, 0, 0},
  {KSC_PIEUP, KSC_PHIEUPH, 0},
  {KSC_KAPYEOUNPIEUP, 0, 0},
  {KSC_KAPYEOUNSSANGPIEUP, 0, 0},
  {KSC_SIOS_KIYEOK, 0, 0},
  {KSC_SIOS_NIEUN, 0, 0},
  {KSC_SIOS_TIKEUT, 0, 0},
  {KSC_SIOS, KSC_RIEUL, 0},
  {KSC_SIOS, KSC_MIEUM, 0},
  {KSC_SIOS_PIEUP, 0, 0},
  {KSC_SIOS, KSC_PIEUP, KSC_KIYEOK},
  {KSC_SIOS, KSC_SIOS, KSC_SIOS},
  {KSC_SIOS, KSC_IEUNG, 0},
  {KSC_SIOS_CIEUC, 0, 0},
  {KSC_SIOS, KSC_CHIEUCH, 0},
  {KSC_SIOS, KSC_KHIEUKH, 0},
  {KSC_SIOS, KSC_THIEUTH, 0},
  {KSC_SIOS, KSC_PHIEUPH, 0},
  {KSC_SIOS, KSC_HIEUH, 0},
  {KSC_CHITUEUMSIOS, 0, 0},
  {KSC_CHITUEUMSIOS, KSC_CHITUEUMSIOS, 0},
  {KSC_CEONGCHITUEUMSIOS, 0, 0},
  {KSC_CEONGCHITUEUMSIOS, KSC_CEONGCHITUEUMSIOS, 0},
  {KSC_PANSIOS, 0, 0},
  {KSC_IEUNG, KSC_KIYEOK, 0},
  {KSC_IEUNG, KSC_TIKEUT, 0},
  {KSC_IEUNG, KSC_MIEUM, 0},
  {KSC_IEUNG, KSC_PIEUP, 0},
  {KSC_IEUNG, KSC_SIOS, 0},
  {KSC_IEUNG_PANSIOS, 0, 0},
  {KSC_SSANGIEUNG, 0, 0},
  {KSC_IEUNG_CIEUC, 0, 0},
  {KSC_IEUNG, KSC_CHIEUCH, 0},
  {KSC_IEUNG, KSC_THIEUTH, 0},
  {KSC_IEUNG, KSC_PHIEUPH, 0},
  {KSC_YESIEUNG, 0, 0},
  {KSC_CIEUC, KSC_IEUNG, 0},
  {KSC_CHITUEUMCIEUC, 0, 0},
  {KSC_CHITUEUMCIEUC, KSC_CHITUEUMCIEUC, 0},
  {KSC_CEONGEUMCIEUC, 0, 0},
  {KSC_CEONGEUMCIEUC, KSC_CEONGEUMCIEUC, 0},
  {KSC_CHIEUCH, KSC_KHIEUKH, 0},
  {KSC_CHIEUCH, KSC_HIEUH, 0},
  {KSC_CHITUEUMCHIEUCH, 0, 0},
  {KSC_CEONGEUMCHIEUCH, 0, 0},
  {KSC_PHIEUPH, KSC_PIEUP, 0},
  {KSC_KAPYEOUNPHIEUPH, 0, 0},
  {KSC_SSANGHIEUH, 0, 0},
  {KSC_YEORINHIEUH, 0, 0},
  /* 0x115A ~ 0x115E -- reserved */
  {0, 0, 0},
  {0, 0, 0},
  {0, 0, 0},
  {0, 0, 0},
  {0, 0, 0},
  /* CHOSEONG FILLER */
  {0, 0, 0},

  /*
   * JUNGSEONG
   */
  /*
   * JUNGSEONG
   */
  {0, 0, 0},			/* JUNGSEONG FILL */
  /* JUNGSEONG 0x1161 -- 0x1175 : matched to each ksc5601 Jamos extactly.  */
  {KSC_A, 0, 0},
  {KSC_AE, 0, 0},
  {KSC_YA, 0, 0},
  {KSC_YAE, 0, 0},
  {KSC_EO, 0, 0},
  {KSC_E, 0, 0},
  {KSC_YEO, 0, 0},
  {KSC_YE, 0, 0},
  {KSC_O, 0, 0},
  {KSC_WA, 0, 0},
  {KSC_WAE, 0, 0},
  {KSC_OE, 0, 0},
  {KSC_YO, 0, 0},
  {KSC_U, 0, 0},
  {KSC_WEO, 0, 0},
  {KSC_WE, 0, 0},
  {KSC_WI, 0, 0},
  {KSC_YU, 0, 0},
  {KSC_EU, 0, 0},
  {KSC_YI, 0, 0},
  {KSC_I, 0, 0},
  /* Some of the following are representable as a glyph, the others not. */
  {KSC_A, KSC_O, 0},
  {KSC_A, KSC_U, 0},
  {KSC_YA, KSC_O, 0},
  {KSC_YA, KSC_YO, 0},
  {KSC_EO, KSC_O, 0},
  {KSC_EO, KSC_U, 0},
  {KSC_EO, KSC_EU, 0},
  {KSC_YEO, KSC_O, 0},
  {KSC_YEO, KSC_U, 0},
  {KSC_O, KSC_EO, 0},
  {KSC_O, KSC_E, 0},
  {KSC_O, KSC_YE, 0},
  {KSC_O, KSC_O, 0},
  {KSC_O, KSC_U, 0},
  {KSC_YO_YA, 0, 0},
  {KSC_YO_YAE, 0, 0},
  {KSC_YO, KSC_YEO, 0},
  {KSC_YO, KSC_O, 0},
  {KSC_YO_I, 0, 0},
  {KSC_U, KSC_A, 0},
  {KSC_U, KSC_AE, 0},
  {KSC_U, KSC_EO, KSC_EU},
  {KSC_U, KSC_YE, 0},
  {KSC_U, KSC_U, 0},
  {KSC_YU, KSC_A, 0},
  {KSC_YU, KSC_EO, 0},
  {KSC_YU, KSC_E, 0},
  {KSC_YU_YEO, 0, 0},
  {KSC_YU_YE, 0, 0},
  {KSC_YU, KSC_U, 0},
  {KSC_YU_I, 0, 0},
  {KSC_EU, KSC_U, 0},
  {KSC_EU, KSC_EU, 0},
  {KSC_YI, KSC_U, 0},
  {KSC_I, KSC_A, 0},
  {KSC_I, KSC_YA, 0},
  {KSC_I, KSC_O, 0},
  {KSC_I, KSC_U, 0},
  {KSC_I, KSC_EU, 0},
  {KSC_I, KSC_ARAEA, 0},
  {KSC_ARAEA, 0, 0},
  {KSC_ARAEA, KSC_EO, 0},
  {KSC_ARAEA, KSC_U, 0},
  {KSC_ARAEA, KSC_I, 0},
  {KSC_ARAEA, KSC_ARAEA, 0},
  /* 0x11A3 ~ 0x11A7 -- reserved */
  {0, 0, 0},
  {0, 0, 0},
  {0, 0, 0},
  {0, 0, 0},
  {0, 0, 0},			/* (INTERNAL) JONGSEONG FILL */
  
  /*
   * JONGSEONG
   */
  {KSC_KIYEOK, 0, 0},
  {KSC_SSANGKIYEOK, 0, 0},
  {KSC_KIYEOK_SIOS, 0, 0},
  {KSC_NIEUN, 0, 0},
  {KSC_NIEUN_CIEUC, 0, 0},
  {KSC_NIEUN_HIEUH, 0, 0},
  {KSC_TIKEUT, 0, 0},
  {KSC_RIEUL, 0, 0},
  {KSC_RIEUL_KIYEOK, 0, 0},
  {KSC_RIEUL_MIEUM, 0, 0},
  {KSC_RIEUL_PIEUP, 0, 0},
  {KSC_RIEUL_SIOS, 0, 0},
  {KSC_RIEUL_TIKEUT, 0, 0},
  {KSC_RIEUL_PHIEUPH, 0, 0},
  {KSC_RIEUL_HIEUH, 0, 0},
  {KSC_MIEUM, 0, 0},
  {KSC_PIEUP, 0, 0},
  {KSC_PIEUP_SIOS, 0, 0},
  {KSC_SIOS, 0, 0},
  {KSC_SSANGSIOS, 0, 0},
  {KSC_IEUNG, 0, 0},
  {KSC_CIEUC, 0, 0},
  {KSC_CHIEUCH, 0, 0},
  {KSC_KHIEUKH, 0, 0},
  {KSC_THIEUTH, 0, 0},
  {KSC_PHIEUPH, 0, 0},
  {KSC_HIEUH, 0, 0},
  {KSC_KIYEOK, KSC_RIEUL, 0},
  {KSC_KIYEOK, KSC_SIOS, KSC_KIYEOK},
  {KSC_NIEUN, KSC_KIYEOK, 0},
  {KSC_NIEUN_TIKEUT, 0, 0},
  {KSC_NIEUN_SIOS, 0, 0},
  {KSC_NIEUN_PANSIOS, 0, 0},
  {KSC_NIEUN, KSC_THIEUTH, 0},
  {KSC_TIKEUT, KSC_KIYEOK, 0},
  {KSC_TIKEUT, KSC_RIEUL, 0},
  {KSC_RIEUL_KIYEOK_SIOS, 0, 0},
  {KSC_RIEUL, KSC_NIEUN, 0},
  {KSC_RIEUL_TIKEUT, 0, 0},
  {KSC_RIEUL, KSC_TIKEUT, KSC_HIEUH},
  {KSC_RIEUL, KSC_RIEUL, 0},
  {KSC_RIEUL, KSC_MIEUM, KSC_KIYEOK},
  {KSC_RIEUL, KSC_MIEUM, KSC_SIOS},
  {KSC_RIEUL_PIEUP_SIOS, 0, 0},
  {KSC_RIEUL, KSC_PHIEUPH, KSC_HIEUH},
  {KSC_RIEUL, KSC_KAPYEOUNPIEUP, 0},
  {KSC_RIEUL, KSC_SIOS, KSC_SIOS},
  {KSC_RIEUL_PANSIOS, 0, 0},
  {KSC_RIEUL, KSC_KHIEUKH, 0},
  {KSC_RIEUL_YEORINHIEUH, 0, 0},
  {KSC_MIEUM, KSC_KIYEOK, 0},
  {KSC_MIEUM, KSC_RIEUL, 0},
  {KSC_MIEUM_PIEUP, 0, 0},
  {KSC_MIEUM_SIOS, 0, 0},
  {KSC_MIEUM, KSC_SIOS, KSC_SIOS},
  {KSC_MIEUM_PANSIOS, 0, 0},
  {KSC_MIEUM, KSC_CHIEUCH, 0},
  {KSC_MIEUM, KSC_HIEUH, 0},
  {KSC_KAPYEOUNMIEUM, 0, 0},
  {KSC_PIEUP, KSC_RIEUL, 0},
  {KSC_PIEUP, KSC_PHIEUPH, 0},
  {KSC_PIEUP, KSC_HIEUH, 0},
  {KSC_KAPYEOUNPIEUP, 0, 0},
  {KSC_SIOS_KIYEOK, 0, 0},
  {KSC_SIOS_TIKEUT, 0, 0},
  {KSC_SIOS, KSC_RIEUL, 0},
  {KSC_SIOS_PIEUP, 0, 0},
  {KSC_PANSIOS, 0, 0},
  {KSC_IEUNG, KSC_KIYEOK, 0},
  {KSC_IEUNG, KSC_KIYEOK, KSC_KIYEOK},
  {KSC_SSANGIEUNG, 0, 0},
  {KSC_IEUNG, KSC_KHIEUKH, 0},
  {KSC_YESIEUNG, 0, 0},
  {KSC_YESIEUNG, KSC_SIOS, 0},
  {KSC_YESIEUNG, KSC_PANSIOS, 0},
  {KSC_PHIEUPH, KSC_PIEUP, 0},
  {KSC_KAPYEOUNPHIEUPH, 0, 0},
  {KSC_HIEUH, KSC_NIEUN, 0},
  {KSC_HIEUH, KSC_RIEUL, 0},
  {KSC_HIEUH, KSC_MIEUM, 0},
  {KSC_HIEUH, KSC_PIEUP, 0},
  {KSC_YEORINHIEUH, 0, 0},
  /* reserved */
  {0, 0, 0},
  {0, 0, 0},
  {0, 0, 0},
  {0, 0, 0},
  {0, 0, 0},
  {0, 0, 0}
};