diff options
Diffstat (limited to 'modules/hangul/tables-jamos.i')
-rw-r--r-- | modules/hangul/tables-jamos.i | 401 |
1 files changed, 401 insertions, 0 deletions
diff --git a/modules/hangul/tables-jamos.i b/modules/hangul/tables-jamos.i new file mode 100644 index 00000000..0b83d1a7 --- /dev/null +++ b/modules/hangul/tables-jamos.i @@ -0,0 +1,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 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} +}; + |