# Jamo-4.1.0.txt
# Date: 2004-12-09, 17:48 PST [KW]
#
# Unicode Character Database
# Copyright (c) 1991-2004 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see UCD.html
#
# This file defines the Jamo Short Name property.
#
# See Section 3.12 of The Unicode Standard, Version 4.0
# for more information.
#
# Each line contains two fields, separated by a semicolon.
#
# The first field gives the code point, in 4-digit hexadecimal
# form, of a combining jamo character that participates in
# the algorithmic determination Hangul syllable character names.
# The second field gives the Jamo Short Name as a one-, two-,
# or three-character ASCII string (or in one case, for U+110B,
# the null string).
#
# #############################################################
 
1100; G   # HANGUL CHOSEONG KIYEOK
1101; GG  # HANGUL CHOSEONG SSANGKIYEOK
1102; N   # HANGUL CHOSEONG NIEUN
1103; D   # HANGUL CHOSEONG TIKEUT
1104; DD  # HANGUL CHOSEONG SSANGTIKEUT
1105; R   # HANGUL CHOSEONG RIEUL
1106; M   # HANGUL CHOSEONG MIEUM
1107; B   # HANGUL CHOSEONG PIEUP
1108; BB  # HANGUL CHOSEONG SSANGPIEUP
1109; S   # HANGUL CHOSEONG SIOS
110A; SS  # HANGUL CHOSEONG SSANGSIOS
110B;     # HANGUL CHOSEONG IEUNG
110C; J   # HANGUL CHOSEONG CIEUC
110D; JJ  # HANGUL CHOSEONG SSANGCIEUC
110E; C   # HANGUL CHOSEONG CHIEUCH
110F; K   # HANGUL CHOSEONG KHIEUKH
1110; T   # HANGUL CHOSEONG THIEUTH
1111; P   # HANGUL CHOSEONG PHIEUPH
1112; H   # HANGUL CHOSEONG HIEUH
1161; A   # HANGUL JUNGSEONG A
1162; AE  # HANGUL JUNGSEONG AE
1163; YA  # HANGUL JUNGSEONG YA
1164; YAE # HANGUL JUNGSEONG YAE
1165; EO  # HANGUL JUNGSEONG EO
1166; E   # HANGUL JUNGSEONG E
1167; YEO # HANGUL JUNGSEONG YEO
1168; YE  # HANGUL JUNGSEONG YE
1169; O   # HANGUL JUNGSEONG O
116A; WA  # HANGUL JUNGSEONG WA
116B; WAE # HANGUL JUNGSEONG WAE
116C; OE  # HANGUL JUNGSEONG OE
116D; YO  # HANGUL JUNGSEONG YO
116E; U   # HANGUL JUNGSEONG U
116F; WEO # HANGUL JUNGSEONG WEO
1170; WE  # HANGUL JUNGSEONG WE
1171; WI  # HANGUL JUNGSEONG WI
1172; YU  # HANGUL JUNGSEONG YU
1173; EU  # HANGUL JUNGSEONG EU
1174; YI  # HANGUL JUNGSEONG YI
1175; I   # HANGUL JUNGSEONG I
11A8; G   # HANGUL JONGSEONG KIYEOK
11A9; GG  # HANGUL JONGSEONG SSANGKIYEOK
11AA; GS  # HANGUL JONGSEONG KIYEOK-SIOS
11AB; N   # HANGUL JONGSEONG NIEUN
11AC; NJ  # HANGUL JONGSEONG NIEUN-CIEUC
11AD; NH  # HANGUL JONGSEONG NIEUN-HIEUH
11AE; D   # HANGUL JONGSEONG TIKEUT
11AF; L   # HANGUL JONGSEONG RIEUL
11B0; LG  # HANGUL JONGSEONG RIEUL-KIYEOK
11B1; LM  # HANGUL JONGSEONG RIEUL-MIEUM
11B2; LB  # HANGUL JONGSEONG RIEUL-PIEUP
11B3; LS  # HANGUL JONGSEONG RIEUL-SIOS
11B4; LT  # HANGUL JONGSEONG RIEUL-THIEUTH
11B5; LP  # HANGUL JONGSEONG RIEUL-PHIEUPH
11B6; LH  # HANGUL JONGSEONG RIEUL-HIEUH
11B7; M   # HANGUL JONGSEONG MIEUM
11B8; B   # HANGUL JONGSEONG PIEUP
11B9; BS  # HANGUL JONGSEONG PIEUP-SIOS
11BA; S   # HANGUL JONGSEONG SIOS
11BB; SS  # HANGUL JONGSEONG SSANGSIOS
11BC; NG  # HANGUL JONGSEONG IEUNG
11BD; J   # HANGUL JONGSEONG CIEUC
11BE; C   # HANGUL JONGSEONG CHIEUCH
11BF; K   # HANGUL JONGSEONG KHIEUKH
11C0; T   # HANGUL JONGSEONG THIEUTH
11C1; P   # HANGUL JONGSEONG PHIEUPH
11C2; H   # HANGUL JONGSEONG HIEUH

