merge with master
authorJinkun Jang <jinkun.jang@samsung.com>
Fri, 15 Mar 2013 16:20:02 +0000 (01:20 +0900)
committerJinkun Jang <jinkun.jang@samsung.com>
Fri, 15 Mar 2013 16:20:02 +0000 (01:20 +0900)
80 files changed:
AUTHORS [changed mode: 0755->0644]
COPYING [changed mode: 0755->0644]
ChangeLog [changed mode: 0755->0644]
Makefile.am [changed mode: 0755->0644]
NEWS [changed mode: 0755->0644]
README
autogen.sh [new file with mode: 0755]
compat [deleted file]
configure.ac [changed mode: 0755->0644]
data/Makefile.am [changed mode: 0755->0644]
data/hanja/Makefile.am [changed mode: 0755->0644]
data/hanja/hanja.txt
debian/changelog [new file with mode: 0755]
debian/compat [new file with mode: 0755]
debian/control [new file with mode: 0755]
debian/copyright [new file with mode: 0644]
debian/docs [new file with mode: 0755]
debian/libhangul-dev.install [new file with mode: 0755]
debian/libhangul0-data.install [new file with mode: 0644]
debian/libhangul0.install [new file with mode: 0755]
debian/rules [new file with mode: 0755]
debian/watch [new file with mode: 0644]
doc/Doxyfile.in
doc/Makefile
doc/gen_hangulkeyboards.py [new file with mode: 0755]
doc/html/bc_s.png [new file with mode: 0644]
doc/html/closed.png [new file with mode: 0644]
doc/html/deprecated.html [new file with mode: 0644]
doc/html/dir_74e344cbec9860085ddf79a94754a2b6.html [new file with mode: 0644]
doc/html/dirs.html [new file with mode: 0644]
doc/html/doxygen.css [new file with mode: 0644]
doc/html/doxygen.png [new file with mode: 0644]
doc/html/files.html [new file with mode: 0644]
doc/html/globals.html [new file with mode: 0644]
doc/html/globals_func.html [new file with mode: 0644]
doc/html/group__hangulctype.html [new file with mode: 0644]
doc/html/group__hangulic.html [new file with mode: 0644]
doc/html/group__hangulkeyboards.html [new file with mode: 0644]
doc/html/group__hanjadictionary.html [new file with mode: 0644]
doc/html/hangul_8h-source.html [new file with mode: 0644]
doc/html/hangul_8h_source.html [new file with mode: 0644]
doc/html/hangulctype_8c.html [new file with mode: 0644]
doc/html/hangulinputcontext_8c.html [new file with mode: 0644]
doc/html/hanja_8c.html [new file with mode: 0644]
doc/html/index.html [new file with mode: 0644]
doc/html/modules.html [new file with mode: 0644]
doc/html/nav_f.png [new file with mode: 0644]
doc/html/nav_h.png [new file with mode: 0644]
doc/html/open.png [new file with mode: 0644]
doc/html/pages.html [new file with mode: 0644]
doc/html/tab_a.png [new file with mode: 0644]
doc/html/tab_b.gif [new file with mode: 0644]
doc/html/tab_b.png [new file with mode: 0644]
doc/html/tab_h.png [new file with mode: 0644]
doc/html/tab_l.gif [new file with mode: 0644]
doc/html/tab_r.gif [new file with mode: 0644]
doc/html/tab_s.png [new file with mode: 0644]
doc/html/tabs.css [new file with mode: 0644]
doc/mainpage.dox
hangul/Makefile.am [changed mode: 0755->0644]
hangul/hangul-gettext.h [new file with mode: 0644]
hangul/hangul.h
hangul/hangulctype.c
hangul/hangulinputcontext.c
hangul/hangulinternals.h [changed mode: 0755->0644]
hangul/hangulkeyboard.h
hangul/hanja.c
hangul/hanjacompatible.h [changed mode: 0755->0644]
libhangul.pc.in [changed mode: 0755->0644]
packaging/libhangul.spec
po/LINGUAS [new file with mode: 0644]
po/Makevars [new file with mode: 0644]
po/POTFILES.in [new file with mode: 0644]
po/ko.po [new file with mode: 0644]
test/Makefile.am [changed mode: 0755->0644]
test/hangul.c
test/test.c
tools/Makefile.am [new file with mode: 0644]
tools/Makefile.in [new file with mode: 0644]
tools/hangul.c [new file with mode: 0644]

diff --git a/AUTHORS b/AUTHORS
old mode 100755 (executable)
new mode 100644 (file)
diff --git a/COPYING b/COPYING
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
index 1407e70..03efbf7
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,557 @@
 ------------------------------------------------------------------------
+r271 | krisna | 2011-10-17 00:03:13 +0900 (Mon, 17 Oct 2011) | 4 lines
+Changed paths:
+   M /libhangul/trunk/configure.ac
+
+잘못 관리한 library version을 바로 잡음
+
+지금은 1.0.0 이 되어야 한다.
+
+------------------------------------------------------------------------
+r270 | krisna | 2011-10-16 20:53:51 +0900 (Sun, 16 Oct 2011) | 2 lines
+Changed paths:
+   M /libhangul/trunk/configure.ac
+
+release 0.1.0
+
+------------------------------------------------------------------------
+r269 | krisna | 2011-10-16 20:53:22 +0900 (Sun, 16 Oct 2011) | 2 lines
+Changed paths:
+   M /libhangul/trunk/NEWS
+
+Update documents
+
+------------------------------------------------------------------------
+r268 | krisna | 2011-10-16 20:50:58 +0900 (Sun, 16 Oct 2011) | 2 lines
+Changed paths:
+   M /libhangul/trunk/po/ko.po
+
+update po files
+
+------------------------------------------------------------------------
+r267 | krisna | 2011-09-07 23:43:20 +0900 (Wed, 07 Sep 2011) | 4 lines
+Changed paths:
+   M /libhangul/trunk/hangul/hangul.h
+   M /libhangul/trunk/hangul/hangulctype.c
+   M /libhangul/trunk/hangul/hangulinputcontext.c
+
+deprecated 함수 제거
+
+다음 릴리스에서는 library version을 올릴 것이다.
+
+------------------------------------------------------------------------
+r266 | krisna | 2011-09-03 15:48:24 +0900 (Sat, 03 Sep 2011) | 5 lines
+Changed paths:
+   M /libhangul/trunk/configure.ac
+
+gettext 호환 version을 0.18로 업데이트
+
+이하 버전에서는 MKINSTALLDIR 관련 에러가 난다.
+0.18 이하를 사용하는 사람이 별로 없길 바란다.
+
+------------------------------------------------------------------------
+r265 | krisna | 2011-08-28 23:05:03 +0900 (Sun, 28 Aug 2011) | 5 lines
+Changed paths:
+   M /libhangul/trunk/test/Makefile.am
+   M /libhangul/trunk/test/test.c
+
+test 코드에서 속편하게 wchar_t로 비교
+
+wchar_t 내용이 UCS-4라고 가정해서는 안되지만, GCC를 사용하는 경우에
+한해서 사용이 쉬우므로 이렇게 수정한다.
+
+------------------------------------------------------------------------
+r264 | krisna | 2011-08-28 22:15:44 +0900 (Sun, 28 Aug 2011) | 5 lines
+Changed paths:
+   M /libhangul/trunk/hangul/hangul.h
+   M /libhangul/trunk/hangul/hangulinputcontext.c
+
+hangul_ic_is_transliteration() 함수 추가
+
+이 함수는 hangul_ic_process()에 키코드를 넘기기 전에
+normalize 과정에 필요한지 판단해주는 함수다.
+
+------------------------------------------------------------------------
+r263 | krisna | 2011-08-16 17:22:49 +0900 (Tue, 16 Aug 2011) | 5 lines
+Changed paths:
+   M /libhangul/trunk/hangul/hangulinputcontext.c
+
+Combination table을 IC에서 Keyboard로 옮김
+
+Combination table은 keyboard에 종속적인 정보이므로 HangulKeyboard에서
+참조하는 것이 바람직하다.
+
+------------------------------------------------------------------------
+r262 | krisna | 2011-07-18 23:30:24 +0900 (Mon, 18 Jul 2011) | 4 lines
+Changed paths:
+   M /libhangul/trunk/configure.ac
+   M /libhangul/trunk/test/Makefile.am
+   M /libhangul/trunk/test/hangul.c
+   M /libhangul/trunk/tools/Makefile.am
+   M /libhangul/trunk/tools/hangul.c
+
+AM_ICONV 매크로 사용
+
+freebsd에서 컴파일 오류가 발생하는 것을 막기 위한 것
+
+------------------------------------------------------------------------
+r261 | krisna | 2011-07-18 00:34:11 +0900 (Mon, 18 Jul 2011) | 5 lines
+Changed paths:
+   M /libhangul/trunk/libhangul.pc.in
+   M /libhangul/trunk/test/Makefile.am
+   M /libhangul/trunk/tools/Makefile.am
+
+Use variable LIBINTL
+
+To compile with GNU gettext, we need libintl on freebsd.
+So it is safer to specify the variable LIBINTL which is set by AM_GNU_GETTEXT.
+
+------------------------------------------------------------------------
+r260 | krisna | 2011-03-11 00:02:11 +0900 (Fri, 11 Mar 2011) | 2 lines
+Changed paths:
+   M /libhangul/trunk/test/test.c
+
+두벌식 테스트 추가
+
+------------------------------------------------------------------------
+r259 | krisna | 2011-03-11 00:01:20 +0900 (Fri, 11 Mar 2011) | 2 lines
+Changed paths:
+   M /libhangul/trunk/autogen.sh
+   M /libhangul/trunk/configure.ac
+
+gettext 관련 파일을 업데이트하기 위해서 autopoint를 사용함
+
+------------------------------------------------------------------------
+r257 | krisna | 2011-01-02 23:57:43 +0900 (Sun, 02 Jan 2011) | 4 lines
+Changed paths:
+   M /libhangul/trunk/NEWS
+   M /libhangul/trunk/README
+
+release 0.0.12
+
+문서 업데이트
+
+------------------------------------------------------------------------
+r256 | krisna | 2011-01-02 23:25:18 +0900 (Sun, 02 Jan 2011) | 2 lines
+Changed paths:
+   M /libhangul/trunk/tools/hangul.c
+
+copyright 문구 추가
+
+------------------------------------------------------------------------
+r255 | krisna | 2011-01-02 23:00:51 +0900 (Sun, 02 Jan 2011) | 2 lines
+Changed paths:
+   M /libhangul/trunk/po/ko.po
+
+번역 업데이트
+
+------------------------------------------------------------------------
+r254 | krisna | 2011-01-02 22:36:45 +0900 (Sun, 02 Jan 2011) | 2 lines
+Changed paths:
+   M /libhangul/trunk/tools/hangul.c
+
+메시지 업데이트
+
+------------------------------------------------------------------------
+r253 | krisna | 2011-01-02 16:51:10 +0900 (Sun, 02 Jan 2011) | 2 lines
+Changed paths:
+   M /libhangul/trunk/configure.ac
+
+0.0.12 릴리스 준비
+
+------------------------------------------------------------------------
+r252 | krisna | 2010-12-29 23:30:34 +0900 (Wed, 29 Dec 2010) | 9 lines
+Changed paths:
+   M /libhangul/trunk/configure.ac
+   M /libhangul/trunk/hangul/hangulinputcontext.c
+   M /libhangul/trunk/tools/hangul.c
+
+hangul_ic_get_keyboard_name()의 리턴값을 로캘에 관계없이 UTF-8로 함
+
+hangul_ic_get_keyboard_name() 함수의 리턴값을 사용하는 곳의 대부분이 
+UTF-8인 경우에 더 사용하기 편리하다. nabi, ibus, scim, imhangul 등의 경우 
+결국 스트링을 UTF-8로 변환해야 하므로 여기에서 UTF-8을 리턴하면 코딩이 
+더 편리해진다. 단 tools/hangul.c 에서는 locale에 따른 변환을 해주어야
+하므로 약간 더 불편해지기는 하지만, 나머지에서 수정할 내용이 줄어들므로 
+이 편이 더 낫다.
+
+------------------------------------------------------------------------
+r251 | krisna | 2010-12-29 22:38:28 +0900 (Wed, 29 Dec 2010) | 2 lines
+Changed paths:
+   M /libhangul/trunk/tools/Makefile.am
+   M /libhangul/trunk/tools/hangul.c
+
+gettext 적용
+
+------------------------------------------------------------------------
+r250 | krisna | 2010-12-29 16:54:27 +0900 (Wed, 29 Dec 2010) | 2 lines
+Changed paths:
+   M /libhangul/trunk/hangul/hangulinputcontext.c
+
+세벌식 두벌 자판은 별로 중요하지 않은 자판이므로 순서를 아래로 낮춤
+
+------------------------------------------------------------------------
+r249 | krisna | 2010-12-29 00:51:48 +0900 (Wed, 29 Dec 2010) | 2 lines
+Changed paths:
+   M /libhangul/trunk/hangul/hangulinputcontext.c
+
+자판 이름 시작 글자를 대문자로 바꿈
+
+------------------------------------------------------------------------
+r248 | krisna | 2010-12-28 16:03:44 +0900 (Tue, 28 Dec 2010) | 9 lines
+Changed paths:
+   M /libhangul/trunk/hangul/hangulkeyboard.h
+
+#315248 안마태 자판 추가
+
+안마태 자판에서 임의로 추가된 기호 부분을 제거하고, 대신 shift 상태에서도
+shift가 아닐때 글자가 나오도록 수정한다. 
+이전에 빠트렸던, OP의 [] 문자를 추가한다.
+자모의 이름이 Unicode와 맞지 않는 부분을 unicode 이름으로 바꾼다.
+안마태 자판에서 shift 상태에 배당되어 있지 않은 곳에 어떤 문자를 할당할지는
+좀더 토론을 거친후에 처리하는 편이 좋을 것이다.
+
+------------------------------------------------------------------------
+r247 | krisna | 2010-12-26 22:58:09 +0900 (Sun, 26 Dec 2010) | 2 lines
+Changed paths:
+   M /libhangul/trunk/tools/hangul.c
+
+자동 순서 교정 기능을 끄는 옵션 --strict-order 추가
+
+------------------------------------------------------------------------
+r246 | krisna | 2010-12-26 21:59:54 +0900 (Sun, 26 Dec 2010) | 5 lines
+Changed paths:
+   M /libhangul/trunk/Makefile.am
+
+테스트 디렉토리를 기본으로 빌드하지 않도록 바꿈
+
+별로 중요하지 않은 내용때문에 빌드 오류가 나는 문제로 수정이 필요한
+경우를 피하기 위한 것이다.
+
+------------------------------------------------------------------------
+r245 | krisna | 2010-12-26 21:54:23 +0900 (Sun, 26 Dec 2010) | 6 lines
+Changed paths:
+   M /libhangul/trunk/tools/Makefile.am
+   M /libhangul/trunk/tools/hangul.c
+
+헤더 참조 경로를 상대 경로로 바꿈
+
+configure 디렉토리가 소스 디렉토리와 다른 경우에 에러가 발생한다.
+make distcheck를 하면 에러난다. $(top_srcdir)을 써도 되는데,
+그냥 쉽게 상대 경로로 참조하도록 수정한다.
+
+------------------------------------------------------------------------
+r244 | krisna | 2010-12-26 14:43:53 +0900 (Sun, 26 Dec 2010) | 6 lines
+Changed paths:
+   M /libhangul/trunk/hangul/hangulkeyboard.h
+
+세벌식 옛글 자판의 배열을 아래한글과 동일하게 바꿈
+
+옛글 자판에 대해서는 공인된 기준이 없는 만큼 사용자가 많을 것이라 예상되는
+아래한글의 세벌식 자판과 같은 자판을 지원하는 것이 사용자에게 편리할 것이라
+생각한다.
+
+------------------------------------------------------------------------
+r243 | krisna | 2010-12-26 14:41:46 +0900 (Sun, 26 Dec 2010) | 5 lines
+Changed paths:
+   M /libhangul/trunk/test/test.c
+
+두벌식과 두벌식 옛글 자판에 대한 테스트 케이스 추가
+
+계속 추가할 예정
+디버깅할때 편리하기 위해서 NOFORK 모드를 사용
+
+------------------------------------------------------------------------
+r242 | krisna | 2010-12-25 23:17:20 +0900 (Sat, 25 Dec 2010) | 9 lines
+Changed paths:
+   M /libhangul/trunk/hangul/hangulinputcontext.c
+
+두벌식에서 초성이 옛글에서만 사용되는 종성으로 변환되는 경우 처리
+
+ㅃㅉㄸ은 옛글 자모 글자인데, 이번에 두벌식 옛글자판을 구현하면서
+hangul_choseong_to_jongseong() 함수로 초성에서 종성으로 변환이 가능해진
+자모 글자다. 그런데 저 글자는 현대 한글에서는 유효하지 않은 종성이므로
+현대 한글 자판에서는 위 초성들이 종성으로 변환되어서는 안된다.
+그래서 combination_table을 비교하여 conjoinable 자모인지 아닌지에
+따라서 종성 변환을 할 것인지 말 것인지 처리한다.
+
+------------------------------------------------------------------------
+r241 | krisna | 2010-12-25 16:33:04 +0900 (Sat, 25 Dec 2010) | 8 lines
+Changed paths:
+   M /libhangul/trunk/hangul/hangulinputcontext.c
+
+hangul_combination_combine() 함수의 버그 수정
+
+hangul_combination_combine() 함수의 비교함수에서 두 key 값을 단순히
+뺄셈연산하여 리턴하게 되면 두수의 크기차 signed int를 넘어서는 경우에
+음수로 연산될 수 있어서 위험하다. 부등호를 이용하여 비교연산으로 처리한다.
+Unicode 5.2에서 추가된 자모들중 U+A960, U+D7B0 영역의 문자들을 조합하지
+못하는 문제 수정
+
+------------------------------------------------------------------------
+r240 | krisna | 2010-12-25 15:21:40 +0900 (Sat, 25 Dec 2010) | 6 lines
+Changed paths:
+   M /libhangul/trunk/hangul/hangulkeyboard.h
+
+아래한글과 같은 아래아 조합규칙 추가
+
+아래한글에서는 ㅏ+ㅏ를 아래아로 조합하는 규칙이 있다. 
+옛한글 입력 편의성을 위해서 아래한글과 같이 ㅏ+ㅏ를 아래아로 변환하는
+규칙을 추가한다.
+
+------------------------------------------------------------------------
+r239 | krisna | 2010-12-25 14:36:13 +0900 (Sat, 25 Dec 2010) | 6 lines
+Changed paths:
+   M /libhangul/trunk/hangul/hangulkeyboard.h
+
+옛한글 조합테이블에 빠진 부분 추가
+
+모음 U+116A, U+116B, U+1170, U+118B, U+D7B6를 조합하는 룰이 빠져있어서
+새로 추가한다. 아마도 스크립트로 생성시에 제대로 처리되지 못한 부분이
+있었던 것 같다.
+
+------------------------------------------------------------------------
+r238 | krisna | 2010-12-25 14:11:01 +0900 (Sat, 25 Dec 2010) | 11 lines
+Changed paths:
+   M /libhangul/trunk/hangul/hangulctype.c
+   M /libhangul/trunk/hangul/hangulkeyboard.h
+
+옛이응이 이응으로 처리되는 부분 수정
+
+http://www.unicode.org/Public/UNIDATA/NamesList.txt 파일의 내용을 
+이용해서 자모 조합 테이블을 생성한 결과에 문제가 있다.
+위 파일에서는 U+11EC - U+11EF 부분의 이름을 옛이응으로 하지 않고 
+이응으로 되어 있다. 그래서 이 파일로 부터 생성한 조합테이블에서는
+이응 + 이응이 U+11EE가 나오는 문제가 있다. 
+그래서 이 부분은 손으로 직접 수정했다.
+Unicode 5.2에서 정의된 내용에 따르면 U+11EC - U+11EF 부분은 옛이응으로
+처리하는 것이 맞다.
+
+------------------------------------------------------------------------
+r237 | krisna | 2010-12-25 13:40:12 +0900 (Sat, 25 Dec 2010) | 4 lines
+Changed paths:
+   M /libhangul/trunk/hangul/hangulctype.c
+
+hangul_is_jongseong() 함수 버그 수정
+
+236에서 잘못 고친 부분 수정
+
+------------------------------------------------------------------------
+r236 | krisna | 2010-12-25 13:24:52 +0900 (Sat, 25 Dec 2010) | 2 lines
+Changed paths:
+   M /libhangul/trunk/hangul/hangulctype.c
+
+Unicode 5.2에서 확장된 한글 자모 영역을 제대로 확인하지 못하는 문제 수정
+
+------------------------------------------------------------------------
+r235 | krisna | 2010-12-25 12:37:02 +0900 (Sat, 25 Dec 2010) | 11 lines
+Changed paths:
+   M /libhangul/trunk/hangul/hangulctype.c
+   M /libhangul/trunk/hangul/hangulinputcontext.c
+   M /libhangul/trunk/hangul/hangulinternals.h
+   M /libhangul/trunk/hangul/hangulkeyboard.h
+
+한글 두벌식 옛글 자판 초기 구현
+
+자판의 배열을 아래한글의 두벌식 옛글자판과 동일하게 맞추었다.
+초성과 종성을 뒤바꾸는 코드에서 UNICODE 5.2 버전의 옛한글을 지원하도록
+하였다. 기존 두벌식에서 사용하던 hangul_jongseong_dicompose() 함수로는
+옛한글 처리를 할 수가 없으므로 새로이 hangul_jongseong_get_diff() 함수를 
+구현하고, 이 함수를 이용하여 구현을 변경하였다.
+그러나 아직 버그가 있으므로 차츰 수정해 나가도록 한다.
+또한 옛한글을 지원하는 과정에서 현대 한글 두벌식 자판에도 영향을 미쳤으므로
+이 역시 차츰 수정해 나가도록 한다.
+
+------------------------------------------------------------------------
+r234 | krisna | 2010-12-24 23:37:42 +0900 (Fri, 24 Dec 2010) | 4 lines
+Changed paths:
+   M /libhangul/trunk/hangul/Makefile.am
+
+hangul-gettext.h 소스 리스트에 추가
+
+이 파일이 빠지면 make dist에서 에러남
+
+------------------------------------------------------------------------
+r233 | krisna | 2010-12-19 13:53:20 +0900 (Sun, 19 Dec 2010) | 11 lines
+Changed paths:
+   M /libhangul/trunk/hangul/hangulinputcontext.c
+   M /libhangul/trunk/test/test.c
+
+완성 음절로 표현이 불가능한 경우 한글 자모로 표현
+
+지금까지는 완성 음절로 표현이 불가능한 중성 + 종성 같은 음절의 경우
+호환자모 중성과 종성을 나열하여 표현하였는데, 이제는 한글 자모 영역의
+글자를 사용하여 초성채움 + 중성 + 종성으로 표현한다.
+이렇게 기능을 수정하면, 옛한글 자판의 경우도 hangul_buffer_get_string()
+함수를 그대로 사용할 수 있으므로 자판 관리가 좀더 편리해지는 측면이 있다.
+그러나 단점으로 세벌식에서 모아치기 기능을 활용하는 중에 한글 자모로 표현한
+글자가 나타날 수 있는데, 이때에 이 글자를 제대로 렌더링 하지 못할 가능성이
+있다.
+
+------------------------------------------------------------------------
+r232 | krisna | 2010-12-12 20:45:52 +0900 (Sun, 12 Dec 2010) | 5 lines
+Changed paths:
+   M /libhangul/trunk/hangul/hangulinputcontext.c
+
+hangul_ic_select_keyboard() 함수에서 지정된 키보드를 못찾은 경우
+한글 자판이 설정되지 않는 문제 수정
+
+자판 찾기에 실패한 경우 기본자판으로 두벌식 자판을 설정함
+
+------------------------------------------------------------------------
+r231 | krisna | 2010-12-12 20:36:58 +0900 (Sun, 12 Dec 2010) | 2 lines
+Changed paths:
+   M /libhangul/trunk/autogen.sh
+
+autotools 관련 파일을 링크보다는 복사하도록 함
+
+------------------------------------------------------------------------
+r230 | krisna | 2010-12-12 20:01:02 +0900 (Sun, 12 Dec 2010) | 2 lines
+Changed paths:
+   M /libhangul/trunk/Makefile.am
+
+m4/ChangeLog가 없어서 make dist 에서 오류 발생함
+
+------------------------------------------------------------------------
+r229 | krisna | 2010-12-12 19:52:23 +0900 (Sun, 12 Dec 2010) | 2 lines
+Changed paths:
+   M /libhangul/trunk/Makefile.am
+   M /libhangul/trunk/autogen.sh
+   M /libhangul/trunk/configure.ac
+   M /libhangul/trunk/hangul/Makefile.am
+   A /libhangul/trunk/hangul/hangul-gettext.h
+   M /libhangul/trunk/hangul/hangulinputcontext.c
+   A /libhangul/trunk/po
+   A /libhangul/trunk/po/LINGUAS
+   A /libhangul/trunk/po/Makevars
+   A /libhangul/trunk/po/POTFILES.in
+   A /libhangul/trunk/po/ko.po
+
+gettext 적용
+
+------------------------------------------------------------------------
+r228 | krisna | 2010-12-12 19:08:30 +0900 (Sun, 12 Dec 2010) | 6 lines
+Changed paths:
+   M /libhangul/trunk/tools/Makefile.am
+   A /libhangul/trunk/tools/hangul.c
+
+한글 자판을 영문 상태로 친 스트링을 한글로 변환해주는 프로그램 구현
+
+예를 들어
+ hangul -i dkssudgktpdy 를 실행하면 "안녕하세요"를 출력,
+ echo dkssudgktpdy | hangul  을 실행하면 "안녕하세요"를 출력한다.
+
+------------------------------------------------------------------------
+r227 | krisna | 2010-11-14 20:35:48 +0900 (Sun, 14 Nov 2010) | 2 lines
+Changed paths:
+   M /libhangul/trunk/hangul/hangul.h
+   M /libhangul/trunk/hangul/hangulinputcontext.c
+   M /libhangul/trunk/hangul/hangulkeyboard.h
+   M /libhangul/trunk/test/test.c
+
+한글 키보드의 리스트와 이름을 가져오는 인터페이스 구현
+
+------------------------------------------------------------------------
+r225 | krisna | 2010-07-17 23:47:24 +0900 (Sat, 17 Jul 2010) | 2 lines
+Changed paths:
+   M /libhangul/trunk/configure.ac
+
+release 0.0.11
+
+------------------------------------------------------------------------
+r224 | krisna | 2010-07-17 23:42:41 +0900 (Sat, 17 Jul 2010) | 2 lines
+Changed paths:
+   M /libhangul/trunk/NEWS
+
+update document
+
+------------------------------------------------------------------------
+r223 | krisna | 2010-07-17 01:08:47 +0900 (Sat, 17 Jul 2010) | 2 lines
+Changed paths:
+   M /libhangul/trunk/hangul/hangulkeyboard.h
+
+옛한글 조합 테이블의 주석을 나머지와 테이블과 같은 형식으로 변경함
+
+------------------------------------------------------------------------
+r222 | krisna | 2010-07-17 00:50:29 +0900 (Sat, 17 Jul 2010) | 2 lines
+Changed paths:
+   M /libhangul/trunk/hangul/hangulkeyboard.h
+
+유니코드 5.1에 따라 새로 추가된 옛한글 자모에 대한 조합 규칙 추가
+
+------------------------------------------------------------------------
+r221 | krisna | 2010-04-26 22:49:45 +0900 (Mon, 26 Apr 2010) | 5 lines
+Changed paths:
+   M /libhangul/trunk/hangul/hangulinputcontext.c
+   M /libhangul/trunk/hangul/hangulkeyboard.h
+
+안마태 자판 구현 추가 #315248
+ * Homin Lee님의 패치를 약간 수정하여 적용함
+   일부 대분자에 임의로 할당된 기호 글자들 제거
+   주석 포맷이 틀린곳 수정
+
+------------------------------------------------------------------------
+r220 | krisna | 2010-04-04 19:55:37 +0900 (Sun, 04 Apr 2010) | 6 lines
+Changed paths:
+   M /libhangul/trunk/hangul/hangulctype.c
+
+버그수정: #315256 한글 종성 입력시 글꼴 랜더링 문제
+ * 세벌식 자판에서 종성만 입력하는 경우 U+1100 자모로 출력하는 문제임
+   r201에서 hangul_jamo_to_cjamo() 함수의 테이블을 하나로 합치면서
+   잘못하여 데이터를 손실하여 발생한 문제
+   빠진 종성들을 compatibility jamo로 변환할 수 있도록 함
+
+------------------------------------------------------------------------
+r219 | krisna | 2010-03-12 21:08:03 +0900 (Fri, 12 Mar 2010) | 5 lines
+Changed paths:
+   M /libhangul/trunk/data/hanja/freq-hanja.txt
+   M /libhangul/trunk/data/hanja/hanja.txt
+
+버그수정: #315200 KS X 1002 한자를 좀 더 앞쪽으로
+ * 한자의 빈도에 따른 우선 순위를 조정하여 KS X 1002 에서 지정한 한자를 좀더 
+   앞쪽으로 배치되게 수정함
+ * 작업을 해주신 박원규님에게 감사드립니다.
+
+------------------------------------------------------------------------
+r218 | krisna | 2010-03-10 00:17:53 +0900 (Wed, 10 Mar 2010) | 5 lines
+Changed paths:
+   M /libhangul/trunk/data/hanja/hanja.txt
+
+버그수정: #315197 중복된 한자 단어
+ * 반복되어 들어 있는 단어 제거
+   아마도 변환 과정에서 오류가 있었던 것 같다.
+   아니면 호환한자 관련한 문제가 있었던 것인지도 모르겠다.
+
+------------------------------------------------------------------------
+r217 | krisna | 2010-03-10 00:11:40 +0900 (Wed, 10 Mar 2010) | 3 lines
+Changed paths:
+   M /libhangul/trunk/data/hanja/hanja.txt
+
+버그수정: #315196 포주:庖廚:푸주의 원말
+ 텍스트 변환에서 발생한 것으로 보이는 오류 수정
+
+------------------------------------------------------------------------
+r216 | krisna | 2009-12-06 16:44:22 +0900 (Sun, 06 Dec 2009) | 2 lines
+Changed paths:
+   M /libhangul/trunk/data/hanja/hanja.txt
+
+잘못된 글자 수정: 반대:胖大
+
+------------------------------------------------------------------------
+r215 | krisna | 2009-11-07 22:31:44 +0900 (Sat, 07 Nov 2009) | 2 lines
+Changed paths:
+   M /libhangul/trunk/data/hanja/hanja.txt
+
+한자어중 한자로 표기 되지 않은 것 한자로 바꿈
+
+------------------------------------------------------------------------
+r214 | krisna | 2009-11-07 21:35:31 +0900 (Sat, 07 Nov 2009) | 2 lines
+Changed paths:
+   M /libhangul/trunk/data/hanja/hanja.txt
+
+거칠부의 한자는 삼국사기의 기록에 따라 居柒夫로 한다.
+
+------------------------------------------------------------------------
 r212 | krisna | 2009-10-31 14:32:09 +0900 (Sat, 31 Oct 2009) | 3 lines
 Changed paths:
    M /libhangul/trunk/configure.ac
old mode 100755 (executable)
new mode 100644 (file)
index 339e67d..c8a416b
@@ -1,15 +1,23 @@
-SUBDIRS = hangul data test
+SUBDIRS = hangul data tools po
+DIST_SUBDIRS = hangul data tools po test
 
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = libhangul.pc
 
 EXTRA_DIST = \
+    config.rpath \
     doc/Makefile \
     doc/Doxyfile.in \
-    doc/mainpage.dox
+    doc/mainpage.dox \
+    test/Makefile.am \
+    test/Makefile.in \
+    test/hangul.c \
+    test/hanja.c \
+    test/test.c
 
-log:
-       unset LC_ALL; \
-       export LANG=C ; \
-       export LC_CTYPE=ko_KR.UTF-8; \
-       svn log -v > ChangeLog
+ACLOCAL_AMFLAGS = -I m4
+
+dist-hook:
+       if test -d .git; then \
+               git log --name-status --date=iso > $(distdir)/ChangeLog ; \
+       fi
diff --git a/NEWS b/NEWS
old mode 100755 (executable)
new mode 100644 (file)
index 4a389cf..49a8fe3
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,28 @@
+0.1.0
+ * add new API for keycode normalization
+ * remove deprecated API
+ * add supports for freebsd
+ * update some test codes
+
+0.0.12
+ * add dubeolsik yetgeul keyboard
+ * make sebeolsik yetgeul keyboard layout conform to HWP
+ * add API to get builtin keyboard list
+ * use Unicode jamo for incomplete syllable
+ * gettextize
+ * bug fix for Unicode 5.2
+ * fix wrong characters in ahnmatae(#31548)
+ * add command line tool hangul
+
+0.0.11
+ * fixed preedit string bug: #315256
+ * added Ahnmatae method
+ * updated hanja frequency data and reordered hanja table according to it:
+   #315200
+ * fixed bugs in hanja data
+ * updated old hangul jamo combination table according to Unicode standard 5.2:
+   #315127
+
 0.0.10
  * implemented new logic romaja method
  * updated to support the new Unicode standard 5.2
diff --git a/README b/README
index 4e13c22..3c4c484 100644 (file)
--- a/README
+++ b/README
@@ -8,16 +8,10 @@ How to build
  # make
 
 Download:
- * http://kldp.net/frs/?group_id=362
+ * http://code.google.com/p/libhangul/downloads/list
 
 Bug report:
- * bug tracker: http://kldp.net/tracker/?group_id=362
-
-Mailing list
- * mailing list: http://lists.kldp.net/mailman/listinfo/hangul-hackers
- * mailing list archive: http://lists.kldp.net/pipermail/hangul-hackers/
+ * http://code.google.com/p/libhangul/issues/list
 
 Web sites
- * Home page: http://hangul.kldp.net/
- * Project page: http://kldp.net/projects/hangul/
- * Wiki page: http://wiki.kldp.org/wiki.php/libhangul
+ * Project page: http://code.google.com/p/libhangul/
diff --git a/autogen.sh b/autogen.sh
new file mode 100755 (executable)
index 0000000..9ff6c9c
--- /dev/null
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+
+test -f ChangeLog || touch ChangeLog
+
+#libtoolize=`which glibtoolize`
+#if test -z "$libtoolize"; then
+#    libtoolize=libtoolize
+#fi
+
+autopoint --force
+libtoolize --automake --copy --force
+aclocal $ACLOCAL_AMFLAGS
+autoheader
+automake --add-missing --copy
+autoconf
diff --git a/compat b/compat
deleted file mode 100644 (file)
index b8626c4..0000000
--- a/compat
+++ /dev/null
@@ -1 +0,0 @@
-4
old mode 100755 (executable)
new mode 100644 (file)
index e4434cf..cde5bad
@@ -2,15 +2,15 @@
 # Process this file with autoconf to produce a configure script.
 
 AC_PREREQ(2.57)
-AC_INIT(libhangul, 0.0.10, http://kldp.net/projects/hangul/)
+AC_INIT(libhangul, 0.1.0, http://code.google.com/p/libhangul/)
 AM_INIT_AUTOMAKE
 AC_CONFIG_SRCDIR([hangul/hangul.h])
 AC_CONFIG_HEADER([config.h])
 
 # library version
 LIBHANGUL_CURRENT=1
-LIBHANGUL_REVISION=2
-LIBHANGUL_AGE=1
+LIBHANGUL_REVISION=0
+LIBHANGUL_AGE=0
 
 AC_SUBST(LIBHANGUL_CURRENT)
 AC_SUBST(LIBHANGUL_REVISION)
@@ -27,6 +27,7 @@ AC_PROG_INSTALL
 # Checks for header files.
 AC_HEADER_STDC
 AC_CHECK_HEADERS([stdlib.h string.h limits.h])
+AC_CHECK_HEADERS([langinfo.h])
 
 # Checks for typedefs, structures, and compiler characteristics.
 AC_HEADER_STDBOOL
@@ -41,21 +42,32 @@ AC_FUNC_MMAP
 AC_FUNC_REALLOC
 AC_CHECK_FUNCS([munmap])
 AC_CHECK_FUNCS([strcasecmp])
+AC_CHECK_FUNCS([nl_langinfo])
+
+# Checks for gettext stuff
+GETTEXT_PACKAGE="$PACKAGE"
+AC_SUBST(GETTEXT_PACKAGE)
+AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", gettext package name)
+AM_GNU_GETTEXT([external])
+AM_GNU_GETTEXT_VERSION(0.18)
+AM_ICONV
 
 # Checks for unit test framework
-#PKG_PROG_PKG_CONFIG
-#if test -n "$PKG_CONFIG"; then
-#    PKG_CHECK_EXISTS(check, [ PKG_CHECK_MODULES([CHECK], [check]) ])
-#fi
+PKG_PROG_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+    PKG_CHECK_EXISTS(check, [ PKG_CHECK_MODULES([CHECK], [check]) ])
+fi
 
 AC_CONFIG_FILES([
 Makefile
-hangul/Makefile
 data/Makefile
 data/hanja/Makefile
-test/Makefile
 doc/Doxyfile
+hangul/Makefile
 libhangul.pc
+po/Makefile.in
+test/Makefile
+tools/Makefile
 ])
 
 AC_OUTPUT
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
index 78d8e81..1e39de4 100644 (file)
 가:茄:가지 가
 가:痂:헌데 딱지 가
 가:跏:책상다리할 가, 도사리어 앉을 가
-가:椵:
-가:叚:
-가:価:
 가:斝:옥잔 가
 가:葭:갈대 가
 가:舸:큰 배 가
 가:笳:갈잎피리 가
 가:哿:좋을 가
-가:猳:
-가:髂:
 가:坷:험할 가
 가:檟:오동나무 가
 가:謌:歌와 同字
 가:珈:머리꾸미개 가
-가:瘸:
 가:砢:
+가:佉:
+가:呿:
+가:榎:檟와 同字
+가:仮:假의 略字
+가:傢:세간 가
+가:咖:커피차 가, 커피의 음차로 쓰는자 가
+가:瘕:
+가:耞:도리깨 가
+가:宊:
+가:椵:
+가:叚:
+가:価:
+가:猳:
+가:髂:
+가:瘸:
 가:鴐:
 가:䴥:
 가:拁:
 가:㤎:
-가:佉:
-가:呿:
-가:榎:檟와 同字
 가:榢:
 가:毠:
 가:溊:
 가:牁:
 가:豭:
-가:仮:假의 略字
 가:槚:
 가:诃:
 가:贾:
 가:镓:
 가:驾:
 가:鲄:
-가:傢:세간 가
-가:咖:커피차 가, 커피의 음차로 쓰는자 가
-가:瘕:
-가:耞:도리깨 가
-가:宊:
 가:婽:
 가:尜:
 가:岢:
 각:恪:삼갈 각, 공경할 각
 각:殼:껍질 각
 각:慤:삼갈 각, 정성 각
-각:阁:
-각:愨:
 각:榷:
-각:覚:
 각:骼:
 각:桷:서까래 각
 각:礭:
 각:搉:칠 각
-각:礐:
 각:卻:却의 本字
+각:躩:
+각:咯:토할 각
+각:埆:메마를 각
+각:擱:놓을 각
+각:塙:
+각:阁:
+각:愨:
+각:覚:
+각:礐:
 각:殻:
 각:胳:
-각:躩:
 각:傕:
 각:崅:
 각:茖:
-각:咯:토할 각
-각:埆:메마를 각
-각:擱:놓을 각
 각:佫:
 각:墧:
 각:斍:
 각:悫:
 각:搁:
 각:觉:
-각:塙:
 각:愙:
 각:捔:
 각:斠:
 간:磵:산골 시내 간, 석간수 간, 산골물 간
 간:桿:줄기
 간:稈:짚 간, 볏짚 간
-간:间:
-간:恳:
-간:旰:
 간:赶:달릴 간
 간:衎:즐길 간, 바를 간
-간:简:
 간:慳:아낄 간
 간:榦:幹의 本字
 간:玕:옥돌 간
+간:迀:구할 간, 권할 간
+간:偘:侃과 同字
+간:秆:稈과 同字
+간:栞:도표 간
+간:茛:독초이름 간, 미나리아재비 간
+간:齦:물을 간
+간:间:
+간:恳:
+간:旰:
+간:简:
 간:㸔:
 간:簳:
 간:瞯:
 간:㵎:
 간:趕:
 간:暕:
-간:迀:구할 간, 권할 간
 간:盰:
 간:覸:
 간:顅:
 간:芉:
-간:偘:侃과 同字
 간:囏:
 간:涆:
 간:貇:
 간:鬝:
 간:㿻:
-간:秆:稈과 同字
 간:悭:
 간:拣:
 간:擀:
 간:踬:
 간:锏:
 간:龈:
-간:栞:도표 간
-간:茛:독초이름 간, 미나리아재비 간
-간:齦:물을 간
 간:倝:
 간:墹:
 간:姧:
 갈:碣:비 갈, 우뚝선 돌 갈, 동해의 산이름 갈
 갈:蝎:전갈 갈, 빈대 갈
 갈:乫:땅이름 갈
-갈:暍:
 갈:羯:불친 양 갈, 땅이름 갈
-갈:渇:
 갈:秸:볏짚 갈, 짚 고갱이 갈
-갈:輵:
-갈:轕:
 갈:鶡:
 갈:楬:패를 써서 표시할 갈
-갈:鍻:
-갈:鹖:
 갈:噶:벼슬이름 갈, 땅이름 갈
 갈:蠍:전갈 갈
+갈:暍:
+갈:渇:
+갈:輵:
+갈:轕:
+갈:鍻:
+갈:鹖:
 갈:圿:
 갈:嵑:
 갈:嶱:
 감:嵌:깊은 골 감, 곁굴 감, 깊은 산 감, 산골짜기 감
 감:橄:감람나무 감
 감:龕:취할 감, 이길 감, 감실 감
-감:减:
-감:监:
 감:歛:
 감:酣:
 감:撼:흔들 감, 움직일 감, 깨뜨릴 감
-감:瑊:
 감:欿:서운할 감, 찌푸릴 감, 걱정할 감
+감:减:
 감:弇:뚜껑 감, 사람이름 감
-감:鍳:
 감:嵁:산 험할 감
 감:闞:
 감:憨:어리석을 감, 미련할 감
+감:澉:
+감:轗:
+감:坩:도가니 감
+감:埳:구덩이 감
+감:泔:
+감:淦:
+감:矙:
+감:鹻:
+감:监:
+감:瑊:
+감:鍳:
 감:砍:
 감:椷:
 감:歁:
-감:澉:
 감:鹼:
-감:轗:
 감:堿:
 감:塪:
 감:惂:
 감:鳡:
 감:鹐:
 감:龛:
-감:坩:도가니 감
-감:埳:구덩이 감
-감:泔:
-감:淦:
-감:矙:
-감:鹻:
 감:佄:
 감:冚:
 감:凲:
 갑:鉀:갑옷 갑
 갑:匣:궤 갑, 상자 갑, 궤짝 갑
 갑:胛:어깻죽지 갑
+갑:韐:가죽바지 갑
 갑:瞌:
 갑:帢:
 갑:㠷:
 갑:钾:
 갑:闸:
-갑:韐:가죽바지 갑
 갑:厒:
 갑:搕:
 갑:敆:
 강:堈:언덕 강, 밭 두둑 강, 독 강
 강:畺:疆과 同字, 지경 강
 강:鱇:천징어 강
-강:強:강할
 강:杠:외나무 다리 강, 깃대 강, 상 앞 가로막대 강, 올릴 강
 강:僵:엎드러질 강, 쓰러질 강
-강:冈:
-강:奋:
 강:忼:강개할 강, 뜻이 크고 기개있을 강, 탄식할 강
 강:跫:
 강:橿:참죽나무 강, 호미자루 강, 사닥다리 강, 억셀 강
 강:韁:고삐 강
 강:茳:강리풀 강
 강:壃:疆과 同字
-강:棡:
 강:扛:마주 들 강
 강:釭:
-강:掆:
 강:殭:죽어 썩지 않을 강, 마른 누에 강
 강:矼:돌다리 강, 징검다리 강, 성실할 강
 강:繈:繦의 本字
-강:犺:
-강:玒:
-강:糨:
-강:繮:
 강:穅:겨 강, 악기이름 강
 강:罡:강별 강
 강:羗:羌과 同字
 강:羫:밭 갈 강
+강:傋:아첨 아니할 강
+강:豇:광저기 강
+강:強:강할
+강:冈:
+강:奋:
+강:棡:
+강:掆:
+강:犺:
+강:玒:
+강:糨:
+강:繮:
 강:峕:
 강:嵻:
 강:鏹:
 강:讲:
 강:钢:
 강:镪:
-강:傋:아첨 아니할 강
-강:豇:광저기 강
 강:冮:
 강:勥:
 강:匟:
 개:恝:걱정 없을 개
 개:疥:옴 개
 개:槩:槪와 同字
-개:个:
-개:丐:
-개:葢:
 개:剴:낫 개, 가까울 개, 간절할 개
 개:玠:큰 서옥 개
 개:揩:문지를 개, 문질러 훔칠 개
-개:㮣:
 개:匃:청구할 개, 줄 개, 빌 개
-개:嘅:
 개:闓:열 개, 풀 개, 활깍지 개
+개:磕:돌 부딪는 소리 개
+개:个:
+개:丐:
+개:葢:
+개:㮣:
+개:嘅:
 개:喈:
 개:湝:
 개:祴:
 개:暟:
 개:蚧:
 개:稭:
-개:磕:돌 부딪는 소리 개
 개:概:
 개:烗:
 개:䁗:
 갱헌:羹獻:
 갱히:更히:
 갹:醵:술추렴
-갹:噱:
 갹:蹻:
+갹:噱:
 갹:谻:
 갹:臄:
 갹:勪:
 거:踞:걸터앉을 거
 거:鋸:톱 거, 다리 꺾는 형벌 거
 거:迲:
-거:舉:
-거:詎:
 거:裾:옷 뒷자락 거
 거:袪:소매 거, 소매 아귀 거
 거:蘧:패랭이꽃 거, 석죽화 거, 마음에 든든할 거
-거:琚:
-거:柜:
 거:莒:모시풀 거, 나라이름 거, 고을이름 거
-거:㨿:
 거:蕖:연꽃 거
 거:秬:검은 기장 거
+거:籧:대자리 거, 천상바라기 거, 양잠기 거
+거:駏:튀기 거, 거공벌레 거
+거:腒:건치 거, 꿩 포 거
+거:苣:상추 거, 검은 깨 거
+거:胠:열 거, 갈비 거
+거:筥:쌀 담는 광주리 거, 볏단 거
+거:佉:나라이름 거
+거:呿:입 딱 벌일 거
+거:昛:밝을 거
+거:舉:
+거:詎:
+거:琚:
+거:柜:
+거:㨿:
 거:㩀:
 거:耟:
 거:簴:
 거:㞐:
 거:鐻:
-거:籧:대자리 거, 천상바라기 거, 양잠기 거
 거:璖:
-거:駏:튀기 거, 거공벌레 거
 거:虡:
-거:腒:건치 거, 꿩 포 거
-거:苣:상추 거, 검은 깨 거
 거:弆:
-거:胠:열 거, 갈비 거
 거:磲:
 거:阹:
-거:筥:쌀 담는 광주리 거, 볏단 거
 거:椐:
 거:璩:
-거:佉:나라이름 거
-거:呿:입 딱 벌일 거
 거:佢:
 거:俥:
 거:壉:
 거:钜:
 거:键:
 거:锯:
-거:昛:밝을 거
 거:伡:
 거:凥:
 거:勮:
 거치할인제도:据置割引制度:
 거친면:거친綿:
 거칠봉:居七峰:
-ê±°ì¹ ë¶\80:å±\85æ¼\86夫:
+ê±°ì¹ ë¶\80:å±\85æ\9f\92夫:
 거칠산군:居漆山郡:
 거침:巨浸:
 거탄:巨彈:
 건:褰:바지 건, 걷을 건, 발 걷을 건
 건:謇:말 더듬거릴 건, 바른말할 건
 건:鞬:칼집 건, 동개 건
+건:揵:멜 건, 막을 건, 들 건
+건:犍:불친 소 건, 짐승이름 건, 촉나라 고을이름 건
+건:睷:눈으로 세어볼 건
 건:搴:
 건:鶱:
-건:揵:멜 건, 막을 건, 들 건
 건:䖍:
 건:諐:
 건:湕:
-건:犍:불친 소 건, 짐승이름 건, 촉나라 고을이름 건
 건:徤:
-건:睷:눈으로 세어볼 건
 건:乹:
 건:寋:
 건:㨜:
 걸:偈:힘 빼두를 걸, 빠를 걸, 헌걸찰 걸
 걸:朅:갈 걸
 걸:乬:갈 걸
+걸:榤:닭의 홰 걸
 걸:嵥:
 걸:㐦:
 걸:滐:
-걸:榤:닭의 홰 걸
 걸:搩:
 걸:櫭:
 걸:芞:
 검:瞼:눈시울 검
 검:撿:잡을 검, 구속할 검, 관찰할 검, 비교할 검
 검:芡:마름 검, 가시연밥 검
+검:岒:
 검:臉:
 검:劎:
 검:俭:
 검:睑:
 검:脸:
 검:钤:
-검:岒:
 검:仱:
 검:剱:
 검:劔:
 겁:劫:위협할 겁, 겁탈할 겁, 부지런할 겁, 대궐 층계 겁, 겁 겁, 화재 겁, 빼앗을 겁
 겁:迲:자내
 겁:刦:겁탈할 겁, 구속할 겁
+겁:刧:刦의 俗字
 겁:刼:
 겁:㤼:
 겁:㥘:
 겁:袷:
-겁:刧:刦의 俗字
 겁:跲:
 겁:昅:
 겁:抾:
 격:檄:격서 격, 격문 격, 과격할 격
 격:膈:명치 격
 격:覡:박수 격, 남자무당 격
-격:撃:
 격:翮:
-격:繳:
 격:骼:마른 뼈 격, 드러난 뼈 격, 짐승의 뼈 격
 격:闃:고요할 격
 격:鬲:오지병 격, 땅이름 격, 다리굽은솥 격
+격:挌:칠 격, 들 격
+격:鴃:왜가리 격, 때까치 격
+격:毄:맞부딛는 소리 격, 충돌할 격, 창 격
+격:撃:
+격:繳:
 격:閴:
 격:綌:
 격:鵙:
-격:挌:칠 격, 들 격
-격:鴃:왜가리 격, 때까치 격
 격:愅:
 격:滆:
 격:薂:
 격:觋:
 격:阒:
 격:䴗:
-격:毄:맞부딛는 소리 격, 충돌할 격, 창 격
 격:呄:
 격:嗝:
 격:垎:
 견:繭:고치 견, 발 부르틀 견, 목 쉴 견, 비단 견
 견:俔:
 견:蠲:밝을 견, 조촐할 견, 반딧불 견
-견:牵:
 견:畎:밭 도랑 견, 산골 도랑 견
 견:縳:
 견:狷:고집스러울 견, 조수할 견, 편협할 견
 견:繾:곡진할 견, 마지 않을 견
+견:筧:대 홈통 견
+견:羂:걸 견, 걸릴 견
+견:樫:떡갈나무 견
+견:鰹:큰 가물치 견, 물치 견, 강고도리 견
+견:牵:
 견:掔:
 견:汧:
 견:岍:
 견:縴:
 견:梘:
 견:罥:
-견:筧:대 홈통 견
-견:羂:걸 견, 걸릴 견
 견:汱:
 견:甽:
 견:詃:
 견:鲣:
 견:鹃:
 견:䌸:
-견:樫:떡갈나무 견
-견:鰹:큰 가물치 견, 물치 견, 강고도리 견
 견:儙:
 견:幵:
 견:悓:
 결:訣:이별할 결, 열결할 결, 사례할 결, 비결 결
 결:拮:길거할 결, 열심히 일할 결
 결:抉:긁을 결, 당길 결
-결:决:
 결:闋:쉴 결, 다할 결, 풍류 마칠 결, 문 닫을 결
 결:觖:서운할 결, 들쳐낼 결, 바랄 결
 결:絜:
 결:玦:옥패 결, 활 깍지 결
+결:鴃:
+결:决:
 결:鴂:
 결:鈌:
 결:駃:
-결:鴃:
 결:袺:
 결:刔:
 결:洯:
 겸:嗛:부족히 여길 겸, 겸손 겸, 입에 밥 물고 있을 겸
 겸:縑:합사비단 겸
 겸:傔:겸종 겸
-겸:㻩:
 겸:拑:자갈 먹일 겸
+겸:檶:
+겸:鹻:
+겸:黚:얕은 금향빛 겸
+겸:鼸:두더쥐 겸
+겸:岒:
+겸:㻩:
 겸:鶼:
 겸:缣:
 겸:谦:
 겸:钳:
 겸:鳒:
 겸:鹣:
-겸:檶:
-겸:鹻:
-겸:黚:얕은 금향빛 겸
-겸:鼸:두더쥐 겸
-겸:岒:
 겸:嵰:
 겸:槏:
 겸:羬:
 경:暻:밝을 경
 경:俓:徑과 同字, 곧을 경
 경:倞:굳셀 경
-경:経:
-경:軽:
 경:罄:빌 경
-경:亰:
 경:扃:빗장 경
 경:竸:競과 同字
 경:冏:빛날 경
 경:惸:근심할 경
 경:畊:耕의 古字
 경:鯁:생선뼈 경
-경:獍:
 경:哽:목멜 경
 경:檠:도지개 경
 경:綆:두레박줄 경
 경:黥:묵형할 경
-경:璚:
 경:褧:홑옷 경
-경:曔:
-경:㯳:
 경:謦:기침 경
 경:駉:목장 경
-경:澃:
-경:挭:
 경:剄:목 벨 경
 경:熲:빛날 경
+경:憼:공경할 경
+경:焭:근싱할 경
+경:顈:홑옷 경
+경:経:
+경:軽:
+경:亰:
+경:獍:
+경:璚:
+경:曔:
+경:㯳:
+경:澃:
+경:挭:
 경:埛:
 경:麖:
 경:燝:
 경:鲸:
 경:鹒:
 경:䌹:
-경:憼:공경할 경
-경:焭:근싱할 경
-경:顈:홑옷 경
 경:儝:
 경:冂:멀다
 경:冋:
 경자자:庚子字:
 경자제:京子弟:
 경작:耕作:
-경작강제:경작强制:
+경작강제:耕作强制:
 경작공:京作貢:
 경작공동체:耕作共同體:
 경작권:耕作權:
-경작권지:경작權地:
-경작기:경작機:
+경작권지:耕作權地:
+경작기:耕作機:
 경작면적:耕作面積:
 경작물:耕作物:
-경작법:경작法:
+경작법:耕作法:
 경작자:耕作者:
 경작제도:耕作制度:
 경작지:耕作地:
 경작지주:耕作地主:
-경작한계:경작限界:
+경작한계:耕作限界:
 경작한계지:耕作限界地:
 경잠:耕蠶:
 경잠과:耕蠶科:
 경쟁입찰:競爭入札:
 경쟁자:競爭者:
 경쟁적:競爭的:
-경쟁적공존:경쟁적共存:
+경쟁적공존:競爭的共存:
 경쟁적사회주의:競爭的社會主義:
 경쟁전:경쟁戰:
 경저:京邸:
 경제과학위원회:經濟科學委員會:
 경제관:經濟觀:
 경제관계사부:經濟關係四部:
-경제관계장관:경제관계長官:
+경제관계장관:經濟關係長官:
 경제관념:經濟觀念:
-경제광물:경제鑛物:
+경제광물:經濟鑛物:
 경제교서:經濟敎書:
 경제구조:經濟構造:
 경제국:經濟國:
-경제국:경제局:
-경제국가설:경제국가說:
+경제국:經濟局:
+경제국가설:經濟國家說:
 경제국장:經濟局長:
 경제권:經濟權:
 경제권:經濟圈:
 경제권리의무헌장:經濟權利義務憲章:
 경제기구:經濟機構:
-경제기획:경제企劃:
-경제기획관:경제기획官:
+경제기획:經濟企劃:
+경제기획관:經濟企劃官:
 경제기획국:經濟企劃局:
 경제기획원:經濟企劃院:
-경제기획원장관:경제기획원長官:
+경제기획원장관:經濟企劃院長官:
 경제난:經濟難:
 경제난민:經濟難民:
 경제단위:經濟單位:
-경제단체:경제團體:
-경제단체연합회:경제단체聯合會:
-경제대국:경제大國:
+경제단체:經濟團體:
+경제단체연합회:經濟團體聯合會:
+경제대국:經濟大國:
 경제도시:經濟都市:
 경제동:輕制動:
 경제동맹:經濟同盟:
-경제동물:경제動物:
+경제동물:經濟動物:
 경제동학:經濟動學:
 경제되다:經濟되다:
 경제란:經濟欄:
 경제림:經濟林:
 경제면:經濟面:
 경제모델:經濟모델:
-경제모형:경제模型:
+경제모형:經濟模型:
 경제목:經題目:
 경제문감:經濟文鑑:
-경제문제:경제問題:
+경제문제:經濟問題:
 경제민주주의:經濟民主主義:
 경제발전:經濟發展:
-경제발전단계설:경제발전段階說:
+경제발전단계설:經濟發展段階說:
 경제백서:經濟白書:
 경제범:經濟犯:
 경제법:經濟法:
 경제봉쇄:經濟封鎖:
 경제불쾌지수:經濟不快指數:
 경제블록:經濟블록:
-경제비:경제費:
+경제비:經濟費:
 경제사:經濟史:
-경제사:경제士:
+경제사:經濟士:
 경제사가:經濟史家:
 경제사관:經濟史觀:
 경제사범:經濟事犯:
-경제사부:경제四部:
-경제사상:경제思想:
+경제사부:經濟四部:
+경제사상:經濟思想:
 경제사적:經濟史的:
-경제사절:경제使節:
+경제사절:經濟使節:
 경제사학:經濟史學:
 경제사학계:經濟史學界:
 경제사학자:經濟史學者:
 경제사회이사회:經濟社會理事會:
 경제사회학:經濟社會學:
 경제생활:經濟生活:
-경제생활:경제生活:
 경제성:經濟性:
 경제성공학:經濟性工學:
 경제성장:經濟成長:
 경제예측:經濟豫測:
 경제외교:經濟外交:
 경제외적강제:經濟外的强制:
-경제원론:경제原論:
+경제원론:經濟原論:
 경제원조:經濟援助:
 경제원칙:經濟原則:
-경제위범:경제違犯:
+경제위범:經濟違犯:
 경제육전:經濟六典:
-경제의회:경제議會:
+경제의회:經濟議會:
 경제인:經濟人:
 경제인류학:經濟人類學:
-경제잠재력:경제潛在力:
+경제잠재력:經濟潛在力:
 경제재:經濟財:
 경제적:經濟的:
-경제적국민주의:경제적國民主義:
-경제적기본권:경제적基本權:
+경제적국민주의:經濟的國民主義:
+경제적기본권:經濟的基本權:
 경제적민주주의:經濟的民主主義:
 경제적유물론:經濟的唯物論:
-경제적자유:경제적自由:
+경제적자유:經濟的自由:
 경제적자유권:經濟的自由權:
-경제적조치:경제적措置:
-경제적집단:경제적潗團:
-경제적침투:경제적浸透:
+경제적조치:經濟的措置:
+경제적집단:經濟的潗團:
+경제적침투:經濟的浸透:
 경제전:經濟戰:
 경제정책:經濟政策:
 경제정책보험:經濟政策保險:
 경제정학:經濟靜學:
-경제제도:경제制度:
+경제제도:經濟制度:
 경제제재:經濟制裁:
 경제조정관:經濟調整官:
-경제조정관실:경제조정관室:
-경제조직:경제組織:
-경제조직자:경제조직者:
-경제조항:경제條項:
+경제조정관실:經濟調整官室:
+경제조직:經濟組織:
+경제조직자:經濟組織者:
+경제조항:經濟條項:
 경제주의:經濟主義:
-경제주의자:경제주의者:
+경제주의자:經濟主義者:
 경제주체:經濟主體:
-경제지구:경제地區:
-경제지도:경제地圖:
-경제지도:경제指導:
-경제지리:경제地理:
+경제지구:經濟地區:
+경제지도:經濟地圖:
+경제지도:經濟指導:
+경제지리:經濟地理:
 경제지리학:經濟地理學:
-경제지수:경제指數:
-경제지질학:경제地質學:
-경제지표:경제指標:
-경제차관:경제借款:
-경제차관보:경제차관補:
-경제차관회의:경제차관會議:
+경제지수:經濟指數:
+경제지질학:經濟地質學:
+경제지표:經濟指標:
+경제차관:經濟借款:
+경제차관보:經濟借款補:
+경제차관회의:經濟借款會議:
 경제철학:經濟哲學:
-경제체제:경제體制:
+경제체제:經濟體制:
 경제침투:經濟浸透:
-경제토대:경제土臺:
+경제토대:經濟土臺:
 경제통계:經濟統計:
-경제통계학:경제통계學:
+경제통계학:經濟統計學:
 경제통신사:經濟通信社:
 경제통제:經濟統制:
 경제통합:經濟統合:
 경제학:經濟學:
 경제학계:經濟學界:
 경제학과:經濟學科:
-경제학박사:경제학博士:
+경제학박사:經濟學博士:
 경제학부:經濟學部:
 경제학사:經濟學史:
-경제학사:경제학士:
-경제학사전:경제학辭典:
-경제학석사:경제학碩士:
-경제학설사:경제학設史:
+경제학사:經濟學士:
+경제학사전:經濟學辭典:
+경제학석사:經濟學碩士:
+경제학설사:經濟學設史:
 경제학자:經濟學者:
 경제학적:經濟學的:
 경제학파:經濟學派:
 경조:驚躁:
 경조:警曹:
 경조:輕燥:
-경조부박:輕浮薄:
+경조부박:輕浮薄:
 경조사:慶弔事:
 경조사비:慶弔事費:
 경조상문:慶弔相問:
 경찰병원:警察病院:
 경찰봉:警察棒:
 경찰서:警察署:
-경찰서원:경찰서員:
+경찰서원:警察署員:
 경찰서장:警察署長:
-경찰서장:경찰서長:
 경찰수첩:警察手帖:
 경찰의:警察醫:
 경찰의날:警察의날:
 경탄:硬彈:
 경탄성:敬歎聲:
 경탄성:驚歎聲:
-경탄조:경탄調:
+경탄조:驚歎調:
 경탈:傾奪:
 경탈:輕脫:
 경탐기:鯨探機:
 경향성:傾向性:
 경향소설:傾向小說:
 경향신문:京鄕新聞:
-경향영화:경향映畵:
+경향영화:傾向映畵:
 경향적:傾向的:
 경향출몰:京鄕出沒:
-경향출입:경향出入:
+경향출입:京鄕出入:
 경허:鏡虛:
 경헌:敬軒:
 경헌법:硬憲法:
 경험:經驗:
 경험가:經驗家:
 경험과학:經驗科學:
-경험교환회:경험交換會:
+경험교환회:經驗交換會:
 경험급:經驗給:
 경험단원:經驗單元:
 경험담:經驗談:
 경험률:經驗率:
 경험명제:經驗命題:
 경험방:經驗方:
-경험법칙:경험法則:
+경험법칙:經驗法則:
 경험비판론:經驗批判論:
 경험생명표:經驗生命表:
-경험식:경험式:
+경험식:經驗式:
 경험심리학:經驗心理學:
-경험아:경험我:
+경험아:經驗我:
 경험일원론:經驗一元論:
 경험자:經驗者:
-경험자아:경험自我:
+경험자아:經驗自我:
 경험적:經驗的:
 경험적개념:經驗的槪念:
 경험적법칙:經驗的法則:
-경험적성격:경험적性格:
+경험적성격:經驗的性格:
 경험적실재론:經驗的實在論:
 경험적의식:經驗的意識:
-경험적인식:경험적認識:
+경험적인식:經驗的認識:
 경험적확률:經驗的確率:
 경험주의:經驗主義:
 경험주의적:經驗主義的:
 경험착오:經驗錯誤:
 경험철학:經驗哲學:
 경험칙:經驗則:
-경험칙:경험則:
 경험커리큘럼:經驗커리큘럼:
 경험판단:經驗判斷:
 경험표:經驗表:
 경호원:警護員:
 경호인:警護人:
 경호처장:警護處長:
-경호함:경호艦:
+경호함:警護艦:
 경혹:驚惑:
 경혹되다:驚惑되다:
 경혼:驚魂:
 경회:輕灰:
 경회:鯨膾:
 경회루:慶會樓:
-경회유:경회釉:
+경회유:輕灰釉:
 경효전:景孝殿:
 경효전일기:景孝殿日記:
 경훈:經訓:
 계:屆:이를 계, 다다를 계
 계:磎:谿와 同字, 시냇물 계
 계:堺:界와 同字, 지경 계
-계:届:
 계:雞:닭 계
-계:継:
 계:烓:화덕 계
 계:罽:물고기 그물 계
 계:薊:삽주 계
-계:洎:
 계:堦:섬돌 계
 계:髻:상투 계
-계:繋:
-계:鶏:
 계:禊:계제 계
 계:筓:비녀 계
-계:笄:
 계:綮:발 고운 비단 계
 계:稧:
+계:瘈:미칠 계
+계:縘:繫와 同字
+계:葪:베일 계, 삽주 계
+계:届:
+계:継:
+계:洎:
+계:繋:
+계:鶏:
+계:笄:
 계:悈:
 계:紒:
 계:㻑:
 계:䙆:
 계:鸂:
 계:啟:
-계:瘈:미칠 계
 계:卟:
 계:呇:
 계:晵:
 계:锲:
 계:阶:
 계:㶉:
-계:縘:繫와 同字
-계:葪:베일 계, 삽주 계
 계:乩:
 계:唘:
 계:啔:
 계급:階級:
 계급:戒急:
 계급값:階級값:
-계급관:계급觀:
+계급관:階級觀:
 계급국가:階級國家:
 계급귀속의식:階級歸屬意識:
 계급독재:階級獨裁:
 계급방언:階級方言:
 계급사회:階級社會:
 계급성:階級性:
-계급성:계급性:
 계급의식:階級意識:
 계급장:階級章:
 계급적:階級的:
-계급적:계급的:
-계급전:계급戰:
+계급전:階級戰:
 계급정당:階級政黨:
 계급제도:階級制度:
-계급주의:계급主義:
+계급주의:階級主義:
 계급층:階級層:
 계급치:階級値:
 계급투쟁:階級鬪爭:
 계단교실:階段敎室:
 계단농업:階段農業:
 계단단층:階段斷層:
-계단대형:계단隊形:
+계단대형:階段隊形:
 계단만:階段灣:
 계단백탕:鷄蛋白湯:
 계단상:階段狀:
 계량경제학:計量經濟學:
 계량기:計量器:
 계량단위:計量單位:
-계량등:계량燈:
+계량등:計量燈:
 계량법:計量法:
 계량법학:計量法學:
-계량봉:계량棒:
+계량봉:計量棒:
 계량사회학:計量社會學:
 계량소립자:計量素粒子:
 계량스푼:計量스푼:
 계류열:稽留熱:
 계류음:繫留音:
 계류장:繫留場:
-계류조:계류條:
+계류조:稽留條:
 계류탑:繫留塔:
 계류형:溪流型:
 계륜:桂輪:
 계명산천:鷄鳴山川:
 계명성:啓明星:
 계명성:鷄鳴聲:
-계명시:계명時:
+계명시:鷄鳴時:
 계명점년:鷄鳴占年:
 계명주:鷄鳴酒:
 계명지객:鷄鳴之客:
 계목:鷄鶩:
 계목곡:桂木曲:
 계몽:啓蒙:
-계몽기:계몽期:
+계몽기:啓蒙期:
 계몽대:啓蒙隊:
 계몽도설:啓蒙圖說:
 계몽사상:啓蒙思想:
 고:尻:꽁무니 고
 고:犒:
 고:瞽:소경 고
-고:臯:
-고:髙:
-고:皷:
 고:刳:가를 고
 고:靠:기댈 고
 고:翺:날 고
-고:泒:
-고:稾:
 고:罟:그물 고
 고:觚:술잔 고
-고:鼔:
 고:杲:밝을 고
-고:吿:
-고:䯻:
 고:栲:북나무 고
-고:楛:
 고:槀:마를 고
 고:估:값 고
 고:詁:주석 고
 고:盬:염지 고
 고:篙:상앗대 고
 고:鴣:자고 고
-고:翶:
 고:皋:못 고
 고:酤:계명주 고
 고:櫜:활집 고
 고:糕:떡 고
 고:胯:사타구니 고
-고:餻:
 고:郜:나라이름 고
-고:柧:
 고:羖:검은 암양 고
+고:槹:두레박 고
+고:鈷:다리미 고
+고:凅:얼어붙을 고
+고:牯:암소 고
+고:稁:稿와 同字
+고:箍:테 고
+고:鷱:새이름 고
+고:塙:
+고:臯:
+고:髙:
+고:皷:
+고:泒:
+고:稾:
+고:鼔:
+고:吿:
+고:䯻:
+고:楛:
+고:翶:
+고:餻:
+고:柧:
 고:侤:
 고:蛄:
-고:槹:두레박 고
 고:嵪:
 고:笟:
 고:羙:
 고:胍:
 고:搞:
 고:㟸:
-고:鈷:다리미 고
 고:桍:
 고:棝:
 고:槔:
 고:鲓:
 고:鲴:
 고:鸪:
-고:凅:얼어붙을 고
-고:牯:암소 고
-고:稁:稿와 同字
-고:箍:테 고
-고:鷱:새이름 고
-고:塙:
 고:僱:
 고:勂:
 고:叝:
 곡:鵠:고니 곡, 과녁 곡
 곡:梏:쇠고랑 곡, 수갑 곡
 곡:斛:휘 곡, 헤아릴 곡
-곡:糓:
 곡:轂:바퀴 곡
 곡:嚳:
-곡:榖:
-곡:毂:
 곡:縠:주름 비단 곡
 곡:觳:뿔잔 곡
+곡:槲:떡갈나무 곡
+곡:糓:
+곡:榖:
+곡:毂:
 곡:牿:
 곡:瑴:
 곡:喾:
 곡:鹄:
-곡:槲:떡갈나무 곡
 곡:俈:
 곡:匤:
 곡:唂:
 곤:衮:袞과 同字
 곤:閫:문지방 곤
 곤:悃:정성 곤
+곤:髡:머리 깍을 곤
+곤:鵾:댓닭 곤
+곤:崐:곤륜산 곤
+곤:褌:잠방이 곤
+곤:捆:두드릴 곤
+곤:堃:따 곤
+곤:緄:띠 곤
+곤:裍:걷어 올릴 곤
+곤:錕:붉은 쇠 곤
+곤:鶤:댓닭 곤
+곤:齫:이 빠질 곤
 곤:鯀:
 곤:壼:
-곤:髡:머리 깍을 곤
 곤:滚:
 곤:髠:
-곤:鵾:댓닭 곤
-곤:崐:곤륜산 곤
 곤:璭:
 곤:綑:
-곤:褌:잠방이 곤
 곤:稇:
 곤:晜:
 곤:蔉:
-곤:捆:두드릴 곤
 곤:蓘:
 곤:蜫:
 곤:鮌:
 곤:鲧:
 곤:鲲:
 곤:鹍:
-곤:堃:따 곤
-곤:緄:띠 곤
-곤:裍:걷어 올릴 곤
-곤:錕:붉은 쇠 곤
-곤:鶤:댓닭 곤
-곤:齫:이 빠질 곤
 곤:丨:뚫다
 곤:堒:
 곤:尡:
 골:骨:뼈 골
 골:滑:어지러울 골
 골:汨:골몰할
-골:汩:
 골:鶻:송골매 골
 골:矻:
 골:榾:등걸 골
 골:搰:팔 골
+골:汩:
 골:杚:
 골:圣:
 골:馉:
 공:鞏:묶을 공, 가죽테 공
 공:珙:큰 옥 공, 옥이름 공
 공:蚣:지네 공
-공:筇:
-공:㓛:
-공:㳟:
 공:跫:발자국 소리 공
 공:倥:어리석을 공
 공:崆:산이름 공
-공:羾:
 공:蛩:메뚜기 공
 공:釭:굴대 공
-공:鞚:
-공:廾:들다
 공:箜:공후 공
-공:邛:
 공:悾:정성 공
 공:栱:두공 공
+공:槓:지렛대 공
+공:贛:줄 공
+공:蛬:귀뚜라미 공
+공:龔:공손할 공
+공:筇:
+공:㓛:
+공:㳟:
+공:羾:
+공:鞚:
+공:廾:들다
+공:邛:
 공:笻:
 공:㓋:
-공:槓:지렛대 공
 공:涳:
-공:贛:줄 공
 공:卭:
 공:疘:
 공:糿:
 공:贡:
 공:赣:
 공:龚:
-공:蛬:귀뚜라미 공
-공:龔:공손할 공
 공:埪:
 공:塨:
 공:幊:
 과:夸:자랑할 과
 과:窠:보금자리 과
 과:夥:많을 과
-과:姱:
 과:媧:사람 이름 과
-과:薖:
 과:胯:사타구니 과
 과:撾:칠 과
-과:蜾:
-과:鈛:
 과:侉:자랑할 과
 과:踝:복사뼈 과
 과:銙:대구 과
 과:蝌:올챙이 과
-과:檛:
 과:騍:암말 과
+과:倮:
+과:堝:도가니 과
+과:猓:긴 꼬리 원숭이 과
+과:稞:보리 과
+과:姱:
+과:薖:
+과:蜾:
+과:鈛:
+과:檛:
 과:剮:
 과:堁:
 과:淉:
 과:骒:
 과:㶽:
 과:䯄:
-과:倮:
-과:堝:도가니 과
-과:猓:긴 꼬리 원숭이 과
-과:稞:보리 과
 과:冎:
 과:咵:
 과:坬:
 곽:藿:콩잎 곽
 곽:霍:빠를 곽
 곽:癨:곽란 곽
-곽:漷:
 곽:躩:
-곽:钁:
 곽:鞹:무두질한 가죽 곽
-곽:崞:
-곽:瀖:
 곽:椁:관 곽
 곽:矡:
+곽:漷:
+곽:钁:
+곽:崞:
+곽:瀖:
 곽:墎:
 곽:欔:
 곽:籗:
 관:莞:골풀 관
 관:琯:옥피리 관, 옥저 관
 관:棺:널 관
-관:顴:광대뼈 관
 관:瓘:옥 이름 관, 구슬 관
 관:罐:두레박 관, 물동이 관
 관:菅:골풀 관, 왕골 관
 관:梡:
-관:舘:
-관:関:
+관:顴:광대뼈 관
 관:盥:대야 관
-관:観:
-관:䝺:
-관:欵:
 관:祼:강신제 관
 관:錧:비녀장 관
-관:瘝:
-관:寛:
 관:綰:얽을 관
 관:丱:쌍상투 관
 관:鸛:황새 관
-관:毌:
 관:筦:피리 관
 관:窾:빌 관
 관:爟:봉화 관
 관:雚:황새 관
 관:髖:허리뼈 관
+관:鑵:두레박 관
+관:涫:끓을 관
+관:輨:줏대 관
+관:舘:
+관:関:
+관:観:
+관:䝺:
+관:欵:
+관:瘝:
+관:寛:
+관:毌:
 관:倌:
 관:窽:
 관:闗:
-관:鑵:두레박 관
 관:礶:
 관:躀:
 관:䦎:
 관:馆:
 관:髋:
 관:鹳:
-관:涫:끓을 관
-관:輨:줏대 관
 관:卝:
 관:悹:
 관:悺:
 괄:栝:노송나무 괄
 괄:筈:하눌타리 괄
 괄:髺:머리 묶을 괄
-괄:鸹:
 괄:佸:힘 쓸 괄
 괄:鴰:재두루미 괄
+괄:鸹:
 괄:劀:
 괄:懖:
 괄:桰:
 광:珖:옥피리 광
 광:炚:햇빚 뜨거울 광, 밝을 광
 광:絖:솜 광
-광:礦:
 광:誑:속일 광
 광:纊:솜 광
 광:恇:겁낼 광
 광:獷:사나울 광
+광:磺:쇳돌 광
+광:桄:광랑나무 광
+광:茪:초결명 광
+광:框:문테 광
+광:爌:불 빛 환할 광
+광:誆:속일 광
+광:礦:
 광:撗:
 광:劻:
 광:眶:
 광:迋:
 광:矌:
-광:磺:쇳돌 광
-광:桄:광랑나무 광
 광:灮:
 광:垙:
-광:茪:초결명 광
 광:僙:
 광:抂:
 광:銧:
 광:诳:
 광:邝:
 광:鉱:
-광:框:문테 광
-광:爌:불 빛 환할 광
-광:誆:속일 광
 광:俇:
 광:儣:
 광:匩:
 괘:挂:그림족자 괘
 괘:詿:그르칠 괘
 괘:罣:걸 괘
+괘:咼:입 비뚤어질 괘
 괘:喎:
 괘:絓:
 괘:呙:
 괘:诖:
 괘:㖞:
-괘:咼:입 비뚤어질 괘
 괘:叧:
 괘:啩:
 괘:枴:
 괴:魁:으뜸 괴, 괴수 괴
 괴:拐:속일 괴
 괴:媿:창피줄 괴
-괴:壊:
 괴:坏:
 괴:恠:怪의 俗字
 괴:瑰:슬이름 괴
 괴:蒯:황모 괴
-괴:蕢:
-괴:瓌:
 괴:闠:
-괴:烠:
 괴:廥:여물광 괴
 괴:襘:띠매듭 괴
+괴:璝:옥돌 괴
+괴:壊:
+괴:蕢:
+괴:瓌:
+괴:烠:
 괴:凷:
 괴:欳:
 괴:膭:
 괴:块:
 괴:蒉:
-괴:璝:옥돌 괴
 괴:墤:
 괴:巜:
 괴:旝:
 굉:紘:갓끈 굉
 굉:閎:마을문 굉
 굉:觥:뿔잔 굉
-굉:硡:
 굉:黌:
-굉:鍠:
-굉:鍧:
 굉:訇:큰 소리 굉
 굉:浤:용솟음할 굉
+굉:硡:
+굉:鍠:
+굉:鍧:
 굉:汯:
 굉:翃:
 굉:翝:
 교:鮫:상어 교
 교:蕎:메밀 교
 교:餃:경단 교
-교:教:
 교:徼:
 교:榷:외나무 다리 교
-교:皦:
 교:嘐:닭 울 교
-교:挍:
 교:嚙:깨물 교
-교:轇:
 교:磽:메마른 땅 교
-교:屩:
 교:鉸:
 교:姣:예쁠 교
 교:窖:
 교:蹻:
 교:佼:예쁠 교
 교:趫:
+교:撟:들 교
+교:噭:부르짖을 교
+교:憍:교만할 교
+교:晈:달 밝을 교
+교:嘄:부르짖을 교
+교:暞:밝을 교
+교:橇:
+교:骹:
+교:鵁:
+교:齩:
+교:教:
+교:皦:
+교:挍:
+교:轇:
+교:屩:
 교:嵺:
 교:鄥:
-교:撟:들 교
 교:恔:
 교:敫:
 교:珓:
 교:穚:
-교:噭:부르짖을 교
-교:憍:교만할 교
 교:茭:
 교:蟜:
 교:譑:
-교:晈:달 밝을 교
 교:儌:
 교:墽:
 교:漖:
 교:骄:
 교:鲛:
 교:䴔:
-교:嘄:부르짖을 교
-교:暞:밝을 교
-교:橇:
-교:骹:
-교:鵁:
-교:齩:
 교:丂:
 교:啋:
 교:嘂:
 구:絿:급박할 구, 급할 구
 구:柾:관 구, 널 구
 구:銶:끌 구
-구:惧:
 구:搆:얽어맬 구
 구:扣:두드릴 구
-구:旧:
 구:裘:갓옷 구
 구:詬:꾸짖을 구
 구:疚:오랜 병 구
 구:遘:만날 구
 구:媾:겹사돈 구
 구:屨:삼으로 짠 신 구
-구:厩:
-구:乆:
-구:敺:
 구:嫗:할미 구
 구:劬:수고로울 구
 구:捄:흙파올릴 구
 구:駈:驅와 同字
 구:甌:사발 구
 구:摳:치마걷어들 구
-구:廏:마구간
 구:窶:가난하여 예절없을 구
-구:耇:
 구:彀:활 잔뜩 당길 구
 구:颶:사방풍 구
-구:沟:
-구:臞:
-구:緱:
-구:玽:
-구:雊:
 구:漚:물거품 구
 구:韭:부추 구
 구:鸜:구관조 구
-구:耈:
 구:傴:구부릴 구
-구:呴:
 구:榘:곡척 구
 구:糗:마른밥가루 구
 구:蚯:지렁이 구
 구:覯:
-구:䪷:
 구:癯:여윌 구
-구:倶:
-구:賕:
-구:亀:
 구:韝:깍지 구
-구:冦:
-구:㡱:
 구:姤:만날 구
 구:匶:柩의 古字
 구:璆:옥경쇠 구
 구:釦:그릇에 금테 두를 구
+구:鷇:새 새끼 구
+구:俅:공손할 구
+구:佝:꼽추 구
+구:岣:산이름 구
+구:昫:해돋아 따뜻할 구
+구:篝:불덮개 구
+구:胊:포(얇게 저미어서 말린 고기) 구
+구:坸:垢와 同字
+구:冓:재목 어긋매겨 쌓을 구
+구:佉:
+구:傋:
+구:厹:세모창 구
+구:叴:소리 높일 구
+구:戵:창 구
+구:痀:곱사등이 구
+구:窛:노략질할 구
+구:蒟:구장 구
+구:韮:韭와 同字
+구:鬮:제비뽑을 구
+구:惧:
+구:旧:
+구:厩:
+구:乆:
+구:敺:
+구:廏:마구간
+구:耇:
+구:沟:
+구:臞:
+구:緱:
+구:玽:
+구:雊:
+구:耈:
+구:呴:
+구:䪷:
+구:倶:
+구:賕:
+구:亀:
+구:冦:
+구:㡱:
 구:抅:
 구:氍:
 구:觓:
 구:訽:
-구:鷇:새 새끼 구
 구:躣:
 구:鞲:
-구:俅:공손할 구
 구:寠:
 구:椇:
 구:欨:
 구:㪺:
 구:㲄:
 구:䆒:
-구:佝:꼽추 구
-구:岣:산이름 구
-구:昫:해돋아 따뜻할 구
-구:篝:불덮개 구
-구:胊:포(얇게 저미어서 말린 고기) 구
 구:笱:
-구:坸:垢와 同字
 구:浗:
 구:蝺:
 구:褠:
 구:㣘:
 구:㽛:
-구:冓:재목 어긋매겨 쌓을 구
-구:佉:
 구:朹:
 구:梂:
 구:泃:
 구:鸥:
 구:鸲:
 구:龟:
-구:傋:
-구:厹:세모창 구
-구:叴:소리 높일 구
-구:戵:창 구
-구:痀:곱사등이 구
-구:窛:노략질할 구
-구:蒟:구장 구
-구:韮:韭와 同字
-구:鬮:제비뽑을 구
 구:丠:
 구:丩:
 구:倃:
 국:鞠:기를 국
 국:鞫:문초받을
 국:麴:누룩 국
-국:国:
 국:匊:움켜 뜰 국
-국:囯:
 국:跼:구부릴 국
 국:掬:두 손으로 움킬 국
 국:麯:麴과 同字
+국:国:
+국:囯:
 국:踘:
 국:閰:
 국:囗:둘러쌀
 군:群:무리 군
 군:窘:군색할 군, 급할 군
 군:裙:치마 군
-군:羣:
 군:捃:주울 군
-군:頵:
-군:涒:
 군:皸:얼어터질 군
 군:桾:고욤나무 군
+군:羣:
+군:頵:
+군:涒:
 군:军:
 군:皲:
 군:鲪:
 굴:詘:굽을 굴
 굴:矻:
 굴:倔:딱딱할 굴
-굴:朏:
 굴:淈:흐릴 굴
+굴:朏:
 굴:胐:
 굴:诎:
 굴:崫:
 궁:躬:몸 궁
 궁:穹:높을 궁
 궁:芎:궁궁이 궁
+궁:躳:躬의 本字
 궁:宫:
 궁:穷:
 궁:藭:
 궁:匔:
-궁:躳:躬의 本字
 궁:杛:
 궁:竆:
 궁:㑋:
 권:捲:거둘 권, 주먹쥘 권
 권:淃:물돌아 흐를 권, 물도는 모양 권
 권:惓:삼갈 권
-권:勧:
 권:綣:정다울 권
 권:睠:眷과 同字
 권:蜷:움추러질 권
+권:棬:휘어만든 나무그릇 권
+권:勌:倦과 同字
+권:勧:
 권:劵:
 권:巻:
-권:棬:휘어만든 나무그릇 권
 권:踡:
 권:鬈:
-권:勌:倦과 同字
 권:帣:
 권:䄅:
 권:劝:
 궐:蕨:고사리 궐
 궐:獗:도둑 일어날 궐, 뛰놀 궐
 궐:劂:
+궐:撅:
 궐:橛:
 궐:蹷:
 궐:橜:
 궐:镢:
 궐:阙:
 궐:鳜:
-궐:撅:
 궐:亅:갈고리
 궐:噘:
 궐:孒:
 궤:机:느티나무 궤, 책상 궤
 궤:詭:속일 궤, 간사할 궤
 궤:櫃:상자 궤, 궤짝 궤
-궤:几:안석 궤
 궤:饋:먹일 궤
+궤:几:안석 궤
 궤:跪:끓어앉을 궤
 궤:匱:갑 궤
 궤:樻:가마테나무 궤
 궤:簋:대제기 궤
 궤:餽:饋와 同字
 궤:憒:심란할 궤
-궤:簣:
 궤:劂:
 궤:繢:톱끝 궤
-궤:䡄:
-궤:匭:
 궤:闠:저자문 궤
 궤:佹:포갤 궤
+궤:氿:물가 궤
+궤:麂:큰고라니 궤
+궤:撅:
+궤:簣:
+궤:䡄:
+궤:匭:
 궤:㧪:
 궤:垝:
 궤:觤:
 궤:轨:
 궤:阓:
 궤:㱮:
-궤:氿:물가 궤
-궤:麂:큰고라니 궤
-궤:撅:
 궤:凧:
 궤:厬:
 궤:圚:
 귀:鬼:귀신 귀
 귀:龜:거북 귀
 귀:晷:시각 귀, 해그림자 귀
+귀:巋:
 귀:帰:
 귀:䢜:
 귀:宄:
-귀:巋:
 귀:瞶:
 귀:劌:
 귀:撌:
 규:赳:헌걸찰 규, 위엄스러울 규
 규:槻:물푸레나무 규
 규:虬:虯와 同字
-규:呌:
 규:跬:한발자국 규
 규:睽:어그러질 규
 규:虯:뿔없는 용 규
 규:闚:갸웃이 볼 규
 규:樛:나무가지 휘어질 규
-규:䂓:
 규:巋:
 규:糺:거둘 규
 규:楏:호미자루 규
 규:暌:해질 규
 규:頍:고깔비녀 규
 규:馗:아홉거리 규
+규:邽:고을이름 규
+규:鮭:
+규:嫢:가는 허리 규
+규:呌:
+규:䂓:
 규:戣:
 규:煃:
-규:邽:고을이름 규
 규:摎:
 규:槼:
-규:鮭:
 규:恘:
 규:芤:
 규:頯:
 규:纠:
 규:规:
 규:闺:
-규:嫢:가는 허리 규
 규:乣:
 규:喹:
 규:媯:
 균:筠:대껍질 균, 속빈 대 균
 균:勻:고를 균
 균:畇:밭개간할 균
-균:匀:
 균:囷:둥근곳집 균
-균:稛:
 균:麏:고라니 균
+균:匀:
+균:稛:
 균:麕:
 균:袀:
 균:钧:
 극:戟:갈래진 창 극
 극:剋:깍일 극, 이길 극
 극:亟:빠를 극
-극:殛:
 극:屐:나막신 극
-극:郤:
 극:郄:隙과 同字
+극:尅:剋과 同字
+극:殛:
+극:郤:
 극:㦸:
 극:茍:
 극:鋴:
 극:蕀:
 극:㥛:
 극:剧:
-극:尅:剋과 同字
 극:丮:
 극:勀:
 극:勊:
 근:劤:힘많을 근, 힘셀 근
 근:跟:발두꿈치 근
 근:靳:아낄 근
-근:堇:
 근:卺:합환주잔 근
 근:蘄:
-근:㘦:
 근:厪:적을 근
-근:殣:
 근:觔:筋과 同字
-근:慬:
-근:斳:
 근:墐:진흙 근
 근:巹:받들 근
 근:釿:대패 근
 근:廑:작은집 근
 근:漌:맑을 근
+근:堇:
+근:㘦:
+근:殣:
+근:慬:
+근:斳:
 근:䈽:
 근:觐:
 근:谨:
 금:嶔:높고 험할 금
 금:笒:첨대 금
 금:唫:입 다물 금
+금:黅:누른 빛 금
 금:紟:
 금:琹:
 금:顉:
 금:嵚:
 금:钅:
 금:锦:
-금:黅:누른 빛 금
 금:僸:
 금:凎:
 금:凚:
 긍:兢:삼갈 긍, 조심할 긍
 긍:矜:불쌍히 여길 긍, 자랑할 긍
 긍:亘:뻗칠
-긍:矝:
 긍:亙:뻗칠 긍
+긍:殑:까무라칠 긍
+긍:矝:
 긍:堩:
 긍:絚:
 긍:緪:
 긍:肎:
-긍:殑:까무라칠 긍
 긍:刯:
 긍:奟:
 긍:掯:
 기:伎:재주 기
 기:崎:험할 기, 산길험할 기
 기:枳:해할 기, 사타구니 기
-기:几:
-기:覬:바랄 기
 기:圻:경기 기, 지경 기
 기:饑:주릴 기, 흉년들 기
 기:祇:토지의 신 기, 편안할 기
 기:玘:패옥 기
 기:璂:피변 꾸미개 기, 고깔꾸미개 기
 기:埼:崎와 同字, 언덕머리 기
+기:几:
+기:覬:바랄 기
 기:耭:갈 기, 밭갈 기
 기:錤:호미 기
 기:歧:岐와 同字
 기:弃:棄의 古字
 기:曁:및 기
-기:芑:
-기:竒:
 기:旂:기 기
-기:覊:
 기:欹:
-기:㡬:
 기:頎:헌걸찰 기
 기:墍:맥질할 기
 기:棊:棋와 同字
-기:旡:
 기:鬐:갈기 기
 기:蟣:서캐 기
 기:跂:육발 기
 기:芰:세발 마름 기
 기:猉:
 기:綦:연두빛 비단 기
-기:惎:
 기:忮:해칠 기
-기:跽:
 기:屺:민둥산 기
-기:鞿:
 기:愭:공손할 기
-기:怾:
 기:芪:단너삼 기
+기:炁:기운 기
+기:羇:나그네 기
+기:覉:구속할 기, 말 굴레 기
+기:僛:취하여 춤추는 모양 기
+기:庋:시렁 기
+기:禨:조짐 기
+기:肵:적대 기
+기:虁:夔와 同字
+기:暣:볕기운 기
+기:綥:비단 쑥색 기
+기:蜝:방계 기
+기:鰭:지느러미 기
+기:隑:
+기:黖:
+기:芑:
+기:竒:
+기:覊:
+기:㡬:
+기:旡:
+기:惎:
+기:跽:
+기:鞿:
+기:怾:
 기:碕:
 기:踦:
-기:炁:기운 기
 기:丌:
 기:徛:
 기:既:
 기:禥:
 기:蘷:
 기:衹:
-기:羇:나그네 기
-기:覉:구속할 기, 말 굴레 기
 기:倛:
 기:庪:
 기:懻:
 기:㙨:
 기:㟓:
 기:䕫:
-기:僛:취하여 춤추는 모양 기
-기:庋:시렁 기
-기:禨:조짐 기
-기:肵:적대 기
-기:虁:夔와 同字
 기:兾:
 기:刉:
 기:嘰:
 기:鱾:
 기:鲯:
 기:鳍:
-기:暣:볕기운 기
-기:綥:비단 쑥색 기
-기:蜝:방계 기
-기:鰭:지느러미 기
-기:隑:
-기:黖:
 기:亓:
 기:僟:
 기:刏:
 길:拮:일할 길, 열심히일할 길
 길:佶:건장할 길, 바를 길
 길:桔:도라지 길
-길:洁:
-길:趌:
 길:姞:성 길
 길:鴶:
-길:鲒:
 길:蛣:장구벌레 길
+길:洁:
+길:趌:
+길:鲒:
 길:咭:
 길:狤:
 길:郆:
 나:挐:붙잡을 나
 나:挪:옮길 나
 나:糯:찰벼 나
+나:梛:나무 이름 나
+나:糥:糯와 同字
 나:郍:
 나:砈:
 나:穤:
 나:傩:
 나:镎:
-나:梛:나무 이름 나
-나:糥:糯와 同字
 나:乸:
 나:哪:
 나:嗱:
 난:鸞:난새 난
 난:煖:따뜻할 난, 더울 난
 난:赧:얼굴 붉힐 난
-난:㬉:
 난:煗:터울 난
-난:难:
 난:偄:언약할 난
 난:餪:풀보기 잔치 난
+난:㬉:
+난:难:
 난:奻:
 난:戁:
 난:渜:
 남:枏:녹나무 남, 매화나무 남
 남:湳:강 이름 남, 물이름 남
 남:襤:누더기 남
-남:娚:
 남:喃:재잘거릴 남
 남:柟:枏의 俗字
+남:娚:
 남:揇:
 남:㑲:
 남:侽:
 내:耐:견딜 내
 내:奈:어찌 내
 내:柰:능금나무 내, 어찌 내
-내:内:
 내:迺:이에 내
 내:鼐:가마솥 내
+내:内:
 내:匂:향내 내
 내:嬭:젖 내
+내:奶:젖 내
 내:廼:
 내:㮏:
-내:奶:젖 내
 내:褦:
 내:㮈:
 내:撆:
 녕:獰:
 녕:寗:편안할 녕, 차라리 녕
 녕:佞:재주 녕
+녕:濘:진흙 녕
+녕:嚀:정녕할 녕
+녕:儜:고달플 녕
 녕:侫:
 녕:寕:
-녕:濘:진흙 녕
 녕:寜:
 녕:甯:
-녕:嚀:정녕할 녕
 녕:擰:
 녕:聹:
 녕:咛:
 녕:拧:
 녕:聍:
-녕:儜:고달플 녕
 녕:嬣:
 녕:寍:
 녕:橣:
 노:瑙:마노 노, 옥돌 노
 노:孥:자식 노
 노:呶:들랠 노
-노:砮:
-노:巙:
 노:猱:못할 노
 노:笯:새장 노
-노:怓:
 노:臑:팔마디 노
+노:峱:산이름 노
+노:砮:
+노:巙:
+노:怓:
 노:鑥:
 노:镥:
 노:驽:
 노:䜧:
-노:峱:산이름 노
 노:伖:
 노:伮:
 노:夒:
 농:穠:후한 제사 농
 농:儂:나 농
 농:醲:텁텁한 술 농
+농:噥:달게 먹을 농
 농:禯:
 농:癑:
 농:侬:
 농:秾:
 농:脓:
 농:㶶:
-농:噥:달게 먹을 농
 농:嶩:
 농:檂:
 농:欁:
 뇌:牢:가축우리 뇌
 뇌:磊:돌이 많이 쌓인 모양 뇌, 돌무더기 뇌
 뇌:餒:굶길 뇌
-뇌:脳:
 뇌:餧:
+뇌:脳:
 뇌:挼:
 뇌:憹:
 뇌:垴:
 뇨:撓:
 뇨:鬧:시끄러울 뇨
 뇨:橈:
-뇨:閙:
 뇨:嫋:날릴 뇨
 뇨:裊:끄을 뇨
 뇨:淖:진흙 뇨
 뇨:鐃:작은 징 뇨
+뇨:嬲:샘낼 뇨
+뇨:嬈:
+뇨:磠:
+뇨:閙:
 뇨:褭:
 뇨:譊:
-뇨:嬲:샘낼 뇨
 뇨:䙚:
 뇨:袅:
 뇨:铙:
 뇨:闹:
-뇨:嬈:
-뇨:磠:
 뇨:嫐:
 뇨:嬝:
 뇨:硇:
 누:壘:진 누
 누:縷:자세할 누, 실 누
 누:耨:김맬 누
+누:啂:
 누:㝅:
 누:鎒:
 누:槈:
 누:檽:
-누:啂:
 누:獳:
 누:羺:
 누:譨:
 눈해변싸리:눈海邊싸리:
 눈향나무:눈香나무:
 눌:訥:말 더듬거릴 눌, 말을 더듬는 눌
-눌:呐:
 눌:吶:말 더듬을 눌
 눌:肭:물개 눌
+눌:呐:
 눌:讷:
 눌:抐:
 눌:㕯:
 뉘른베르크재판:뉘른베르크裁判:
 뉴:紐:잡색비단 뉴, 단추 뉴
 뉴:杻:옷 부드러울 뉴, 싸리 뉴
-뉴:狃:
 뉴:忸:익을 뉴
+뉴:靵:단추 뉴
+뉴:狃:
 뉴:鈕:
 뉴:扭:
 뉴:䋴:
 뉴:纽:
 뉴:钮:
-뉴:靵:단추 뉴
 뉴:妞:
 뉴:沑:
 뉴:炄:
 뉴햄프셔종:뉴햄프셔種:
 뉴햄프셔주:뉴햄프셔州:
 뉴헤브리디스제도:뉴헤브리디스諸島:
-뉵:恧:
-뉵:朒:
 뉵:忸:
 뉵:衄:코피 뉵
+뉵:恧:
+뉵:朒:
 뉵:衂:
 뉵:䖡:
 뉵:䘐:
 늦체:늦滯:
 니:泥:막힐 니, 진흙 니
 니:尼:여승 니, 여자중 니
-니:你:
 니:禰:
 니:怩:부끄러워할 니
 니:膩:살찔 니
-니:旎:
 니:呢:소근거릴 니
-니:埮:
 니:柅:얼레자루 니
+니:祢:
+니:你:
+니:旎:
+니:埮:
 니:濔:
 니:臡:
 니:妳:
 니:檷:
 니:蚭:
 니:迡:
-니:祢:
 니:腻:
 니:铌:
 니:伱:
 단:彖:결단할 단, 결단내릴 단
 단:鄲:조나라 서울 단, 땅이름 단
 단:坍:언덕
-단:断:
-단:单:
 단:担:원숭이 같은 짐승 단
 단:胆:침비깨 단
-단:摶:
-단:槫:
 단:椴:자작나무 단
 단:慱:근심할 단
 단:漙:이슬방울 맺을 단
-단:泹:
 단:靼:
-단:襌:
 단:癉:황달 단
-단:㫁:
 단:蜑:오랑캐 이름 단
 단:耑:시초 단
-단:瑖:
 단:澶:
+단:腶:약포 단
+단:断:
+단:单:
+단:摶:
+단:槫:
+단:泹:
+단:襌:
+단:㫁:
+단:瑖:
 단:猯:
 단:褖:
-단:腶:약포 단
 단:鏄:
 단:偳:
 단:潬:
 달:疸:황달 달
 달:獺:수달 달
 달:澾:미끄러울
-달:㺚:
 달:怛:깜짝 놀랄 달
 달:闥:대문 달
-달:逹:
 달:韃:칠 달
 달:靼:다룬가죽 달
 달:妲:계집의 이름 달
+달:㺚:
+달:逹:
 달:橽:
 달:鐽:
 달:呾:
 담:墰:목긴 술병 담
 담:禫:담제 담
 담:啗:씹을 담
+담:毯:담자리 담
+담:郯:나라이름 담
+담:噉:씹을 담
+담:儋:기운차고 날쌜해집 담
+담:薝:치자나무 담
+담:黮:검을 담
+담:壜:술병 담
+담:忐:
+담:罎:壜과 同字
+담:黵:문신할 담
 담:惔:
 담:耼:
 담:聸:
 담:紞:
-담:毯:담자리 담
-담:郯:나라이름 담
 담:倓:
 담:甔:
-담:噉:씹을 담
-담:儋:기운차고 날쌜해집 담
-담:薝:치자나무 담
 담:萏:
-담:黮:검을 담
 담:䃫:
 담:橝:
 담:窞:
 담:谈:
 담:谭:
 담:锬:
-담:壜:술병 담
-담:忐:
-담:罎:壜과 同字
-담:黵:문신할 담
 담:偡:
 담:啿:
 담:嘾:
 당:瑭:옥이름 당
 당:瞠:바로볼 당
 당:鐺:죄인 자물쇠 당
-당:螗:
-당:簹:
-당:戅:
 당:襠:잠방이 당
 당:鏜:북방축소 당
-당:嵣:
 당:溏:진수렁 당
 당:餳:엿 당
+당:檔:책상 당
+당:礑:밑바닥 당
+당:蟷:사마귀 당
+당:餹:엿 당
+당:螗:
+당:簹:
+당:戅:
+당:嵣:
 당:戃:
 당:䅯:
 당:儅:
 당:镗:
 당:饧:
 당:㓥:
-당:檔:책상 당
-당:礑:밑바닥 당
-당:蟷:사마귀 당
-당:餹:엿 당
 당:傏:
 당:凼:
 당:劏:
 대:玳:대모(바다거북) 대
 대:錞:창고달 대
 대:坮:들 대, 집대 대
+대:懟:원망할 대
+대:碓:방아 대
+대:儓:하인 대
+대:汏:씻을 대
+대:隶:
+대:旲:햇빛 대
+대:鐓:창고달 대
 대:㐲:
 대:䑓:
 대:帯:
-대:懟:원망할 대
 대:帒:
 대:憝:
 대:襨:
 대:濧:
-대:碓:방아 대
-대:儓:하인 대
 대:薱:
 대:襶:
 대:㙜:
-대:汏:씻을 대
 대:檯:
 대:祋:
 대:薹:
 대:㭖:
 대:䒫:
 대:䨴:
-대:隶:
 대:对:
 대:対:
 대:带:
 대:轪:
 대:镦:
 대:队:
-대:旲:햇빛 대
-대:鐓:창고달 대
 대:亣:
 대:嬯:
 대:廗:
 도:嶋:섬 도
 도:櫂:상앗대 도, 노 도
 도:叨:탐할 도
-도:盗:
 도:菟:
 도:鼗:땡땡이 도
 도:擣:찧을 도
 도:饕:탐할 도
-도:謟:
-도:迯:
 도:涂:길 도
-도:禂:
 도:絛:
-도:荼:
 도:杲:
 도:闍:성문 층대 도
+도:忉:근심할 도
+도:弢:활집 도
+도:稌:찰벼 도
+도:鞱:너그러울 도
+도:搯:두드릴 도
+도:檮:그루터기 도
+도:慆:기뻐할 도
+도:壔:작은 성 도
+도:洮:
+도:掏:가릴(선택)할 도
+도:酴:두번 빚은 술 도
+도:鞀:소고 도
+도:盗:
+도:謟:
+도:迯:
+도:禂:
+도:荼:
 도:翿:
 도:䆃:
 도:图:
-도:忉:근심할 도
 도:熖:
 도:舠:
-도:弢:활집 도
-도:稌:찰벼 도
 도:夲:
-도:鞱:너그러울 도
 도:幍:
 도:咷:
 도:釖:
 도:綯:
 도:裪:
-도:搯:두드릴 도
-도:檮:그루터기 도
 도:㨶:
 도:朷:
 도:縚:
-도:慆:기뻐할 도
 도:噵:
 도:鞉:
 도:䵚:
-도:壔:작은 성 도
-도:洮:
 도:唋:
 도:捈:
 도:暏:
 도:阇:
 도:韬:
 도:鱽:
-도:掏:가릴(선택)할 도
-도:酴:두번 빚은 술 도
-도:鞀:소고 도
 도:凃:
 도:刂:선칼도방
 도:匋:
 독:牘:편지 독
 독:犢:송아지 독
 독:纛:깃일산
-독:独:
 독:黷:더러울 독
-독:讟:
 독:櫝:함 독
-독:秃:
 독:髑:
+독:独:
+독:讟:
+독:秃:
 독:凟:
 독:匵:
 독:殰:
 돈:暾:아침해 돈
 돈:墩:돈대 돈
 돈:焞:귀갑 지지는 불 돈
-돈:炖:
 돈:潡:큰 물 돈
-돈:橔:
 돈:噸:
+돈:弴:그림 그린 활 돈
+돈:瓲:
+돈:躉:거룻배 돈
+돈:鐓:
+돈:炖:
+돈:橔:
 돈:獤:
 돈:㬿:
 돈:㹠:
 돈:顿:
 돈:饨:
 돈:鲀:
-돈:弴:그림 그린 활 돈
-돈:瓲:
-돈:躉:거룻배 돈
-돈:鐓:
 돈:崸:
 돈:庉:
 돈:扽:
 돌:乭:이름 돌, 사람이름 돌
 돌:咄:꾸짖을 돌
 돌:堗:굴똑 돌
+돌:宊:
 돌:腯:
 돌:湥:
 돌:揬:
 돌:㟮:
 돌:㻠:
 돌:饳:
-돌:宊:
 돌:嚉:
 돌:怢:
 돌:葖:
 동:錬:보습날 동
 동:僮:아이 동
 동:蕫:황모 동
-동:諌:
-동:働:
 동:彤:붉은 칠 동
-동:埬:
 동:侗:무지할 동
 동:峒:산이름 동
-동:曈:
-동:㨂:
-동:穜:
 동:佟:
 동:蝀:무지개 동
 동:涷:마룻대 동
 동:垌:항아리 동
 동:朣:달 뜰 동
+동:橦:나무이름 동
+동:艟:배 동
+동:茼:쏙갓 동
+동:哃:클말할 동
+동:苳:겨울살이 동
+동:鮗:전어 동
+동:諌:
+동:働:
+동:埬:
+동:曈:
+동:㨂:
+동:穜:
 동:詷:
 동:膧:
 동:㠉:
-동:橦:나무이름 동
 동:挏:
 동:烔:
 동:絧:
 동:餇:
-동:艟:배 동
-동:茼:쏙갓 동
 동:懂:
 동:湩:
 동:獞:
 동:铜:
 동:鲖:
 동:鸫:
-동:哃:클말할 동
-동:苳:겨울살이 동
-동:鮗:전어 동
 동:倲:
 동:偅:
 동:勭:
 두:逗:머무를 두
 두:荳:콩 두
 두:枓:두공 두, 주두 두
-두:紏:
 두:斁:섞을 두
 두:蠹:좀 두
 두:肚:밥통 두
-두:蠧:
 두:陡:절벽 두
 두:蚪:올챙이 두
+두:抖:퍼주거릴 두
+두:脰:목 두
+두:吋:
+두:紏:
+두:蠧:
 두:餖:
 두:㞳:
-두:抖:퍼주거릴 두
 두:㪷:
 두:兠:
 두:㺶:
-두:脰:목 두
 두:阧:
 두:﨣:
 두:䇺:
 두:窦:
 두:钭:
 두:饾:
-두:吋:
 두:亠:의미없는 토
 두:侸:
 두:剅:
 둔:芚:채소 이름 둔, 나무싹 둔
 둔:遯:달아날 둔, 숨을 둔
 둔:窀:광중 둔
-둔:吨:
 둔:迍:머뭇거릴 둔
+둔:吨:
 둔:钝:
 둔:坉:
 둔:臋:
 등:嶝:고개 등, 비탈 등
 등:謄:베낄 등
 등:橙:등자나무 등, 궤 등
-등:䓁:
 등:滕:물 솟을 등
-등:蹬:
 등:鐙:등자 등
 등:灯:燈의 略字
 등:磴:돌 비탈길 등, 돌다리 등
-등:䒭:
 등:縢:봉할 등
 등:螣:등사 등
 등:墱:자드락길 등
+등:凳:걸상 등
+등:籐:대 기구 등
+등:䓁:
+등:蹬:
+등:䒭:
 등:簦:
 등:豋:
-등:凳:걸상 등
 등:驣:
 등:㽅:
 등:籘:
 등:誊:
 등:邓:
 등:镫:
-등:籐:대 기구 등
 등:僜:
 등:儯:
 등:噔:
 라:癩:약물 중독 라
 라:蘿:무 라, 소나무겨우살이 라
 라:喇:나팔
-라:覼:
 라:騾:노새 라
 라:囉:소리 읽힐 라
 라:鑼:징 라
 라:瘰:연주창 라
 라:臝:벌거벗을 라
-라:蠃:
 라:砢:
+라:倮:알몸 라
+라:曪:날 흐릴 라
+라:驘:옹 솥 라
+라:覼:
+라:蠃:
 라:灕:
 라:覶:
 라:玀:
 라:镙:
 라:骡:
 라:㑩:
-라:倮:알몸 라
-라:曪:날 흐릴 라
-라:驘:옹 솥 라
 라:亽:
 라:儸:
 라:剆:
 락:酪:진한 유즙 락, 타락 락
 락:珞:구슬 목걸이 락
 락:犖:얼룩소 락
+락:嗠:
 락:硌:
 락:濼:
 락:鉻:
 락:铬:
 락:饹:
 락:骆:
-락:嗠:
 락:峈:
 락:笿:
 락:餎:
 란:懶:게으를 란
 란:瀾:물결 란, 큰물결 란
 란:欒:나무 이름 란, 난나무 란
-란:乱:
 란:闌:가막을 란
 란:鑾:방울 란
 란:攔:막을 란
-란:䦨:
-란:滦:
-란:灤:
 란:襴:난삼 란
 란:嬾:게으를 란
 란:幱:내리다지 란
+란:灓:적실 란
+란:乱:
+란:䦨:
+란:滦:
+란:灤:
 란:斕:
 란:圝:
 란:圞:
-란:灓:적실 란
 란:灡:
 란:籣:
 란:兰:
 랄:辣:매울 랄
 랄:喇:말굽히할 랄
 랄:埒:바자울 랄
-랄:捋:
 랄:辢:辣과 同字
+랄:捋:
 랄:獭:
 랄:垃:
 랄:埓:
 람:欖:감람나무 람
 람:擥:攬과 同字, 잡아다릴 람
 람:襤:누더기 람
-람:覧:
 람:婪:탐할 람
+람:惏:떨릴 람
+람:覧:
 람:灠:
 람:壈:
 람:㲯:
 람:䰐:
 람:㩜:
-람:惏:떨릴 람
 람:囕:
 람:㑣:
 람:岚:
 랑:蜋:사마귀 랑
 랑:稂:강아지 풀 랑
 랑:榔:나무 이름 랑
+랑:硠:돌 부딪는 소라 랑
+랑:莨:수크령 랑
 랑:桹:
 랑:烺:
-랑:硠:돌 부딪는 소라 랑
 랑:蓈:
 랑:鋃:
-랑:莨:수크령 랑
 랑:欴:
 랑:艆:
 랑:㫰:
 래:崍:산 이름 래
 래:徠:올 래
 래:来:
+래:淶:강 이름 래
+래:騋:큰 말 래
+래:顂:
 래:勑:
 래:徕:
 래:莱:
 래:䅘:
 래:猍:
 래:琜:
-래:淶:강 이름 래
-래:騋:큰 말 래
 래:倈:
 래:箂:
-래:顂:
 래:棶:
 래:睞:
 래:錸:
 량:粱:기장 량
 량:倆:재주 량, 공교할 량
 량:粮:糧과 同字, 양식 량
-량:两:
-량:両:
 량:涼:서늘할 량
 량:魎:도깨비 량
 량:踉:뛸 량
-량:惊:
-량:㾗:
 량:椋:들보 량
 량:悢:슬퍼할 량
+량:喨:소리 맑을 량
+량:两:
+량:両:
+량:惊:
+량:㾗:
 량:湸:
 량:緉:
 량:裲:
 량:辆:
 량:辌:
 량:魉:
-량:喨:소리 맑을 량
 량:哴:
 량:啢:
 량:墚:
 려:蠣:굴 려
 려:櫚:종려나무 려
 려:厲:갈 려
-려:吕:
 려:臚:살갗 려
 려:癘:창질 려
-려:沴:
 려:膂:등골 뼈 려
 려:蠡:좀먹을 려
-려:荔:
 려:糲:현미 려
+려:唳:울 려
+려:梠:평고대 려
+려:鑢:줄 려
+려:儢:맘에 하기 싫을 려
+려:邌:천천히 걸을 려
+려:吕:
+려:沴:
+려:荔:
 려:丽:
 려:侣:
-려:唳:울 려
 려:盭:
 려:瓈:
-려:梠:평고대 려
 려:欐:
 려:蟸:
 려:黧:
-려:鑢:줄 려
 려:棙:
 려:穭:
 려:廲:
 려:驴:
 려:骊:
 려:鲡:
-려:儢:맘에 하기 싫을 려
-려:邌:천천히 걸을 려
 려:勴:
 려:囇:
 려:婯:
 력:靂:벼락 력
 력:櫟:상수리나무 력
 력:櫪:말구유 력
-력:歴:
 력:鬲:
+력:酈:땅 이름 력
+력:攊:
+력:癧:연주창 력
+력:轣:갈 력
+력:歴:
 력:暦:
 력:䔉:
 력:厯:
 력:皪:
-력:酈:땅 이름 력
 력:屴:
 력:朸:
 력:檪:
 력:郦:
 력:镉:
 력:雳:
-력:攊:
-력:癧:연주창 력
-력:轣:갈 력
 력:儮:
 력:厤:
 력:叻:
 련:怜:연리할 련
 련:璉:호련 련, 종묘제기 련
 련:攣:걸릴 련
-련:恋:
 련:錬:
-련:堜:
 련:臠:저민고기 련
 련:孌:아름다울 련
 련:鰱:연어 련
 련:楝:멀구슬나무 련
+련:鏈:쇠사슬 련
+련:孿:
+련:湅:누일 련
+련:鰊:고기 이름 련
+련:恋:
+련:堜:
 련:摙:
 련:䏈:
-련:鏈:쇠사슬 련
 련:縺:
 련:聨:
 련:㜻:
 련:辇:
 련:连:
 련:鲢:
-련:孿:
-련:湅:누일 련
-련:鰊:고기 이름 련
 련:僆:
 련:嗹:
 련:噒:
 렬:洌:맑을 렬
 렬:捩:비틀 렬
 렬:颲:사나운 바람 렬
+렬:挒:
 렬:茢:
 렬:迾:
 렬:鋢:
 렬:㭩:
 렬:锊:
 렬:䴕:
-렬:挒:
 렬:劽:
 렬:咧:
 렬:哷:
 렴:簾:발 렴
 렴:殮:염할 렴
 렴:歛:
-렴:帘:
 렴:籟:
 렴:瀲:넘칠 렴
 렴:奩:화장 상자 렴
-렴:㢘:
 렴:獫:
 렴:磏:거친 숫돌 렴
+렴:帘:
+렴:㢘:
 렴:嬚:
 렴:鐮:
 렴:搛:
 령:另:나눌 령, 다를 령, 헤어질 령
 령:岭:산 이름 령
 령:泠:깨우칠 령
-령:灵:
 령:苓:도꼬마리 령
-령:坽:
 령:鴒:할미새 령
-령:㱓:
 령:蛉:장자리 령
-령:櫺:
 령:欞:격자창 령
+령:呤:속삭일 령
+령:昤:날 빛 영롱할 령
+령:姈:계집 슬기로울 령
+령:秢:벼 처음 익을 령
+령:軨:사냥 수레 령
+령:鹷:나이 령
+령:灵:
+령:坽:
+령:㱓:
+령:櫺:
 령:醽:
 령:霛:
 령:瓴:
-령:呤:속삭일 령
 령:狑:
-령:昤:날 빛 영롱할 령
 령:舲:
 령:彾:
 령:竛:
 령:鸰:
 령:齢:
 령:龄:
-령:姈:계집 슬기로울 령
-령:秢:벼 처음 익을 령
-령:軨:사냥 수레 령
-령:鹷:나이 령
 령:刢:
 령:孁:
 령:拎:
 례:豊:禮의 古字
 례:隷:隸와 同字, 붙을 례
 례:醴:단술 례
-례:隸:붙을 례
 례:澧:강 이름 례
+례:隸:붙을 례
+례:鱧:가물치 례
 례:礼:
 례:㘑:
 례:鳢:
-례:鱧:가물치 례
 례:櫔:
 례:欚:
 례:濿:
 로:櫓:방패 로
 로:瀘:강 이름 로
 로:潦:
-로:劳:
 로:鑪:화로 로
 로:鱸:농어 로
 로:壚:흑토 로
 로:騾:
 로:艪:艫와 同字
-로:㳣:
 로:顱:머리뼈 로
 로:艫:뱃머리 로
 로:鸕:가마우지 로
+로:轤:고패 로
+로:玈:검을 로
+로:窂:우리 로
+로:滷:소금밭 로
+로:癆:종독 로
+로:磠:
+로:鐪:부레 로
+로:髗:해골 로
+로:劳:
+로:㳣:
 로:澇:
 로:鏴:
-로:轤:고패 로
 로:璐:
-로:玈:검을 로
 로:獹:
 로:罏:
 로:攎:
 로:簵:
 로:䳓:
-로:窂:우리 로
 로:咾:
 로:嫪:
 로:櫨:
 로:鲈:
 로:鸬:
 로:鹭:
-로:滷:소금밭 로
-로:癆:종독 로
-로:磠:
-로:鐪:부레 로
-로:髗:해골 로
 로:僗:
 로:哰:
 로:嘮:
 록:麓:신기슭 록, 산기슭 록
 록:碌:돌 모양 록
 록:菉:조개풀 록
-록:录:
-록:盝:
 록:淥:밭을 록
-록:籙:
-록:禄:
 록:漉:거를 록
-록:醁:
-록:緑:
 록:彔:나무 깍을 록
 록:騄:말이름 록
 록:簏:대 상자 록
 록:轆:도르래 록
+록:圥:버섯 록
+록:录:
+록:盝:
+록:籙:
+록:禄:
+록:醁:
+록:緑:
 록:廘:
 록:録:
 록:㖨:
 록:渌:
 록:箓:
 록:辘:
-록:圥:버섯 록
 록:塶:
 록:娽:
 록:摝:
 롱:朧:흐릿할 롱, 침침할 롱
 롱:瀧:적실
 롱:隴:고개 이름 롱
-롱:櫳:
-롱:壠:
 롱:礱:갈 롱
 롱:曨:어스레할 롱
-롱:巃:
 롱:蘢:개여뀌 롱
 롱:儱:건목칠 롱
+롱:攏:누를 롱
+롱:龎:
+롱:櫳:
+롱:壠:
+롱:巃:
 롱:哢:
 롱:礲:
-롱:攏:누를 롱
 롱:䏊:
 롱:嚨:
 롱:竉:
 롱:聋:
 롱:茏:
 롱:陇:
-롱:龎:
 롱:巄:
 롱:挊:
 롱:挵:
 뢰:瀨:여울 뢰, 물결 뢰
 뢰:罍:술독 뢰
 뢰:耒:쟁기 뢰
-뢰:頼:
 뢰:籟:
 뢰:酹:부을 뢰
-뢰:瀬:
 뢰:誄:뇌사 뢰
 뢰:礧:바위너설 뢰
 뢰:纇:실 마디 뢰
+뢰:蕾:꽃봉오리 뢰
+뢰:顂:
+뢰:攂:
+뢰:礌:돌 굴러내릴 뢰
+뢰:頼:
+뢰:瀬:
 뢰:㵢:
 뢰:䨓:
-뢰:蕾:꽃봉오리 뢰
 뢰:藾:
 뢰:鐳:
-뢰:顂:
 뢰:傫:
 뢰:櫑:
 뢰:瓃:
 뢰:赉:
 뢰:赖:
 뢰:镭:
-뢰:攂:
-뢰:礌:돌 굴러내릴 뢰
 뢰:壨:
 뢰:擂:
 뢰:檑:
 료:繚:감길 료
 료:膋:발기름 료
 료:撩:다스릴 료
+료:暸:밝을 료
+료:獠:밤사냥 료
+료:鐐:은 료
+료:嘹:울 료
+료:嫽:외조모 료
+료:飂:높이 부는 바람 료
+료:飉:바람 료
 료:憀:
 료:憭:
 료:鷯:
 료:䝤:
-료:暸:밝을 료
-료:獠:밤사냥 료
 료:璙:
-료:鐐:은 료
 료:炓:
 료:㵳:
-료:嘹:울 료
 료:尞:
 료:橑:
 료:爎:
 료:辽:
 료:镣:
 료:鹩:
-료:嫽:외조모 료
-료:飂:높이 부는 바람 료
-료:飉:바람 료
 료:佬:
 료:叾:
 료:尥:
 료해도:了解度:
 료화:燎火:
 룡:龍:용 룡
+룡:龒:龍의 古字
 룡:矓:
 룡:眬:
 룡:龙:
-룡:龒:龍의 古字
 룡:徿:
 룡:爖:
 룡:竜:
 루:褸:남루할 루
 루:蔞:쑥 루, 물쑥 루
 루:瘻:부스럼 루, 헌곳 루
+루:螻:땅강아지 루
+루:僂:구부릴 루
+루:髏:해굴 루
+루:嶁:봉우리 루
+루:慺:정성스러울 루
+루:嘍:시끄러울 루
+루:耬:씨 뿌리는 기구 루
 루:楼:
 루:屡:
-루:螻:땅강아지 루
 루:泪:
 루:蝼:
 루:塁:
-루:僂:구부릴 루
 루:摟:
-루:髏:해굴 루
 루:塿:
-루:嶁:봉우리 루
-루:慺:정성스러울 루
 루:䮫:
 루:嫘:
 루:屚:
 루:镂:
 루:髅:
 루:䁖:
-루:嘍:시끄러울 루
-루:耬:씨 뿌리는 기구 루
 루:厽:
 루:櫐:
 루:氀:
 류:榴:석류나무 류
 류:硫:유황 류
 류:瀏:맑을 류
-류:瑬:
 류:纍:갇힐 류
 류:鶹:올빼미 류
 류:縲:포승 류
-류::
+류::
 류:遛:머무를 류
+류:橊:榴의 本字
+류:飂:
+류:霤:
 류:騮:
 류:鏐:
 류:旈:
 류:䄂:
-류:橊:榴의 本字
 류:鎏:
 류:罶:
 류:飀:
 류:馏:
 류:骝:
 류:鹨:
-류:飂:
 류:嚠:
 류:塯:
 류:媹:
 륙:六:여섯 륙
 륙:陸:뭍 륙
 륙:戮:죽일 륙
+륙:勠:협력할 륙
 륙:僇:
 륙:稑:
-륙:勠:협력할 륙
 륙:穋:
 륙:陆:
 륙:剹:
 률:栗:밤나무 률
 률:慄:두려워할 률, 두려울 률
 률:嵂:가파를 률
-률:篥:
 률:溧:강 이름 률
+률:篥:
 률:㟳:
 률:硉:
 률:瑮:
 르클랑셰전지:르클랑셰電池:
 륵:勒:굴레 륵
 륵:肋:갈비 륵
+륵:泐:돌 갈라질 륵
 륵:玏:
 륵:仂:
 륵:扐:
-륵:泐:돌 갈라질 륵
 륵:鳓:
 륵:嘞:
 륵:忇:
 를:㔹:
 름:凜:찰 름
 름:廩:곳집 름
-름:檩:
 름:凛:찰 름
+름:澟:서늘할 름
+름:檩:
 름:廪:
 름:懍:
 름:懔:
-름:澟:서늘할 름
 름:檁:
 름:癛:
 름:癝:
 릉:綾:비단 릉
 릉:菱:蔆과 同字, 마름 릉
 릉:稜:모 릉
+릉:倰:속일 릉
+릉:蔆:마름 릉
 릉:棱:
 릉:崚:
 릉:淩:
 릉:夌:
-릉:倰:속일 릉
 릉:庱:
 릉:掕:
 릉:睖:
 릉:鯪:
 릉:绫:
 릉:鲮:
-릉:蔆:마름 릉
 릉:堎:
 릉:婈:
 릉:愣:
 리:漓:스며들 리
 리:莅:다다를 리
 리:离:산신 리
-리:詈:
 리:螭:교륭 리
 리:俐:똑똑할 리
 리:嫠:과부 리
 리:魑:도깨비 리
-리:纚:
 리:貍:삵 리
 리:邐:이어질 리
 리:涖:다다를 리
+리:哩:어조사 리
+리:蜊:참조개 리
+리:黐:끈끈이 리
+리:剺:벗길 리
+리:詈:
+리:纚:
 리:鸝:
 리:摛:
 리:醨:
 리:蒞:
-리:哩:어조사 리
 리:蘺:
 리:褵:
 리:縭:
 리:樆:
 리:犂:
 리:蔾:
-리:蜊:참조개 리
-리:黐:끈끈이 리
 리:俬:
 리:娌:
 리:棃:
 리:锂:
 리:鲤:
 리:鹂:
-리:剺:벗길 리
 리:兣:
 리:刕:
 리:剓:
 린:鄰:이웃 린
 린:磷:돌 을 틈물이 흐르는 모양 린
 린:粼:물 맑을 린
-린:遴:
 린:嶙:가파를 린
 린:驎:워라말 린
 린:轔:수레 소리 린
 린:繗:이을 린
+린:悋:아낄 린
+린:躙:짓밟을 린
+린:鏻:굳셀 린
+린:粦:도깨비 불 린
+린:遴:
 린:恡:
 린:瞵:
 린:䗲:
 린:疄:
-린:悋:아낄 린
-린:躙:짓밟을 린
 린:撛:
-린:鏻:굳셀 린
 린:僯:
 린:厸:
 린:轥:
 린:辚:
 린:邻:
 린:鳞:
-린:粦:도깨비 불 린
 린:亃:
 린:壣:
 린:斴:
 마:瑪:마노 마, 옥돌이름 마
 마:碼:마노 마, 옥돌 마
 마:麽:잘 마
-마:麼:
 마:麿:갈 마
 마:劘:깍을 마
+마:媽:어미 마
+마:螞:말거머리 마
+마:蟇:개구리 마
+마:麼:
 마:蟆:
 마:亇:
 마:嗎:
 마:禡:
 마:䔍:
-마:媽:어미 마
 마:嘛:
-마:螞:말거머리 마
-마:蟇:개구리 마
 마:鎷:
 마:㦄:
 마:吗:
 막:膜:막 막, 살속의 가죽 막
 막:寞:쓸쓸할 막
 막:邈:멀 막, 아득할 막
-막:瘼:
 막:藐:
-막:幙:
 막:鏌:칼 이름 막
-막:暯:
 막:瞙:눈 흐릴 막
+막:瘼:
+막:幙:
+막:暯:
 막:嗼:
 막:鄚:
 막:饃:
 만:曼:끌 만, 길 만
 만:巒:뫼 만, 산봉우리 만
 만:謾:속일 만
-만:湾:
-만:晚:
-만:満:
 만:幔:막 만
-만:熳:
 만:懣:
-만:㬅:
 만:嫚:업신여길 만
 만:蹣:비틀거릴 만
-만:鬛:
 만:墁:흙손 만
 만:悗:
 만:縵:무늬 없는 비단 만
+만:鏝:흙손 만
+만:鬘:머리장식 만
+만:鏋:금 만
+만:湾:
+만:晚:
+만:満:
+만:熳:
+만:㬅:
+만:鬛:
 만:澫:
 만:脕:
-만:鏝:흙손 만
 만:僈:
-만:鬘:머리장식 만
 만:摱:
 만:睌:
 만:矕:
 만:颟:
 만:馒:
 만:鳗:
-만:鏋:금 만
 만:卐:
 만:塆:
 만:壪:
 말:沫:거품 말, 물방울 말
 말:唜:끝
 말:茉:말리 말
-말:昩:
 말:帕:
 말:秣:꼴 말
+말:昩:
 말:袜:
 말:妺:
 말:韈:
 망:茫:아득할 망
 망:網:그물 망
 망:芒:까끄라기 망, 싹 망
-망:惘:멍할 망
 망:莽:우거질 망, 풀이 우거진 망
 망:邙:산 이름 망, 북망산 망
 망:輞:바퀴테 망
+망:惘:멍할 망
 망:魍:도깨비 망
 망:莾:마디 짧은 대 망
 망:蟒:이무기 망
+망:漭:넓을 망
+망:汒:황급할 망
 망:网:그물
 망:亾:
 망:鋩:
 망:蠎:
-망:漭:넓을 망
 망:㒺:
 망:㤀:
 망:兦:
 망:㕵:
 망:䋄:
-망:汒:황급할 망
 망:恾:
 망:朢:
 망:杗:
 매:煤:그을음 매
 매:呆:어리석을 매
 매:楳:梅의 古字
-매:浼:
-매:霾:
 매:眛:어두울 매
 매:莓:나무딸기 매
+매:玫:매괴 매
+매:沬:
+매:苺:딸기 매
+매:酶:술밑 매
+매:霉:매우 매
+매:浼:
+매:霾:
 매:䨪:
 매:禖:
-매:玫:매괴 매
 매:毎:
 매:抺:
-매:沬:
 매:痗:
-매:苺:딸기 매
-매:酶:술밑 매
 매:佅:
 매:凂:
 매:勱:
 매:駡:
 매:鬽:
 매:骂:
-매:霉:매우 매
 매:买:
 매:劢:
 매:卖:
 맥:陌:두렁 맥, 밭둑길 맥
 맥:驀:말탈 맥
 맥:脉:脈의 古字
+맥:貃:오랑캐 맥
+맥:貘:짐승 이름 맥
 맥:霡:
 맥:貉:
 맥:霢:
 맥:眽:
-맥:貃:오랑캐 맥
 맥:覛:
 맥:麦:
 맥:蓦:
-맥:貘:짐승 이름 맥
 맥:帞:
 맥:眿:
 맥:絈:
 맹:黽:
 맹:甍:
 맹:甿:
+맹:虻:
+맹:儚:
 맹:蝱:
 맹:艋:
-맹:虻:
 맹:蕄:
 맹:鄳:
 맹:锰:
-맹:儚:
 맹:勐:
 맹:掹:
 맹:擝:
 멱:汨:물이름 멱
 멱:蓂:
 멱:冪:덮을 멱
-멱:羃:
 멱:糸:실
-멱:覔:
 멱:幎:덮을 멱
+멱:羃:
+멱:覔:
 멱:幂:
 멱:纟:
 멱:觅:
 면:冕:면류관 면
 면:沔:물 흐를 면
 면:娩:
-면:俛:힘쓸 면
 면:緬:가는 실 면, 아득할 면
 면:眄:애꾸눈 면, 곁눈질할 면
 면:麵:麪과 同字, 밀가루 면
 면:棉:목화 면
+면:俛:힘쓸 면
 면:緜:햇솜 면
-면:靣:
 면:麪:밀가루 면
 면:糆:麪과 同字
 면:湎:빠질 면
+면:靣:
 면:丏:
 면:偭:
 면:㴐:
 명:茗:차 싹 명, 차의 싹 명
 명:椧:홈 통 명
 명:黽:
-명:㝠:
 명:洺:강 이름 명
+명:㝠:
 명:眀:
 명:凕:
 명:㫥:
 모:耗:줄 모, 없을 모
 모:摸:찾을 모, 본뜰 모
 모:牡:수컷 모
-모:糢:模의 俗字, 모호할 모
 모:眸:눈동자 모
 모:摹:베낄 모
 모:瑁:서옥 모, 대모 모
 모:芼:풀 우거질 모, 나물 모
 모:姆:여스승 모
+모:糢:模의 俗字, 모호할 모
 모:耄:늙은이 모
 모:侔:가지런 할 모
 모:髦:다팔머리 모
 모:旄:깃대 장식 모
 모:媢:강새암 할 모
 모:蟊:蝥와 同字
-모:冐:
-모:麰:
 모:嫫:예쁠 모
 모:眊:눈 흐릴 모
-모:㡌:
 모:皃:貌와 同字
-모:謩:
 모:姥:할미 모
 모:蝥:해충 모
+모:粍:밀리메트로 모
+모:鉾:칼 끝 모
+모:恈:탐할 모
+모:冐:
+모:麰:
+모:㡌:
+모:謩:
 모:氁:
 모:秏:
 모:䫉:
-모:粍:밀리메트로 모
 모:橅:
-모:鉾:칼 끝 모
 모:䖥:
 모:牦:
 모:谋:
 모:谟:
-모:恈:탐할 모
 모:兞:
 모:冃:
 모:哞:
 목:穆:화목할 목, 화할 목
 목:沐:머리감을 목
 목:鶩:집오리 목
+목:苜:거여목 목
+목:凩:찬바람 목
 목:楘:
 목:莯:
-목:苜:거여목 목
 목:霂:
 목:䳱:
 목:㜈:
 목:炑:
 목:钼:
 목:鹜:
-목:凩:찬바람 목
 목:坶:
 목:杢:
 목:狇:
 몽:朦:풍부할 몽, 풍부한 몽
 몽:矇:소경 몽
 몽:濛:가랑비 올 몽
-몽:梦:
 몽:曚:어두울 몽
 몽:瞢:어두울 몽
+몽:幪:덮을 몽
+몽:雺:안개 몽
+몽:懞:어두울 몽
+몽:艨:싸움배 몽
+몽:儚:
+몽:溕:
+몽:鸏:비둘기 몽
+몽:梦:
 몽:懵:
 몽:冡:
-몽:幪:덮을 몽
 몽:懜:
 몽:䑃:
 몽:蠓:
 몽:㠓:
-몽:雺:안개 몽
 몽:饛:
-몽:懞:어두울 몽
-몽:艨:싸움배 몽
 몽:矒:
 몽:霿:
 몽:䤓:
 몽:䝉:
 몽:鹲:
-몽:儚:
-몽:溕:
-몽:鸏:비둘기 몽
 몽:夣:
 몽:檬:
 몽:氋:
 묘:杳:어두울 묘, 아득할 묘
 묘:竗:땅 이름 묘
 묘:錨:닻 묘
-묘:庙:
 묘:眇:애꾸눈 묘
 묘:藐:작을 묘
+묘:淼:물 아득할 묘
+묘:貓:猫와 同字
+묘:庙:
 묘:緲:
 묘:畒:
 묘:玅:
-묘:淼:물 아득할 묘
-묘:貓:猫와 同字
 묘:茆:
 묘:篎:
 묘:缈:
 무:珷:옥돌 무, 옥돌이름 무
 무:楙:무성할 무, 아름다울 무, 모과나무 무
 무:廡:집 무, 처마 무, 지붕 무
-무:抚:
-무:瞀:
 무:騖:달릴 무, 질주할 무
 무:膴:포 무, 크게 저민 고기 무
+무:儛:舞와 同字
+무:嘸:분명하지 않을 무, 모호한 모양 무
+무:抚:
+무:瞀:
 무:袤:
 무:鍪:
 무:婺:
 무:骛:
 무:鹀:
 무:鹉:
-무:儛:舞와 同字
-무:嘸:분명하지 않을 무, 모호한 모양 무
 무:仫:
 무:劺:
 무:呣:
 문:刎:목 벨 문, 자를 문, 끊을 문
 문:們:들 문, 무리 문
 문:雯:구름 무늬 문
-문:闻:
-문:问:
-문:门:
 문:捫:어루만질 문, 쓰다듬을 문
-문:懑:
 문:懣:번거로울 문
-문:㦖:
-문:脗:
 문:抆:닦을 문, 문지를 문
 문:忞:
 문:悗:잊어버릴 문
 문:炆:따뜻할 문
+문:匁:몸메 문
+문:忟:
+문:璊:붉은 옥 문
+문:闻:
+문:问:
+문:门:
+문:懑:
+문:㦖:
+문:脗:
 문:暪:
 문:絻:
 문:蚉:
 문:纹:
 문:钔:
 문:阌:
-문:匁:몸메 문
-문:忟:
-문:璊:붉은 옥 문
 문:伆:
 문:勽:
 문:呡:
 미:弭:활고자 미, 그칠 미
 미:糜:죽 미, 싸라기 미
 미:縻:고삐 미, 얽어맬 미
-미:㫆:
 미:亹:힘쓸 미, 문채가 있는 모양 미
-미:眯:
 미:瀰:물 넓을 미
 미:麋:큰사슴 미, 부서질 미
 미:敉:어루만질 미
+미:媺:착하고 아름다울 미
+미:獼:원숭이 미
+미:娓:장황할 미, 힘쓸 미
+미:蘼:장미 미, 천궁 미
+미:媄:빛 고울 미
+미:苿:
+미:㫆:
+미:眯:
 미:冞:
 미:洣:
 미:罙:
 미:㣲:
-미:媺:착하고 아름다울 미
-미:獼:원숭이 미
 미:麛:
-미:娓:장황할 미, 힘쓸 미
 미:㜷:
 미:䞔:
 미:郿:
 미:㜫:
 미:㳽:
-미:蘼:장미 미, 천궁 미
 미:浘:
 미:眫:
 미:㞑:
 미:镁:
 미:镅:
 미:鹛:
-미:媄:빛 고울 미
-미:苿:
 미:侎:
 미:咩:
 미:咪:
 민:緡:낚시줄 민, 입힐 민
 민:黽:힘쓸 민, 맹꽁이 민
 민:閩:종족이름 민
+민:忞:강인할 민
+민:暋:굳셀 민
+민:緍:낚시줄 민
+민:湣:낚시줄 민
+민:忟:강인할 민
+민:罠:그물 민
+민:苠:속대 민
+민:鰵:대구 민
 민:黾:
 민:僶:
 민:渑:
-민:忞:강인할 민
 민:澠:
-민:暋:굳셀 민
-민:緍:낚시줄 민
 민:慜:
-민:湣:낚시줄 민
 민:潣:
 민:敃:
 민:燘:
 민:闷:
 민:闽:
 민:鳘:
-민:忟:강인할 민
-민:罠:그물 민
-민:苠:속대 민
-민:鰵:대구 민
 민:冺:
 민:刡:
 민:勄:
 밀:蜜:꿀 밀
 밀:謐:고요할 밀
 밀:宓:
-밀:宻:
-밀:谧:
 밀:樒:침향 밀
 밀:滵:물 흐르는 모양 밀
+밀:宻:
+밀:谧:
 밀:嘧:
 밀:峚:
 밀:櫁:
 박:膊:포 박, 어깨 박
 박:雹:누리 박, 우박 박
 박:璞:옥덩어리 박
+박:亳:땅이름 박
+박:駮:짐승이름 박
+박:鎛:종 박
+박:墣:
+박:欂:주두 박
+박:牔:박공 박
+박:髆:어깨쭉지 박
 박:剥:
 박:敀:
-박:亳:땅이름 박
 박:礴:
 박:襮:
 박:廹:
 박:愽:
 박:䪨:
-박:駮:짐승이름 박
-박:鎛:종 박
 박:礡:
 박:檏:
 박:擈:
 박:煿:
 박:鑮:
-박:墣:
 박:彴:
 박:窇:
 박:㩧:
 박:飑:
 박:馎:
 박:驳:
-박:欂:주두 박
-박:牔:박공 박
-박:髆:어깨쭉지 박
 박:啪:
 박:噗:
 박:嚗:
 반:盼:곁눈질 할 반, 눈자위 반
 반:磐:넓을 반, 반석 반
 반:瘢:흉터 반, 부스럼자국 반
-반:盘:
 반:胖:희생 반
 반:蹣:
-반:襻:
-반:鞶:
 반:扳:끌 반
-반:癍:
 반:搫:덜 반
 반:頖:풀릴 반
-반:憣:
-반:詊:
 반:攽:나눌 반
 반:朌:구실 반
+반:仮:反과 同字
+반:媻:비틀거릴 반
+반:肦:나눌 반
+반:螌:가뢰 반
+반:盘:
+반:襻:
+반:鞶:
+반:癍:
+반:憣:
+반:詊:
 반:斒:
 반:牉:
 반:㜶:
 반:㮽:
 반:䛀:
-반:仮:反과 同字
 반:矾:
 반:绊:
 반:颁:
 반:饭:
-반:媻:비틀거릴 반
-반:肦:나눌 반
-반:螌:가뢰 반
 반:冸:
 반:坢:
 반:奤:
 반당침:半당침:
 반대:反對:
 반대:飯臺:
-반대:大:
+반대:大:
 반대간섭:反對干涉:
 반대개념:反對槪念:
 반대계약:反對契約:
 발:勃:갑작스러울 발, 발끈할 발
 발:魃:가물 귀신 발
 발:醱:술 괼 발
-발:钵:
 발:孛:
 발:浡:일어날 발
+발:鈸:방울 발
+발:鵓:집비둘기 발
+발:哱:어지러울 발
+발:脖:배꼽 발
+발:钵:
 발:発:
 발:彂:
 발:綍:
 발:髪:
 발:沷:
 발:㪍:
-발:鈸:방울 발
 발:墢:
 발:茇:
 발:㧞:
-발:鵓:집비둘기 발
 발:䟦:
-발:哱:어지러울 발
 발:袚:
 발:襏:
 발:抜:
 발:饽:
 발:鲅:
 발:鹁:
-발:脖:배꼽 발
 발:侼:
 발:叐:
 발:坺:
 방:磅:돌 떨어지는 소리 방
 방:舫:배 방, 사공 방
 방:蒡:인동 덩굴 방, 우엉 방
-방:霶:
 방:仿:헤멜 방
 방:牓:패 방
 방:髣:비슷할 방
 방:厖:클 방
+방:魴:방어 방
+방:搒:배저을 방
+방:幫:도울 방
+방:螃:방게 방
+방:徬:시중들 방
+방:旊:옹기장 방
+방:梆:목어 방
+방:舽:배 방
+방:鎊:깎을 방
+방:龎:
+방:霶:
 방:綁:
 방:逄:
 방:鈁:
 방:雱:
 방:狵:
 방:㮄:
-방:魴:방어 방
-방:搒:배저을 방
 방:庬:
-방:幫:도울 방
 방:哤:
 방:埅:
 방:胮:
 방:駹:
-방:螃:방게 방
 방:昘:
 방:汸:
 방:浝:
 방:镑:
 방:鲂:
 방:鳑:
-방:徬:시중들 방
-방:旊:옹기장 방
-방:梆:목어 방
-방:舽:배 방
-방:鎊:깎을 방
-방:龎:
 방:匚:상자
 방:嗙:
 방:垹:
 배:盃:杯의 俗字, 잔 배
 배:褙:속적삼
 배:焙:불에 쬘 배, 말릴 배
-배:軰:
 배:坏:언덕 배
+배:坯:坏와 同字
+배:琲:구슬 꿰미 배
+배:扒:뺄 배
+배:蓓:꽃봉오리 배
+배:軰:
 배:环:
 배:桮:
 배:辈:
 배:禙:
 배:柸:
 배:毰:
-배:坯:坏와 同字
-배:琲:구슬 꿰미 배
 배:肧:
 배:㚰:
 배:赔:
-배:扒:뺄 배
-배:蓓:꽃봉오리 배
 배:伓:
 배:俖:
 배:偝:
 백:魄:넋 백
 백:柏:나무 이름 백, 잣나무 백
 백:佰:백사람의어른
+백:粨:힉터메트르 백
 백:苩:
 백:銆:
 백:洦:
 백:鲌:
-백:粨:힉터메트르 백
 백:兡:
 백:岶:
 백:湐:
 번:幡:기 번, 수건 번
 번:樊:울 번, 어수선할 번
 번:翻:날 번
-번:畨:
 번:蘩:산흰쑥 번
-번:璠:
 번:繙:되풀이 풀이할 번
-번:旛:
 번:膰:제사 고기 번
+번:袢:속옷 번
+번:畨:
+번:璠:
+번:旛:
 번:轓:
 번:旙:
 번:瀿:
 번:籓:
 번:蠜:
 번:烦:
-번:袢:속옷 번
 번:僠:
 번:勫:
 번:噃:
 벌:閥:공훈 벌, 가문 벌
 벌:筏:떼 벌
 벌:橃:떼 벌
+벌:罸:罰과 同字
 벌:罚:
 벌:阀:
-벌:罸:罰과 同字
 벌:傠:
 벌:垡:
 벌:栰:
 범:帆:돛 범
 범:梵:범어 범, 웅얼거릴 범
 범:氾:넘칠 범, 물넘칠 범
+범:颿:돛 범
+범:笵:법 범
+범:訉:말 많을 범
 범:凢:
 범:軓:
-범:颿:돛 범
 범:杋:
 범:㠶:
 범:舤:
 범:㕨:
 범:䭵:
 범:钒:
-범:笵:법 범
-범:訉:말 많을 범
 범:凣:
 범:忛:
 범:柉:
 벽:蘗:황경나무 벽
 벽:檗:황벽나무 벽, 황백나무 벽
 벽:辟:임금 벽
-벽:薜:
 벽:擗:가슴칠 벽
-벽:皕:
 벽:甓:벽돌 벽
-벽:躄:
 벽:椑:
 벽:襞:주름 벽
 벽:疈:가를 벽
+벽:鷿:농병아리 벽
+벽:鼊:거북 벽
+벽:薜:
+벽:皕:
+벽:躄:
 벽:躃:
 벽:湢:
 벽:澼:
 벽:䌟:
 벽:鲾:
 벽:䴙:
-벽:鷿:농병아리 벽
-벽:鼊:거북 벽
 벽:噼:
 벽:堛:
 벽:孹:
 변:騈:나란히 할 변
 변:玭:
 변:籩:제기 이름 변
-변:拚:
-변:邉:
 변:抃:손뼉칠 변
 변:徧:
 변:忭:기뻐할 변
-변:変:
 변:汴:
+변:辮:
+변:駢:騈의 俗字
+변:腁:살갗 틀 변
+변:匾:
+변:賆:
+변:萹:
+변:骿:통갈비 변
+변:鴘:매 변
+변:拚:
+변:邉:
+변:変:
 변:釆:분별하다
 변:变:
 변:辺:
-변:辮:
-변:駢:騈의 俗字
 변:昪:
-변:腁:살갗 틀 변
 변:㺹:
-변:匾:
 변:跰:
-변:賆:
 변:胼:
 변:䪻:
 변:䮁:
 변:辫:
 변:边:
 변:骈:
-변:萹:
-변:骿:통갈비 변
-변:鴘:매 변
 변:匥:
 변:峅:
 변:汳:
 별:瞥:언뜻 볼 별, 눈을 깜짝하는 별
 별:鱉:鼈과 同字, 자라 별
 별:鼈:자라 별
+별:鷩:금계 별
+별:彆:활 뒤틀릴 별
 별:别:
 별:撇:
 별:蹩:
 별:莂:
-별:鷩:금계 별
 별:潎:
 별:䠥:
 별:瘪:
 별:鳖:
-별:彆:활 뒤틀릴 별
 별:丿:삐치다
 별:嫳:
 별:徶:
 병:輧:거마 소리 병
 병:棅:柄과 同字, 자루 병
 병:並:竝과 同字
+병:迸:달아날 병
+병:駢:騈의 俗字
+병:缾:두레박 병
+병:搒:
+병:塀:담 병
+병:絣:무늬없는 비단 병, 이을 병, 먹줄 튀길 병
+병:鈵:
+병:鉼:판금 병
+병:鋲:넓은 못 병, 징 병
 병:并:
 병:屏:
 병:併:
 병:餅:
 병:逬:
-병:迸:달아날 병
 병:瓶:
-병:駢:騈의 俗字
-병:缾:두레박 병
 병:帲:
 병:邴:
-병:搒:
 병:傡:
 병:陃:
 병:帡:
 병:竮:
 병:聠:
 병:㨀:
-병:塀:담 병
-병:絣:무늬없는 비단 병, 이을 병, 먹줄 튀길 병
 병:乒:
 병:幈:
 병:恲:
 병:頩:
 병:䈂:
 병:饼:
-병:鈵:
-병:鉼:판금 병
-병:鋲:넓은 못 병, 징 병
 병:偋:
 병:垪:
 병:寎:
 보:褓:포대기 보
 보:珤:寶의 古字, 보배 보
 보:湺:보
-보:宝:
 보:靌:
 보:簠:제기 이름 보
 보:俌:도울 보
 보:黼:수 보
 보:葆:풀 더부룩할 보
+보:捗:
+보:鞴:
+보:鴇:능에 보
+보:盙:簠의 本字
+보:宝:
 보:寳:
 보:莆:
 보:歩:
 보:踄:
 보:椺:
 보:賲:
-보:捗:
-보:鞴:
-보:鴇:능에 보
 보:堢:
 보:藵:
 보:㙛:
 보:辅:
 보:镨:
 보:鸨:
-보:盙:簠의 本字
 보:埗:
 보:媬:
 보:寚:
 복:蔔:무우 복, 치자꽃 복
 복:輹:복토 복, 바퀴통 복
 복:仆:
-복:袱:
 복:扑:칠 복
 복:幞:건 복
 복:濮:강 이름 복
-복:㒒:
 복:鵩:새 이름 복
+복:蝮:살무사 복
+복:墣:흙덩이 복
+복:蝠:박쥐 복
+복:箙:전동 복
+복:菔:무 복
+복:袱:
+복:㒒:
 복:菐:
 복:攴:치다
 복:葍:
 복:攵:치다
-복:蝮:살무사 복
 복:栿:
 복:覄:
 복:楅:
 복:襆:
-복:墣:흙덩이 복
 복:醭:
-복:蝠:박쥐 복
 복:澓:
 복:复:
 복:辐:
 복:鳆:
-복:箙:전동 복
-복:菔:무 복
 복:垘:
 복:棴:
 복:椱:
 봉:熢:연기 자욱할 봉, 불기운 봉
 봉:琫:칼집 장식 봉, 칼집장식옥 봉
 봉:丰:예쁠 봉
-봉:篈:
 봉:綘:縫과 同字
-봉:鳯:
 봉:篷:뜸 봉
-봉:塜:
 봉:葑:
+봉:夆:끌 봉
+봉:菶:풀 무성할 봉
+봉:鴌:鳳의 古字
+봉:篈:
+봉:鳯:
+봉:塜:
 봉:賵:
 봉:芃:
 봉:捀:
 봉:艂:
 봉:蠭:
 봉:髼:
-봉:夆:끌 봉
-봉:菶:풀 무성할 봉
 봉:唪:
 봉:崶:
 봉:淎:
 봉:缝:
 봉:赗:
 봉:锋:
-봉:鴌:鳳의 古字
 봉:仹:
 봉:埄:
 봉:埲:
 부:訃:부고 부, 통부 부
 부:阜:언덕 부
 부:膚:살갗 부, 피부 부
-부:俛:
 부:俯:구푸릴 부, 구부릴 부
 부:賻:부의 부
 부:斧:도끼 부
 부:缶:장군 부
 부:莩:풀 이름 부, 갈대청 부
 부:趺:책상다리할 부, 도사리어 앉을 부
+부:俛:
 부:艀:작은 배 부
 부:仆:엎드릴 부
 부:祔:합사할 부
 부:俘:사로잡을 부
-부:専:
 부:鈇:도끼 부
 부:拊:어루만질 부
 부:裒:모을 부
 부:蔀:빈지문 부
 부:榑:부상 부
 부:掊:그러모을 부
-부:仅:
 부:苻:귀목풀 부
 부:鮒:붕어 부
 부:蜉:하루살이 부
-부:痡:
-부:瓿:
-부:冨:
-부:棓:
 부:袝:
-부:郛:
 부:頫:머리 숙일 부
 부:抔:움킬 부
 부:涪:물거품 부
-부:釡:
 부:麩:밀기울 부
 부:玞:옥돌 부
 부:跗:발등 부
+부:罘:그물 부
+부:蚨:파랑강충이 부
+부:筟:대청 부
+부:胕:장부 부
+부:罦:그물 부
+부:芣:질경이 부
+부:媍:婦와 同字
+부:専:
+부:仅:
+부:痡:
+부:瓿:
+부:冨:
+부:棓:
+부:郛:
+부:釡:
 부:巭:
 부:滏:
 부:鳬:
-부:罘:그물 부
-부:蚨:파랑강충이 부
 부:尃:
 부:怤:
 부:捊:
 부:柎:
-부:筟:대청 부
-부:胕:장부 부
 부:咅:
 부:暊:
 부:砆:
 부:秿:
 부:㭪:
-부:罦:그물 부
-부:芣:질경이 부
 부:嚩:
 부:弣:
 부:捬:
 부:驸:
 부:鲋:
 부:麸:
-부:媍:婦와 同字
 부:伕:
 부:偩:
 부:剻:
 분:昐:햇빛
 분:体:용렬할 분
 분:氛:기운 분
-분:僨:
 분:棼:마룻대 분
 분:坌:먼지 분
 분:犇:달아날 분
 분:濆:뿜을 분
 분:蕡:들깨 분
+분:枌:나무 이름 분
+분:畚:삼태기 분
+분:朌:頒과 同字
+분:湓:용솟음할 분
+분:轒:병거 분
+분:帉:걸레 분, 행주 분
+분:棻:
+분:砏:큰 소리 분
+분:笨:거칠 분
+분:肦:머리 클 분
+분:膹:고기 삶은 국 분
+분:黺:옷에 오색 수 놓을 분
+분:鼢:두더지 분
+분:僨:
 분:蚡:
 분:黂:
-분:枌:나무 이름 분
 분:翂:
 분:衯:
-분:畚:삼태기 분
 분:玢:
 분:秎:
 분:羵:
 분:鼖:
-분:朌:頒과 同字
-분:湓:용솟음할 분
-분:轒:병거 분
 분:燌:
 분:瓫:
 분:訜:
 분:贲:
 분:锛:
 분:鲼:
-분:帉:걸레 분, 행주 분
-분:棻:
-분:砏:큰 소리 분
-분:笨:거칠 분
-분:肦:머리 클 분
-분:膹:고기 삶은 국 분
-분:黺:옷에 오색 수 놓을 분
-분:鼢:두더지 분
 분:倴:
 분:兝:
 분:喯:
 불:拂:떨 불, 떨칠 불
 불:弗:아닐 불, 말 불
 불:彿:비슷할 불
-불:咈:
 불:黻:수 불
 불:紱:인끈 불
-불:巿:
 불:髴:비슷할 불
-불:紼:
 불:祓:푸닥거리할 불
-불:怫:
 불:茀:풀 우거질 불
 불:芾:
-불:昢:
-불:刜:
 불:岪:산길 불
 불:艴:발끈할 불
+불:韍:폐슬 불
+불:咈:
+불:巿:
+불:紼:
+불:怫:
+불:昢:
+불:刜:
 불:坲:
 불:帗:
 불:煘:
 불:绂:
 불:绋:
 불:韨:
-불:韍:폐슬 불
 불:乀:
 불:冹:
 불:柫:
 붕:棚:시렁 붕, 사다리 붕
 붕:硼:붕산 붕, 약이름 붕
 붕:繃:묶을 붕
-붕:萠:
-붕:弸:
 붕:鬅:
-붕:塴:
 붕:堋:
 붕:漰:
+붕:萠:
+붕:弸:
+붕:塴:
 붕:掤:
 붕:椖:
 붕:綳:
 비:砒:비상 비
 비:翡:물총새 비, 비취새 비
 비:秕:쭉정이 비
-비:妣:죽은 어미 비
 비:賁:
 비:毗:도울 비, 밝을 비
 비:菲:엷을 비, 나물이름 비
 비:粃:쭉정이 비
 비:榧:비자나무 비
 비:枇:비파나무 비, 참빗 비
+비:妣:죽은 어미 비
 비:俾:더할 비
-비:篚:
 비:祕:귀신 비, 비밀 비
 비:閟:문 닫을 비
 비:霏:눈 펄펄 내릴 비
 비:轡:고삐 비
-비:畀:
 비:圮:무너질 비
 비:沘:강 이름 비
-비:疪:
-비:禆:
 비:騑:곁마 비
 비:羆:큰 곰 비
-비:庀:
 비:髀:넓적다리 비
-비:痱:
 비:棐:도지개 비
 비:睥:흘겨볼 비
 비:痞:뱃속 결릴 비
 비:鼙:마상북 비
-비:裶:
 비:邳:클 비
 비:紕:가선 비
 비:貔:비휴 비
 비:庳:
 비:陴:성가퀴 비
 비:仳:떠날 비
-비:啚:
-비:媲:
-비:鞞:
 비:芘:풀 이름 비
-비:伾:
 비:淝:강 이름 비
 비:篦:빗치개 비
-비:奰:
-비:秠:
 비:芾:작은 모양 비
 비:濞:물 소리 비
 비:蚍:왕개미 비
-비:柲:
-비:糒:
-비:豼:
 비:狒:비비 비
-비:䀝:
 비:剕:발 벨 비
 비:埤:더할 비
 비:萆:비해 비
+비:鞴:풀무 비
+비:鵯:
+비:痹:저릴 비
+비:屁:방귀 비
+비:淠:강 이름 비
+비:狉:삵의 새끼 비
+비:蓖:아주까리 비
+비:郫:고을 이름 비
+비:騛:빠른 말 비
+비:篚:
+비:畀:
+비:疪:
+비:禆:
+비:庀:
+비:痱:
+비:裶:
+비:啚:
+비:媲:
+비:鞞:
+비:伾:
+비:奰:
+비:秠:
+비:柲:
+비:糒:
+비:豼:
+비:䀝:
 비:嚭:
 비:渄:
 비:蠯:
 비:䚹:
-비:鞴:풀무 비
-비:鵯:
 비:俻:
 비:偹:
 비:厞:
 비:馡:
 비:㩌:
 비:䤵:
-비:痹:저릴 비
 비:备:
 비:惫:
 비:纰:
 비:镄:
 비:飞:
 비:鲱:
-비:屁:방귀 비
-비:淠:강 이름 비
-비:狉:삵의 새끼 비
-비:蓖:아주까리 비
-비:郫:고을 이름 비
-비:騛:빠른 말 비
 비:俷:
 비:僃:
 비:呸:
 빈:顰:찡그릴 빈
 빈:繽:어지러울 빈
 빈:豳:나라 이름 빈
-빈:賔:
 빈:霦:옥 광채 빈
 빈:鑌:강철 빈
+빈:鬂:鬢의 俗字
+빈:矉:찡그릴 빈
+빈:臏:종지뼈 빈
+빈:賔:
 빈:䎙:
 빈:份:
 빈:馪:
 빈:璸:
 빈:髩:
-빈:鬂:鬢의 俗字
 빈:薲:
 빈:蠙:
 빈:濵:
-빈:矉:찡그릴 빈
-빈:臏:종지뼈 빈
 빈:梹:
 빈:傧:
 빈:嫔:
 빙:冰:氷의 本字
 빙:凭:기대다 빙
 빙:娉:장가들다 빙
+빙:凴:凭과 同字
 빙:俜:
 빙:砯:
 빙:䀻:
 빙:骋:
-빙:凴:凭과 同字
 빙:仌:
 빙:冫:얼음
 빙:慿:
 사:柶:수저 사, 숟가락 사
 사:渣:찌끼 사
 사:僿:잘게 부슬 사, 정성없는 사
-사:辞:
 사:槎:
 사:竢:기다릴 사
 사:蜡:납향 사
 사:笥:상자 사
 사:榭:정자 사
 사:騃:
+사:姒:동서 사
+사:卸:풀 사
+사:闍:
+사:撕:
+사:楂:떼 사
+사:駛:달릴 사
+사:缷:
+사:剚:찌를 사
+사:咋:잠간 사
+사:汜:지류 사
+사:傞:취하여 춤추는 모양 사
+사:覗:엿볼 사
+사:鯊:문절망둑 사
+사:崽:
+사:痧:쥐통 사
+사:皶:
+사:魦:鯊와 同字
+사:鰤:새우 사
+사:辞:
 사:查:
 사:賖:
-사:姒:동서 사
 사:涘:
 사:耜:
-사:卸:풀 사
 사:蓰:
 사:屣:
 사:冩:
-사:闍:
 사:簁:
-사:撕:
 사:賒:
-사:楂:떼 사
 사:挲:
-사:駛:달릴 사
-사:缷:
 사:辤:
 사:禠:
 사:舎:
-사:剚:찌를 사
-사:咋:잠간 사
 사:虵:
-사:汜:지류 사
 사:辝:
 사:髿:
-사:傞:취하여 춤추는 모양 사
 사:禩:
 사:肂:
 사:衺:
 사:嗄:
 사:漇:
 사:蹝:
-사:覗:엿볼 사
-사:鯊:문절망둑 사
 사:戺:
 사:柌:
 사:蒒:
 사:鲨:
 사:鸶:
 사:䴓:
-사:崽:
-사:痧:쥐통 사
-사:皶:
-사:魦:鯊와 同字
-사:鰤:새우 사
 사:亊:
 사:亖:
 사:佀:
 삭:鑠:녹일 삭
 삭:槊:창 삭
 삭:爍:빛날 삭
+삭:箾:
+삭:蒴:말오줌대 삭
 삭:矟:
 삭:搠:
-삭:箾:
 삭:烁:
 삭:铄:
-삭:蒴:말오줌대 삭
 삭:嗍:
 삭:揱:
 삭:溹:
 산:霰:싸라기눈 산, 싸락눈 산
 산:蒜:달래 산
 산:汕:오구 산, 통발 산
-산:產:
-산:筭:
 산:繖:일산 산
 산:訕:헐뜯을 산
-산:删:
 산:餕:
-산:㪚:
-산:跚:
 산:潸:눈물흐를 산
 산:毿:
 산:狻:사자 산
 산:鏟:대패 산
-산:滻:
 산:澘:潸의 略字
 산:剷:깎을 산
-산:㦃:
 산:橵:산자 산
+산:姍:헐뜯을 산
+산:孿:쌍둥이 산
+산:閊:비색할 산
+산:產:
+산:筭:
+산:删:
+산:㪚:
+산:跚:
+산:滻:
+산:㦃:
 산:仐:
 산:痠:
 산:隡:
 산:讪:
 산:闩:
 산:馓:
-산:姍:헐뜯을 산
-산:孿:쌍둥이 산
-산:閊:비색할 산
 산:匴:
 산:厁:
 산:圸:
 삼:摻:
 삼:毿:털긴 삼
 삼:糝:나물죽 삼
-삼:彡:터럭
 삼:鬖:헝클어질 삼
+삼:椙:
+삼:櫼:
+삼:釤:낫 삼
+삼:彡:터럭
 삼:縿:
 삼:槮:
 삼:襂:
 삼:穼:
 삼:糁:
 삼:钐:
-삼:椙:
-삼:櫼:
-삼:釤:낫 삼
 삼:仨:
 삼:俕:
 삼:剼:
 삽:鍤:가래 삽
 삽:卅:서른 삽
 삽:霎:가랑비 삽
+삽:霅:비올 삽
+삽:唼:쪼아먹을 삽
 삽:挿:
 삽:澀:
 삽:鎝:
 삽:插:
-삽:霅:비올 삽
 삽:牐:
 삽:箑:
-삽:唼:쪼아먹을 삽
 삽:靸:
 삽:趿:
 삽:涩:
 상:嫦:
 상:瀧:
 상:峠:고개 상
-상:状:
-상:尚:
 상:倘:
 상:甞:맛볼 상
 상:殤:일찍죽을 상
+상:顙:이마 상
+상:徜:노닐 상
+상:緗:담황색 상
+상:晌:정오 상
+상:塽:높고밝은땅 상
+상:鎟:방울소리 상
+상:鬺:삶을 상
+상:状:
+상:尚:
 상:愓:
 상:恦:
 상:垧:
 상:厢:
 상:瑺:
 상:礵:
-상:顙:이마 상
 상:丧:
-상:徜:노닐 상
-상:緗:담황색 상
 상:鋿:
 상:鏛:
 상:扄:
-상:晌:정오 상
 상:謪:
 상:鸘:
 상:䘮:
 상:鱨:
-상:塽:높고밝은땅 상
 상:樉:
 상:贘:
 상:驦:
 상:骦:
 상:鲿:
 상:鹴:
-상:鎟:방울소리 상
-상:鬺:삶을 상
 상:丄:
 상:仩:
 상:傸:
 새:塞:변방 새, 변망 새
 새:璽:도장 새, 옥새 새
 새:賽:굿할 새, 국할 새
-새:壐:
 새:鰓:뿔심 새
+새:崽:
+새:壐:
 새:玺:
 새:赛:
 새:鳃:
-새:崽:
 새:噻:
 새:愢:
 새:瓕:
 색:薔:아낄 색
 색:穡:거둘 색
 색:愬:놀랍고두려울 색
-색:賾:
-색:摵:
 색:槭:나뭇잎 떨어져 앙상할 색
 색:濇:껄끄러울 색
+색:瀒:濇의 俗字
+색:賾:
+색:摵:
 색:矠:
 색:繬:
 색:鎍:
 색:穑:
 색:赜:
 색:铯:
-색:瀒:濇의 俗字
 색:嗦:
 색:懎:
 색:擌:
 생:甥:생질 생, 사위 생
 생:笙:생황 생
 생:眚:눈에백태낄 생
+생:鉎:녹 생
 생:泩:
 생:栍:
 생:鼪:
-생:鉎:녹 생
 생:殅:
 생:湦:
 생:珄:
 서:薯:참마 서, 감자 서
 서:嶼:섬 서
 서:抒:풀 서, 끄어낼 서
-서:婿:사위 서
 서:壻:사위 서
 서:栖:깃들일 서, 깃드릴 서
 서:筮:점대 서, 산가지 서
 서:絮:솜 서, 헌솜 서
 서:墅:농막 서
 서:捿:깃들일 서, 깃드릴 서
+서:婿:사위 서
 서:叙:
 서:紓:느슨할 서
 서:噬:씹을 서
+서:撕:
+서:鉏:호미 서
+서:湑:거를 서
+서:澨:물가 서
+서:芧:상수리 서
+서:揟:나무이름 서
+서:耡:구실이름 서
 서:敘:
 서:遾:
 서:閪:
 서:溆:
-서:撕:
-서:鉏:호미 서
 서:醑:
 서:諝:
 서:蜍:
-서:湑:거를 서
-서:澨:물가 서
-서:芧:상수리 서
 서:㥠:
 서:漵:
 서:潻:
 서:绪:
 서:谞:
 서:锄:
-서:揟:나무이름 서
-서:耡:구실이름 서
 서:卥:
 서:唑:
 서:嫬:
 석:蓆:자리 석, 클 석
 석:腊:포 석
 석:舃:신 석
+석:蜥:도마뱀 석
+석:鉐:놋쇠 석
+석:晰:밝을 석
+석:矽:석비레 석
+석:鼫:석서 석
 석:释:
 석:穸:
 석:螫:
 석:祏:
-석:蜥:도마뱀 석
-석:鉐:놋쇠 석
-석:晰:밝을 석
 석:裼:
 석:焬:
 석:皙:
 석:硕:
 석:釈:
 석:锡:
-석:矽:석비레 석
-석:鼫:석서 석
 석:佦:
 석:冟:
 석:匇:
 선:敾:글잘쓸 선
 선:湺:
 선:尠:적을 선
-선:縇:
 선:燹:
-선:鲜:
-선:缮:
-선:墠:
 선:譔:가르칠 선
 선:綫:線과 同字
-선:獮:
 선:鏇:갈이틀 선
-선:躚:
 선:騸:불깔 선
 선:愃:쾌할 선
-선:僎:
-선:蟺:
 선:墡:백토 선
-선:嬗:
 선:筅:솔 선
 선:脧:
 선:駪:
 선:熯:
+선:鱻:생선 선
+선:姍:
+선:姺:
+선:嫙:예쁠 선
+선:尟:尠과 同字
+선:屳:날 선
+선:歚:고을 선
+선:譱:善의 古字
+선:鱓:두렁허리 선
+선:縇:
+선:鲜:
+선:缮:
+선:墠:
+선:獮:
+선:躚:
+선:僎:
+선:蟺:
+선:嬗:
 선:揎:
 선:蟮:
 선:襈:
 선:㶍:
 선:㷽:
 선:䆄:
-선:鱻:생선 선
 선:僐:
 선:漩:
 선:舩:
 선:镟:
 선:骟:
 선:鳝:
-선:姍:
-선:姺:
-선:嫙:예쁠 선
-선:尟:尠과 同字
-선:屳:날 선
-선:歚:고을 선
-선:譱:善의 古字
-선:鱓:두렁허리 선
 선:傓:
 선:僲:
 선:塇:
 설:褻:더러울 설, 평복 설
 설:楔:문설주 설, 기둥 설
 설:齧:물 설, 씹을 설
-설:挈:
 설:偰:맑을 설
 설:揲:셀 설
-설:絏:
 설:爇:불사를 설
 설:紲:고삐 설
 설:稧:
+설:媟:깔볼 설
+설:碟:가죽다룰 설
+설:暬:설만할 설
+설:挈:
+설:絏:
 설:䙝:
 설:枻:
-설:媟:깔볼 설
 설:囓:
-설:碟:가죽다룰 설
 설:焫:
 설:躠:
 설:緤:
-설:暬:설만할 설
 설:褉:
 설:樰:
 설:㻡:
 섬:憸:간사할 섬
 섬:摻:섬섬할 섬
 섬:銛:가래 섬
-섬:殱:
-섬:爓:
 섬:譫:헛소리 섬
 섬:睒:번개빛 섬
+섬:韱:산부추 섬
+섬:孅:가늘 섬
+섬:笘:
+섬:殱:
+섬:爓:
 섬:纎:
 섬:棎:
-섬:韱:산부추 섬
 섬:掞:
 섬:㴸:
 섬:䃸:
 섬:赡:
 섬:铦:
 섬:闪:
-섬:孅:가늘 섬
-섬:笘:
 섬:嬐:
 섬:撡:
 섬:攕:
 섭:躡:밟을 섭, 신 신을 섭, 오를 섭
 섭:懾:무서울 섭, 두려울 섭
 섭:歙:
-섭:爕:
-섭:摂:
 섭:囁:말하려다 멈출 섭, 중얼거릴 섭, 입 다물 섭
-섭:讋:
 섭:聶:소곤거릴 섭, 낄 섭, 성씨 섭
 섭:鑷:쪽집게 섭
+섭:灄:흠치르르할 섭, 물이름 섭, 떼 섭
+섭:顳:귀밑 뼈 섭
+섭:爕:
+섭:摂:
+섭:讋:
 섭:屧:
 섭:籋:
 섭:渉:
 섭:蹑:
 섭:镊:
 섭:颞:
-섭:灄:흠치르르할 섭, 물이름 섭, 떼 섭
-섭:顳:귀밑 뼈 섭
 섭:屟:
 섭:弽:
 섭:徢:
 성:珹:옥이름
 성:猩:성성이 성
 성:筬:바디 성, 대나무이름 성
+성:騂:붉은 소 성, 누른말 성, 활 물쩡물쩡할 성
+성:餳:
+성:瑆:
 성:渻:
 성:垶:
-성:騂:붉은 소 성, 누른말 성, 활 물쩡물쩡할 성
 성:峸:
 성:狌:
 성:晠:
 성:煋:
 성:郕:
-성:餳:
 성:鋮:
 성:偗:
 성:箵:
 성:诚:
 성:铖:
 성:骍:
-성:瑆:
 성:墭:
 성:娍:
 성:曐:
 세:貰:빌릴 세, 세 바칠 세, 세낼 세
 세:笹:가는 대 세
 세:洒:씻을 세, 설치할 세
-세:税:
-세:嵗:
-세:歳:
 세:繐:가늘고 성긴 베 세
 세:蛻:매미 허물 세
 세:帨:차는 수건 세, 손수건 세
+세:税:
+세:嵗:
+세:歳:
 세:挩:
 세:裞:
 세:檅:
 소:溯:거슬러 올라갈 소
 소:釗:
 소:篠:가는 대 소, 조릿대 소
-소:䟽:
-소:㪽:
 소:踈:疎의 譌字
 소:艘:배 소
 소:霄:하늘 소, 진눈깨비 소
-소:咲:
 소:泝:거슬러 올라갈 소, 흘러갈 소
-소:穌:
-소:焇:
 소:埽:쓸 소, 그릴 소, 언덕 소
 소:翛:날개치는 소리 소, 모지라질 소
 소:愬:고할 소, 참소할 소, 알릴 소
 소:鞘:
+소:酥:타락죽 소
+소:繅:고치 실 뽑을 소
+소:卲:높을 소, 성씨 소
+소:劭:
+소:蛸:거미알 소, 연가시 알집 소
+소:俏:거문고 뒤치는 소리 소
+소:捎:덜 소, 흔들거릴 소, 추릴 소, 버릴 소
+소:魈:산도깨비 소
+소:佋:소개할 소, 사신 소, 댓수의 차례 소
+소:箾:
+소:嗉:멀떠구니 소
+소:筱:가는 대 소
+소:塐:塑와 同字
+소:樔:풀막 소, 너스레 소
+소:膆:살찔 소, 멀떠구니 소
+소:鮹:문어 소, 낙지 소
+소:鰺:비린내 소의 譌字
+소:䟽:
+소:㪽:
+소:咲:
+소:穌:
+소:焇:
 소:焼:
 소:销:
 소:熽:
 소:筲:
-소:酥:타락죽 소
-소:繅:고치 실 뽑을 소
-소:卲:높을 소, 성씨 소
 소:謏:
 소:蠨:
-소:劭:
-소:蛸:거미알 소, 연가시 알집 소
 소:傃:
 소:㴑:
-소:俏:거문고 뒤치는 소리 소
 소:玿:
-소:捎:덜 소, 흔들거릴 소, 추릴 소, 버릴 소
-소:魈:산도깨비 소
 소:痟:
 소:矂:
-소:佋:소개할 소, 사신 소, 댓수의 차례 소
-소:箾:
 소:喿:
 소:璅:
 소:騒:
 소:㗛:
-소:嗉:멀떠구니 소
 소:愫:
 소:慅:
 소:旓:
 소:溸:
 소:琑:
 소:苏:
-소:筱:가는 대 소
 소:关:
 소:啸:
 소:巣:
 소:骚:
 소:鲹:
 소:鳋:
-소:塐:塑와 同字
-소:樔:풀막 소, 너스레 소
-소:膆:살찔 소, 멀떠구니 소
-소:鮹:문어 소, 낙지 소
-소:鰺:비린내 소의 譌字
 소:嘨:
 소:囌:
 소:娋:
 속:贖:속바칠 속, 무역할 속
 속:涑:빨
 속:謖:일어날
+속:洬:
+속:遬:공손할 속, 줄어들 속
 속:属:
 속:蔌:
 속:餗:
 속:觫:
-속:洬:
 속:鋉:
-속:遬:공손할 속, 줄어들 속
 속:梀:
 속:誎:
 속:簌:
 손:蓀:난초
 손:飧:저녁밥 손, 물에 만 밥 손
 손:飱:飧의 俗字
-손:噀:
 손:喰:
+손:噀:
 손:孙:
 손:损:
 손:狲:
 손호:孫皓:
 손화로:손火爐:
 솔:率:거느릴 솔, 좇을 솔, 쓸 솔, 대강 솔, 공경할 솔, 뱀 이름 솔, 헤아릴 솔
-솔:卛:
 솔:蟀:귀뚜라미 솔
 솔:窣:느릿느릿 걸을 솔, 우지직거릴 솔, 구멍으로 나올 솔
+솔:卛:
 솔:乺:
 솔:摔:
 솔:甩:
 송:宋:송나라 송, 성씨 송
 송:悚:두려울 송, 송구할 송, 두려워할 송
 송:淞:강이름 송
-송:荣:
 송:竦:공경할 송, 두려울 송, 높일 송, 솟을 송
 송:柗:松과 同字
 송:鬆:터럭 더부룩할 송
+송:菘:
+송:荣:
 송:㩳:
 송:㞞:
 송:讼:
 송:诵:
 송:锶:
 송:颂:
-송:菘:
 송:倯:
 송:凇:
 송:庺:
 쇄:碎:부술 쇄, 잘 쇄
 쇄:洒:
 쇄:瑣:옥가루 쇄, 가늘 쇄, 좀스러울 쇄, 대궐문 아로새길 쇄
+쇄:曬:
+쇄:惢:
 쇄:晒:
 쇄:鎻:
-쇄:曬:
 쇄:鏁:
 쇄:锁:
 쇄:縰:
 쇄:唢:
 쇄:琐:
 쇄:铩:
-쇄:惢:
 쇄:嗮:
 쇄:涮:
 쇄:溑:
 수:璲:서옥 수, 패옥 수
 수:蓚:기쁠
 수:銹:동록 수, 녹슬 수
-수:随:
-수:収:
-수:数:
 수:叟:어른 수, 쌀 씻는 소리 수
 수:讎:짝 수, 원수 수, 대거리할 수, 비교할 수, 갚을 수
 수:售:팔 수, 갚을 수
 수:晬:
 수:睟:똑바로 볼 수, 윤택할 수
 수:陲:변방 수, 위태할 수
-수:捜:
 수:睢:
 수:祟:빌미 수
-수:薮:
-수:虽:
 수:莠:
 수:瞍:소경 수, 장님 수, 판수 수
-수:髄:
 수:颼:바람소리 수
-수:綉:
 수:殳:치다
-수:襚:
 수:酥:
+수:廋:숨길 수
+수:溲:오줌 수, 반족할 수, 적실 수
+수:膄:파리할 수
+수:脺:얼굴 윤택할 수, 머리덜미 수
+수:泅:
+수:濉:
+수:籔:조리 수, 곡식 세는 단위 휘 수, 또아리 수
+수:膸:髓와 同字
+수:饈:드릴 수, 반찬 수
+수:随:
+수:収:
+수:数:
+수:捜:
+수:薮:
+수:虽:
+수:髄:
+수:綉:
+수:襚:
 수:瀡:
 수:倕:
 수:滫:
 수:䢘:
-수:廋:숨길 수
-수:溲:오줌 수, 반족할 수, 적실 수
 수:詶:
 수:繻:
 수:鎪:
 수:篲:
 수:酧:
 수:䏂:
-수:膄:파리할 수
 수:惥:
 수:擻:
 수:橾:
 수:菙:
 수:訹:
 수:醻:
-수:脺:얼굴 윤택할 수, 머리덜미 수
 수:扌:
 수:檖:
 수:腄:
 수:㒸:
 수:䆳:
-수:泅:
 수:夀:
 수:栦:
 수:澻:
 수:魗:
 수:䇕:
 수:䝂:
-수:濉:
-수:籔:조리 수, 곡식 세는 단위 휘 수, 또아리 수
-수:膸:髓와 同字
 수:嬃:
 수:嬦:
 수:嶲:
 수:馊:
 수:馐:
 수:䍁:
-수:饈:드릴 수, 반찬 수
 수:俢:
 수:傁:
 수:凁:
 수용토:受用土:
 수용품:需用品:
 수우:水牛:
+수우:愁憂:
 수우:殊遇:
 수우:秀羽:
 수우:樹羽:
 수우:殊尤:
-수우:愁憂:
 수우도:樹牛島:
 수우도:水牛島:
 수우죽백:垂于竹帛:
 숙:璹:옥그릇
 숙:潚:빠를
 숙:琡:옥이름
-숙:䎘:
-숙:璛:
 숙:倏:잠간 숙, 홀연 숙, 개의 빨리 달리는 모양 숙
 숙:俶:비롯할 숙, 처음 숙, 지을 숙
-숙:埱:
 숙:橚:길고 꼿꼿할 숙
+숙:儵:잿빛 숙, 남해 임금 숙, 독화당할 숙, 갑자기 숙
+숙:鷫:숙상새 숙
+숙:驌:좋은말 숙, 숙상말 숙
+숙:婌:궁녀 벼슬이름 숙
+숙:䎘:
+숙:璛:
+숙:埱:
 숙:蓿:
 숙:倐:
 숙:焂:
 숙:鱐:
-숙:儵:잿빛 숙, 남해 임금 숙, 독화당할 숙, 갑자기 숙
-숙:鷫:숙상새 숙
 숙:玊:
-숙:驌:좋은말 숙, 숙상말 숙
 숙:掓:
 숙:㶖:
 숙:䃤:
 숙:肃:
 숙:骕:
 숙:鹔:
-숙:婌:궁녀 벼슬이름 숙
 숙:儴:
 숙:尗:
 숙:摍:
 순:蕣:무궁화 순
 순:栒:경쇠걸이 순, 순나무 순
 순:橓:무궁화나무 순
-순:笋:
 순:肫:광대뼈 순, 정성스러울 순
 순:鶉:메추라기 순, 옷 해질 순
-순:峋:
-순:廵:
-순:輴:
 순:紃:신에 실선 두를 순, 실 띠 순, 법 순, 좇을 순
-순:漘:
-순:㥧:
 순:狥:徇의 俗字
 순:鬊:머리 풀어헤칠 순
 순:眴:눈짓할 순
 순:侚:좇을 순, 빠를 순, 조리 돌릴 순
+순:盹:눈 감을 순, 졸 순
+순:駨:
+순:笋:
+순:峋:
+순:廵:
+순:輴:
+순:漘:
+순:㥧:
 순:㦏:
 순:䋸:
 순:䥎:
 순:驯:
 순:鹑:
 순:鹠:
-순:盹:눈 감을 순, 졸 순
-순:駨:
 순:伨:
 순:偱:
 순:咰:
 술:術:재주 술, 심술부릴 술, 술법 술
 술:鉥:돗바늘 술, 인도할 술, 큰바늘 술
 술:卹:
+술:潏:
+술:絉:
 술:銊:
 술:㺷:
-술:潏:
 술:荗:
 술:珬:
 술:沭:
-술:絉:
 술:欰:
 술:蒁:
 술:袕:
 슬:膝:무릎 슬, 종지뼈 슬, 치슬말 슬
 슬:蝨:이 슬
 슬:虱:蝨과 同字
+슬:飋:
 슬:㻭:
 슬:厀:
 슬:鲺:
-슬:飋:
 슬:濏:
 슬:璱:
 슬:鯴:
 습:襲:옷 덧입을 습, 벼슬 대물릴 습, 반복할 습, 합할 습, 염습할 습, 엄습할 습
 습:濕:젖을 습, 소 귀 벌룩거릴 습, 근심 습
 습:褶:슬갑 습
-습:湿:
 습:隰:진펄 습
 습:慴:
 습:熠:환할 습, 선명할 습, 반딧불 반짝거릴 습
+습:湿:
 습:霫:
 습:謵:
 습:习:
 승:丞:이을 승, 도울 승, 벼슬의 이름 승, 향상할 승
 승:陞:오를 승, 올릴 승
 승:蠅:파리 승
+승:塍:
+승:鬙:터럭 더부룩할 승
 승:乗:
 승:蝇:
-승:塍:
 승:䋲:
-승:鬙:터럭 더부룩할 승
 승:鱦:
 승:椉:
 승:氶:
 시:澌:물 잦을 시, 다할 시
 시:廝:부릴 시, 천할 시, 마부 시
 시:柹:감 시
-시:絁:
 시:偲:간절히 책망할 시, 살피고 힘쓸 시, 굳셀 시
 시:禔:복 시, 편안할 시
 시:撕:
-시:腮:
-시:颸:
 시:諟:이 시, 살필 시, 다스릴 시
 시:兕:외뿔난 소 시
-시:弒:
 시:豉:메주 시, 콩자반 시
-시:䌤:
 시:塒:홰 시
 시:顋:뺨 시, 볼 시
-시:眎:
-시:鳲:
 시:枲:수삼 시, 도꼬마리 시
 시:諰:눈 휘둥글할 시, 곧은말 시
+시:釃:술 거를 시
+시:翤:
+시:鍉:숟가락 시, 열쇠 시
+시:絁:
+시:腮:
+시:颸:
+시:弒:
+시:䌤:
+시:眎:
+시:鳲:
 시:凘:
 시:翨:
 시:䲭:
 시:毸:
 시:漦:
 시:襹:
-시:釃:술 거를 시
 시:揌:
 시:犲:
 시:褷:
 시:飔:
 시:鲥:
 시:鸤:
-시:翤:
-시:鍉:숟가락 시, 열쇠 시
 시:兘:
 시:呞:
 시:咶:
 식:埴:찰진흙 식, 흙 이길 식, 더듬어 걸을 식
 식:篒:대밥통
 식:栻:점판 식
-식:鉽:
-식:烒:
 식:喰:
 식:媳:며느리 식
+식:鉽:
+식:烒:
 식:蚀:
 식:轼:
 식:饣:
 신:矧:하물며 신, 잇속 드러날 신
 신:贐:노자 신, 노수 신
 신:哂:빙그레 웃을 신, 비웃을 신
-신:慎:
 신:汛:물뿌릴 신
 신:頣:눈들고 볼 신
 신:脤:사직제 지낸 고기 신
+신:駪:말 우물거릴 신, 빨리 걸을 신
+신:噺:이야기 신
+신:囟:숨구멍 신, 정수리 신
+신:姺:나라이름 신
+신:慎:
 신:抻:
 신:賮:
 신:兟:
 신:伩:
 신:柛:
-신:駪:말 우물거릴 신, 빨리 걸을 신
 신:璶:
 신:㾕:
 신:峷:
 신:讯:
 신:识:
 신:赆:
-신:噺:이야기 신
-신:囟:숨구멍 신, 정수리 신
-신:姺:나라이름 신
 신:卂:
 신:吲:
 신:妽:
 실:實:열매 실
 실:悉:모두 실, 알 실
 실:蟋:귀뚜라미 실
+실:飋:
 실:窸:
 실:实:
 실:実:
-실:飋:
 실:怸:
 실:榁:
 실:螅:
 심:沁:스며들 심, 물이름 심
 심:諶:참 심, 믿을 심
 심:芯:등심초 심
-심:淰:
 심:沉:沈과 同字
 심:潯:물가 심
+심:梣:
+심:椹:
+심:燖:삶을 심
+심:葚:뽕나무 열매 심
+심:鐔:칼날 아래 코등이 심
+심:鱏:칼철갑상어 심
+심:淰:
 심:愖:
 심:諗:
 심:杺:
-심:梣:
 심:伈:
 심:蕈:
 심:㴱:
-심:椹:
-심:燖:삶을 심
 심:襑:
 심:㝷:
-심:葚:뽕나무 열매 심
 심:宷:
 심:枔:
 심:鬵:
 심:镡:
 심:鲟:
 심:㖊:
-심:鐔:칼날 아래 코등이 심
-심:鱏:칼철갑상어 심
 심:侺:
 심:吢:
 심:噚:
 아:鵝:거위 아
 아:莪:지칭개 아, 새발쑥 아
 아:蛾:누에나방 아, 누에나비 아
-아:痾:
 아:迓:마중할 아
 아:疴:앓을 아
 아:哦:놀람의 어조사 아
-아:児:
-아:婭:
-아:亜:
 아:婀:娿와 同字
 아:丫:가장귀 아
 아:峩:峨와 同字
-아:椏:
-아:稏:
 아:娿:아리따울 아
 아:砑:갈 아
+아:笌:대싹 아
+아:錏:투구의 목가림 아
+아:鵞:鵝와 同字
+아:痾:
+아:児:
+아:婭:
+아:亜:
+아:椏:
+아:稏:
 아:妸:
 아:鵶:
 아:俹:
 아:鸦:
 아:鹅:
 아:䅉:
-아:笌:대싹 아
-아:錏:투구의 목가림 아
-아:鵞:鵝와 同字
 아:伢:
 아:厊:
 아:吖:
 악:鄂:나라이름 악, 고을이름 악
 악:鍔:칼날끝 악
 악:齷:악착할 악, 악착같을 악
-악:楽:
 악:萼:꽃받침 악
 악:諤:직언할 악
 악:鶚:물수리 악
 악:咢:놀랄 악
 악:喔:닭 우는 소리 악, 아첨해 웃는 소리 악
-악:鸑:
 악:噩:놀랄 악
+악:卾:윗턱 악
+악:腭:잇몸 악
+악:偓:거리낄 악
+악:覨:오래 볼 악
+악:齶:잇몸 악
+악:楽:
+악:鸑:
 악:遌:
 악:崿:
 악:蕚:
 악:㮙:
-악:卾:윗턱 악
 악:堮:
 악:恶:
 악:鳄:
-악:腭:잇몸 악
 악:乐:
 악:垩:
 악:悪:
 악:颚:
 악:鹗:
 악:龌:
-악:偓:거리낄 악
-악:覨:오래 볼 악
-악:齶:잇몸 악
 악:偔:
 악:僫:
 악:捳:
 안:按:살필 안, 어루만질 안
 안:晏:늦을 안, 편안할 안
 안:鮟:아귀 안, 천징어 안
-안:顏:
 안:鴈:기러기 안
-안:鷃:
-안:贗:
 안:犴:들개 안
 안:贋:가짜 안
 안:桉:案과 同字
+안:顏:
+안:鷃:
+안:贗:
 안:䬶:
 안:楌:
 안:㷳:
 알:斡:돌릴 알, 주선할 알
 알:遏:막을 알
 알:訐:들추어 낼 알
-알:戛:
 알:戞:창 알
 알:頞:콧마루 알
+알:揠:뽑을 알
+알:鴶:뻐꾸기 알
+알:嘎:새소리 알
+알:穵:구멍 알
+알:戛:
 알:歹:부서진뼈
 알:嶭:
-알:揠:뽑을 알
 알:猰:
 알:圠:
 알:捾:
-알:鴶:뻐꾸기 알
 알:堨:
 알:钀:
 알:䵝:
 알:谒:
 알:轧:
 알:阏:
-알:嘎:새소리 알
-알:穵:구멍 알
 알:劜:
 알:咹:
 알:嘠:
 암:俺:
 암:唵:머금을
 암:諳:욀 암
-암:嵒:
 암:黯:어두울 암
 암:嵓:바위 암, 가파를 암
 암:頷:
 암:馣:향기로울 암
 암:晻:어두울 암
-암:碞:
 암:媕:머뭇거릴 암
+암:啽:잠꼬대 암
+암:腤:고기 삶을 암
+암:葊:풀이름 암
+암:蓭:암자 암
+암:嵒:
+암:碞:
 암:韽:
 암:揞:
 암:黭:
-암:啽:잠꼬대 암
 암:痷:
 암:萻:
 암:鵪:
 암:谙:
 암:颔:
 암:鹌:
-암:腤:고기 삶을 암
-암:葊:풀이름 암
-암:蓭:암자 암
 암:匼:
 암:啱:
 암:堷:
 압:鴨:오리 압, 집오리 압
 압:岬:
 압:狎:친근할 압, 업신여길 압, 익힐 압
-압:鸭:
-압:庒:
 압:礏:
 압:罨:
+압:鸭:
+압:庒:
 압:岋:
 압:姶:
 압:㔩:
 앙:昻:오를 앙, 밝을 앙
 앙:鴦:암원앙새 앙
 앙:秧:모 앙
-앙:昂:밝을,높을
 앙:盎:동이 앙
 앙:鞅:가슴걸이 앙, 소고삐 앙
 앙:泱:끝없을 앙
 앙:卬:자기 앙
 앙:坱:티끌 앙
+앙:昂:밝을,높을
 앙:枊:
 앙:䭹:
 앙:抰:
 애:藹:화기로울 애
 애:欸:한숨쉴 애
 애:騃:어리석을 애, 말달릴 애
-애:瑷:
-애:敱:
-애:爱:
 애:睚:눈흘길 애
 애:皚:흴 애
 애:瞹:흐릿할 애
 애:挨:밀칠 애
-애:閡:
-애:㝵:
 애:僾:어렴풋할 애
 애:薆:숨겨질 애
 애:靉:구름낄 애
 애:捱:막을 애
 애:獃:어리석을 애
-애:壒:
 애:磑:맷돌 애
-애:䔽:
 애:娭:계집종 애
-애:譪:
 애:唉:대답하는 소리 애
+애:啀:물어뜯을 애
+애:噯:트림할 애
+애:崕:崖와 同字
+애:漄:물가 애
+애:瑷:
+애:敱:
+애:爱:
+애:閡:
+애:㝵:
+애:壒:
+애:䔽:
+애:譪:
 애:呃:
 애:毐:
 애:璦:
 애:锿:
 애:阂:
 애:霭:
-애:啀:물어뜯을 애
-애:噯:트림할 애
-애:崕:崖와 同字
-애:漄:물가 애
 애:伌:
 애:叆:
 애:哎:
 액:扼:움켜쥘 액, 움겨질 액
 액:縊:목 맬 액
 액:掖:겨드랑이에 낄 액
-액:詻:
 액:阨:막힐 액
 액:搤:움켜쥘 액
 액:戹:좁을 액
+액:呝:울 액
+액:詻:
 액:軛:
 액:頟:
-액:呝:울 액
 액:缢:
 액:轭:
 액:额:
 앵:櫻:앵두나무 앵
 앵:鸚:앵무새 앵
 앵:罌:술병 앵
-앵:鸎:
 앵:嚶:새 소리 앵
-앵:甖:
 앵:鷪:꾀꼬리 앵
-앵:䴍:
 앵:罃:술병 앵
+앵:嫈:예쁠 앵
+앵:鸎:
+앵:甖:
+앵:䴍:
 앵:嘤:
 앵:桜:
 앵:樱:
 앵:罂:
 앵:莺:
 앵:鹦:
-앵:嫈:예쁠 앵
 앵:奣:
 앵:甇:
 앵:譻:
 약:蒻:구약나물 약, 부들속 약
 약:鑰:자물쇠 약
 약:籥:피리 약, 잠글 약
-약:瀹:
 약:禴:종묘의 여름제사 약
-약:礿:
 약:爚:스러질 약
 약:篛:죽순 약
-약:㵸:
 약:鰯:멸치 약, 정어리 약
+약:龠:피리 약
+약:鶸:댓닭 약, 투계 약
+약:瀹:
+약:礿:
+약:㵸:
 약:箬:
 약:箹:
 약:蘥:
 약:㿑:
 약:药:
-약:龠:피리 약
 약:哟:
 약:约:
 약:薬:
 약:跃:
-약:鶸:댓닭 약, 투계 약
 약:叒:
 약:喲:
 약:嵶:
 양:攘:물리칠 양, 빼앗을 양, 밀칠 양
 양:釀:술 빚을 양
 양:恙:근심 양
-양:癢:가려울 양
 양:禳:푸닥거리할 양, 기도할 양
 양:痒:가려울 양, 옴 양
 양:佯:거짓 양, 어정거릴 양, 속일 양
 양:瀁:물결 일렁일 양, 내이름 양
 양:敭:오를 양, 칭찬할 양
 양:煬:구울 양, 녹일 양
+양:癢:가려울 양
 양:驤:날뛰는 말 양
+양:漾:물결 출렁거릴 양
+양:颺:날릴 양, 높일 양
+양:徉:배회할 양
+양:鑲:거푸집 속 양
+양:瀼:이슬 많은 모양 양, 강이름 양
+양:烊:구울 양, 녹일 양
+양:眻:눈 아름다울 양
+양:蘘:양하 양
+양:輰:상여수레 양
 양:譲:
 양:様:
-양:漾:물결 출렁거릴 양
 양:㨾:
 양:样:
 양:昜:
-양:颺:날릴 양, 높일 양
-양:徉:배회할 양
 양:鍚:
 양:懹:
 양:勷:
 양:䑋:
 양:崵:
 양:㐮:
-양:鑲:거푸집 속 양
-양:瀼:이슬 많은 모양 양, 강이름 양
 양:纕:
 양:壌:
 양:饟:
 양:飏:
 양:馕:
 양:骧:
-양:烊:구울 양, 녹일 양
-양:眻:눈 아름다울 양
-양:蘘:양하 양
-양:輰:상여수레 양
 양:劷:
 양:勨:
 양:奍:
 어:瘀:어혈질 어
 어:馭:말 부릴 어
 어:齬:이 어긋날 어
-어:扵:
 어:圉:마부 어, 변방 어
 어:飫:먹기 싫을 어, 배부를 어
-어:蘓:
 어:敔:금할 어, 풍류그칠 어
 어:淤:앙금 어, 진흙 어
+어:茣:
+어:扵:
+어:蘓:
 어:峿:
 어:籞:
 어:菸:
 어:驭:
 어:鱼:
 어:龉:
-어:茣:
 어:仒:
 어:唹:
 어:棜:
 억:檍:참죽나무 억, 박달나무 억, 싸리나무 억
 억:薏:
 억:嶷:
-억:澺:
 억:繶:땋은 노 억
+억:澺:
 억:亿:
 억:忆:
 억:悥:
 언:諺:상말 언
 언:堰:방죽 언
 언:偃:자빠질 언, 누울 언
-언:彥:
 언:讞:죄 의논할 언
-언:琂:
-언:唁:
 언:嫣:생긋생긋 웃을 언
-언:漹:
-언:蔫:
 언:鄢:땅이름 언
 언:鼴:두더쥐 언, 소 같은 큰 쥐 언
 언:匽:숨길 언, 길 곁 언, 한데 뒷간 언
+언:鼹:鼴과 同字
+언:傿:鄢과 同字
+언:彥:
+언:琂:
+언:唁:
+언:漹:
+언:蔫:
 언:喭:
 언:蝘:
-언:鼹:鼴과 同字
 언:讠:
 언:谚:
 언:谳:
-언:傿:鄢과 同字
 언:嘕:
 언:墕:
 언:娮:
 얹음형:얹음形:
 얼:蘖:그루터기 얼, 싹 얼
 얼:孼:첩자식 얼, 요물 얼, 첩의자식 얼
+얼:臬:법 얼, 문지방 얼, 과녁 얼
 얼:孽:
 얼:糱:
-얼:臬:법 얼, 문지방 얼, 과녁 얼
 얼:乻:
 얼:臲:
 얼:闑:
 엄:儼:공경할 엄, 머리쳐들 엄
 엄:俺:자기 엄, 클 엄
 엄:淹:담글 엄, 오래머물 엄
-엄:渰:
 엄:广:바윗집 엄
-엄:揜:
 엄:閹:고자 엄, 내시 엄
 엄:晻:
 엄:崦:해 지는 산 이름 엄
 엄:弇:
 엄:罨:그물 엄
+엄:曮:해 다니는 길 엄
+엄:醃:절일 엄, 김치 엄
+엄:釅:
+엄:渰:
+엄:揜:
 엄:顩:
 엄:㤿:
 엄:㛪:
 엄:腌:
 엄:觃:
 엄:阉:
-엄:曮:해 다니는 길 엄
-엄:醃:절일 엄, 김치 엄
-엄:釅:
 엄:剦:
 엄:厈:
 엄:厳:
 엄흥섭:嚴興燮:
 업:業:일 업, 위태할 업, 씩씩할 업, 벌써 업, 공경할 업
 업:嶪:산이 높고 웅장할 업, 산높은모양 업
-업:业:
-업:㡤:
 업:鄴:땅이름 업, 성씨 업
 업:嶫:嶪과 同字
+업:业:
+업:㡤:
 업:澲:
 업:邺:
 업:殗:
 엎치락뒤치락경기:엎치락뒤치락競技:
 에:恚:성낼 에, 원망할 에
 에:曀:음산할 에, 가리울 에
-에:殪:
 에:饐:
+에:殪:
 에:㤬:
 에게문명:에게文明:
 에게문화:에게文化:
 여:璵:보배옥 여
 여:艅:나룻배 여, 나뭇배 여
 여:礖:여돌 여, 섞인돌 여
-여:与:
 여:舁:마주들 여
+여:与:
 여:欤:
 여:畬:
 여:洳:
 역:繹:삭일 역, 베풀 역, 실 끝 찾을 역
 역:轢:수레바퀴에 치일 력, 서로 부닥칠 력, 수레바퀴에 치는 역
 역:斁:
+역:嶧:연달아 있는 산 역
+역:懌:기꺼울 역
+역:鬩:
+역:閾:문지방 역
+역:淢:빨리 흐를 역
 역:埸:
 역:蜮:
 역:晹:
-역:嶧:연달아 있는 산 역
 역:㴒:
-역:懌:기꺼울 역
 역:湙:
 역:帟:
-역:鬩:
-역:閾:문지방 역
 역:棫:
 역:燡:
 역:睪:
 역:鶂:
-역:淢:빨리 흐를 역
 역:坄:
 역:歝:
 역:琙:
 연:挻:당길 연, 달아날 연, 손바닥으로 칠 연
 연:秊:年의 本字, 해 연
 연:縯:길 연, 늘일 연
-연:葕:
-연:研:
-연:兖:
 연:讌:잔치 연, 모여 말할 연
 연:臙:목구멍 연, 연지 연
 연:莚:만연할 연, 풀 이름 연
-연:缘:
-연:壖:
-연:蜒:
 연:吮:
 연:掾:아전 연, 기인할 연
 연:悁:분할 연, 근심할 연
 연:兗:고을이름 연, 믿을 연, 단정할 연
 연:埏:땅 가장자리 연
+연:渷:물 이름 연
+연:蠕:
+연:鷰:제비 연, 씨름 연
+연:嬿:아름다울 연
+연:囦:물 깊을 연
+연:曣:더울 연, 청명할 연
+연:櫞:연나무 연
+연:蜵:우렁찰 연, 벌레 이름 연
+연:葕:
+연:研:
+연:兖:
+연:缘:
+연:壖:
+연:蜒:
 연:輭:
 연:鈆:
 연:碝:
 연:㮒:
 연:愞:
 연:耎:
-연:渷:물 이름 연
 연:綖:
 연:鋋:
 연:妍:
 연:縁:
 연:㳂:
 연:肰:
-연:蠕:
-연:鷰:제비 연, 씨름 연
 연:蜎:
 연:蝝:
 연:㳙:
 연:撋:
-연:嬿:아름다울 연
 연:抁:
 연:灁:
 연:瑌:
 연:软:
 연:铅:
 연:鸢:
-연:囦:물 깊을 연
-연:曣:더울 연, 청명할 연
-연:櫞:연나무 연
-연:蜵:우렁찰 연, 벌레 이름 연
 연:剈:
 연:嘫:
 연:噮:
 열:閱:겪을 열, 군대 점호할 열, 용납할 열, 볼 열
 열:咽:목 멜 열, 막힐 열
 열:涅:극락갈
-열:揑:
 열:爇:
 열:噎:목 멜 열
 열:拽:
+열:揑:
 열:潱:
 열:閲:
 열:恱:
 염:錟:
 염:塩:鹽의 俗字
 염:冉:가는 털 늘어질 염, 남생이 등 언저리 염, 침노할 염
-염:燄:
 염:灎:灩의 俗字
 염:饜:싫을 염, 물릴 염
 염:魘:잠꼬대할 염
+염:灩:물 그득할 염, 물결 출렁거릴 염
+염:靨:
+염:黶:검은 사마귀 염
+염:扊:문 빗장 염
+염:檿:산뽕나무 염
+염:焱:
+염:懕:편안할 염
+염:檶:
+염:釅:
+염:燄:
 염:髯:
 염:曕:
 염:猒:
 염:㷔:
-염:灩:물 그득할 염, 물결 출렁거릴 염
-염:靨:
-염:黶:검은 사마귀 염
 염:袡:
 염:豔:
-염:扊:문 빗장 염
 염:灧:
-염:檿:산뽕나무 염
-염:焱:
 염:偣:
 염:冄:
 염:厴:
 염:魇:
 염:鲶:
 염:黡:
-염:懕:편안할 염
-염:檶:
-염:釅:
 염:乵:
 염:壛:
 염:夵:
 엽:揲:
 엽:楪:
 엽:魘:
-엽:饁:
 엽:爗:불 이글글할 엽, 번쩍번쩍할 엽
-엽:瞱:
 엽:熀:불빛 이글이글할 녑
 엽:靨:웃는 볼 옴쏙 들어갈 엽, 얼굴의 검은 사마귀 엽
+엽:曅:曄과 同字
+엽:饁:
+엽:瞱:
 엽:曗:
 엽:擛:
-엽:曅:曄과 同字
 엽:晔:
 엽:烨:
 엽:靥:
 영:玲:옥소리 쟁그렁거릴 령, 아롱아롱할 령, 정교할 령, 금옥소리 영
 영:囹:감옥 령
 영:暎:비칠 영
-영:嬰:어릴 영, 더할 영, 머리치장할 영, 물요괴 영, 갓난아이 영
 영:穎:이삭 영, 송곳 끝 영, 빼어날 영
 영:纓:갓끈 영, 말 가슴걸이 영, 얽힐 영
 영:瑩:귀막이 옥 영, 밝을 영
 영:煐:빛날 영
 영:瓔:옥돌 영, 구슬 목걸이 영
 영:鍈:방울소리 영
+영:嬰:어릴 영, 더할 영, 머리치장할 영, 물요괴 영, 갓난아이 영
 영:咏:노래할 영, 읊을 영
 영:贏:이문 남길 영, 멜 영, 자랄 영
 영:縈:얽힐 영, 맬 영
 영:嬴:성씨 영, 풀어낼 영, 가득할 영, 아름다울 영
-영:营:
 영:郢:땅이름 영
+영:癭:목 혹 영
+영:韺:풍류이름 영
+영:浧:잠길 영, 앙금 영
+영:濴:물 졸졸 흐를 영
+영:碤:물 속 돌 영
+영:蠑:도마뱀 영
+영:营:
 영:営:
 영:嵘:
 영:栐:
 영:禜:
 영:攖:
 영:頴:
-영:癭:목 혹 영
-영:韺:풍류이름 영
 영:灜:
 영:覮:
 영:籝:
 영:颍:
 영:颕:
 영:颖:
-영:浧:잠길 영, 앙금 영
-영:濴:물 졸졸 흐를 영
-영:碤:물 속 돌 영
-영:蠑:도마뱀 영
 영:嬫:
 영:孆:
 영:孾:
 영혼절멸론:靈魂絶滅論:
 영홍문관사:領弘文館事:
 영화:榮華:
\98\81í\99\94\9a\8e畵:
\98\81í\99\94\98 畵:
 영화:英華:
 영화:英貨:
 영화:靈化:
 영화:英和:
-영화:映畵:
 영화가:映畵街:
 영화각본:映畵脚本:
 영화감독:映畵監督:
 예:裔:옷 뒷자락 예, 변방 예, 후손 예
 예:穢:더러울 예, 거칠 예
 예:洩:퍼질 예, 날개 훨훨칠 예
-예:隸:종 례, 노비 례, 검열할 례
 예:刈:풀 벨 예, 죽일 예
 예:乂:풀 벨 예, 다스릴 예
 예:倪:어릴 예, 도울 예, 끝 예
 예:汭:물 이름 예, 물 굽이 예
 예:蘂:蕊와 同字, 꽃술 예
 예:叡:밝을 예, 임금 예, 어질 예
+예:隸:종 례, 노비 례, 검열할 례
 예:翳:어조사 예, 깃 일산 예, 가려 숨길 예, 새이름 예
-예:瘞:
 예:繄:검푸른 비단 예, 탄식하는 소리 예
 예:睨:
 예:蕊:꽃술 예, 꽃 예
 예:曀:
 예:蛻:
 예:枘:자루 예
+예:拽:당길 예
+예:蜺:말매미 예, 암무지개 예
+예:薉:더러울 예
+예:鷖:갈매기 예, 봉황 예
+예:蕋:蕊의 俗字
+예:蚋:모기 예
+예:囈:잠꼬대할 예, 헛소리할 예
+예:瞖:눈에 백태 낄 예
+예:麑:아기사슴 예, 사자 예
+예:嫛:유순할 예, 갓난아이 예
+예:惢:
+예:掜:부칠 예, 비길 예, 잡을 예, 당길 예
+예:苅:벨 예, 자를 예
+예:瘞:
 예:羿:
 예:勩:
 예:蜹:
-예:拽:당길 예
-예:蜺:말매미 예, 암무지개 예
 예:曵:
 예:䓲:
-예:薉:더러울 예
 예:䛖:
-예:鷖:갈매기 예, 봉황 예
 예:輗:
-예:蕋:蕊의 俗字
-예:蚋:모기 예
 예:蓺:
 예:貎:
 예:䃜:
-예:囈:잠꼬대할 예, 헛소리할 예
 예:埶:
 예:堄:
 예:晲:
 예:㡼:
-예:瞖:눈에 백태 낄 예
-예:麑:아기사슴 예, 사자 예
 예:枍:
 예:瑿:
 예:蘙:
 예:预:
 예:鲵:
 예:鹥:
-예:嫛:유순할 예, 갓난아이 예
-예:惢:
-예:掜:부칠 예, 비길 예, 잡을 예, 당길 예
-예:苅:벨 예, 자를 예
 예:兿:
 예:呭:
 예:壡:
 오:旿:밝을 오, 대낮 오
 오:忤:거스릴 오, 미워할 오
 오:嗷:여럿이 걱정할 오
-오:杇:
 오:媪:할미 오, 땅귀신 오
 오:汙:汚와 同字
 오:遨:노닐 오
 오:鏖:무찌를 오, 구리동이 오
-오:悞:
-오:䫨:
 오:襖:도포 오
-오:吴:
-오:污:
-오:牾:
 오:迃:
 오:驁:준마 오, 깔볼 오
 오:媼:
 오:窹:아궁이 오
 오:迕:만날 오, 어길 오
 오:鼯:날다람쥐 오
-오:呉:
-오:洿:
 오:聱:못 들은채 할 오, 말 더듬거릴 오
-오:厫:
 오:唔:글 읽는 소리 오
 오:慠:거만할 오
 오:謷:중얼거릴 오, 거만할 오
 오:隩:감출 오, 물가 언덕 오
 오:捂:부닥칠 오, 거스릴 오
 오:鏊:번철 오
+오:仵:짝 오, 같을 오
+오:俣:갈래질 오
+오:圬:흙손 오
+오:噁:성낼 오
+오:嫯:업신여길 오
+오:茣:차조기 오
+오:杇:
+오:悞:
+오:䫨:
+오:吴:
+오:污:
+오:牾:
+오:呉:
+오:洿:
+오:厫:
 오:噢:
 오:鄔:
 오:嗸:
 오:廒:
 오:璈:
 오:㹳:
-오:仵:짝 오, 같을 오
 오:圫:
 오:嵨:
 오:嶅:
 오:鷔:
 오:㥿:
 오:鳌:
-오:俣:갈래질 오
-오:圬:흙손 오
 오:乌:
 오:呜:
 오:坞:
 오:误:
 오:钨:
 오:骜:
-오:噁:성낼 오
-오:嫯:업신여길 오
-오:茣:차조기 오
 오:乄:
 오:啎:
 오:埡:
 온:瘟:염병 온, 온역 온
 온:瑥:사람이름 온
 온:醞:술 빚을 온
-온:温:
 온:慍:성낼 온, 병 온
+온:氳:기운 어릴 온, 기운 성할 온
+온:韞:감출 온, 붉은 빛 온
+온:媼:
+온:昷:어질 온
+온:薀:마름 온, 쌓일 온
+온:轀:온량차 온
+온:熅:
+온:饂:밀 국수 온
+온:鰮:멸치 온
+온:温:
 온:愠:
 온:藴:
 온:蕰:
-온:氳:기운 어릴 온, 기운 성할 온
 온:氲:
-온:韞:감출 온, 붉은 빛 온
-온:媼:
 온:醖:
 온:馧:
-온:昷:어질 온
 온:鞰:
-온:薀:마름 온, 쌓일 온
-온:轀:온량차 온
 온:榲:
 온:蒕:
-온:熅:
 온:塭:
 온:瘒:
 온:鎾:
 온:辒:
 온:韫:
 온:鳁:
-온:饂:밀 국수 온
-온:鰮:멸치 온
 온:搵:
 온:桽:
 온:殟:
 온훈:溫燻:
 온훈법:溫燻法:
 올:兀:우뚝할 올, 움직이지 않을 올, 오똑할 올
+올:膃:해구 올, 살찔 올
+올:嗢:목 멜 올
 올:腽:
 올:杌:
 올:卼:
 올:屼:
-올:膃:해구 올, 살찔 올
 올:扤:
-올:嗢:목 멜 올
 올:矹:
 올:㐏:
 올:乯:
 옹:饔:아침밥 옹
 옹:癰:헌곳
 옹:顒:우러를 옹
-옹:痈:
 옹:喁:물고기 입 오물거릴 옹
 옹:蓊:옹풀 옹, 우거질 옹
 옹:雝:조화로울 옹, 학교 옹
 옹:罋:甕과 同字
 옹:禺:땅 이름 옹
 옹:廱:벽옹 옹
+옹:癕:등창 옹
+옹:痈:
 옹:臃:
 옹:䩺:
 옹:㙲:
 옹:㝘:
 옹:拥:
 옹:颙:
-옹:癕:등창 옹
 옹:勜:
 옹:嗈:
 옹:嗡:
 와:鍋:
 와:窪:도랑 와, 깊을 와, 맑은물 와
 와:娃:
-와:卧:
 와:洼:물 이름 와
 와:哇:음란한 소리 와, 게울 와
 와:媧:
 와:涴:
 와:譌:거짓 와, 와전될 와, 요사스런 말 와
 와:萵:상추 와, 부루 와
-와:鼃:
 와:囮:새 후릴 와
-와:吪:
-와:䨟:
 와:枙:옹이 와
 와:窊:웅덩이 와
+와:婐:정숙할 와, 단정할 와
+와:猧:와개 와
+와:卧:
+와:鼃:
+와:吪:
+와:䨟:
 와:捰:
 와:漥:
 와:鈋:
 와:莴:
 와:蜗:
 와:讹:
-와:婐:정숙할 와, 단정할 와
-와:猧:와개 와
 와:佤:
 와:咓:
 와:唩:
 완:脘:중완 완
 완:豌:동부 완, 완두 완
 완:惋:한탄할 완, 놀라 탄식할 완
-완:薍:
 완:岏:산 뾰족할 완
 완:蜿:
 완:盌:은 바리 완
 완:刓:깎을 완
-완:剜:
 완:涴:물 굽이쳐 흐를 완, 진흙 묻을 완
+완:忨:탐할 완, 사랑할 완
+완:垸:회 섞어 바를 완
+완:妧:좋을 완, 고울 완
+완:薍:
+완:剜:
 완:抏:
 완:輐:
-완:忨:탐할 완, 사랑할 완
 완:园:
 완:缓:
 완:顽:
-완:垸:회 섞어 바를 완
-완:妧:좋을 완, 고울 완
 완:唍:
 완:啘:
 완:埦:
 왕:旺:고울 왕, 해무리 왕, 성할 왕, 왕성할 왕
 왕:汪:물 출렁출렁할 왕, 연못 왕, 깊고넓을 왕
 왕:枉:굽을 왕, 원통할 왕
+왕:尫:절름발이 왕, 파리할 왕, 천상바라기 왕
+왕:迬:往과 同字
+왕:瀇:아득할 왕, 넓을 왕, 고인 물 썪어 냄새날 왕
 왕:徃:
 왕:尢:절름발이
-왕:尫:절름발이 왕, 파리할 왕, 천상바라기 왕
 왕:仼:
-왕:迬:往과 同字
 왕:㲿:
-왕:瀇:아득할 왕, 넓을 왕, 고인 물 썪어 냄새날 왕
 왕:尣:
 왕:尩:
 왕:尪:
 외:猥:더러울 외, 굽을 외, 섞일 외, 개 새끼 셋 낳을 외, 음란할 외
 외:巍:높을 외, 높고 튼 모양 외
 외:嵬:산 뾰족할 외, 산 울뚝질뚝할 외, 험할 외
-외:隈:
-외:廆:
 외:聵:배냇귀머거리 외
 외:煨:불에 묻어 구울 외, 그슬릴 외, 사람이름 외
-외:桅:
 외:隗:높을 외, 성씨 외
 외:磈:돌 사닥다리 외
 외:偎:사랑할 외, 가물거릴 외
 외:崴:평평치 아니할 외
-외:椳:
 외:碨:돌 자갈 땅 외, 바위 옹두라지 외
+외:嵔:산이름 외, 산 높을 외
+외:渨:더러울 외
+외:隈:
+외:廆:
+외:桅:
+외:椳:
 외:詴:
 외:懀:
 외:揋:
 외:腲:
 외:聩:
 외:鳂:
-외:嵔:산이름 외, 산 높을 외
-외:渨:더러울 외
 외:峞:
 외:徻:
 외:愄:
 요:橈:노 요, 돛대 요
 요:燿:비칠 요, 빛날 요
 요:蟯:촌백충 요
-요:么:
 요:幺:작을 요, 어릴 요, 작다 요
 요:徭:부릴 요
 요:澆:걸찰 요, 물 끌어올 요
 요:殀:단명할 요
 요:軺:
 요:蕘:나무할 요, 거칠 요
+요:遶:둘릴 요
+요:窅:움펑눈 요, 까마득할 요
+요:嚙:
+요:坳:凹와 同字
+요:鷂:장끼 요, 새매 요
+요:祅:재앙 요
+요:穾:깊숙할 요, 골방 요
+요:銚:
+요:墝:메마른 밭 요, 자갈 땅 요
+요:偠:허리 가늘 요
+요:喓:벌레소리 요
+요:嬈:예쁜체 할 요
+요:么:
 요:揺:
 요:謡:
 요:摇:
 요:窑:
-요:遶:둘릴 요
 요:瑶:
 요:窰:
-요:窅:움펑눈 요, 까마득할 요
-요:嚙:
-요:坳:凹와 同字
-요:鷂:장끼 요, 새매 요
 요:颻:
 요:㴭:
 요:尭:
-요:祅:재앙 요
-요:穾:깊숙할 요, 골방 요
-요:銚:
 요:傜:
 요:宎:
 요:袎:
 요:窔:
 요:䁏:
 요:䆗:
-요:墝:메마른 밭 요, 자갈 땅 요
 요:嶤:
 요:珧:
 요:芺:
 요:饶:
 요:鳐:
 요:鹞:
-요:偠:허리 가늘 요
-요:喓:벌레소리 요
-요:嬈:예쁜체 할 요
 요:仸:
 요:吆:
 요:嗂:
 욕:褥:요
 욕:縟:꾸밀
 욕:溽:유월 더위 욕, 무더울 욕
-욕:鵒:
 욕:蓐:새싹 욕, 가을 맡은 귀신 욕
+욕:鵒:
 욕:鄏:
 욕:昙:
 욕:缛:
 용:慵:게으를 용
 용:宂:번잡할 용, 바쁠 용, 떠돌아 다닐 용
 용:踴:뛸 용
-용:佣:
 용:憃:천치 용
-용:鄘:
 용:嵱:봉우리 쭝굿쭝굿할 용
-용:㼸:
 용:筩:
+용:硧:
+용:蛹:번데기 용
+용:傛:혁혁할 용, 몸 굽힐 용
+용:槦:병기 얹는 시렁 용
+용:佣:
+용:鄘:
+용:㼸:
 용:牗:
 용:摏:
 용:牅:
 용:髶:
-용:硧:
-용:蛹:번데기 용
 용:蹖:
 용:䢇:
 용:耸:
 용:镛:
 용:鲬:
 용:鳙:
-용:傛:혁혁할 용, 몸 굽힐 용
-용:槦:병기 얹는 시렁 용
 용:傇:
 용:勈:
 용:塎:
 우:虞:염려할 우, 즐거울 우, 갖출 우, 우제 지낼 우
 우:寓:살 우, 부탁할 우, 빙자할 우, 붙어살 우
 우:隅:모퉁이 우, 기슭 우
-우:嵎:산모퉁이
 우:禑:복
 우:雩:기우제 우, 무지개 우
 우:紆:얽힐 우, 굽을 우
 우:芋:토란 우
 우:藕:연뿌리 우
 우:玗:옥돌 우, 우기나무 우
+우:嵎:산모퉁이
 우:釪:요령 우, 바리때 우, 풍류그릇 우
 우:吁:
 우:亏:
 우:盱:
 우:喁:서로 부를 우
 우:竽:큰 생황 우
-우:訏:
 우:俁:
 우:迃:
-우:圩:
-우:穻:
 우:疣:
 우:耰:고무래 우, 곰방메 우
-우:㝢:
 우:禺:
 우:麀:암사슴 우
+우:麌:숫사슴 우
+우:庽:
+우:杅:
+우:鍝:귀고리 우
+우:俣:
+우:亴:
+우:偊:
+우:吽:개 싸울 우, 개 짖는 소리 우
+우:謣:망령되게 말할 우
+우:齲:충치 우
+우:訏:
+우:圩:
+우:穻:
+우:㝢:
 우:塸:
 우:櫌:
 우:苃:
 우:嚘:
-우:麌:숫사슴 우
 우:懮:
 우:訧:
 우:㘾:
 우:㚥:
 우:䁱:
-우:庽:
-우:杅:
-우:鍝:귀고리 우
 우:噳:
 우:扜:
 우:楀:
 우:䋅:
 우:䨞:
 우:叹:
-우:俣:
 우:优:
 우:忧:
 우:怄:
 우:邮:
 우:鱿:
 우:龋:
-우:亴:
-우:偊:
-우:吽:개 싸울 우, 개 짖는 소리 우
-우:謣:망령되게 말할 우
-우:齲:충치 우
 우:吘:
 우:媀:
 우:峟:
 욱:栯:산앵두 욱
 욱:稶:서직 무성할 욱, 서속이 우거진 모양 욱
 욱:燠:더울 욱
-욱:勗:
 욱:隩:
+욱:勗:
 욱:䤋:
 욱:薁:
 욱:稢:
 운:韵:韻과 同字
 운:惲:의논할 운, 혼후할 운
 운:沄:물 콸콸 흐를 운, 끓을 운
-운:餫:
-운:鄆:
 운:霣:떨어질 운, 천둥에 비 몰아올 운
 운:篔:왕대나무 운
+운:餫:
+운:鄆:
 운:鄖:
 운:溳:
 운:夽:
 울:鬱:향기로운 풀 울, 무성할 울
 울:蔚:고을이름 울
 울:亐:땅이름
+울:熨:
 울:欝:
 울:㭗:
-울:熨:
 울:菀:
 울:鬰:
 울:爩:
 원:洹:흐를 원, 물 이름 원
 원:円:
 원:冤:원통할 원, 원한 원
-원:貟:
 원:圜:
-원:逺:
 원:鵷:원추새 원
 원:蜿:굼틀거릴 원
-원:畹:
 원:黿:큰 자라 원
-원:晼:
 원:謜:천천히 말할 원, 기꺼울 원
+원:猨:猿과 同字
+원:杬:몸 주무를 원, 나무이름 원
+원:楥:떡갈나무 원, 실감개 원, 신골 원
+원:綩:
+원:芫:고기 잡는 풀 원, 여뀌 원
+원:薗:園과 同字
+원:鋺:저울 바탕 원
+원:騵:배 희고 갈기 검은 말 원
+원:貟:
+원:逺:
+원:畹:
+원:晼:
 원:圎:
 원:榞:
-원:猨:猿과 同字
 원:㤪:
 원:㥳:
 원:䲶:
-원:杬:몸 주무를 원, 나무이름 원
 원:夘:
 원:眢:
 원:踠:
-원:楥:떡갈나무 원, 실감개 원, 신골 원
 원:夗:
 원:溒:
 원:茒:
 원:鹓:
 원:鼋:
 원:䓕:
-원:綩:
-원:芫:고기 잡는 풀 원, 여뀌 원
-원:薗:園과 同字
-원:鋺:저울 바탕 원
-원:騵:배 희고 갈기 검은 말 원
 원:倇:
 원:傆:
 원:傊:
 위:蔿:풀 위, 성씨 위, 고을이름 위
 위:為:
 위:諉:핑계할 위, 버릴 위
-위:喂:
 위:闈:대궐안의 문 위
 위:衞:막을 위, 지킬 위, 핏기운 위, 나라이름 위
 위:逶:비틀거릴 위
 위:喟:한숨쉴 위
-위:猬:
 위:韙:옳을 위
 위:痿:습병 위, 잘름거릴 위, 음위증 위
 위:葳:초목 성할 위, 위유풀 위
-위:偽:
 위:撝:
 위:煒:벌그레할 위, 환할 위
 위:幃:향낭 위, 홑휘장 위
 위:熨:다리미 위, 고약 붙일 위
 위:韡:꽃 환히 필 위
-위:㙔:
 위:餧:먹일 위
+위:潙:
+위:骪:
+위:喂:
+위:猬:
+위:偽:
+위:㙔:
 위:蘤:
 위:骫:
-위:潙:
 위:罻:
 위:蝛:
 위:躗:
 위:徫:
 위:湋:
 위:硊:
-위:骪:
 위:縅:
 위:蜲:
 위:䦱:
 유:釉:물건 빛날 유
 유:籲:부르짖을 유
 유:帷:휘장 유
-유:襦:
 유:牖:엇살창 유, 들창 유, 밝을 유, 인도할 유
 유:壝:토담 유, 단 둘러쌓은 담 유
 유:囿:엔담 유, 고루할 유
-유:俞:
 유:腴:아랫배 살찔 유
 유:逌:빙그레할 유
-유:覦:
-유:喻:
 유:莠:가라지 유, 추할 유
-유:嚅:
-유:嵛:
 유:糅:섞일 유, 얽힐 유, 잡곡밥 유
-유:㓜:
 유:揉:풀 유, 부드럽게 할 유, 희일 유
 유:蕕:냄새나는 풀 유, 유풀 유
 유:蕤:더북할 유
-유:褎:
-유:輶:
 유:窬:판장문 유
 유:黝:검푸를 유, 검은칠할 유
+유:瘐:죄인 주려 죽을 유
+유:緌:
+유:窳:이지러질 유, 약할 유, 짐승이름 유
+유:讉:성낼 유
+유:呦:사슴 우는 소리 유, 새짐승 우는 소리 유
+유:鮪:상어 유
+유:蠕:
+유:褕:꿩의 깃으로 꾸민 옷 유, 쾌자 유
+유:泑:물빛이 검을 유, 물이름 유
+유:冘:머뭇거릴 유, 갈 유
+유:蚴:굼틀거릴 유
+유:蝤:하루살이 유
+유:鼬:청서 유, 족제비 유
+유:斿:깃발 유, 깃술 유, 면류관술 유
+유:瘉:癒와 同字
+유:蚰:노래기 유, 땅지네 유
+유:鞣:다룬 가죽 유, 마른 가죽 유
+유:龥:부르짖을 유
+유:襦:
+유:俞:
+유:覦:
+유:喻:
+유:嚅:
+유:嵛:
+유:㓜:
+유:褎:
+유:輶:
 유:蝣:
 유:褏:
 유:婾:
 유:曘:
 유:蜼:
 유:㳺:
-유:瘐:죄인 주려 죽을 유
-유:緌:
 유:浟:
-유:窳:이지러질 유, 약할 유, 짐승이름 유
 유:㽔:
 유:䛕:
 유:擩:
 유:槱:
 유:羑:
-유:讉:성낼 유
 유:毹:
 유:狖:
 유:薷:
 유:逰:
-유:呦:사슴 우는 소리 유, 새짐승 우는 소리 유
 유:濰:
 유:隃:
-유:鮪:상어 유
 유:媮:
 유:滺:
 유:㽥:
-유:蠕:
-유:褕:꿩의 깃으로 꾸민 옷 유, 쾌자 유
 유:卣:
 유:痏:
-유:泑:물빛이 검을 유, 물이름 유
 유:婑:
 유:楺:
 유:渪:
 유:甤:
 유:㺄:
 유:䘱:
-유:冘:머뭇거릴 유, 갈 유
-유:蚴:굼틀거릴 유
-유:蝤:하루살이 유
-유:鼬:청서 유, 족제비 유
 유:崳:
 유:怮:
 유:榆:
 유:颥:
 유:鲉:
 유:鲔:
-유:斿:깃발 유, 깃술 유, 면류관술 유
-유:瘉:癒와 同字
-유:蚰:노래기 유, 땅지네 유
-유:鞣:다룬 가죽 유, 마른 가죽 유
-유:龥:부르짖을 유
 유:丣:
 유:偤:
 유:匬:
 육:戮:죽일 륙, 육시할 륙, 욕할 륙
 육:堉:기름진 땅 육
 육:毓:기를 육, 어릴 육, 많을 육
-육:淯:
 육:儥:팔 육, 길 육
+육:淯:
 육:錥:
 육:哊:
 육:唷:
 윤:畇:
 윤:奫:물 깊을 윤, 물이 충충할 윤, 물이 층층한 윤
 윤:玧:귀막이 구슬 윤
+윤:昀:
+윤:鋆:
 윤:酳:
 윤:閠:
 윤:狁:
 윤:蝡:
 윤:㣧:
-윤:昀:
 윤:阭:
 윤:润:
 윤:赟:
 윤:闰:
-윤:鋆:
 윤:橍:
 윤:膶:
 윤:荺:
 율:栗:밤 률, 신주 재목 률, 단단할 률, 무서울 률, 공손할 률
 율:慄:두려울 률, 쭈그릴 률, 슬플 률, 떨 률
 율:聿:마침내 율, 지을 율, 오직 율, 스스로 율, 붓 율, 드디어 율
-율:茟:
 율:潏:물 흐를 율
-율:䢖:
 율:矞:송곳질할 율, 상서구름 율, 궤휼할 율, 귀신이름 율
+율:茟:
+율:䢖:
 율:欥:
 율:鴥:
 율:噊:
 융:戎:병장기 융, 싸움수레 융, 클 융, 너 융, 도울 융, 서쪽 오랑캐 융
 융:絨:삶은 실 융, 가는 베 융
 융:瀜:물 깊을 륭, 물깊은 모양 융
+융:狨:원숭이 융
 융:羢:
 융:漋:
 융:娀:
 융:㭜:
-융:狨:원숭이 융
 융:肜:
 융:駥:
 융:绒:
 은:圻:언덕 은
 은:慇:은근할 은, 공손할 은, 간절할 은
 은:訔:시비할 은
+은:听:벙긋거릴 은, 들을 은, 입이 큰 모양 은
+은:憖:물을 은, 공근할 은, 힘쓸 은, 서러워할 은
+은:嚚:어리석을 은, 말다툼할 은, 불칙하게 말할 은
+은:狺:뭇 개 짖는 소리 은
+은:溵:물소리 은, 물이름 은
+은:檼:집 마룻대 은, 대공 은
+은:癮:두드러기 은
+은:垽:해감 은, 찌끼 은
+은:鄞:땅이름 은
+은:圁:물이름 은
+은:珢:옥돌 은
+은:齗:잇몸 은, 말다툼할 은, 미워할 은
+은:齦:
 은:隠:
 은:隐:
-은:听:벙긋거릴 은, 들을 은, 입이 큰 모양 은
 은:穏:
 은:稳:
-은:憖:물을 은, 공근할 은, 힘쓸 은, 서러워할 은
 은:垦:
 은:㤙:
 은:檃:
-은:嚚:어리석을 은, 말다툼할 은, 불칙하게 말할 은
-은:狺:뭇 개 짖는 소리 은
 은:㥯:
 은:櫽:
-은:溵:물소리 은, 물이름 은
-은:檼:집 마룻대 은, 대공 은
-은:癮:두드러기 은
 은:泿:
 은:慭:
-은:垽:해감 은, 찌끼 은
-은:鄞:땅이름 은
 은:濦:
 은:磤:
 은:㶏:
 은:訚:
 은:银:
 은:龂:
-은:圁:물이름 은
-은:珢:옥돌 은
-은:齗:잇몸 은, 말다툼할 은, 미워할 은
-은:齦:
 은:乚:숨을
 은:嗯:
 은:峎:
 은휼:隱恤:
 은흑색:銀黑色:
 을:乙:새 을, 천간 이름 을, 굽힐 을, 생선의 창자 을, 모모 을
+을:鳦:제비 을
 을:圪:
 을:钇:
-을:鳦:제비 을
 을:釔:
 을:䎲:
 을골:乙骨:
 음:吟:읊을 음, 끙끙거릴 음, 탄식할 음, 턱 끄덕거릴 음, 노래할 음, 말 더듬을 음, 울 음
 음:淫:방탕할 음, 간음할 음, 음란할 음, 넘칠 음, 적실 음, 오랠 음
 음:蔭:덮을 음, 가릴 음, 그늘 음
-음:隂:
 음:喑:소리지를 음, 안간힘 쓸 음, 목 쉴 음
 음:愔:조용할 음, 화평할 음
 음:霪:장마 음
-음:䕃:
 음:崟:멧부리 음, 산 높을 음
+음:廕:덮을 음
+음:隂:
+음:䕃:
 음:飲:
 음:瘖:
 음:婬:
 음:荫:
 음:阴:
 음:饮:
-음:廕:덮을 음
 음:乑:
 음:侌:
 음:噖:
 의:薏:연밥 의, 율무 의
 의:艤:배 닿을 의, 배언덕에 댈 의
 의:錡:세발 가마 의, 쇠뇌틀 의, 휘뚝거릴 의
-의:医:
 의:猗:불 깐 개 의, 탄식할 의, 길 의
 의:嶷:산이름 의
 의:欹:아름답다할 의, 거룩하다할 의
-의:义:
 의:漪:물놀이칠 의
+의:儗:서로 못믿을 의, 참람할 의
+의:劓:코 베일 의, 베일 의
+의:螘:목 매어 죽는 벌레 의
+의:饐:밥 쉴 의
+의:凒:눈서리 쌓일 의
+의:礒:바위 의
+의:医:
+의:义:
 의:冝:
 의:扆:
 의:顗:
-의:儗:서로 못믿을 의, 참람할 의
 의:宐:
 의:檥:
 의:毉:
 의:竩:
 의:㼁:
-의:劓:코 베일 의, 베일 의
 의:禕:
-의:螘:목 매어 죽는 벌레 의
 의:旖:
 의:犄:
 의:薿:
 의:㠜:
 의:㦤:
-의:饐:밥 쉴 의
 의:譩:
 의:㩘:
 의:䝘:
 의:铱:
 의:镱:
 의:饻:
-의:凒:눈서리 쌓일 의
-의:礒:바위 의
 의:亄:
 의:偯:
 의:吚:
 이:荑:흰 비름 이, 베일 이, 벨 이
 이:彝:떳떳할 이, 법 이, 종묘 제기 이, 술통 이
 이:迤:든든할 이
+이:訑:자랑할 이
+이:詑:자랑할 이
+이:洟:콧물 이, 눈물 이, 못이름 이
+이:咿:선웃음칠 이, 책 읽는 소리 이
+이:珆:
+이:栮:버섯 이, 느타리 이
+이:尔:爾와 同字
+이:隶:밑 이, 미치다 이
+이:鮧:창자젓 이
+이:坨:
 이:頉:
 이:頤:
 이:羡:
 이:尒:
 이:异:
-이:訑:자랑할 이
 이:圯:
-이:詑:자랑할 이
 이:薾:
 이:迩:
-이:洟:콧물 이, 눈물 이, 못이름 이
 이:儞:
 이:匜:
 이:貮:
 이:洱:
 이:眤:
 이:輀:
-이:咿:선웃음칠 이, 책 읽는 소리 이
 이:杝:
 이:敡:
 이:眙:
 이:栭:
 이:酏:
 이:頥:
-이:珆:
 이:羠:
 이:苢:
 이:蛦:
 이:黟:
-이:栮:버섯 이, 느타리 이
 이:佁:
 이:刵:
 이:崺:
 이:㕥:
 이:㠯:
 이:䔬:
-이:尔:爾와 同字
-이:隶:밑 이, 미치다 이
 이:弐:
 이:诒:
 이:贰:
 이:饵:
 이:鲕:
 이:鸸:
-이:鮧:창자젓 이
-이:坨:
 이:乁:
 이:伿:
 이:佴:
 익:匿:숨을 닉, 숨길 닉, 덮어둘 닉, 몰래 붙을 닉, 쌀 닉, 술 담는 그릇 닉
 익:謚:웃을 익, 웃는모양 익
 익:瀷:강이름 익, 스며흐를 익
-익:榏:
 익:弋:주살 익, 취할 익, 홰 익, 검을 익, 벼슬이름 익, 오랑캐 익
 익:鷁:익새 익, 돛대 끝 바람개비 익
-익:釴:
 익:熤:빛날 익, 사람이름 익
+익:榏:
+익:釴:
 익:杙:
 익:嗌:
 익:艗:
 인:燐:도깨비불 인, 반딧불 인
 인:蚓:지렁이 인
 인:靭:韌과 同字, 질긴 고기 인
-인:堙:막을 인
 인:璘:옥빛 인
 인:茵:자리 인, 사철쑥 인
 인:絪:기운 인, 수삼 인
 인:靷:가슴걸이 인
 인:藺:골풀 인, 뇌양이 인
+인:堙:막을 인
 인:仞:길 인
 인:禋:제사지낼 인
 인:夤:조심할 인
+인:氤:기운성할 인
+인:裀:요 인
+인:婣:姻과 同字
+인:洇:湮과 同字
+인:扨:그러하나 인
+인:籾:벼 인
+인:芢:씨 인
 인:訒:
 인:軔:
 인:儿:어진사람
-인:氤:기운성할 인
 인:囙:
-인:裀:요 인
 인:紉:
 인:闉:
 인:戭:
 인:牣:
-인:婣:姻과 同字
 인:諲:
 인:韌:
 인:鏔:
 인:釼:
 인:陻:
 인:㣼:
-인:洇:湮과 同字
 인:仭:
 인:欭:
 인:歅:
 인:铟:
 인:韧:
 인:骃:
-인:扨:그러하나 인
-인:籾:벼 인
-인:芢:씨 인
 인:亻:사람인변
 인:凐:
 인:刄:
 일:佚:편안할 일, 편할 일
 일:馹:역말 일, 역마 일
 일:軼:앞지를 일
-일:釰:
 일:泆:끊을 일
+일:釰:
 일:皼:
 일:衵:
 일:壱:
 임:恁:생각할 임, 믿을 임
 임:妊:아이밸 임
 임:衽:옷깃 임
-임:袵:
 임:飪:익힐 임
 임:絍:짤 임, 길쌈할 임
+임:銋:젖을 임
+임:袵:
 임:餁:
 임:紝:
-임:銋:젖을 임
 임:棯:
 임:腍:
 임:鈓:
 자:孜:힘쓸 자, 부지런할 자
 자:茨:가시나무 자, 납가새 자
 자:薺:
-자:兹:
 자:茲:무성할 자
-자:姊:
 자:貲:재물 자
 자:眦:眥와 同字
-자:扻:
 자:孶:부지런할 자
 자:訾:헐뜯을 자
 자:赭:붉은흙 자
 자:觜:털뿔 자
 자:泚:맑을 자
 자:柘:산뽕나무 자
-자:煑:
-자:趦:
-자:朿:
-자:胔:
 자:耔:복돋을 자
 자:鷓:자고 자
 자:眥:흘길 자
-자:趑:
 자:鶿:가마우지 자
 자:牸:암컷 자
+자:胾:고깃점 자
+자:呰:주차할 자
+자:鎡:호미 자
+자:莿:풀가시 자
+자:鮓:젓 자
+자:嬨:계집성품너그러고순할 자
+자:孖:쌍둥이 자
+자:茈:지치 자
+자:虸:
+자:蚱:
+자:頿:코밑수염 자
+자:兹:
+자:姊:
+자:扻:
+자:煑:
+자:趦:
+자:朿:
+자:胔:
+자:趑:
 자:餈:
 자:孳:
 자:嵫:
 자:庛:
 자:訿:
 자:澬:
-자:胾:고깃점 자
 자:㧗:
-자:呰:주차할 자
 자:榨:
-자:鎡:호미 자
 자:杍:
 자:啫:
 자:栥:
 자:稵:
 자:㹀:
 자:䵭:
-자:莿:풀가시 자
-자:鮓:젓 자
 자:呲:
 자:姕:
 자:橴:
 자:鲊:
 자:鲝:
 자:鹧:
-자:嬨:계집성품너그러고순할 자
-자:孖:쌍둥이 자
-자:茈:지치 자
-자:虸:
-자:蚱:
-자:頿:코밑수염 자
 자:刾:
 자:吇:
 자:啙:
 작:酢:초 작
 작:怍:부끄러울 작
 작:焯:밝을 작
-작:妁:
 작:碏:삼갈 작
-작:鷟:
 작:柞:나무이름 작
-작:婥:
-작:爝:
-작:皭:
 작:岝:산 높을 작
 작:汋:삶을 작
 작:犳:아롱 짐승 작
+작:斱:쪼갤 작
+작:妁:
+작:鷟:
+작:婥:
+작:爝:
+작:皭:
 작:圴:
 작:扚:
 작:禚:
 작:猎:
 작:绰:
 작:鹊:
-작:斱:쪼갤 작
 작:仢:
 작:妰:
 작:岞:
 잔:棧:잔교 잔, 사다리 잔
 잔:孱:잔약할 잔
 잔:潺:물이 줄줄 흐르는 모양 잔, 물졸졸흐르는 모양 잔
-잔:残:
 잔:戔:쌓일 잔
 잔:剗:깍을 잔
+잔:驏:안장 얹지 않은 말 잔
+잔:残:
 잔:醆:
 잔:僝:
 잔:刬:
 잔:栈:
 잔:盏:
 잔:骣:
-잔:驏:안장 얹지 않은 말 잔
 잔:嶘:
 잔:拃:
 잔:桟:
 잠:岑:봉우리 잠, 높을 잠
 잠:潜:潛의 俗字
 잠:蚕:누에 잠
-잠:蹔:
-잠:蘸:
-잠:埁:
 잠:涔:괸물 잠
 잠:梣:
 잠:笒:
 잠:濳:潛의 俗字
+잠:蹔:
+잠:蘸:
+잠:埁:
 잠:簮:
 잠:熸:
 잠:篸:
 잠획:潛劃:
 잡:雜:섞일 잡, 잡될 잡
 잡:閘:
+잡:襍:雜의 本字
+잡:磼:산 높을 잡
+잡:霅:
+잡:卡:관 잡
+잡:囃:장단 잡을 잡
+잡:眨:눈 깜작일 잡
 잡:匝:
 잡:迊:
-잡:襍:雜의 本字
 잡:雑:
-잡:磼:산 높을 잡
 잡:帀:
-잡:霅:
 잡:啑:
 잡:煠:
 잡:咂:
 잡:币:
 잡:杂:
-잡:卡:관 잡
-잡:囃:장단 잡을 잡
-잡:眨:눈 깜작일 잡
 잡:咔:
 잡:嘁:
 잡:抸:
 장:欌:장농 장, 장롱 장
 장:暲:햇발이 돋아올 장, 밝을 장
 장:将:
-장:壮:
-장:墙:
-장:蔵:
 장:装:裝의 俗字
-장:荘:
 장:戕:죽일 장
-장:膓:
 장:瘴:장기 장
 장:嶂:높고 가파른 산 장
-장:奨:
 장:鏘:금옥 소리 장
-장:臓:
-장:贜:
 장:糚:妝과 同字
-장:塲:
 장:漳:강이름 장
 장:萇:나무 이름 장
 장:奘:클 장
-장:髒:
-장:駔:
 장:賬:치부책 장
 장:麞:노루 장
-장:槳:
 장:牂:암양 장
+장:妝:꾸밀 장
+장:嬙:궁녀 장
+장:廧:담 장
+장:橦:
+장:鄣:나라이름 장
+장:傽:놀랄 장
+장:羘:수양 장
+장:餦:산자 장
+장:壮:
+장:墙:
+장:蔵:
+장:荘:
+장:膓:
+장:奨:
+장:臓:
+장:贜:
+장:塲:
+장:髒:
+장:駔:
+장:槳:
 장:慞:
 장:嶈:
 장:螿:
-장:妝:꾸밀 장
 장:扙:
 장:斨:
 장:粻:
 장:樁:
-장:嬙:궁녀 장
-장:廧:담 장
-장:橦:
-장:鄣:나라이름 장
 장:蘠:
 장:醤:
 장:摪:
 장:长:
 장:驵:
 장:鳉:
-장:傽:놀랄 장
-장:羘:수양 장
-장:餦:산자 장
 장:丬:
 장:仉:
 장:仧:
 재:齎:탄식할 재, 쌀 재, 가질 재
 재:灾:災와 同字
 재:纔:겨우 재, 비롯할 재
-재:賫:
-재:㢤:
 재:菑:
 재:榟:
+재:夈:
+재:扗:
+재:崽:
+재:賫:
+재:㢤:
 재:䝴:
 재:賷:
 재:㦲:
 재:财:
 재:载:
 재:龇:
-재:夈:
-재:扗:
-재:崽:
 재:侢:
 재:傤:
 재:儎:
 쟁:錚:쇳소리 쟁그렁거릴 쟁, 징 쟁
 쟁:諍:간할 쟁
 쟁:箏:쟁 쟁, 풍경 쟁
-쟁:争:
 쟁:崢:가파를 쟁, 산 높을 쟁
 쟁:鎗:금석소리 쟁, 창 쟁, 총 쟁
-쟁:峥:
-쟁:筝:
 쟁:瞠:똑바로 볼 쟁
 쟁:鐺:
+쟁:琤:옥소리 쟁
+쟁:猙:밉살스럴 쟁, 짐승이름 쟁
+쟁:争:
+쟁:峥:
+쟁:筝:
 쟁:掁:
 쟁:崝:
-쟁:琤:옥소리 쟁
 쟁:掙:
 쟁:䋫:
 쟁:挣:
 쟁:狰:
 쟁:诤:
 쟁:铮:
-쟁:猙:밉살스럴 쟁, 짐승이름 쟁
 쟁:噌:
 쟁:崡:
 쟁:棦:
 저:箸:젓가락 저
 저:詛:저주할
 저:狙:원숭이 저, 엿볼 저, 살필 저
-저:觝:찌를 저, 받을 저, 씨름 저
 저:苧:모시 저
 저:儲:쌓을 저, 버금 저, 용납할 저
 저:楮:닥나무 저, 종이돈 저, 감매나무 저
 저:樗:가죽나무 저
 저:菹:김치 저, 푸서리 저
 저:姐:맏누이 저, 아가씨 저, 교만할 저
+저:觝:찌를 저, 받을 저, 씨름 저
 저:藷:마 저, 감자 저
 저:齟:이 어긋날 저
 저:詆:꾸짖을 저, 알소할 저, 비방할 저
 저:氐:낮을 저, 오랑캐 이름 저, 이를 저, 근본 저, 별이름 저
-저:伹:
 저:宁:조회 받는 곳 저, 멈출 저
 저:柢:뿌리 저
-저:筯:
 저:瀦:물 괼 저, 못 저, 웅덩이 저
 저:苴:암삼 저, 꾸러미 저, 대지팡이 저, 신바닥 저
-저:泞:
-저:葅:
-저:趄:
 저:杼:북 저, 도토리 저
 저:袛:속적삼 저
-저:翥:
 저:潴:瀦와 同字
 저:牴:찌를 저, 대강 저, 씨름 저, 당할 저
-저:竚:
-저:滁:
 저:蛆:구더기 저, 지네 저
 저:羝:숫양 저
 저:褚:주머니 저, 쌓을 저, 옷에 솜 둘 저
 저:豬:돼지 저, 물이 괼 저, 못이름 저
 저:罝:짐승 그물 저
-저:䃴:
 저:岨:돌산에 흙 덮일 저
 저:芧:
+저:陼:모래섬 저, 둔덕 저, 언덕 저
+저:伹:
+저:筯:
+저:泞:
+저:葅:
+저:趄:
+저:翥:
+저:竚:
+저:滁:
+저:䃴:
 저:眡:
 저:櫧:
 저:篨:
 저:贮:
 저:这:
 저:龃:
-저:陼:모래섬 저, 둔덕 저, 언덕 저
 저:仾:
 저:劯:
 저:唨:
 적:翟:꿩의 깃 적, 황후의 옷 적
 적:鏑:화살촉 적
 적:荻:갈대 적, 쑥 적
-적:踖:
-적:啇:
 적:糴:쌀 사들일 적, 빠를 적
 적:逖:멀 적
 적:覿:볼 적
 적:幘:
+적:磧:돌무더기 적, 모래벌 적
+적:樀:추녀 적, 도토마리 적, 방망이 적
+적:菂:연밥 적
+적:馰:별배기 적, 소태성 적
+적:踖:
+적:啇:
 적:篴:
 적:靮:
 적:廸:
-적:磧:돌무더기 적, 모래벌 적
 적:頔:
 적:苖:
 적:逷:
 적:籊:
 적:擿:
 적:讁:
-적:樀:추녀 적, 도토마리 적, 방망이 적
 적:墑:
 적:䟱:
 적:嚁:
 적:谪:
 적:贼:
 적:镝:
-적:菂:연밥 적
-적:馰:별배기 적, 소태성 적
 적:唙:
 적:啲:
 적:嘀:
 전:畑:화전 전, 밭 전
 전:靦:무안할 전, 물끄러미 볼 전
 전:牋:글 전, 표 전, 문체이름 전
-전:銭:
-전:烇:
 전:畋:사냥할 전
 전:腆:두터울 전, 지극할 전, 많이 차려놓을 전
-전:竱:
 전:顓:어리석을 전, 오로지 전
 전:翦:베어 없앨 전, 멸할 전
 전:戔:
 전:瑱:귀막이옥 전, 옥이름 전
 전:痊:병 나을 전
 전:湔:빨 전, 씻을 전, 물 번질 전
-전:瑑:
 전:縳:
 전:旃:기 전, 말 그칠 전
 전:躔:햇길 전, 별자리 전
 전:巓:산 꼭대기 전
-전:戦:
-전:跧:
-전:戬:
-전:笺:
 전:羶:노린내날 전
 전:荃:향풀 전, 전풀 전
-전:闐:
-전:剸:
 전:磚:벽돌 전, 기와 전
-전:填:
 전:戩:
 전:鸇:구진매 전
-전:氊:
 전:吮:빨 전
 전:甎:벽돌 전, 기와 전
-전:饘:
 전:邅:머뭇거릴 전
-전:㙉:
 전:囀:새 지저귈 전, 후렴 전
 전:飦:범벅 전, 된죽 전
+전:澶:물이름 전
+전:揃:가를 전, 자를 전, 가지런히 할 전
+전:栴:향나무 전
+전:屇:구멍 전
+전:餰:된죽 전
+전:鱣:전어 전
+전:槇:
+전:錪:솥 전, 쇠 전
+전:畠:밭 전
+전:籛:성씨 전
+전:膞:썰 전, 질그릇 만드는 틀 전
+전:輇:달 전, 잴 전
+전:嫥:아름다울 전
+전:癜:어루러기 전
+전:鄽:가게 전
+전:鋑:
+전:靛:푸른 대 전
+전:鬋:수염 깎을 전, 귀밑 털 드릴 전
+전:銭:
+전:烇:
+전:竱:
+전:瑑:
+전:戦:
+전:跧:
+전:戬:
+전:笺:
+전:闐:
+전:剸:
+전:填:
+전:氊:
+전:饘:
+전:㙉:
 전:橏:
 전:倎:
 전:纒:
 전:譾:
 전:顛:
 전:淟:
-전:澶:물이름 전
 전:沺:
-전:揃:가를 전, 자를 전, 가지런히 할 전
 전:搌:
 전:瘨:
 전:縓:
 전:謭:
-전:栴:향나무 전
 전:槙:
 전:滇:
-전:屇:구멍 전
-전:餰:된죽 전
-전:鱣:전어 전
 전:傎:
 전:瀍:
 전:牷:
-전:槇:
-전:錪:솥 전, 쇠 전
 전:拴:
 전:瑼:
 전:硂:
 전:窴:
 전:篿:
 전:䇳:
-전:畠:밭 전
-전:籛:성씨 전
-전:膞:썰 전, 질그릇 만드는 틀 전
-전:輇:달 전, 잴 전
 전:搷:
 전:晪:
 전:朘:
 전:鳣:
 전:鹯:
 전:䩄:
-전:嫥:아름다울 전
-전:癜:어루러기 전
-전:鄽:가게 전
-전:鋑:
-전:靛:푸른 대 전
-전:鬋:수염 깎을 전, 귀밑 털 드릴 전
 전:偂:
 전:厧:
 전:叀:
 절:癤:멍울 절, 부스럼 절
 절:窃:竊의 俗字
 절:軼:
-절:卩:병부
 절:晢:밝을 절, 비칠 절
-절:晣:
 절:岊:산 모퉁이 우뚝 내밀 절
+절:卩:병부
+절:晣:
 절:蕝:
 절:嶻:
 절:絕:
 점:岾:고개 점, 절이름 점
 점:鮎:메기 점
 점:玷:옥의 티 점, 흠각 점
-점:坫:
 점:覘:
 점:佔:엿볼 점, 숙일 점
 점:簟:삿자리 점, 대 이름 점
-점:阽:
 점:苫:이엉 점, 거적자리 점, 글씨 흘려 쓸 점
 점:墊:빠질 점, 축축할 점
-점:痁:
 점:黏:붙일 점, 풀 점
 점:颭:펄렁거릴 점
 점:蔪:풀 벨 점, 보리 팰 점
+점:笘:
+점:蛅:
+점:坫:
+점:阽:
+점:痁:
 점:扂:
 점:蒧:
 점:㸃:
 점:渐:
 점:觇:
 점:飐:
-점:笘:
-점:蛅:
 점:唸:
 점:嚸:
 점:奌:
 접:檝:
 접:蹀:저벅저벅 걸을 접
 접:跕:미끄러질 접
-접:艓:
 접:椄:나무 접붙일 접, 형벌틀 접, 문설주 접
+접:蜨:나비 접
+접:艓:
 접:褋:
 접:䐑:
 접:鲽:
-접:蜨:나비 접
 접:挕:
 접:擑:
 접:聑:
 정:湞:물이름 정
 정:鋌:화살촉 정, 달음박질할 정, 쇳덩이 정
 정:証:간할 정
+정:灯:
+정:筳:대쪽 정
+정:靚:단장할 정, 밝을 정
+정:酲:술병 정, 술 깰 정
+정:梃:외줄기 정, 막대 정, 꼿꼿할 정
+정:怔:황겁할 정, 가슴 두근두근할 정
+정:叮:단단히 부탁할 정, 정성스러울 정
+정:棖:문설주 정, 막대 정
+정:莛:풀 줄거리 정, 들보 정
+정:婷:아리따울 정, 쌀쌀할 정
+정:琤:
+정:珵:노리개 정, 패옥 정
+정:疔:헌데 정
+정:鋥:
+정:桯:서안 정, 걸상 정
+정:佂:두려워할 정
+정:婧:
+정:掟:둘러칠 정
+정:遉:순라군 정, 염탐할 정
 정:静:
 정:净:
 정:㝎:
 정:鞓:
-정:灯:
 정:浄:
 정:泟:
-정:筳:대쪽 정
 정:㫌:
-정:靚:단장할 정, 밝을 정
 정:埥:
-정:酲:술병 정, 술 깰 정
 정:頲:
-정:梃:외줄기 정, 막대 정, 꼿꼿할 정
 정:矴:
 정:侹:
 정:涏:
 정:飣:
 정:凈:
 정:阱:
-정:怔:황겁할 정, 가슴 두근두근할 정
 정:琔:
 정:赬:
-정:叮:단단히 부탁할 정, 정성스러울 정
-정:棖:문설주 정, 막대 정
-정:莛:풀 줄거리 정, 들보 정
-정:婷:아리따울 정, 쌀쌀할 정
 정:仃:
-정:琤:
 정:頳:
-정:珵:노리개 정, 패옥 정
 정:揁:
 정:裎:
-정:疔:헌데 정
-정:鋥:
 정:烶:
 정:脡:
 정:蜓:
 정:睜:
 정:誔:
 정:㵾:
-정:桯:서안 정, 걸상 정
 정:旍:
 정:椗:
 정:濎:
 정:顶:
 정:颋:
 정:饤:
-정:佂:두려워할 정
-정:婧:
-정:掟:둘러칠 정
-정:遉:순라군 정, 염탐할 정
 정:丼:
 정:侱:
 정:啨:
 제:齎:
 제:儕:동배 제
 제:躋:오를 제
-제:苐:
-제:剤:
-제:褆:
 제:擠:물리칠 제
-제:滛:
 제:隄:堤와 同字
 제:娣:여동생 제
 제:禔:복 제
+제:睇:흘끗 볼 제
+제:稊:강아지풀 제
+제:瑅:제당 제
+제:鯷:메기 제
+제:緹:붉은 비단 제
+제:踶:찰 제
+제:猘:미친개 제
+제:蹏:蹄와 同字
+제:韲:양념할 제
+제:鍗:큰 가마 제
+제:鮧:복 제
+제:苐:
+제:剤:
+제:褆:
+제:滛:
 제:斉:
 제:隮:
 제:磾:
 제:癠:
 제:穧:
 제:虀:
-제:睇:흘끗 볼 제
-제:稊:강아지풀 제
-제:瑅:제당 제
 제:穄:
 제:綈:
 제:鶗:
-제:鯷:메기 제
-제:緹:붉은 비단 제
-제:踶:찰 제
-제:猘:미친개 제
 제:嚌:
 제:淛:
 제:傺:
 제:鵜:
 제:渧:
 제:鞮:
-제:蹏:蹄와 同字
 제:嗁:
 제:懠:
-제:韲:양념할 제
 제:僀:
 제:泲:
 제:漈:
 제:鹈:
 제:齐:
 제:齑:
-제:鍗:큰 가마 제
-제:鮧:복 제
 제:亝:
 제:俤:
 제:厗:
 조:槽:구유 조, 마구 조
 조:晁:朝의 古字, 아침 조
 조:璪:면루관 드림 옥 조, 면류관드림옥 조
-조:条:
 조:噪:떠들썩할 조
 조:皁:하인 조
 조:祧:조묘 조
 조:徂:갈 조
-조:阼:
 조:胙:복 조
-조:皂:
 조:糶:쌀 내어 팔 조
 조:竈:부엌 조
 조:厝:措와 同字
-조:慥:
-조:脁:
-조:粜:
 조:刁:바라 조
 조:絛:
 조:譟:시끄러울 조
 조:鵰:수리 조
 조:澡:씻을 조
-조:罩:
-조:旐:
 조:蜩:매미 조
 조:殂:죽을 조
 조:鼂:朝와 同字
 조:臊:누릴 조
 조:嘈:지껄일 조
+조:佻:방정맞을 조
+조:琱:
+조:蔦:담쟁이 조
+조:銚:쟁개비 조
+조:糙:매조미쌀 조
+조:找:채울 조
+조:洮:
+조:誂:꾈 조
+조:傮:마칠 조
+조:嬥:날씬할 조
+조:懆:근심할 조
+조:笊:조리 조
+조:絩:견직물 날실 수 조
+조:艚:거룻배 조
+조:鈟:낚시 조
+조:鋽:불리지 않은 쇠 조
+조:鯛:도미 조
+조:条:
+조:阼:
+조:皂:
+조:慥:
+조:脁:
+조:粜:
+조:罩:
+조:旐:
 조:朓:
 조:啁:
 조:爼:
 조:窵:
-조:佻:방정맞을 조
-조:琱:
-조:蔦:담쟁이 조
 조:鯈:
-조:銚:쟁개비 조
 조:窱:
 조:螬:
-조:糙:매조미쌀 조
 조:曌:
 조:沠:
 조:珇:
 조:釂:
 조:駋:
 조:䆴:
-조:找:채울 조
-조:洮:
-조:誂:꾈 조
 조:晀:
 조:碉:
 조:竃:
 조:鲦:
 조:鲷:
 조:鸟:
-조:傮:마칠 조
-조:嬥:날씬할 조
-조:懆:근심할 조
-조:笊:조리 조
-조:絩:견직물 날실 수 조
-조:艚:거룻배 조
-조:鈟:낚시 조
-조:鋽:불리지 않은 쇠 조
-조:鯛:도미 조
 조:伄:
 조:刟:
 조:叼:
 족:簇:모일 족, 가는대 족
 족:鏃:화살촉 족
 족:蔟:
-족:哫:
 족:瘯:피부병 이름 족
+족:哫:
 족:镞:
 족:踿:
 족:㞺:
 족흔:足痕:
 존:存:있을 존
 존:尊:존귀할 존, 높을 존
-존:燇:
 존:拵:꽂을 존
 존:鐏:
+존:燇:
 존:橂:
 존:袸:
 존:銌:
 졸:拙:서툴 졸, 졸할 졸
 졸:猝:갑자기 졸
 졸:倅:
+졸:脺:
 졸:捽:
 졸:㐒:
-졸:脺:
 졸:稡:
 졸:椊:
 졸:踤:
 종:悰:즐길 종, 즐거울 종
 종:棕:종려나무 종
 종:倧:상고 신인 종, 옛적신인 종
-종:従:
 종:蹤:자취 종
-종:縦:
 종:瘇:수종 종
 종:螽:누리 종
-종:嵸:
 종:椶:棕과 同字
-종:騣:
 종:蓯:
+종:粽:주악 종
+종:伀:두려워할 종
+종:慒:생각할 종
+종:柊:방망이 종
+종:樅:전나무 종
+종:瑽:패옥소리 종
+종:従:
+종:縦:
+종:嵸:
+종:騣:
 종:蓗:
 종:鬃:
 종:賨:
 종:踨:
-종:粽:주악 종
 종:徖:
 종:忪:
-종:伀:두려워할 종
 종:倊:
 종:尰:
 종:朡:
 종:锺:
 종:骔:
 종:骙:
-종:慒:생각할 종
-종:柊:방망이 종
-종:樅:전나무 종
-종:瑽:패옥소리 종
 종:傱:
 종:刣:
 종:喠:
 좌:佐:도울 좌
 좌:座:자리 좌
 좌:挫:꺽을 좌, 꺾을 좌
-좌:㘴:
-좌:脞:
 좌:髽:북상투 좌
 좌:剉:꺽을 좌
 좌:莝:여물 좌
+좌:痤:뾰루지 좌
+좌:㘴:
+좌:脞:
 좌:袏:
 좌:锉:
-좌:痤:뾰루지 좌
 좌:侳:
 좌:咗:
 좌:夎:
 주:侏:난쟁이 주, 난장이 주
 주:枓:
 주:齟:
-주:厨:
 주:霔:장마 주
 주:肘:팔꿈치 주
-주:蹰:
 주:儔:무리 주
 주:拄:떠받칠 주
 주:裯:홑이불 주
 주:遒:다가설 주
 주:賙:진휼할 주
+주:輈:끌채 주
+주:侜:속일 주
+주:幬:휘장 주
+주:腠:살결 주
+주:迬:
+주:霌:운우 모양 주
+주:硃:주사 주
+주:蔟:태주 주
+주:尌:세울 주
+주:籒:주문 주
+주:蛀:나무좀 주
+주:詋:呪와 同字
+주:丟:갈 주
+주:趎:사람이름 주
+주:鉒:쇳돌 주
+주:鼄:거미 주
+주:厨:
+주:蹰:
 주:躕:
 주:譸:
 주:籀:
-주:輈:끌채 주
 주:黈:
 주:㴻:
 주:邾:
 주:紸:
 주:䛆:
 주:麈:
-주:侜:속일 주
-주:幬:휘장 주
-주:腠:살결 주
-주:迬:
-주:霌:운우 모양 주
 주:伷:
 주:噣:
 주:淍:
-주:硃:주사 주
 주:咮:
 주:晭:
 주:跦:
 주:㕑:
-주:蔟:태주 주
 주:椆:
 주:珘:
-주:尌:세울 주
 주:唒:
 주:妵:예쁠, 사람 이름
 주:揍:
 주:㕀:
-주:籒:주문 주
-주:蛀:나무좀 주
-주:詋:呪와 同字
 주:怞:
 주:楱:
 주:疰:
 주:驻:
 주:鸼:
 주:䌷:
-주:丟:갈 주
-주:趎:사람이름 주
-주:鉒:쇳돌 주
-주:鼄:거미 주
 주:丶:불똥
 주:厾:
 주:咒:
 준:寯:모일 준
 준:焌:굽을 준, 불땔 준
 준:罇:樽·尊과 同字
-준:凖:
 준:蹲:걸터앉을 준
 준:隼:새매 준
 준:餕:대궁 준
 준:撙:누를 준
-준:睃:
 준:惷:어수선할 준
-준:㕙:
 준:綧:피륙의 폭의 넓이 준
 준:噂:수군거릴 준
-준:䥴:
 준:踆:그칠 준
-준:䞭:
 준:皴:주름 준
+준:埻:과녘 준
+준:墫:樽·罇과 同字
+준:鐏:창고달 준
+준:鱒:송어 준
+준:鵔:금계 준
+준:凖:
+준:睃:
+준:㕙:
+준:䥴:
+준:䞭:
 준:踳:
 준:㑺:
 준:㻐:
 준:馂:
 준:骏:
 준:鳟:
-준:埻:과녘 준
-준:墫:樽·罇과 同字
-준:鐏:창고달 준
-준:鱒:송어 준
-준:鵔:금계 준
 준:偆:
 준:僔:
 준:壿:
 중:重:무거울 중
 중:衆:무리 중
 중:仲:버금 중
+중:眾:衆의 本字
 중:褈:
 중:众:
-중:眾:衆의 本字
 중:妕:
 중:媑:
 중:狆:
 즉:則:
 즉:卽:곧 즉
 즉:即:卽의 俗字
-즉:鯽:
 즉:喞:
+즉:鯽:
 즉:唧:
 즉:萴:
 즉:崱:
 즉흥적:卽興的:
 즐:櫛:빗 즐
 즐:騭:수말 즐
-즐:瀄:
 즐:喞:두런거릴 즐
+즐:瀄:
 즐:堲:
 즐:栉:
 즐:骘:
 즙:汁:즙 즙, 진액 즙
 즙:葺:기울 즙, 지붕일 즙
 즙:楫:노 즙, 돛대 즙
-즙:濈:
 즙:檝:楫과 同字
 즙:蕺:삼백초 즙
+즙:濈:
 즙:湒:
 즙:霵:
 즙고산경:緝古算經:
 증:甑:시루 증
 증:繒:비단 증
 증:証:
-증:曽:
 증:嶒:산 높고 험할 증
 증:矰:주살 증
+증:罾:어망 증
+증:曽:
 증:増:
 증:璔:
 증:橧:
 증:鄫:
 증:熷:
 증:驓:
-증:罾:어망 증
 증:䎖:
 증:缯:
 증:赠:
 지:芷:구리때 지, 백지 지
 지:蜘:거미 지
 지:墀:계단 위의 공지 지
-지:遅:
-지:㫖:
 지:秪:벼 처음 익을 지
-지:秖:
 지:躓:넘어질 지
 지:箎:
 지:舐:핥을 지
-지:祬:
-지:䘭:
-지:輊:
 지:踟:머뭇거릴 지
 지:篪:저 이름 지
 지:鷙:맹금 지
 지:榰:주춧돌 지
 지:坻:모래섬 지
-지:胝:
-지:鳷:
 지:扺:손바닥 지
 지:軹:굴대 머리 지
+지:泜:강 이름 지
+지:阯:터 지
+지:痣:사마귀 지
+지:鮨:젓갈 지
+지:遅:
+지:㫖:
+지:秖:
+지:祬:
+지:䘭:
+지:輊:
+지:胝:
+지:鳷:
 지:帋:
 지:䑛:
-지:泜:강 이름 지
 지:搘:
 지:蚳:
-지:阯:터 지
 지:厎:
 지:墬:
 지:鋕:
 지:驇:
-지:痣:사마귀 지
 지:彽:
 지:恉:
 지:抧:
 지:轾:
 지:迟:
 지:鸷:
-지:鮨:젓갈 지
 지:俧:
 지:倁:
 지:凪:
 직:織:짤 직
 직:稷:기장 직, 메기장 직
 직:稙:올벼 직
+직:禝:사람 이름 직
 직:溭:
 직:㮨:
-직:禝:사람 이름 직
 직:聀:
 직:犆:
 직:樴:
 진:溱:많을 진, 성할 진
 진:桭:평고대 진, 대청 진
 진:蔯:더워지기 진, 사철쑥 진
-진:真:
 진:趁:좇을 진
-진:禛:
-진:鎮:
 진:儘:盡과 同字
 진:瑱:
-진:趂:
 진:稹:떨기로 날 진
+진:蓁:우거질 진
+진:珒:옥 이름 진
+진:鬒:숱 많을 진
+진:侲:동자 진
+진:鉁:보배 진
+진:螴:설렐 진
+진:真:
+진:禛:
+진:鎮:
+진:趂:
 진:疢:
 진:眹:
 진:胗:
 진:䫃:
-진:蓁:우거질 진
 진:溍:
 진:珎:
-진:珒:옥 이름 진
 진:姫:
-진:鬒:숱 많을 진
-진:侲:동자 진
-진:鉁:보배 진
 진:敶:
 진:榗:
 진:眕:
 진:镇:
 진:阵:
 진:陈:
-진:螴:설렐 진
 진:侭:
 진:嗪:
 진:嚍:
 질:蛭:거머리 질
 질:瓆:사람 이름 질
 질:絰:질 질
-질:耋:
 질:軼:
 질:躓:
-질:晊:
 질:騭:
 질:垤:개밋둑 질
-질:抶:
-질:銍:
-질:袠:
 질:郅:고을 이름 질
 질:鑕:모루 질
 질:蒺:납가새 질
+질:咥:
+질:耋:
+질:晊:
+질:抶:
+질:銍:
+질:袠:
 질:瓞:
 질:袟:
 질:礩:
 질:祑:
-질:咥:
 질:昳:
 질:翐:
 질:挃:
 짐:朕:나 짐
 짐:斟:술 따를 짐, 짐작할 짐
 짐:鴆:짐새 짐
-짐:酙:
 짐:酖:
+짐:酙:
 짐:㯢:
 짐:鸩:
 짐:栚:
 집:潗:샘솟을 집, 물끓을 집
 집:鏶:판금 집, 쇳조각 집
 집:戢:그칠 집
+집:咠:참소할 집
 집:諿:
 집:縶:
 집:㠍:
 집:慹:
-집:咠:참소할 집
 집:㙫:
 집:㠎:
 집:䌖:
 징:懲:혼날 징, 징계할 징
 징:澄:맑을 징
 징:澂:澄과 同字
-징:徴:
 징:瀓:맑을 징
-징:憕:
 징:瞪:바로 볼 징
-징:惩:
 징:癥:적취 징
+징:徴:
+징:憕:
+징:惩:
 징:㠞:
 징개:懲改:
 징거:徵據:
 차:侘:실의할 차, 자랑할 차
 차:槎:뗏목 차
 차:苴:
+차:瑳:깨끗할 차
+차:佽:도울 차
+차:奓:오만할 차
+차:硨:조개 이름 차
+차:岔:갈림길 차
+차:偖:찢을 차
+차:徣:빌릴 차
 차:姹:
 차:䂨:
 차:劄:
 차:汊:
 차:杈:
 차:莗:
-차:瑳:깨끗할 차
 차:唶:
 차:扯:
-차:佽:도울 차
 차:撦:
-차:奓:오만할 차
-차:硨:조개 이름 차
 차:鹺:
-차:岔:갈림길 차
 차:挓:
 차:訍:
 차:跐:
 차:舣:
 차:车:
 차:鹾:
-차:偖:찢을 차
-차:徣:빌릴 차
 차:佌:
 차:偧:
 차:偨:
 착:窄:좁을 착, 끼일 착
 착:齪:악착할 착, 악착같을 착
 착:斲:깎을 착
-착:斵:
 착:戳:창으로 찌를 착
+착:擉:찌를 착
+착:斵:
 착:斮:
 착:諑:
 착:娖:
 착:浞:
-착:擉:찌를 착
 착:笮:
 착:娕:
 착:珿:
 찬:粲:정미 찬, 정한 쌀밥 찬
 찬:飡:
 찬:澯:맑을 찬
-찬:賛:
-찬:湌:
 찬:攢:모일 찬
-찬:纉:
 찬:爨:불땔 찬
+찬:賛:
 찬:欑:모일 찬
-찬:㸑:
 찬:巑:높이 솟을 찬
+찬:趲:놀라 흩어질 찬
+찬:儧:모일 찬
+찬:儹:모을 찬
+찬:劗:끊을 찬
+찬:湌:
+찬:纉:
+찬:㸑:
 찬:攅:
 찬:讃:
 찬:酇:
-찬:趲:놀라 흩어질 찬
 찬:篡:
 찬:濽:
 찬:穳:
 찬:鑚:
-찬:儧:모일 찬
 찬:瓉:
 찬:禶:
-찬:儹:모을 찬
 찬:攛:
 찬:灒:
 찬:籫:
 찬:酂:
 찬:镩:
 찬:馔:
-찬:劗:끊을 찬
 찬:儏:
 찬:囋:
 찬:殩:
 찰:札:패 찰, 편지 찰
 찰:擦:뿌릴 찰, 문지를 찰
 찰:紮:감을 찰, 묶을 찰
-찰:咱:
 찰:扎:뺄 찰
 찰:拶:핍박할 찰
+찰:咱:
 찰:哳:
 찰:巀:
 찰:剎:
 참:塹:구덩이 참
 참:懺:뉘우칠 참
 참:叅:의논할 참
-참:参:
-참:惨:
 참:慚:부끄러울 참
 참:驂:곁마 참
 참:譖:참소할 참
-참:僣:
 참:黲:검푸르죽죽할 참
-참:㕘:
 참:巉:가파를 참
 참:嶄:높을 참
 참:槧:판 참
-참:叁:
 참:鑱:보습 참
 참:憯:슬퍼할 참
 참:摻:
-참:叄:
 참:攙:찌를 참
 참:饞:탐할 참
-참:旵:
 참:欃:살별 참
-참:䜛:
 참:儳:어긋날 참
+참:毚:토끼 참
+참:鏨:끌 참
+참:参:
+참:惨:
+참:僣:
+참:㕘:
+참:叁:
+참:叄:
+참:旵:
+참:䜛:
 참:墋:
 참:謲:
 참:懴:
 참:馋:
 참:骖:
 참:黪:
-참:毚:토끼 참
-참:鏨:끌 참
 참:傪:
 참:嚵:
 참:壍:
 창:艙:선창 창
 창:悵:슬퍼할 창
 창:搶:닿을 창
-창:囱:
 창:鬯:술
 창:刱:비롯할 창
-창:牕:
 창:倀:미칠 창
 창:蹌:추창할 창
 창:鎗:
 창:氅:새털 창
 창:惝:멍할 창
 창:窻:창 창
-창:淐:
 창:憃:
-창:摐:
-창:剏:
-창:剙:
-창:牎:
 창:傖:천할 창
 창:鏦:
 창:窗:창 창
-창:畼:
 창:瑲:옥 소리 창
 창:鋹:
 창:鶬:
+창:凔:찰 창
+창:戧:다칠 창
+창:錆:
+창:椙:
+창:囱:
+창:牕:
+창:淐:
+창:摐:
+창:剏:
+창:剙:
+창:牎:
+창:畼:
 창:瑒:
 창:篬:
 창:厰:
 창:阊:
 창:鲳:
 창:鸧:
-창:凔:찰 창
-창:戧:다칠 창
-창:錆:
-창:椙:
 창:仺:
 창:僘:
 창:刅:
 채:釵:비녀 채
 채:寀:녹봉 채, 동관 채
 채:砦:울타리 채, 울타리칠 채
+채:茝:구리때 채
+채:棌:참나무 채
 채:瘵:
 채:蠆:
-채:茝:구리때 채
 채:瘥:
-채:棌:참나무 채
 채:倸:
 채:囆:
 채:债:
 책:策:채찍 책, 꾀 책
 책:柵:울짱 책, 우리 책
 책:翟:꿩 책
-책:栅:
 책:簀:살평상 책
-책:册:
 책:嘖:외칠 책
 책:磔:찢을 책
 책:幘:건 책
+책:笧:책 상자 책
+책:蚱:벼메뚜기 책
+책:栅:
+책:册:
 책:筞:
 책:䇿:
 책:㥽:
 책:帻:
 책:箦:
 책:责:
-책:笧:책 상자 책
-책:蚱:벼메뚜기 책
 책:厇:
 책:嫧:
 책:憡:
 처:妻:아내 처
 처:悽:슬퍼할 처
 처:凄:쓸쓸할 처
-처:䖏:
 처:萋:풀 성하게 우거진 모양 처
-처:处:
-처:処:
 처:淒:쓸쓸할 처
-처:覰:
 처:覷:엿볼 처
-처:觑:
 처:褄:깃의 가 처
 처:郪:고을 이름 처
+처:䖏:
+처:处:
+처:処:
+처:覰:
+처:觑:
 처:刞:
 처:竌:
 처:紪:
 척:剔:바를 척, 없앨 척
 척:蹠:밟을 척, 뛸 척
 척:惕:두려워할 척
-척:褁:
 척:跖:발바닥 척
-척:慼:
 척:摭:주울 척
 척:躑:머뭇거릴 척
-척:蹐:
 척:俶:시작할 척
+척:蜴:도마뱀 척
+척:塉:메마른 땅 척
+척:捗:
+척:呎:길이 단위 척
+척:坧:기지 척
+척:褁:
+척:慼:
+척:蹐:
 척:掦:
 척:鶺:
-척:蜴:도마뱀 척
 척:隲:
-척:塉:메마른 땅 척
 척:蹢:
 척:踢:
 척:墄:
-척:捗:
 척:墌:
 척:鼜:
 척:掷:
 척:涤:
 척:踯:
 척:鹡:
-척:呎:길이 단위 척
-척:坧:기지 척
 척:傶:
 척:叺:
 척:嵴:
 천:蚕:지렁이 천
 천:荐:거듭할 천
 천:倩:예쁠 천
-천:迁:
-천:遄:
 천:濺:흩뿌릴 천
 천:洊:이를 천
 천:蕆:경계할 천
-천:刋:
 천:蒨:대가 우거질 천
-천:燀:
 천:茜:
-천:賎:
 천:芊:풀 무성할 천
+천:俴:엷을 천
+천:儃:머뭇거릴 천
+천:辿:천천히 걸을 천
+천:祆:하늘 천
+천:僢:어그러질 천
+천:瓩:킬로그램 천
+천:粁:킬로메트르 천
+천:臶:거듭 천
+천:靝:하늘 천
+천:迁:
+천:遄:
+천:刋:
+천:燀:
+천:賎:
 천:栫:
 천:韉:
-천:俴:엷을 천
 천:拪:
 천:剶:
 천:奷:
 천:荈:
-천:儃:머뭇거릴 천
-천:辿:천천히 걸을 천
 천:梴:
 천:棈:
 천:洤:
 천:浅:
 천:践:
 천:钎:
-천:祆:하늘 천
 천:冁:
 천:忏:
 천:扦:
 천:阐:
 천:鞯:
 천:鳈:
-천:僢:어그러질 천
-천:瓩:킬로그램 천
-천:粁:킬로메트르 천
-천:臶:거듭 천
-천:靝:하늘 천
 천:侟:
 천:兛:
 천:兲:
 철:綴:꿰맬 철, 맺을 철
 철:凸:볼록할 철, 뾰족할 철
 철:輟:그칠 철
-철:鉄:
 철:銕:鐵의 古字
 철:掇:주울 철
 철:啜:마실 철
-철:腏:
-철:鐡:
 철:惙:근심할 철
-철:畷:
 철:餮:탐할 철
-철:䮕:
 철:歠:마실 철
 철:剟:깎을 철
+철:埑:밝을 철
+철:錣:물미 철
+철:飻:탐할 철
+철:鉄:
+철:腏:
+철:鐡:
+철:畷:
+철:䮕:
 철:醊:
 철:㯙:
 철:悊:
 철:辙:
 철:铁:
 철:锇:
-철:埑:밝을 철
-철:錣:물미 철
-철:飻:탐할 철
 철:勶:
 철:叕:
 철:啠:
 첨:甛:달 첨, 단 첨
 첨:忝:더럽힐 첨
 첨:簷:처마 첨
-첨:甜:
 첨:憸:
 첨:檐:처마 첨
 첨:槧:편지 첨
 첨:襜:행주치마 첨
+첨:栝:
+첨:惉:팰 첨
+첨:瀸:적실 첨
+첨:幨:휘장 첨
+첨:櫼:쐐기 첨
+첨:甜:
 첨:韂:
 첨:籖:
-첨:栝:
 첨:悿:
 첨:湉:
 첨:掭:
-첨:惉:팰 첨
 첨:沗:
 첨:裧:
-첨:瀸:적실 첨
 첨:冿:
 첨:噡:
 첨:婖:
 첨:裣:
 첨:谄:
 첨:锘:
-첨:幨:휘장 첨
-첨:櫼:쐐기 첨
 첨:厃:
 첨:嶦:
 첨:敁:
 첩:堞:성가퀴 첩, 담 첩
 첩:睫:속눈썹 첩, 속눈섭 첩
 첩:褶:덧옷 첩, 겹옷 첩
-첩:輙:
 첩:喋:재잘거릴 첩
 첩:鰈:
 첩:怗:고요할 첩
-첩:㡇:
 첩:褺:겹옷 첩
+첩:倢:빠를 첩
+첩:呫:맛 볼 첩, 귀에 대고 소근거릴 첩, 앙징할 첩
+첩:輙:
+첩:㡇:
 첩:疂:
 첩:倿:
 첩:氎:
 첩:谍:
 첩:贴:
 첩:辄:
-첩:倢:빠를 첩
-첩:呫:맛 볼 첩, 귀에 대고 소근거릴 첩, 앙징할 첩
 첩:偼:
 첩:媫:
 첩:崨:
 청:廳:관청 청
 청:菁:부추꽃 청, 초목무성한 모양 청
 청:鯖:청어 청
-청:青:
 청:倩:
-청:清:
 청:听:
-청:㕔:
-청:聼:
 청:凊:서늘할 청
 청:圊:뒷간 청
+청:婧:
+청:蜻:귀뚜라미 청
+청:鶄:교청새 청
+청:青:
+청:清:
+청:㕔:
+청:聼:
 청:聴:
 청:廰:
 청:厅:
 청:请:
 청:鲭:
 청:䴖:
-청:婧:
-청:蜻:귀뚜라미 청
-청:鶄:교청새 청
 청:厛:
 청:夝:
 청:掅:
 체:剃:머리 깎을 체, 머리깍을 체
 체:体:몸 체
 체:軆:몸 체
-체:遆:
-체:滞:
-체:逓:
-체:禘:
 체:砌:섬돌 체
-체:掣:
 체:棣:산앵두나무 체
 체:彘:돼지 체
 체:泚:
 체:蕞:
 체:蔕:작은 가시 체
-체:遰:
 체:薙:
+체:蒂:작은 가시 체
+체:殢:나른할 체
+체:靆:구름 낄 체
+체:嚏:재채기 할 체
+체:髰:
+체:遆:
+체:滞:
+체:逓:
+체:禘:
+체:掣:
+체:遰:
 체:杕:
 체:躰:
 체:髢:
 체:疐:
 체:蝃:
 체:䙗:
-체:蒂:작은 가시 체
 체:嵽:
 체:螮:
-체:殢:나른할 체
-체:靆:구름 낄 체
 체:餟:
 체:屜:
 체:懘:
 체:递:
 체:䗖:
 체:䴘:
-체:嚏:재채기 할 체
-체:髰:
 체:叇:
 체:嚔:
 체:墆:
 초:噍:먹을 초
 초:岧:산이 높을 초
 초:踔:
-초:椘:
 초:燋:홰 초
 초:鷦:뱁새 초
 초:顦:야윌 초
 초:劭:
 초:俏:
-초:䎐:
 초:趠:멀 초
-초:憷:
 초:僬:밝게 살필 초
 초:嶕:높을 초
 초:鍬:가래 초
+초:偢:얼이 빠져 있을 초
+초:隹:
+초:嫶:수척할 초
+초:耖:밭 거듭 갈 초
+초:鍫:가래 초
+초:齠:이를 갈 초
+초:椘:
+초:䎐:
+초:憷:
 초:岹:
 초:弨:
 초:撨:
 초:眧:
-초:偢:얼이 빠져 있을 초
-초:隹:
 초:檚:
 초:膲:
 초:芀:
 초:锹:
 초:鹪:
 초:龆:
-초:嫶:수척할 초
-초:耖:밭 거듭 갈 초
-초:鍫:가래 초
-초:齠:이를 갈 초
 초:仦:
 초:仯:
 초:僺:
 촉:囑:부탁할 촉
 촉:矗:곧을 촉, 우뚝 솟을 촉, 우뚝할 촉
 촉:鏃:
-촉:嘱:
 촉:躅:자취 촉, 강동강동 뛸 촉, 철쭉꽃 촉
-촉:瞩:
 촉:矚:볼 촉
 촉:髑:해골 촉
+촉:爥:비칠 촉
+촉:曯:비칠 촉
+촉:薥:촉규화 촉, 자귀밥 촉
+촉:嘱:
+촉:瞩:
 촉:斸:
 촉:瘃:
 촉:蠋:
-촉:爥:비칠 촉
 촉:劚:
-촉:曯:비칠 촉
 촉:歜:
 촉:灟:
 촉:触:
 촉:烛:
 촉:㔉:
-촉:薥:촉규화 촉, 자귀밥 촉
 촉:亍:
 촉:孎:
 촉:斶:
 촌:村:마을 촌, 밭집 촌, 시골 촌
 촌:忖:헤아릴 촌, 짐작할 촌
 촌:邨:村과 同字, 마을 촌
-촌:刌:
 촌:吋:인치(inch) 촌
+촌:刌:
 촌:屗:
 촌:澊:
 촌:籿:
 총:蔥:파 총, 파 뿌리 총, 푸를 총
 총:憁:바쁠
 총:葱:풀 더북할 총
+총:驄:총이말 총
+총:蓯:풀 더북할 총
+총:鏦:창 총, 찌를 총
+총:騘:驄과 同字
 총:冢:
 총:捴:
 총:総:
 총:匆:
 총:偬:
 총:漎:
-총:驄:총이말 총
 총:怱:
 총:緫:
 총:聦:
 총:傯:
-총:蓯:풀 더북할 총
 총:棇:
 총:潨:
 총:聡:
-총:鏦:창 총, 찌를 총
-총:騘:驄과 同字
 총:忩:
 총:璁:
 총:藂:
 최:璀:옥빛 찬란할 최, 구슬 주렁주렁 달릴 최
 최:漼:깊을 최, 고을 최, 눈물 줄줄 흘릴 최, 눈서리 쌓일 최
 최:縗:상복 최, 상옷 최
-최:㝡:
-최:嗺:
 최:脧:
 최:嘬:물 최, 산적 한 입에 넣을 최
 최:磪:험하고 높을 최
+최:㝡:
+최:嗺:
 최:墔:
 최:慛:
 최:槯:
 추:麤:성길 추, 클 추, 거칠 추
 추:蒭:芻와 同字
 추:瘳:병 나을 추, 덜릴 추
-추:趍:
 추:惆:실심할 추, 섭섭할 추
 추:簉:버금 추, 가지런히 날 추
 추:陬:벼루 추, 정월 추, 부끄러울 추, 마을 추
 추:啾:두런거릴 추, 찍찍거릴 추
 추:愀:
 추:箒:비 추
-추:篘:
 추:搥:북 칠 추
 추:帚:비 추, 털 추
 추:鞦:그네 추, 말고들개 추
 추:捶:종아리 칠 추, 짓찧을 추
 추:縋:줄에 달릴 추
 추:魋:북상투 추
-추:鯫:
-추:麁:
 추:娵:젊을 추, 물고기 추, 예쁜 여자 추
-추:萑:
 추:騅:청부루말 추
 추:鰌:미꾸라지 추, 빙자할 추, 해추 추
-추:崷:
-추:橻:
-추:鄹:
-추:㨨:
 추:縐:주름 추, 구길 추
 추:鍬:
 추:鶖:두루미 추
 추:鶵:
-추:寉:
-추:棰:
-추:菆:
 추:妯:
 추:蝤:
 추:隹:새 추
+추:揫:묶을 추, 거둘 추, 모을 추
+추:鵻:아롱비둘기 추
+추:麄:
+추:龝:秋의 古字
+추:趍:
+추:篘:
+추:鯫:
+추:麁:
+추:萑:
+추:崷:
+추:橻:
+추:鄹:
+추:㨨:
+추:寉:
+추:棰:
+추:菆:
 추:揂:
 추:棷:
 추:煼:
 추:鳅:
 추:鹙:
 추:䝙:
-추:揫:묶을 추, 거둘 추, 모을 추
-추:鵻:아롱비둘기 추
-추:麄:
-추:龝:秋의 古字
 추:侴:
 추:僽:
 추:吜:
 축:蹙:찡그릴 축, 쭈그러질 축
 축:筑:비파 축
 축:竺:나라이름 축
-축:踧:
-축:柷:
 축:舳:고물 축, 배 꼬리 축
 축:蹜:발 끌어 디딜 축
-축:滀:
 축:豖:발 얽은 돼지걸음 축
-축:拀:
 축:槭:단풍나무 축
-축:閦:
 축:妯:동서 축
+축:鼀:두꺼비 축
+축:踧:
+축:柷:
+축:滀:
+축:拀:
+축:閦:
 축:笁:
 축:蓫:
 축:䠞:
 축:缩:
 축:轴:
-축:鼀:두꺼비 축
 축:丒:
 축:傗:
 축:嘼:
 출:出:날 출, 게울 출, 도망할 출, 보일 출, 낳을 출, 물러갈 출, 생질 출
 출:黜:내칠 출, 물리칠 출
 출:朮:삽주뿌리 출
+출:秫:차조 출
 출:术:
 출:怵:
 출:絀:
-출:秫:차조 출
 출:岀:
 출:础:
 출:绌:
 충:沖:깊을 충, 온화할 충, 어릴 충
 충:冲:깊을 충, 온화할 충, 어릴 충
 충:虫:벌레 충
-충:种:
 충:忡:근심할 충
+충:珫:
+충:艟:
+충:种:
 충:䖝:
 충:翀:
 충:盅:
-충:珫:
-충:艟:
 충:揰:
 충:浺:
 충:漴:
 췌:揣:
 췌:惴:두려워할 췌
 췌:顇:
-췌:赘:
 췌:疩:
+췌:赘:
 췌:忰:
 췌객:贅客:
 췌거:贅居:
 취:鷲:독수리 취
 취:嘴:부리 취
 취:揣:잴 취, 시험할 취, 요량할 취
-취:酔:
 취:觜:부리 취
 취:毳:솜털 취, 연하고 부드러울 취
+취:冣:쌓을 취, 모을 취
+취:橇:
+취:酔:
 취:竁:
 취:翆:
 취:骤:
 취:鹫:
-취:冣:쌓을 취, 모을 취
-취:橇:
 취:噿:
 취:嶉:
 취:槜:
 치:梔:치자 치
 치:淄:물이름 치, 검을 치
 치:輜:짐수레 치, 휘장 친 수레 치
-치:耻:
 치:寘:둘 치, 폐할 치, 쉴 치
 치:鴟:솔개 치, 수알치 치, 부엉이 치, 말똥구리 치, 토란 치, 마음대로 날릴 치, 올빼미 치
 치:螭:
 치:廁:뒷간 치, 평상 가장자리 치, 섞일 치, 버금 치
 치:巵:잔 치, 연지 치
-치:歯:
-치:懥:
 치:菑:따비밭 치
 치:錙:저울눈 치, 조금 치
-치:䐉:
 치:褫:옷 빼앗을 치, 벗을 치, 넋 잃을 치
 치:豸:발 없는 벌레 치, 풀 치, 해치양 치, 발없는벌레의총칭 치
 치:絺:가는 칡베 치, 가는 갈포 치
-치:媸:
 치:薙:풀 깎을 치
-치:夂:뒤처져오다
-치:偫:
 치:哆:입 딱 벌일 치
 치:畤:제터 치
-치:眵:
 치:卮:술잔 치, 연지 치
 치:鵄:솔개 치
+치:跱:머뭇거릴 치, 주저할 치, 갖출 치
+치:阤:떨어질 치, 헐릴 치, 언덕 치, 사태날 치
+치:黐:
+치:痓:풍병 치, 악할 치
+치:鯔:숭어 치
+치:鴙:雉와 同字
+치:耻:
+치:歯:
+치:懥:
+치:䐉:
+치:媸:
+치:夂:뒤처져오다
+치:偫:
+치:眵:
 치:稺:
 치:觶:
 치:乿:
 치:廌:
-치:跱:머뭇거릴 치, 주저할 치, 갖출 치
 치:值:
 치:椔:
 치:歭:
 치:騺:
 치:㨖:
 치:㱀:
-치:阤:떨어질 치, 헐릴 치, 언덕 치, 사태날 치
-치:黐:
 치:庤:
 치:滍:
 치:瓻:
 치:鲻:
 치:鸱:
 치:齿:
-치:痓:풍병 치, 악할 치
-치:鯔:숭어 치
-치:鴙:雉와 同字
 치:俿:
 치:傂:
 치:卶:
 칙:則:법칙 칙, 본받을 칙, 모범 칙, 조목 칙
 칙:勅:신칙할 칙, 칙령 칙
 칙:飭:갖출 칙, 닦을 칙, 부지런할 칙
+칙:敕:경계할 칙, 다스릴 칙, 삼갈 칙, 바를 칙, 칙서 칙, 기릴 칙, 신칙할 칙
 칙:恜:
 칙:侙:
-칙:敕:경계할 칙, 다스릴 칙, 삼갈 칙, 바를 칙, 칙서 칙, 기릴 칙, 신칙할 칙
 칙:慗:
 칙:遫:
 칙:鶒:
 친:親:사랑할 친, 친할 친, 몸소 친, 일가 친, 사돈 친
 친:襯:속옷 친, 접근할 친, 베풀 친
 친:櫬:관 친, 무궁화나무 친, 땔나무 친
+친:齔:이 갈 친, 어릴 친
+친:藽:
 친:嚫:
 친:瀙:
 친:䞋:
 친:榇:
 친:衬:
 친:龀:
-친:齔:이 갈 친, 어릴 친
-친:藽:
 친:儬:
 친:媇:
 친:寴:
 침:琛:보배 침
 침:諶:
 침:忱:믿을 침, 정성 침
-침:祲:
 침:沉:沈의 俗字
 침:駸:말 몰아 달릴 침
 침:鋟:새길 침
 침:寖:젖을 침, 점점 침
 침:梣:
 침:椹:모탕 침, 도끼바탕 침, 토막 침
+침:郴:땅이름 침
+침:祲:
 침:碪:
 침:伔:
 침:寑:
 침:针:
 침:锓:
 침:骎:
-침:郴:땅이름 침
 침:兓:
 침:唚:
 침:埐:
 쾌:快:기분이 좋을 쾌, 시원할 쾌, 빠를 쾌, 쾌할 쾌
 쾌:獪:간교할 쾌, 교활할 쾌
 쾌:夬:결단할 쾌, 나누어 정할 쾌, 괘 이름 쾌
-쾌:儈:
 쾌:噲:목구멍 쾌, 훨할 쾌
+쾌:儈:
 쾌:侩:
 쾌:哙:
 쾌:叏:
 타:咤:꾸짖을 타, 슬플 타, 뿜을 타, 쩍쩍 씹는소리 타
 타:拖:拕와 同字, 당길 타
 타:迤:어정거릴 타
-타:堕:
 타:駄:馱의 俗字
-타:陁:
 타:躱:피할 타
 타:沱:물이 갈래질 타, 큰 비 타, 눈물이 흐를 타
-타:它:
 타:詑:
 타:跎:미끄러질 타
 타:詫:자랑할 타, 풍칠 타, 신통할 타
 타:佗:다를 타, 저 타, 마음에 든든할 타, 더할 타, 입을 타, 짊어질 타
-타:吒:
 타:鼉:자라 타
 타:駞:駞와 同字
-타:酡:
 타:柁:키 타
+타:拕:끌 타, 당길 타
+타:橢:둥글길죽할 타, 수레통 가운데그릇 타, 길죽한 그릇 타
+타:鮀:모래무지 타
+타:垞:
+타:阤:
+타:坨:
+타:驒:
+타:鴕:타조 타
+타:堕:
+타:陁:
+타:它:
+타:吒:
+타:酡:
 타:嚲:
 타:㙐:
-타:拕:끌 타, 당길 타
 타:垜:
 타:咜:
 타:奼:
-타:橢:둥글길죽할 타, 수레통 가운데그릇 타, 길죽한 그릇 타
-타:鮀:모래무지 타
 타:沲:
-타:垞:
-타:阤:
 타:媠:
 타:嶞:
 타:朵:
 타:驼:
 타:鸵:
 타:鼍:
-타:坨:
-타:驒:
-타:鴕:타조 타
 타:刴:
 타:剁:
 타:咃:
 탁:琸:사람이름 탁
 탁:拆:터질 탁, 찢어질 탁, 열릴 탁
 탁:橐:전대 탁, 자루 탁, 도가니 탁, 공잇소리 탁, 짐승이름 탁
-탁:乇:
-탁:槖:
 탁:涿:물방울 떨어질 탁, 칠 탁, 물이름 탁, 땅이름 탁
 탁:逴:멀 탁, 절름거릴 탁, 뛰어날 탁
 탁:籜:대 껍질 탁
 탁:踔:우뚝 설 탁, 앙감질 탁
-탁:椓:
-탁:侂:
 탁:趠:
-탁:跅:
-탁:魠:
 탁:沰:떨어뜨릴 탁, 돌 던질 탁, 떨어질 탁
 탁:矺:나무이름 탁
 탁:蘀:떨어질 탁, 마를 탁
+탁:乇:
+탁:槖:
+탁:椓:
+탁:侂:
+탁:跅:
+탁:魠:
 탁:仛:
 탁:斀:
 탁:杔:
 탄:坦:너그러울 탄, 평평할 탄, 넓을 탄
 탄:嘆:한숨쉴 탄, 탄식할 탄
 탄:殫:다할 탄
+탄:癱:중풍증 탄, 사지 틀릴 탄
+탄:攤:열 탄, 펼칠 탄
+탄:憻:坦과 同字
+탄:驒:돈짝무늬총이말 탄
 탄:惮:
 탄:殚:
 탄:弹:
 탄:吞:
-탄:癱:중풍증 탄, 사지 틀릴 탄
-탄:攤:열 탄, 펼칠 탄
 탄:瘓:
 탄:撣:
 탄:僤:
 탄:瘫:
 탄:绽:
 탄:诞:
-탄:憻:坦과 同字
-탄:驒:돈짝무늬총이말 탄
 탄:怹:
 탄:擹:
 탄:暺:
 탄흔:彈痕:
 탈:脫:벗어날 탈, 간략할 탈, 뼈 바를 탈, 그르칠 탈, 벗을 탈
 탈:奪:빼앗을 탈, 잃어버릴 탈, 좁은 길 탈, 깎을 탈
+탈:侻:간사할 탈, 가벼울 탈, 간략할 탈
 탈:梲:
 탈:敓:
-탈:侻:간사할 탈, 가벼울 탈, 간략할 탈
 탈:夺:
 탈:捝:
 탈:脱:
 탐:貪:탐할 탐, 욕심낼 탐
 탐:耽:즐길 탐, 귀 축 늘어질 탐, 웅크리고 볼 탐, 즐거울 탐, 깊고 멀 탐
 탐:眈:노려볼 탐, 즐길 탐
+탐:酖:술 즐길 탐
+탐:嗿:여럿이 먹는 소리 탐
+탐:忐:
 탐:醓:
 탐:撢:
-탐:酖:술 즐길 탐
 탐:躭:
 탐:贪:
 탐:赕:
-탐:嗿:여럿이 먹는 소리 탐
-탐:忐:
 탐:僋:
 탐:沊:
 탐:賧:
 탑:塔:탑 탑
 탑:搭:모뜰 탑, 박을 탑, 탈 탑
 탑:榻:평상 탑, 모직 탑, 자리 탑
-탑:闒:
 탑:鰈:
 탑:搨:비문 박을 탑, 베낄 탑
 탑:塌:낮은 땅 탑, 초벌갈 탑, 떨어질 탑
+탑:傝:답답할 탑, 불안할 탑, 어리석을 탑, 용렬할 탑
+탑:闒:
 탑:嗒:
 탑:撘:
 탑:漯:
 탑:㗳:
 탑:阘:
 탑:鳎:
-탑:傝:답답할 탑, 불안할 탑, 어리석을 탑, 용렬할 탑
 탑:嚃:
 탑:墖:
 탑:毾:
 탕:宕:골집 탕, 방탕할 탕, 석수 탕
 탕:帑:나라 곳집 탕, 처자식 탕
 탕:盪:씻을 탕, 움직일 탕, 진동할 탕, 그릇 부실 탕, 뭍 배질할 탕
-탕:逿:
 탕:碭:무늬진 돌 탕, 흰 기운 탕, 넘칠 탕, 산이름 탕
+탕:蘯:盪과 同字
+탕:燙:씻을 탕, 불에 델 탕
+탕:逿:
 탕:簜:
 탕:蝪:
 탕:踼:
-탕:蘯:盪과 同字
 탕:璗:
 탕:鐋:
 탕:荡:
 탕:烫:
 탕:砀:
 탕:铴:
-탕:燙:씻을 탕, 불에 델 탕
 탕:偒:
 탕:圵:
 탕:婸:
 태:汰:미끄러울 태, 넘칠 태, 씻길 태, 사치할 태, 미끄러질 태
 태:苔:이끼 태
 태:笞:볼기칠 태
-태:呆:
 태:邰:태나라 태
+태:呆:
 태:駄:
 태:迨:미칠 태
+태:蛻:
+태:駘:
+태:埭:보뚝 태
+태:娧:기뻐할 태, 더딜 태
+태:孡:
+태:抬:칠 태
 태:兑:
 태:紿:
 태:蜕:
-태:蛻:
-태:駘:
 태:䭾:
 태:鮐:
 태:忕:
 태:呔:
-태:埭:보뚝 태
 태:兊:
 태:忲:
 태:㤗:
 태:骀:
 태:鲐:
 태:䌼:
-태:娧:기뻐할 태, 더딜 태
-태:孡:
-태:抬:칠 태
 태:傣:
 태:冭:
 태:囼:
 탯권도:跆拳道:
 탯권도장:跆拳道場:
 탱:撑:撐의 俗字, 버틸 탱
-탱:竀:
 탱:撐:버틸 탱, 취할 탱, 헤칠 탱
+탱:牚:
+탱:竀:
 탱:樘:
 탱:橖:
-탱:牚:
 탱:橕:
 탱:㯑:
 탱목:撑木:
 토:討:다스릴 토, 칠 토, 찾을 토, 벨 토, 꾸짖을 토
 토:吐:토할 토, 나올 토, 펼 토
 토:兎:兔의 俗字, 토끼 토
-토:兔:
 토:菟:
+토:兔:
 토:圡:
 토:茔:
 토:讨:
 통:桶:엿되들이 통 통
 통:恫:슬플 통, 아플 통, 앓을 통
 통:侗:
+통:筩:대나무통 통, 낚시 통
+통:樋:대 홈 통, 어름나무 통
 통:㷁:
 통:憅:
-통:筩:대나무통 통, 낚시 통
 통:熥:
 통:綂:
 통:恸:
 통:统:
-통:樋:대 홈 통, 어름나무 통
 통:嗵:
 통:捅:
 통:痌:
 퇴:焞:
 퇴:搥:
 퇴:隤:무너질 퇴, 미끄러질 퇴, 부드러울 퇴, 땅이름 퇴
-퇴:頽:
 퇴:魋:
+퇴:頽:
 퇴:僓:
 퇴:蓷:
 퇴:痽:
 투:妬:투기할 투, 자식 없는 계집 투, 질투할 투
 투:偸:훔칠 투, 엷을 투, 구차할 투, 인정머리없을 투
 투:渝:빛 변할 투, 더러워질 투, 고을이름 투
+투:妒:투기할 투, 미워할 투, 강샘할 투, 부러워할 투
+투:骰:주사위 투
 투:偷:
 투:闘:
-투:妒:투기할 투, 미워할 투, 강샘할 투, 부러워할 투
 투:鬭:
-투:骰:주사위 투
 투:哣:
 투:敨:
 투:牏:
 파:怕:두려울 파
 파:葩:꽃봉오리 파
 파:皤:흴 파, 배 불룩할 파, 귀 밑에 희끗희끗할 파
-파:壩:
 파:帕:머리 동이수건 파
 파:簸:까부를 파, 키 파
-파:罢:
 파:灞:물이름 파
-파:疤:
 파:玻:파려옥 파, 유리옥 파
-파:帊:
 파:笆:가시 대 파, 울타리 파
+파:鄱:땅이름 파
+파:妑:새앙머리 파, 갈래머리 파
+파:岥:산 비알질 파
+파:爸:아비 파
+파:耙:쇠시랑 파
+파:菠:시금치 파
+파:壩:
+파:罢:
+파:疤:
+파:帊:
 파:靶:
 파:䆉:
-파:鄱:땅이름 파
 파:嶓:
-파:妑:새앙머리 파, 갈래머리 파
 파:垻:
 파:吧:
 파:欛:
 파:钯:
 파:钷:
 파:颇:
-파:岥:산 비알질 파
-파:爸:아비 파
-파:耙:쇠시랑 파
-파:菠:시금치 파
 파:啵:
 파:嘙:
 파:夿:
 패:霸:으뜸 패, 패왕 패
 패:孛:혜성 패
 패:旆:기 패, 깃발 날릴 패
-패:犻:
 패:珮:노리개 패, 찰 패
+패:犻:
 패:誖:
 패:邶:
 패:棑:
 팽:膨:배 불룩할 팽, 큰배 팽
 팽:澎:물소리 팽, 물결 부딛는 형세 팽
 팽:烹:삶을 팽, 요리 팽, 삶는 팽
-팽:伻:
 팽:祊:사당문 제사 팽
-팽:閍:
-팽:碰:
 팽:砰:여울 물소리 팽
 팽:蟚:蟛과 同字
 팽:蟛:방게 팽
+팽:伻:
+팽:閍:
+팽:碰:
 팽:嘭:
 팽:嵭:
 팽:憉:
 편:翩:훌쩍 날 편, 오락가락할 편, 훌쩍나는 모양 편
 편:徧:
 편:褊:좁을 편, 급할 편, 옷이 몸에 낄 편
-편:煸:
-편:蹁:
-편:楩:
 편:艑:거룻배 편
 편:蝙:박쥐 편
 편:匾:
 편:諞:공교한 말 편
+편:惼:조급할 편, 편협할 편
+편:緶:꿰맬 편
+편:萹:
+편:煸:
+편:蹁:
+편:楩:
 편:楄:
 편:鯾:
 편:鯿:
 편:谝:
 편:骗:
 편:鳊:
-편:惼:조급할 편, 편협할 편
-편:緶:꿰맬 편
-편:萹:
 편:囨:
 편:媥:
 편:揙:
 평:苹:맑은 대쑥 평, 사과 평
 평:抨:탄핵할 평
 평:怦:맘 급할 평, 칼칼할 평
-평:玶:
 평:泙:물소리 평, 물결 셀 평
+평:蓱:마름 평, 머구리밥 평, 개구리밥 평
+평:鮃:가자미 평
+평:玶:
 평:呯:
 평:䦕:
 평:评:
 평:鲆:
-평:蓱:마름 평, 머구리밥 평, 개구리밥 평
-평:鮃:가자미 평
 평:匉:
 평:姘:
 평:岼:
 폐:嬖:사랑할 폐, 윗사람으로부터 사랑받을 폐, 벼슬이름 폐
 폐:獘:곤할 폐, 폐단 폐, 죽을 폐, 엎드러질 폐
 폐:敝:옷 해질 폐, 버릴 폐, 무너질 폐, 실패할 폐, 활줌통 폐
-폐:廃:
 폐:癈:고질병 폐
-폐:杮:
 폐:狴:짐승이름 폐, 옥 폐, 들개 폐
+폐:廃:
+폐:杮:
 폐:梐:
 폐:㢢:
 폐:幤:
 포:匍:엉금엉금 길 포, 엎드러질 포
 포:咆:고함지를 포, 짐승소리 포, 불끈 성낼 포, 으르릉거릴 포
 포:疱:부풀 포, 부르틀 포
-포:庖:푸줏간 포, 부엌 포
 포:苞:그령풀 포, 밑둥 포, 초목이 다복히 날 포, 꾸러피 포, 꾸러미 포
 포:佈:펼칠 포, 널리알릴 포
 포:匏:박 포, 바가지 포, 퉁소 포
+포:庖:푸줏간 포, 부엌 포
 포:炮:그슬릴 포, 싸서 구울 포, 형벌 포
 포:晡:신시 포, 해질 포
 포:餔:저녁 곁두리 포, 먹을 포
+포:舖:鋪의 俗字
+포:炰:그슬 포, 까불거릴 포
+포:誧:꾀할 포, 클 포, 도울 포, 간할 포
+포:儤:
+포:鞄:가방 포, 가죽 다로는 장인 포
+포:鯆:매가리 포, 물아지 포
+포:曓:급할 포, 창졸 포
+포:鉋:대패 포
 포:拋:
 포:酺:
-포:舖:鋪의 俗字
 포:宲:
 포:礮:
-포:炰:그슬 포, 까불거릴 포
 포:枹:
-포:誧:꾀할 포, 클 포, 도울 포, 간할 포
-포:儤:
 포:襃:
 포:虣:
 포:圑:
 포:蒱:
 포:麅:
-포:鞄:가방 포, 가죽 다로는 장인 포
 포:笣:
-포:鯆:매가리 포, 물아지 포
 포:怉:
 포:脬:
 포:舗:
 포:饱:
 포:鲍:
 포:龅:
-포:曓:급할 포, 창졸 포
-포:鉋:대패 포
 포:佨:
 포:勹:싸다
 포:咘:
 포주:包主:
 포주:圃主:
 포주:砲柱:
-포주:廚:
+포주:廚:
 포주성:抱州城:
 포죽:匏粥:
 포준:匏樽:
 표:驃:날쌜 표, 누런 말 표
 표:飇:회오리바람 표
 표:縹:옥빛 표, 훌쩍 날 표
-표:飆:
 표:摽:칠 표, 두를 표, 찔러 밀칠 표, 가슴 만질 표
 표:殍:굶어 죽을 표
 표:鑣:말 재갈 표, 성할 표
+표:裱:목수건 표
+표:僄:몸이 가벼울 표, 진중치 못할 표
+표:嫖:가벼울 표, 날랠 표, 색에 빠질 표
+표:勡:겁탈할 표, 겁박할 표
+표:嘌:휙 불 표, 몰아갈 표
+표:熛:불똥 튈 표, 성낼 표, 붉을 표, 빛날 표
+표:鏢:칼날 표, 비수 표
+표:髟:머리털 희뜩희뜩할 표, 깃발 날릴 표, 머리 늘일 표, 머리털이길게드리워진모양 표
+표:鰾:부레 표
+표:飆:
 표:颷:
 표:醥:
-표:裱:목수건 표
 표:淲:
 표:藨:
-표:僄:몸이 가벼울 표, 진중치 못할 표
-표:嫖:가벼울 표, 날랠 표, 색에 빠질 표
 표:飈:
 표:飊:
 표:彯:
 표:骉:
 표:骠:
 표:鳔:
-표:勡:겁탈할 표, 겁박할 표
-표:嘌:휙 불 표, 몰아갈 표
-표:熛:불똥 튈 표, 성낼 표, 붉을 표, 빛날 표
-표:鏢:칼날 표, 비수 표
-표:髟:머리털 희뜩희뜩할 표, 깃발 날릴 표, 머리 늘일 표, 머리털이길게드리워진모양 표
-표:鰾:부레 표
 표:儦:
 표:墂:
 표:婊:
 풍:楓:단풍나무 풍, 신나무 풍
 풍:諷:비유로 간할 풍, 외울 풍, 욀 풍
 풍:馮:벼슬이름 풍, 성씨 풍, 물귀신이름 풍, 고을이름 풍
-풍:豐:
 풍:丰:
+풍:葑:
+풍:豐:
+풍:瘋:두풍 풍, 미치광이 풍
 풍:酆:
 풍:鄷:
-풍:葑:
 풍:渢:
 풍:偑:
 풍:凮:
 풍:砜:
 풍:讽:
 풍:风:
-풍:瘋:두풍 풍, 미치광이 풍
 풍:僼:
 풍:凨:
 풍:凬:
 피:陂:기울어질 피, 치우칠 피
 피:辟:
 피:詖:말 잘할 피, 간사할 피, 알소할 피
+피:鞁:말 가슴걸이 피, 안갑 피
+피:屁:
+피:髲:머리쓰개 피, 첩지 피
 피:柀:
 피:帔:
 피:骳:
 피:狓:
 피:鈹:
 피:佊:
-피:鞁:말 가슴걸이 피, 안갑 피
 피:秛:
 피:㱟:
 피:诐:
 피:铍:
 피:鲏:
 피:䙓:
-피:屁:
-피:髲:머리쓰개 피, 첩지 피
 피:怶:
 피:旇:
 피:氕:
 필:篳:대 사립문 필, 나무 실은 수레 필
 필:觱:바람이 쌀쌀할 필, 대평수 필
 필:佖:점잔피울 필, 가득할 필
+필:滭:샘 끓어 솟을 필
+필:駜:살찐 말 필
+필:鵯:갈가마귀 필
+필:咇:향기날 필
+필:罼:토끼그물 필
+필:鞸:슬갑 필
 필:驆:
 필:弻:
-필:滭:샘 끓어 솟을 필
 필:榓:
 필:㻶:
-필:駜:살찐 말 필
-필:鵯:갈가마귀 필
 필:熚:
 필:胇:
 필:袐:
 필:跸:
 필:铋:
 필:鹎:
-필:咇:향기날 필
-필:罼:토끼그물 필
-필:鞸:슬갑 필
 필:吡:
 필:嗶:
 필:妼:
 필히:必히:
 핍:乏:없을 핍, 옹색할 핍, 다할 핍, 모자랄 핍
 핍:逼:가까울 핍, 궁핍할 핍, 핍박학 핍, 핍박할 핍
-핍:愊:
 핍:偪:핍박할 핍, 가까울 핍
+핍:愊:
 핍:姂:
 핍:鴔:
 핍근:逼近:
 하:鰕:새우 하, 암고래 하
 하:昰:是와 同字, 여름 하
 하:嚇:놀라게 할 하
-하:嘏:
 하:罅:틈 하
-하:縀:
 하:呀:입 벌릴 하
 하:鍜:목투구 하
+하:煆:불사를 하
+하:岈:휑뎅그렁할 하
+하:懗:속일 하
+하:瘕:이질 하
+하:嘏:
+하:縀:
 하:睱:
 하:谺:
-하:煆:불사를 하
 하:騢:
 하:鏬:
-하:岈:휑뎅그렁할 하
 하:哧:
 하:抲:
 하:菏:
 하:㙈:
 하:虾:
 하:贺:
-하:懗:속일 하
-하:瘕:이질 하
 하:丅:
 하:丷:
 하:哬:
 학:壑:골짜기 학
 학:謔:희롱할 학
 학:瘧:학질 학
-학:学:
 학:确:확실할 학
 학:涸:마를 학
-학:翯:
 학:郝:고을 이름 학
-학:觷:
 학:狢:오소리 학
-학:嗃:
 학:熇:
 학:鷽:메까치 학
+학:皬:흴 학
+학:学:
+학:翯:
+학:觷:
+학:嗃:
 학:澩:
 학:矐:
 학:㕰:
 학:谑:
 학:鸴:
 학:鹤:
-학:皬:흴 학
 학:嗀:
 학:嚛:
 학:嚯:
 한:閒:한가할 한, 겨를 한
 한:瀚:넓고 큰 한, 넓고클 한
 한:桿:막대기 한
-한:扞:
 한:捍:막을 한
 한:閈:마을 문 한
-한:狠:
-한:僴:
 한:暵:말릴 한
 한:鼾:코골 한
-한:覵:
 한:犴:
+한:僩:노할 한
+한:嫺:우아할 한
+한:熯:
+한:嫻:우아할 한
+한:駻:사나운 말 한
+한:鷳:소리개 한
+한:扞:
+한:狠:
+한:僴:
+한:覵:
 한:瞷:
 한:猂:
-한:僩:노할 한
 한:邗:
 한:骭:
-한:嫺:우아할 한
-한:熯:
 한:撊:
 한:鷴:
 한:垾:
 한:焊:
 한:闬:
 한:韩:
-한:嫻:우아할 한
-한:駻:사나운 말 한
-한:鷳:소리개 한
 한:仠:
 한:佷:
 한:傼:
 할:轄:다스릴 할, 맡아볼 할
 할:蝎:
 할:黠:
-할:傄:
-할:劼:
 할:瞎:애꾸눈 할
 할:鶡:
+할:蠍:
+할:傄:
+할:劼:
 할:縖:
 할:舝:
 할:䫘:
 할:辖:
-할:蠍:
 할:乤:
 할:嗐:
 할:搳:
 함:諴:화할 함
 함:菡:연봉오리 함
 함:頷:
-함:䧟:
 함:嗛:
+함:闞:범 소리 함
+함:憨:
+함:莟:꽃봉오리 함
+함:轞:함거 함
+함:䧟:
 함:淊:
 함:凾:
 함:醎:
-함:闞:범 소리 함
 함:顑:
 함:圅:
 함:㴠:
 함:䓿:
-함:憨:
 함:衘:
 함:谽:
 함:馠:
 함:唅:
 함:浛:
 함:筨:
-함:莟:꽃봉오리 함
 함:琀:
 함:甉:
 함:魽:
 함:舰:
 함:阚:
 함:馅:
-함:轞:함거 함
 함:壏:
 함:娢:
 함:晗:
 합:溘:문득 합, 이를 합, 의지할 합
 합:榼:술그릇 합, 물통 합, 뚜껑 합
 합:郃:땅이름 합
+합:柙:우리 합, 향나무 합
+합:匌:기운 답답할 합
+합:嗑:잔말할 합, 웃는 소리 합, 입 다물 합, 괘 이름 합
 합:呷:
 합:詥:
 합:鴿:
-합:柙:우리 합, 향나무 합
 합:篕:
-합:匌:기운 답답할 합
 합:㝓:
-합:嗑:잔말할 합, 웃는 소리 합, 입 다물 합, 괘 이름 합
 합:峆:
 합:欱:
 합:烚:
 항:桁:수갑 항, 배다리 항, 횃대 항, 시렁 항
 항:嫦:항아
 항:恆:恒의 本字
-항:骯:
 항:頏:목 항, 오르락 내리락할 항
+항:炕:마를 항, 구울 항, 구들 항
+항:夯:멜 항, 다질 항
+항:缿:항통 항, 문서함 항, 벙어리 항
+항:骯:
 항:吭:
 항:閌:
-항:炕:마를 항, 구울 항, 구들 항
 항:衖:
-항:夯:멜 항, 다질 항
 항:佭:
 항:斻:
 항:闀:
 항:闶:
 항:项:
 항:颃:
-항:缿:항통 항, 문서함 항, 벙어리 항
 항:塂:
 항:岲:
 항:栙:
 해:蟹:게 해
 해:醢:젓 해, 젓 담글 해, 젓 담그는 형벌 해
 해:廨:관청 해, 공해 해
-해:觧:
-해:澥:
 해:薤:염교 해, 부추 해
 해:獬:신통한 양 해, 해갓 해
 해:瑎:
 해:欬:기침할 해, 크게 부를 해, 일깨울 해
+해:咍:비웃을 해
+해:嶰:골짝 사이 해, 골 이름 해
+해:痎:학질 해, 하루거리 해
+해:鮭:어채 해, 복 해
+해:頦:턱 해
+해:觧:
+해:澥:
 해:晐:
 해:陔:
-해:咍:비웃을 해
 해:荄:
 해:蠏:
 해:侅:
 해:駴:
 해:㤥:
-해:嶰:골짝 사이 해, 골 이름 해
 해:畡:
 해:賅:
-해:痎:학질 해, 하루거리 해
-해:鮭:어채 해, 복 해
 해:峐:
 해:檞:
 해:膎:
 해:颏:
 해:骇:
 해:鲑:
-해:頦:턱 해
 해:嗨:
 해:塰:
 해:妎:
 향:嚮:향할 향, 누릴 향, 울릴 향, 받을 향
 향:餉:먹일 향, 군량 향, 점심 향
 향:珦:옥이름
-향:鄊:
 향:薌:곡기 향, 향기 향, 기장 향
+향:鄊:
 향:晑:
 향:曏:
 향:郷:
 허:虛:빌 허, 헛될 허, 다할 허, 약할 허, 거짓 허, 하늘 허
 허:墟:옛 터 허, 장 허, 큰 두덕 허, 옛성터 허
 허:噓:불 허, 뿜을 허, 탄식할 허
-허:虚:
 허:詡:
 허:歔:한숨 쉴 허, 흑흑 느껴 울 허, 코로 숨 내쉴 허
+허:虚:
 허:栩:
 허:虗:
 허:㠊:
 헌:獻:바칠 헌, 음식 헌, 어진이 헌, 드릴 헌
 헌:軒:초헌 헌, 껄껄 웃을 헌, 주적댈 헌, 추녀끝 헌, 고기 굵게 저밀 헌
 헌:櫶:나무이름
-헌:献:
 헌:掀:
-헌:巘:
-헌:瀗:
+헌:献:
 헌:巚:봉우리 헌, 시루봉 헌
 헌:幰:수레 안장 헌, 휘장 헌
+헌:攇:비길 헌, 물건 맬 헌
+헌:巘:
+헌:瀗:
 헌:宪:
 헌:轩:
-헌:攇:비길 헌, 물건 맬 헌
 헌:仚:
 헌:佡:
 헌:搟:
 헌화탁:獻花卓:
 헐:歇:쉴 헐, 나른할 헐, 다할 헐, 으슥할 헐, 스러질 헐, 흩어질 헐
 헐:蝎:
-헐:滊:
 헐:蠍:
+헐:滊:
 헐가:歇價:
 헐가방매:歇價放賣:
 헐각:歇脚:
 혁:奕:아름다울 혁, 클 혁, 차례 혁, 바둑 혁, 빛날 혁, 근심할 혁
 혁:嚇:노할 혁, 꾸짖을 혁
 혁:洫:넘칠 혁, 빌 혁, 봇도랑 혁
-혁:衋:
 혁:鬩:송사할 혁, 싸울 혁
 혁:弈:바둑둘 혁
+혁:焱:
+혁:衋:
 혁:虩:
 혁:侐:
 혁:焃:
-혁:焱:
 혁:殈:
 혁:赩:
 혁:㷜:
 현:泫:물 깊을 현, 이슬 맺힐 현, 눈물 줄줄 흘릴 현
 현:睍:물끄러미 볼 현, 고울 현
 현:舷:뱃전 현
-현:顕:
-현:袨:
 현:儇:영리할 현, 빠를 현
 현:嬛:산뜻할 현
-현:灦:
-현:敻:
 현:昡:햇빛 현
 현:誢:
-현:礥:
-현:贒:
 현:琄:
 현:眴:
 현:繯:얽힐 현, 둘릴 현, 맬 현
+현:痃:힘줄 당기는 병 현, 적병 현
+현:筧:
+현:県:고을 현, 지방 현
+현:祆:
+현:翾:파뜩파뜩 날 현, 경박할 현, 영리할 현, 급할 현
+현:蜆:가막조개 현, 호수이름 현
+현:鋗:노구솥 현, 퉁노구 현
+현:駽:돗총이 현, 철총이 현
+현:顕:
+현:袨:
+현:灦:
+현:敻:
+현:礥:
+현:贒:
 현:垷:
 현:莧:
 현:㬎:
-현:痃:힘줄 당기는 병 현, 적병 현
-현:筧:
 현:哯:
 현:埍:
 현:胘:
 현:鋧:
 현:鑦:
 현:䧎:
-현:県:고을 현, 지방 현
-현:祆:
 현:伣:
 현:县:
 현:岘:
 현:蚬:
 현:贤:
 현:铉:
-현:翾:파뜩파뜩 날 현, 경박할 현, 영리할 현, 급할 현
-현:蜆:가막조개 현, 호수이름 현
-현:鋗:노구솥 현, 퉁노구 현
-현:駽:돗총이 현, 철총이 현
 현:伭:
 현:呟:
 현:咞:
 혈:孑:외로울 혈, 나머지 혈, 창갈구리 혈
 혈:頁:머리 혈, 마리 혈, 페이지(page) 혈
 혈:絜:헤아릴 혈, 묶을 혈
-혈:泬:
 혈:趐:새가 떼로 날 혈, 나아갈 혈
+혈:泬:
 혈:蝢:
 혈:緳:
 혈:䆷:
 혈흔:血痕:
 혈흔검사:血痕檢査:
 혐:嫌:싫어할 혐, 의심할 혐, 유쾌하지 않을 혐
+혐:鼸:
 혐:馦:
 혐:㾾:
-혐:鼸:
 혐:㺌:
 혐:㽐:
 혐:䵌:
 협:叶:화합할 협
 협:恊:겁낼 협, 위협할 협
 협:愜:쾌할 협, 뜻에 맞을 협
-협:祫:
 협:篋:상자 협, 행담 협
+협:悏:
+협:匧:옷상자 협, 꿰맬 협
+협:埉:
+협:祫:
 협:峡:
 협:惬:
-협:悏:
 협:䝱:
 협:筴:
 협:蛺:
 협:颊:
 협:饸:
 협:䇲:
-협:匧:옷상자 협, 꿰맬 협
-협:埉:
 협:嗋:
 협:垥:
 협:愶:
 형:鎣:줄 형, 꾸밀 형
 형:灐:물 이름 형
 형:迥:막을 형, 차단할 형
-형:荆:
 형:詗:염탐할 형, 구할 형
-형:鉶:
 형:夐:멀 형, 바라보는 모양 형
+형:陘:지레목 형, 비탈 형
+형:娙:여관 이름 형, 예쁠 형
+형:荆:
+형:鉶:
 형:硎:
 형:浻:
 형:蘅:
 형:郉:
-형:陘:지레목 형, 비탈 형
 형:脝:
 형:㢠:
 형:侀:
 형:诇:
 형:铏:
 형:陉:
-형:娙:여관 이름 형, 예쁠 형
 형:哼:
 형:坓:
 형:嵤:
 혜:蹊:지름길 혜, 건널 혜
 혜:蕙:혜초 혜, 난초 혜
 혜:暳:잔별
-혜:恵:
 혜:盻:흘겨볼 혜, 돌아볼 혜
-혜:嵇:산이름
 혜:徯:기다릴 혜, 사잇길 혜
 혜:槥:널 혜, 작은 관 혜
-혜:鼷:
 혜:傒:묶을 혜
 혜:嘒:가냘플 혜
+혜:寭:밝힐 혜, 깨달을 혜
+혜:謑:창피줄 혜
+혜:譿:슬기로울 혜
+혜:恵:
+혜:嵇:산이름
+혜:鼷:
 혜:鞵:
 혜:潓:
 혜:嵆:
 혜:㜎:
 혜:䚷:
 혜:䧥:
-혜:寭:밝힐 혜, 깨달을 혜
-혜:謑:창피줄 혜
-혜:譿:슬기로울 혜
 혜:僡:
 혜:匸:감추다
 혜:嚡:
 호:頀:구할 호, 지킬 호, 풍류이름 호
 호:淏:맑을 호
 호:葫:마늘 호, 조롱박 호, 굵은 마늘 호
-호:号:
 호:犒:호궤할 호
-호:户:
-호:㦿:
 호:怙:믿을 호
 호:沍:冱의 譌字
+호:箎:긴 대 호
+호:餬:기식할 호
+호:皞:밝을 호, 흴 호
+호:醐:제호 호
+호:嘷:짖을 호, 외칠 호
+호:滈:장마 호
+호:冱:찰 호, 얼 호, 막을 호
+호:嫮:아름다울 호, 시기할 호
+호:滬:강 이름 호
+호:皜:흴 호, 흰 모양 호
+호:儫:영웅 호
+호:嫭:
+호:猢:원숭이 호
+호:聕:들릴 호, 긴 귀 호
+호:鬍:수염 호
+호:号:
+호:户:
+호:㦿:
 호:昈:
 호:皥:
-호:箎:긴 대 호
 호:乕:
 호:䎁:
 호:蠔:
-호:餬:기식할 호
 호:鄗:
-호:皞:밝을 호, 흴 호
 호:唬:
 호:皡:
-호:醐:제호 호
-호:嘷:짖을 호, 외칠 호
-호:滈:장마 호
 호:壷:
 호:暭:
 호:虖:
 호:鄠:
-호:冱:찰 호, 얼 호, 막을 호
-호:嫮:아름다울 호, 시기할 호
-호:滬:강 이름 호
 호:猲:
 호:嘑:
 호:楜:
 호:苸:
 호:䕶:
 호:䚽:
-호:皜:흴 호, 흰 모양 호
 호:帍:
 호:暤:
 호:曍:
 호:镐:
 호:颢:
 호:鹕:
-호:儫:영웅 호
-호:嫭:
-호:猢:원숭이 호
-호:聕:들릴 호, 긴 귀 호
-호:鬍:수염 호
 호:乊:
 호:傐:
 호:冴:
 혼:睨:
 혼:惛:흐릴 혼
 혼:焜:빛날 혼
+혼:湣:
+혼:圂:뒷간 혼
 혼:惽:
 혼:睯:
 혼:掍:
-혼:湣:
 혼:鯶:
 혼:鼲:
 혼:䰟:
 혼:珲:
 혼:阍:
 혼:馄:
-혼:圂:뒷간 혼
 혼:倱:
 혼:堚:
 혼:婫:
 홀:忽:소흘히 할 홀, 홀연 홀
 홀:笏:홀 홀
 홀:惚:황홀할 홀
+홀:囫:온전할 홀
 홀:絗:
 홀:曶:
 홀:芴:
 홀:㧾:
 홀:䬍:
 홀:锪:
-홀:囫:온전할 홀
 홀:乥:
 홀:匢:
 홀:匫:
 홍:哄:떠들썩할 홍
 홍:烘:횃불 홍
 홍:汞:수은 홍
-홍:洚:
-홍:閧:
 홍:鬨:싸울 홍
 홍:澒:수은 홍
+홍:晎:날 밝으려 할 홍
+홍:篊:홈통 홍
+홍:鉷:돌쇠뇌 홍
+홍:洚:
+홍:閧:
 홍:葒:
 홍:妅:
 홍:唝:
 홍:荭:
 홍:讧:
 홍:鸿:
-홍:晎:날 밝으려 할 홍
-홍:篊:홈통 홍
-홍:鉷:돌쇠뇌 홍
 홍:仜:
 홍:叿:
 홍:嗊:
 화:譁:시끄러울 화, 떠들썩할 화
 화:樗:
 화:畫:그림 화
-화:画:
 화:夥:
 화:擭:
 화:嘩:譁와 同字
-화:澕:
 화:驊:준마 화
+화:俰:화할 화
+화:婲:예쁠 화
+화:龢:풍류 조화될 화
+화:画:
+화:澕:
 화:槬:
 화:墷:
 화:鞾:
 화:咊:
 화:鏵:
-화:俰:화할 화
 화:伙:
 화:楇:
 화:璍:
 화:铧:
 화:骅:
 화:鳠:
-화:婲:예쁠 화
-화:龢:풍류 조화될 화
 화:吙:
 화:啝:
 화:埖:
 확:鑊:가마 확
 확:确:
 확:涸:
+확:擭:
+확:矍:두리번거릴 확
+확:礭:
+확:矡:
 확:䨥:
 확:镬:
 확:雘:
-확:擭:
 확:矱:
-확:矍:두리번거릴 확
 확:蠖:
-확:礭:
 확:彍:
 확:戄:
 확:彉:
 확:扩:
 확:拡:
 확:鹱:
-확:矡:
 확:劐:
 확:嬳:
 확:彏:
 환:晥:환할 환
 환:懽:기뻐할 환
 환:圜:두를 환
-환:逭:
 환:寰:기내 환
-환:癏:
 환:豢:기를 환
 환:鬟:쪽찐 머리 환
+환:擐:입을 환
+환:轘:환형 환
+환:瓛:옥홀 환
+환:睆:가득 차 있는 모양 환
+환:鍰:무게 단위 환
+환:絙:끈목 환
+환:鐶:고리 환
+환:繯:
+환:垸:
+환:皖:샛별 환
+환:逭:
+환:癏:
 환:寏:
 환:瑍:
 환:䆠:
-환:擐:입을 환
 환:讙:
 환:鱞:
-환:轘:환형 환
 환:漶:
 환:㬊:
-환:瓛:옥홀 환
-환:睆:가득 차 있는 모양 환
-환:鍰:무게 단위 환
 환:汍:
 환:闤:
-환:絙:끈목 환
-환:鐶:고리 환
 환:澴:
-환:繯:
 환:弮:
 환:芄:
 환:㬇:
 환:阛:
 환:鲩:
 환:鳏:
-환:垸:
-환:皖:샛별 환
 환:喛:
 환:峘:
 환:愌:
 활:滑:미끄러울 활, 어지러울 활
 활:猾:교활할 활
 활:豁:뚫린 골 활, 골짜기 활
+활:佸:
+활:蛞:괄태충 활
 활:濶:
 활:䀨:
 활:敌:
 활:阔:
-활:佸:
-활:蛞:괄태충 활
 활:奯:
 활:姡:
 활:眓:
 황:幌:휘장 황
 황:湟:해자 황, 물결빨리내려가는 모양 황
 황:晄:晃과 同字, 밝을 황
-황:况:
 황:怳:멍할 황
 황:貺:줄 황
-황:黄:
 황:肓:명치 끝 황
+황:喤:어린아이 울음 황
+황:鎤:종소리 황
+황:熀:
+황:瑝:옥 소리 황
+황:媓:어머니 황
+황:况:
+황:黄:
 황:䌙:
 황:皝:
 황:熿:
-황:喤:어린아이 울음 황
-황:鎤:종소리 황
 황:偟:
 황:艎:
 황:謊:
-황:熀:
 황:㡛:
 황:癀:
 황:穔:
 황:縨:
-황:瑝:옥 소리 황
 황:墴:
 황:揘:
 황:衁:
 황:谎:
 황:贶:
 황:鳇:
-황:媓:어머니 황
 황:兤:
 황:堭:
 황:塃:
 회:匯:물돌 회, 물이돌아가는 회
 회:獪:교활할 회, 간교할 회
 회:茴:회향풀 회
-회:湏:
-회:会:
-회:懐:
-회:囬:
 회:迴:回와 同字
-회:禬:
 회:燹:
-회:㑹:
 회:洄:거슬러 올라 갈 회
-회:薈:
 회:詼:조롱할 회
 회:鱠:회 회
 회:佪:어정거릴 회
-회:豗:
 회:繢:
 회:滙:匯와 同字
 회:闠:
 회:頮:세수할 회
 회:沬:
 회:盔:바리 회
+회:栃:상수리나무 회
+회:湏:
+회:会:
+회:懐:
+회:囬:
+회:禬:
+회:㑹:
+회:薈:
+회:豗:
 회:囘:
 회:逥:
 회:瀤:
 회:颒:
 회:鲙:
 회:㧟:
-회:栃:상수리나무 회
 회:劊:
 회:咴:
 회:嬒:
 획:硅:
 획:畫:그을 획
 획:擭:
+획:嚄:외칠 획
 획:謢:
 획:撶:
 획:繣:
 획:㗲:
 획:获:
 획:婳:
-획:嚄:외칠 획
 획:咟:
 획:嚿:
 획:嫿:
 횡:薨:많을 횡
 횡:宖:집 울릴 횡, 평안할 횡
 횡:鐄:종 횡, 큰 종 횡
-횡:横:
 횡:黌:글방 횡
+횡:鈜:쇳소리 횡
+횡:澋:물이 빙 돌 횡
+횡:横:
 횡:鋐:
 횡:紭:
 횡:竑:
-횡:鈜:쇳소리 횡
 횡:黉:
-횡:澋:물이 빙 돌 횡
 횡:吰:
 횡:嚝:
 횡:峵:
 효:驍:날랠 효
 효:斅:가르칠 효, 깨우칠 효
 효:涍:성 효, 물가 효
-효:効:
 효:囂:시끄럽다 효
-효:暁:
-효:嘵:
-효:枵:
 효:嘐:
 효:傚:본받을 효
 효:殽:섞일 효
+효:崤:산 이름 효
+효:熇:불김 효
+효:皛:나타날 효
+효:虓:울부짖을 효
+효:餚:반찬 효
+효:効:
+효:暁:
+효:嘵:
+효:枵:
 효:鴞:
 효:歊:
-효:崤:산 이름 효
 효:斆:
 효:憢:
 효:毊:
-효:熇:불김 효
-효:皛:나타날 효
-효:虓:울부짖을 효
 효:嘋:
-효:餚:반찬 효
 효:獢:
 효:筊:
 효:髇:
 후:詬:
 후:涸:
 후:垕:厚의 古字
-후:糇:
 후:詡:자랑할 후
 후:酗:주정할 후
 후:猴:원숭이 후
 후:堠:봉화대 후
 후:喣:불 후
-후:齅:
 후:餱:건량 후
 후:篌:공후 후
+후:佝:
+후:譃:망녕된 말 후
+후:吽:
+후:糇:
+후:齅:
 후:姁:
 후:睺:
 후:矦:
 후:郈:
-후:佝:
 후:鍭:
 후:珛:
 후:齁:
 후:诩:
 후:鲎:
 후:鲘:
-후:譃:망녕된 말 후
-후:吽:
 후:冔:
 후:呍:
 후:洉:
 훈:勛:勳의 古字, 공적 훈
 훈:焄:연기에 그을릴 훈, 향내 훈
 훈:燻:연기 낄 훈, 불기운성할 훈
-훈:勲:
 훈:曛:삭양 빛 훈
-훈:醺:
 훈:纁:분홍빛 훈
 훈:葷:매운 채소 훈
+훈:獯:오랑캐 이름 훈
+훈:鑂:금빛 투색할 훈
+훈:爋:불에 말릴 훈
+훈:勲:
+훈:醺:
 훈:坃:
 훈:薫:
-훈:獯:오랑캐 이름 훈
 훈:矄:
-훈:鑂:금빛 투색할 훈
 훈:埙:
 훈:勋:
 훈:晕:
 훈:荤:
 훈:训:
-훈:爋:불에 말릴 훈
 훈:嚑:
 훈:壦:
 훈:瞓:
 훤:萱:원추리 훤
 훤:暄:따뜻할 훤, 날따뜻할 훤
 훤:煊:따뜻할 훤
-훤:翧:
 훤:諼:속일 훤
 훤:諠:잊을 훤
-훤:晅:
 훤:烜:마를 훤
+훤:翧:
+훤:晅:
 훤:楦:
 훤:藼:
 훤:箮:
 훼:喙:부리 훼, 주둥이 훼
 훼:卉:풀 훼
 훼:虫:벌레 훼
-훼:毀:
 훼:虺:살무사 훼
 훼:燬:불 훼
-훼:毇:
 훼:芔:풀 훼
+훼:毀:
+훼:毇:
 훼:檓:
 훼:譭:
 훼:顪:
 휴:睢:
 휴:鵂:수리부엉이 휴
 휴:咻:떠들 휴
+휴:擕:携와 同字
+휴:髹:옻칠할 휴
 휴:庥:
 휴:鑴:
 휴:貅:
-휴:擕:携와 同字
-휴:髹:옻칠할 휴
 휴:攜:
 휴:巂:
 휴:瓗:
 휼:恤:구휼할 휼, 근심할 휼
 휼:譎:속일 휼, 간사할 휼
 휼:鷸:황새
-휼:霱:
 휼:卹:
+휼:潏:
+휼:霱:
 휼:遹:
 휼:鐍:
 휼:䘏:
-휼:潏:
 휼:獝:
 휼:䎉:
 휼:谲:
 흉:匈:가슴
 흉:兇:흉악할 흉, 나쁜 흉
 흉:洶:물살세찰 흉, 물소리 흉
-흉:汹:
-흉:㐫:
 흉:胷:胸과 同字
 흉:恟:두려워할 흉
+흉:汹:
+흉:㐫:
 흉:忷:
 흉:訩:
 흉:讻:
 흔:忻:기뻐할 흔
 흔:訢:기뻐할 흔
 흔:掀:치켜들 흔
+흔:焮:불사를 흔
+흔:很:패려궂을 흔
 흔:舋:
 흔:盺:
 흔:慁:
-흔:焮:불사를 흔
 흔:俒:
-흔:很:패려궂을 흔
 흔:拫:
 흔:鞎:
 흔:锨:
 흘:屹:산 우뚝솟을 흘, 산모양 흘
 흘:紇:질 낮은 명주실 흘, 실밑 흘
 흘:迄:이를 흘
-흘:忔:
 흘:汔:거의 흘
 흘:仡:날랠 흘
+흘:疙:쥐부스럼 흘
+흘:齕:깨물 흘
+흘:忔:
 흘:扢:
 흘:虼:
 흘:籺:
 흘:纥:
 흘:讫:
 흘:龁:
-흘:疙:쥐부스럼 흘
-흘:齕:깨물 흘
 흘:肐:
 흘:趷:
 흘:釳:
 흡:潝:빨리 흐르는 소리 흡
 흡:歙:줄일 흡
 흡:噏:숨 들이쉴 흡
-흡:熻:
 흡:翖:翕과 同字
+흡:熻:
 흡:闟:
 흡:㩉:
 흡:㒆:
 희:熺:熹와 同字, 밝을 희
 희:囍:쌍희 희
 희:戲:탄식할 희, 희롱할 희
-희:戯:
-희:煕:
-희:餙:
-희:犠:
 희:嘻:웃을 희
 희:餼:꾸밀 희
 희:燹:
 희:欷:흐느낄 희
-희:俙:
 희:唏:슬퍼할 희
+희:暿:웃을 희
+희:咥:허허 웃을 희
+희:悕:슬퍼할 희
+희:豨:멧돼지 희
+희:爔:불 희
+희:黖:
+희:戯:
+희:煕:
+희:餙:
+희:犠:
+희:俙:
 희:巇:
 희:屭:
 희:狶:
-희:暿:웃을 희
-희:咥:허허 웃을 희
 희:㶊:
 희:饎:
-희:悕:슬퍼할 희
 희:浠:
 희:嚱:
 희:橲:
 희:蟢:
 희:誒:
 희:㬢:
-희:豨:멧돼지 희
 희:呬:
 희:桸:
 희:琋:
 희:牺:
 희:诶:
 희:饩:
-희:爔:불 희
-희:黖:
 희:屓:
 희:忥:
 희:怬:
 힌디어:힌디語:
 힐:詰:물을 힐, 힐문할 힐
 힐:黠:약을 힐
-힐:肹:
 힐:頡:곧은목 힐
 힐:纈:홀치기염색 힐
+힐:犵:오랑캐이름 힐
+힐:襭:옷자락 꽂을 힐
+힐:肹:
 힐:擷:
 힐:肸:
 힐:撷:
 힐:缬:
 힐:诘:
 힐:颉:
-힐:犵:오랑캐이름 힐
-힐:襭:옷자락 꽂을 힐
 힐:恄:
 힐:欯:
 힐:翓:
diff --git a/debian/changelog b/debian/changelog
new file mode 100755 (executable)
index 0000000..e8a7791
--- /dev/null
@@ -0,0 +1,61 @@
+libhangul (2.1.10-2) unstable; urgency=low
+
+  * upgrade to libhangul 0.0.10
+  * Git: 165.213.180.234:slp/pkgs/l/libhangul
+  * Tag: libhangul_2.1.10-2
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Wed, 06 Apr 2011 14:44:16 +0900
+
+libhangul (2.1.10-1) unstable; urgency=low
+
+  * upgrade to libhangul 0.0.10
+  * Git: 165.213.180.234:slp/pkgs/l/libhangul
+  * Tag: libhangul_2.1.10-1
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Sat, 02 Apr 2011 17:32:22 +0900
+
+libhangul (2.1-4) unstable; urgency=low
+
+  * uncomment dh_makeshlibs in debian/rules
+  * Git: 165.213.180.234:/git/slp/pkgs/libhangul
+  * Tag: libhangul_2.1-4
+
+ -- Wei Ye <wei.ye@samsung.com>  Tue, 23 Nov 2010 12:00:08 +0900
+
+libhangul (2.1-3) unstable; urgency=low
+
+  * Add the bin,dev,dbg install file
+  * Git: 165.213.180.234:/git/slp/pkgs/libhangul
+  * Tag: libhangul_2.1-3
+
+ -- Wei Ye <wei.ye@samsung.com>  Tue, 23 Nov 2010 12:00:08 +0900
+
+libhangul (2.1-2) unstable; urgency=low
+
+  * Add the bin,dev,dbg package
+  * Git: 165.213.180.234:/git/slp/pkgs/libhangul
+  * Tag: libhangul_2.1-2
+
+ -- Wei Ye <wei.ye@samsung.com>  Tue, 23 Nov 2010 12:00:08 +0900
+
+libhangul (2.1-1) unstable; urgency=low
+
+  * Add the debian build directory
+  * Git: 165.213.180.234:/git/slp/pkgs/libhangul
+  * Tag: libhangul_2.1-1
+
+ -- Wei Ye <wei.ye@samsung.com>  Tue, 23 Nov 2010 12:00:08 +0900
+
+libhangul (2.0-1) unstable; urgency=low
+
+  * Add the debian build directory
+  * Git: 165.213.180.234:/git/slp/pkgs/libhangul
+  * Tag: libhangul_2.0-1
+
+ -- Wei Ye <wei.ye@samsung.com>  Tue, 12 Nov 2010 12:00:08 +0900
+
+libhangul (2.0) unstable; urgency=low
+
+  * Initial Release.
+
+ -- Wei Ye <wei.ye@samsung.com>  Tue, 04 Nov 2010 12:00:08 +0900
diff --git a/debian/compat b/debian/compat
new file mode 100755 (executable)
index 0000000..7ed6ff8
--- /dev/null
@@ -0,0 +1 @@
+5
diff --git a/debian/control b/debian/control
new file mode 100755 (executable)
index 0000000..f836e16
--- /dev/null
@@ -0,0 +1,56 @@
+Source: libhangul
+Section: libs
+Priority: optional
+Maintainer: Wei Ye <wei.ye@samsung.com>, Jihoon Kim <jihoon48.kim>
+Original-Maintainer: Changwoo Ryu <cwryu@debian.org>
+Homepage: http://kldp.net/projects/hangul
+Vcs-Browser: http://git.debian.org/?p=l10n-korean/libhangul.git
+Vcs-Git: git://git.debian.org/git/l10n-korean/libhangul.git
+Standards-Version: 3.8.3
+Build-Depends: cdbs (>= 0.4.48), autotools-dev, debhelper (>= 5)
+
+Package: libhangul0
+Section: libs
+Architecture: any
+Depends: libhangul0-data (= ${source:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Hangul keyboard input library - runtime
+ This library implements Hangul keyboard input with various types of
+ Korean keyboards.  It is intended to be a base library of Korean
+ input methods on multiple platforms.
+ .
+ This package contains the shared library and the runtime data.
+
+Package: libhangul0-data
+Section: libs
+Architecture: all
+Depends: ${misc:Depends}
+Description: Hangul keyboard input library - data
+ This library implements Hangul keyboard input with various types of
+ Korean keyboards.  It is intended to be a base library of Korean
+ input methods on multiple platforms.
+ .
+ This package contains the architecture independent data.
+
+Package: libhangul0-dbg
+Section: debug
+Priority: extra
+Architecture: any
+Depends: libhangul0 (= ${binary:Version}), ${misc:Depends}
+Description: Hangul keyboard input library - debugging symbols
+ This library implements Hangul keyboard input with various types of
+ Korean keyboards.  It is intended to be a base library of Korean
+ input methods on multiple platforms.
+ .
+ This package contains the debugging symbols. Most people will not need this
+ package.
+
+Package: libhangul-dev
+Section: libdevel
+Architecture: any
+Depends: libhangul0 (= ${binary:Version}), ${misc:Depends}
+Description: Hangul keyboard input library - development files
+ This library implements Hangul keyboard input with various types of
+ Korean keyboards.  It is intended to be a base library of Korean
+ input methods on multiple platforms.
+ .
+ This package contains the header files and the static library.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644 (file)
index 0000000..4d37109
--- /dev/null
@@ -0,0 +1,48 @@
+This package was debianized by Changwoo Ryu <cwryu@debian.org> on
+Sat,  6 Jan 2007 17:54:23 +0900.
+
+It was downloaded from http://kldp.net/projects/hangul/
+
+Upstream Author: Choe Hwanjin <krisna@kldp.org>
+
+Copyright: (C) 2004 - 2009 Choe Hwanjin
+
+License:
+
+For library code,
+
+  This library is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Lesser General Public
+  License as published by the Free Software Foundation; either
+  version 2.1 of the License, or (at your option) any later version.
+
+  See /usr/share/common-licenses/LGPL-2.1 for the full license.
+
+For data/hanja/hanja.txt,
+
+  Copyright (c) 2005,2006 Choe Hwanjin
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  1. Redistributions of source code must retain the above copyright notice,
+     this list of conditions and the following disclaimer.
+  2. Redistributions in binary form must reproduce the above copyright notice,
+     this list of conditions and the following disclaimer in the documentation
+     and/or other materials provided with the distribution.
+  3. Neither the name of the author nor the names of its contributors
+     may be used to endorse or promote products derived from this software
+     without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
diff --git a/debian/docs b/debian/docs
new file mode 100755 (executable)
index 0000000..50bd824
--- /dev/null
@@ -0,0 +1,2 @@
+NEWS
+README
diff --git a/debian/libhangul-dev.install b/debian/libhangul-dev.install
new file mode 100755 (executable)
index 0000000..5dfeaf4
--- /dev/null
@@ -0,0 +1,5 @@
+debian/tmp/usr/include/* usr/include/
+debian/tmp/usr/lib/lib*.a usr/lib/
+debian/tmp/usr/lib/lib*.so usr/lib/
+debian/tmp/usr/lib/*.la usr/lib/
+debian/tmp/usr/lib/pkgconfig/* usr/lib/pkgconfig/
diff --git a/debian/libhangul0-data.install b/debian/libhangul0-data.install
new file mode 100644 (file)
index 0000000..030888d
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/share/libhangul usr/share/
diff --git a/debian/libhangul0.install b/debian/libhangul0.install
new file mode 100755 (executable)
index 0000000..483b6b5
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/lib*.so.* usr/lib/
diff --git a/debian/rules b/debian/rules
new file mode 100755 (executable)
index 0000000..ab6d2fd
--- /dev/null
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+
+DEB_DBG_PACKAGES = libhangul0-dbg
+
+DEB_DH_MAKESHLIBS_ARGS_libhangul0 := --version-info
+
+include /usr/share/cdbs/1/rules/debhelper.mk
+include /usr/share/cdbs/1/class/autotools.mk
diff --git a/debian/watch b/debian/watch
new file mode 100644 (file)
index 0000000..b81b9fd
--- /dev/null
@@ -0,0 +1,2 @@
+version=3
+http://kldp.net/frs/?group_id=362 /frs/download.php/.*/libhangul-(.*)\.tar\.gz
index dc865d5..31638e3 100644 (file)
@@ -106,7 +106,7 @@ INLINE_INHERITED_MEMB  = NO
 # path before files name in the file list and in the header files. If set 
 # to NO the shortest path that makes the file name unique will be used.
 
-FULL_PATH_NAMES        = YES
+FULL_PATH_NAMES        = NO
 
 # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
 # can be used to strip a user-defined part of the path. Stripping is 
@@ -454,7 +454,8 @@ INPUT                  = ../hangul/hangul.h \
                         ../hangul/hangulctype.c \
                         ../hangul/hangulinputcontext.c \
                         ../hangul/hanja.c \
-                        mainpage.dox
+                        mainpage.dox \
+                        hangulkeyboards.dox
 
 # If the value of the INPUT tag contains directories, you can use the 
 # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
index 03172d6..1db3dbf 100644 (file)
@@ -1,9 +1,11 @@
-doc:
+doc: Doxyfile hangulkeyboards.dox
        doxygen
 
+hangulkeyboards.dox: gen_hangulkeyboards.py
+       ./gen_hangulkeyboards.py > $@
+
+Doxyfile: Doxyfile.in
+       cd .. && ./config.status doc/$@
+
 clean:
        rm -rf html
-
-upload:
-       cd html ; \
-       scp -pr * $(USER)@hangul.kldp.net:/var/lib/gforge/chroot/home/groups/hangul/htdocs
diff --git a/doc/gen_hangulkeyboards.py b/doc/gen_hangulkeyboards.py
new file mode 100755 (executable)
index 0000000..764f14f
--- /dev/null
@@ -0,0 +1,505 @@
+#!/usr/bin/env python
+# coding=utf-8
+
+import sys
+
+table = {}
+
+current_name = ''
+current_table = []
+
+src = open('../hangul/hangulkeyboard.h', 'r')
+for i in src.readlines():
+       pos = i.find('hangul_keyboard_table_')
+       if pos >= 0:
+               end = i.find('[')
+               current_name = i[pos + 22:end];
+               continue
+               
+       pos = i.find('}')
+       if pos >= 0:
+               if len(current_name) > 0:
+                       table[current_name] = current_table
+                       current_name = ''
+                       current_table = []
+               continue
+
+       if len(current_name) > 0:
+               code = int(i.split()[0].replace(',', ''), 16)
+               current_table.append(code)
+
+def jamo_to_compat_jamo(code):
+       table = [
+               0x3131, 0x3132, 0x3134, 0x3137,
+               0x3138, 0x3139, 0x3141, 0x3142,
+               0x3143, 0x3145, 0x3146, 0x3147,
+               0x3148, 0x3149, 0x314a, 0x314b,
+               0x314c, 0x314d, 0x314e, 0x0000,
+               0x3165, 0x3166, 0x0000, 0x0000,
+               0x0000, 0x0000, 0x3140, 0x0000,
+               0x316e, 0x3171, 0x3172, 0x0000,
+               0x3173, 0x3144, 0x3174, 0x3175,
+               0x0000, 0x0000, 0x0000, 0x3176,
+               0x0000, 0x3177, 0x0000, 0x3178,
+               0x3179, 0x317a, 0x317b, 0x317c,
+               0x0000, 0x0000, 0x317d, 0x0000,
+               0x0000, 0x0000, 0x317e, 0x0000,
+               0x0000, 0x0000, 0x0000, 0x0000,
+               0x0000, 0x0000, 0x0000, 0x0000,
+               0x317f, 0x0000, 0x0000, 0x0000,
+               0x0000, 0x0000, 0x0000, 0x3180,
+               0x0000, 0x0000, 0x0000, 0x0000,
+               0x3181, 0x0000, 0x0000, 0x0000,
+               0x0000, 0x0000, 0x0000, 0x0000,
+               0x0000, 0x0000, 0x0000, 0x3184,
+               0x3185, 0x3186, 0x0000, 0x0000,
+               0x0000, 0x0000, 0x0000, 0x0000,
+               0x3164, 0x314f, 0x3150, 0x3151,
+               0x3152, 0x3153, 0x3154, 0x3155,
+               0x3156, 0x3157, 0x3158, 0x3159,
+               0x315a, 0x315b, 0x315c, 0x315d,
+               0x315e, 0x315f, 0x3160, 0x3161,
+               0x3162, 0x3163, 0x0000, 0x0000,
+               0x0000, 0x0000, 0x0000, 0x0000,
+               0x0000, 0x0000, 0x0000, 0x0000,
+               0x0000, 0x0000, 0x0000, 0x0000,
+               0x3187, 0x3188, 0x0000, 0x0000,
+               0x3189, 0x0000, 0x0000, 0x0000,
+               0x0000, 0x0000, 0x0000, 0x0000,
+               0x0000, 0x318a, 0x318b, 0x0000,
+               0x318c, 0x0000, 0x0000, 0x0000,
+               0x0000, 0x0000, 0x0000, 0x0000,
+               0x0000, 0x0000, 0x318d, 0x0000,
+               0x0000, 0x318e, 0x0000, 0x0000,
+               0x0000, 0x0000, 0x0000, 0x0000,
+               0x3131, 0x3132, 0x3133, 0x3134,
+               0x3135, 0x3136, 0x3137, 0x3139,
+               0x313a, 0x313b, 0x313c, 0x313d,
+               0x313e, 0x313f, 0x3140, 0x3141,
+               0x3142, 0x3144, 0x3145, 0x3146,
+               0x3147, 0x3148, 0x314a, 0x314b,
+               0x314c, 0x314d, 0x314e, 0x0000,
+               0x0000, 0x0000, 0x0000, 0x3167,
+               0x3168, 0x0000, 0x0000, 0x0000,
+               0x3169, 0x0000, 0x316a, 0x0000,
+               0x0000, 0x0000, 0x0000, 0x316b,
+               0x0000, 0x0000, 0x0000, 0x316c,
+               0x0000, 0x316d, 0x0000, 0x0000,
+               0x0000, 0x316f, 0x0000, 0x3170,
+               0x0000, 0x0000, 0x0000, 0x0000,
+               0x0000, 0x0000, 0x0000, 0x0000,
+               0x0000, 0x0000, 0x0000, 0x0000,
+               0x0000, 0x0000, 0x0000, 0x0000,
+               0x0000, 0x3182, 0x3183, 0x0000,
+               0x0000, 0x0000, 0x0000, 0x0000,
+               0x0000, 0x0000, 0x0000, 0x0000,
+               0x0000, 0x0000, 0x0000, 0x0000,
+       ]
+
+       ret = 0
+       if code >= 0x1100 and code <= 0x11ff:
+               ret = table[code - 0x1100]
+
+       if ret == 0:
+               return code
+       else:
+               return ret
+
+def is_choseong(code):
+       if code >= 0x1100 and code <= 0x115f:
+               return True
+       else:
+               return False
+
+def is_jungseong(code):
+       if code >= 0x1160 and code <= 0x11a7:
+               return True
+       else:
+               return False
+
+def is_jongseong(code):
+       if code >= 0x11a8 and code <= 0x11ff:
+               return True
+       else:
+               return False
+
+def to_html_entity(code):
+       if is_choseong(code):
+               return '&#%d;&#%d;' % (code, 0x1160)
+       elif is_jungseong(code):
+               return '&#%d;&#%d;' % (0x115f, code)
+       elif is_jongseong(code):
+               return '&#%d;&#%d;&#%d;' % (0x115f, 0x1160, code)
+       else:
+               return '&#%d;' % code
+#      if is_choseong(code):
+#              return (unichr(code) + u'\x1160').encode('utf-8')
+#      elif is_jungseong(code):
+#              return (u'\0x115f' + unichr(code)).encode('utf-8')
+#      elif is_jongseong(code):
+#              return (u'\x115f\x1160' + unichr(code)).encode('utf-8')
+#      else:
+#              return unichr(code).encode('utf-8')
+
+def to_choseong_label(s):
+       return '<span class="choseong">%s</span>' % s
+
+def to_jungseong_label(s):
+       return '<span class="jungseong">%s</span>' % s
+
+def to_jongseong_label(s):
+       return '<span class="jongseong">%s</span>' % s
+
+def to_regular_label(s):
+       return '<span class="other">%s</span>' % s
+
+def make_label(code):
+       c = jamo_to_compat_jamo(code)
+       s = to_html_entity(c);
+
+       if is_choseong(code):
+               return to_choseong_label(s)
+       elif is_jungseong(code):
+               return to_jungseong_label(s)
+       elif is_jongseong(code):
+               return to_jongseong_label(s)
+       else:
+               return to_regular_label(s)
+
+def print_empty_cell():
+       print '<td class="emptycell"></td>'
+
+def print_cell_with_label(label, span):
+       print '<td class="graykeycell" colspan="%d">%s</td>' % (span, label)
+
+def print_cell_with_table(table, upper_index, lower_index, span = 4):
+       upper = table[upper_index];
+       lower = table[lower_index];     
+
+       if upper == lower:
+               upper = ord(' ')
+
+       print '<td class="keycell" colspan="%d">%s<br/>%s</td>' % (span, make_label(upper), make_label(lower))
+
+def print_keyboard_table(table):
+       print ''
+       print '@htmlonly'
+       print ''
+       print '<table class="keyboard">'
+
+       print '<tr>'
+       for i in range(0, 60):
+               print_empty_cell()
+       print '</tr>'
+
+       # 1st row
+       print '<tr>'
+       print_cell_with_table(table, 0x7e, 0x60)
+       print_cell_with_table(table, 0x21, 0x31)
+       print_cell_with_table(table, 0x40, 0x32)
+       print_cell_with_table(table, 0x23, 0x33)
+       print_cell_with_table(table, 0x24, 0x34)
+       print_cell_with_table(table, 0x25, 0x35)
+       print_cell_with_table(table, 0x5e, 0x36)
+       print_cell_with_table(table, 0x26, 0x37)
+       print_cell_with_table(table, 0x2a, 0x38)
+       print_cell_with_table(table, 0x28, 0x39)
+       print_cell_with_table(table, 0x29, 0x30)
+       print_cell_with_table(table, 0x5f, 0x2d)
+       print_cell_with_table(table, 0x2b, 0x3d)
+       print_cell_with_label('Backspace', 8)
+       print '</tr>'
+
+       # 2nd row
+       print '<tr>'
+       print_cell_with_label('Tab', 6)
+       print_cell_with_table(table, 0x51, 0x71)
+       print_cell_with_table(table, 0x57, 0x77)
+       print_cell_with_table(table, 0x45, 0x65)
+       print_cell_with_table(table, 0x52, 0x72)
+       print_cell_with_table(table, 0x54, 0x74)
+       print_cell_with_table(table, 0x59, 0x79)
+       print_cell_with_table(table, 0x55, 0x75)
+       print_cell_with_table(table, 0x49, 0x69)
+       print_cell_with_table(table, 0x4f, 0x6f)
+       print_cell_with_table(table, 0x50, 0x70)
+       print_cell_with_table(table, 0x7b, 0x5b)
+       print_cell_with_table(table, 0x7d, 0x5d)
+       print_cell_with_table(table, 0x7c, 0x5c, 6)
+       print '</tr>'
+
+       # 3rd row
+       print '<tr>'
+       print_cell_with_label('Caps Lock', 8)
+       print_cell_with_table(table, 0x41, 0x61)
+       print_cell_with_table(table, 0x53, 0x73)
+       print_cell_with_table(table, 0x44, 0x64)
+       print_cell_with_table(table, 0x46, 0x66)
+       print_cell_with_table(table, 0x47, 0x67)
+       print_cell_with_table(table, 0x48, 0x68)
+       print_cell_with_table(table, 0x4a, 0x6a)
+       print_cell_with_table(table, 0x4b, 0x6b)
+       print_cell_with_table(table, 0x4c, 0x6c)
+       print_cell_with_table(table, 0x3a, 0x3b)
+       print_cell_with_table(table, 0x22, 0x27)
+       print_cell_with_label('Enter', 8)
+       print '</tr>'
+
+       # 4th row
+       print '<tr>'
+       print_cell_with_label('Shift', 10)
+       print_cell_with_table(table, 0x5a, 0x7a)
+       print_cell_with_table(table, 0x58, 0x78)
+       print_cell_with_table(table, 0x43, 0x63)
+       print_cell_with_table(table, 0x56, 0x76)
+       print_cell_with_table(table, 0x42, 0x62)
+       print_cell_with_table(table, 0x4e, 0x6e)
+       print_cell_with_table(table, 0x4d, 0x6d)
+       print_cell_with_table(table, 0x3c, 0x2c)
+       print_cell_with_table(table, 0x3e, 0x2e)
+       print_cell_with_table(table, 0x3f, 0x2f)
+       print_cell_with_label('Shift', 10)
+       print '</tr>'
+
+       # 5th row
+       print '<!--'
+       print '<tr>'
+       print_cell_with_label('Ctrl', 5)
+       print_cell_with_label('Super', 4)
+       print_cell_with_label('Alt', 5)
+       print_cell_with_label('한자', 4)
+       print_cell_with_label('&nbsp;<br/>&nbsp;', 20)
+       print_cell_with_label('한/영', 4)
+       print_cell_with_label('Alt', 5)
+       print_cell_with_label('Super', 4)
+       print_cell_with_label('Menu', 4)
+       print_cell_with_label('Ctrl', 5)
+       print '</tr>'
+       print '-->'
+       print '</table>'
+       print ''
+       print '@endhtmlonly'
+       print ''
+
+
+print '''/**
+
+@defgroup hangulkeyboards 한글 자판
+
+libhangul에서 builtin으로 지원하는 자판은 @ref layout_2, @ref layout_2y,
+@ref layout_3f, @ref layout_390, @ref layout_3s,
+@ref layout_3y, @ref layout_ahn, @ref layout_ro 자판 이다.
+
+아래의 자판 배열은 libhangul에서 지원하는 자판을 알아보기 쉽게 그림형태로
+나타낸 것이다.
+@li 각 네모에 표시된 글자중 위에 있는 글자는 shift와 함께 눌렀을때
+입력되는 글자고 아래에 있는 글자는 그냥 눌렀을때 입력되는 글자다.
+@li 초성, 중성, 종성은 각각 붉은색, 녹색, 파란색(RGB 순서)으로 표시하였다.
+@li 한글이 아닌 것은 검은색으로 표시하였다.
+
+@htmlonly
+
+<style type="text/css">
+
+.choseong {
+       color: darkred;
+}
+
+.jungseong {
+       color: darkgreen;
+}
+
+.jongseong {
+       color: darkblue;
+}
+
+.other {
+       color: black;
+}
+
+table.keyboard {
+       font-family: sans-serif;
+       font-size: 120%;
+       border: 0px solid darkgray;
+       padding: 3px;
+       border-collapse: collapse;
+       border-collapse: separate;
+}
+
+td.emptycell {
+       width: 8px;
+       height: -3px;
+       padding: 0px;
+       margin: 0px;
+       border-style: none;
+}
+
+td.keycell {
+       text-align: center;
+       line-height: 110%;
+       background: whitesmoke;
+       padding: 2px;
+       margin: 1px;
+       border: 1px solid dimgray;
+       //border-width: 0px 1px 1px 0px;
+}
+
+td.graykeycell {
+       font-size: small;
+       text-align: center;
+       line-height: 110%;
+       color: lightgray;
+       background-color: white;
+       padding: 2px;
+       margin: 0px;
+       border: 2px solid lightgray;
+       border-width: 1px 1px 1px 1px;
+}
+
+</style>
+
+@endhtmlonly
+
+'''
+
+print '''@section layout_2 두벌식
+이 자판은 표준 두벌식을 구현한 것이다. 그러나 표준 자판과 조금 다른 동작이
+있다. 된소리 ㅃㅉㄸㄲㅆ들은 shift와 함께 누르는 방법 이외에도 반복해서
+누르면 입력된다.
+'''
+print_keyboard_table(table['2'])
+print ''
+
+print '''@section layout_2y 두벌식 옛글
+이 자판은 옛한글을 입력하기 위한 두벌식 자판이다. 아래한글의 두벌식 옛글 자판과
+같은 배열을 가지도록 만들었다. @ref layout_2 자판과 마찬가지로 된소리를 두번
+누르는 방법으로 입력할 수 있다.
+'''
+print_keyboard_table(table['2y'])
+print ''
+
+print '''@section layout_3f 세벌식 최종
+이 자판은 세벌식 최종 자판을 구현한 것이다. 원래 방식대로라면 왼쪽의 ㅗㅜ는
+다른 모음과 조합되지 않아야 하지만, libhangul에서는 좌우의 ㅗㅜ를 구분하지
+않고 다른 모음과 조합된다.
+'''
+print_keyboard_table(table['3final'])
+print ''
+
+print '''@section layout_390 세벌식 390
+이 자판은 세벌식 390 자판을 구현한 것이다. 원래 방식대로라면 왼쪽의 ㅗㅜ는
+다른 모음과 조합되지 않아야 하지만, libhangul에서는 좌우의 ㅗㅜ를 구분하지
+않고 다른 모음과 조합된다.
+'''
+print_keyboard_table(table['390'])
+print ''
+
+print '''@section layout_3s 세벌식 순아래
+이 자판은 세벌식 순아래 자판을 구현한 것이다.
+'''
+print_keyboard_table(table['3sun'])
+print ''
+
+print '''@section layout_3y 세벌식 옛글
+이 자판은 세벌식 옛글 자판을 구현한 것이다. 자판 배열은 아래한글의 세벌식
+옛글 자판과 동일하다.
+'''
+print_keyboard_table(table['3yet'])
+print ''
+
+print '''@section layout_32 세벌식 두벌배열
+이 자판은 두벌식 자판의 배열을 그대로 사용하면서 shift와 함께 자음을 누르면
+종성으로 입력되도록 만든 자판이다. 일반 사용을 위해 만들어진 것이 아니고
+두벌식 사용자가 손쉽게 세벌식 자판의 테스트를 할 수 있도록 하기 위해서
+만든 자판이다.
+'''
+print_keyboard_table(table['32'])
+print ''
+
+print '''@section layout_ahn 안마태
+이 자판은 안마태 자판을 구현한 것이다. libhangul의 안마태 자판 구현은
+안마태 자판의 규격을 충실하게 구현한 것은 아니고 적당한 수준에서 사용가능하게
+만든 것이다. 키입력이 동시에 일어났는지 판단하여 입력을 하는 방식이 아니고,
+키를 순서대로 입력하여도 자모를 조합하도록 구현하여, 안마태 자판과 유사한
+동작을 하도록 구현하였다.
+'''
+print_keyboard_table(table['ahn'])
+print ''
+
+print '''@section layout_ro 로마자
+이 자판은 현재 자판 배열의 라틴 문자를 음차하여 한글로 입력되도록 만든 자판이다.
+예를 들면 'an'을 치면 '안'이 입력되는 방식이다.
+로마자 자판은 다른 한글자판과 달리 <a href="http://en.wikipedia.org/wiki/Transliteration">Transliteration</a> 방식으로 작동하는
+자판이므로 별도의 레이아웃이 없다. 이 입력 자판에서 사용한 알파벳과 한글
+자모의 대응은 기본적으로 한글 로마자 표기법과 유사하지만
+동일하지는 않다. 로마자 자판은 한글을 입력하기 위한 것이므로 한글을 그럴듯
+하게 표기하기 위한 로마자 표기법과는 목적이 다르다. 주로 한글 자모를 모두
+입력할 수 있도록 하는 것을 우선적으로 고려하였다. 따라서 아래 자판의 대응대로
+한글을 로마자로 표기하는 것은 로마자 표기법으로는 적절하지 않다.
+
+한글 자모와 알파벳의 대응은 아래와 같다.
+@li ㄱ : g
+@li ㄴ : n
+@li ㄷ : d
+@li ㄹ : r, l
+@li ㅁ : m
+@li ㅂ : b, v
+@li ㅅ : s
+@li ㅇ : ng
+@li ㅈ : j
+@li ㅊ : c, ch
+@li ㅋ : k, q
+@li ㅌ : t
+@li ㅍ : f, p
+@li ㅎ : h
+
+@li ㄲ : gg
+@li ㄸ : dd
+@li ㅃ : bb
+@li ㅆ : ss
+@li ㅉ : jj
+@li ㅊ : ch
+
+@li ㅏ : a
+@li ㅐ : ae, ai
+@li ㅑ : ya, ia
+@li ㅒ : yae, yai, iae, iai
+@li ㅓ : eo
+@li ㅔ : e
+@li ㅕ : yeo, ieo
+@li ㅖ : ye, ie
+@li ㅗ : o
+@li ㅘ : oa, wa
+@li ㅙ : oae, oai
+@li ㅚ : oi
+@li ㅛ : yo, io
+@li ㅜ : u, w
+@li ㅝ : ueo,  weo, uo
+@li ㅞ : ue
+@li ㅟ : ui, wi
+@li ㅠ : yu, iu
+@li ㅡ : eu
+@li ㅢ : eui
+@li ㅣ : i, y
+
+그 외에 다음과 같은 조합 규칙이 있다.
+
+@li 자음없이 모음만 먼저 입력하면 초성 ㅇ이 추가된다.
+    예를 들어 'a'만 눌러도 '아'로 입력된다.
+@li ng 는 종성 ㅇ으로 입력된다.
+@li x는 음절의 시작에서는 초성 ㅈ, 끝에서는 종성 ㄳ으로 입력된다.
+@li 종성의 자음군은 앞음절의 글자로 입력된다.
+    예를 들어 'banga'는 '방아'로 입력된다.
+@li 대문자를 입력하면 음절의 시작으로 인식한다.
+    예를 들어 'banga'는 '방아'로, 'banGa'는 '반가'로 입력된다.
+    'beos'는 '벗'으로 'beOs'는 '베옷'으로 입력된다.
+@li 자음군으로 음절이 시작되면 ㅡ를 자동으로 추가한다.
+    예를 들어 'string'을 입력하면 s와 t에 ㅡ가 붙게 되어 '스트링'으로 입력된다.
+
+@sa
+다음 위키 페이지를 참조하라. @n
+http://en.wikipedia.org/wiki/Korean_romanization @n
+http://en.wikipedia.org/wiki/Revised_Romanization_of_Korean
+
+'''
+print '*/'
diff --git a/doc/html/bc_s.png b/doc/html/bc_s.png
new file mode 100644 (file)
index 0000000..e401862
Binary files /dev/null and b/doc/html/bc_s.png differ
diff --git a/doc/html/closed.png b/doc/html/closed.png
new file mode 100644 (file)
index 0000000..b7d4bd9
Binary files /dev/null and b/doc/html/closed.png differ
diff --git a/doc/html/deprecated.html b/doc/html/deprecated.html
new file mode 100644 (file)
index 0000000..babb3d4
--- /dev/null
@@ -0,0 +1,68 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>libhangul: 잘못된 코드 목록</title>
+
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  
+  
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">libhangul
+   &#160;<span id="projectnumber">Version 0.1.0</span>
+   </div>
+   
+  </td>
+  
+  
+  
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<!-- 다음에 의해 생성됨 :  Doxygen 1.7.6 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>메인&#160;페이지</span></a></li>
+      <li class="current"><a href="pages.html"><span>관련된&#160;페이지</span></a></li>
+      <li><a href="modules.html"><span>모듈</span></a></li>
+      <li><a href="files.html"><span>파일들</span></a></li>
+      <li><a href="dirs.html"><span>디렉토리</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">잘못된 코드 목록 </div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><dl class="reflist">
+<dt><a class="anchor" id="_deprecated000001"></a>전역 <a class="el" href="hangulctype_8c.html#a3bf938b66d001c7a1544ff7dce195af2">hangul_syllable_to_jaso</a>  (ucschar syllable, ucschar *choseong, ucschar *jungseong, ucschar *jongseong)</dt>
+<dd>이 함수 대신 hangul_syllable_to_jamo함수를 사용한다. </dd>
+</dl>
+</div></div>
+
+
+<hr class="footer"/><address class="footer"><small>
+생성시간 : 수 3월 28 2012 23:47:49, 프로젝트명 : libhangul, 생성자 :  &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.6
+</small></address>
+
+</body>
+</html>
diff --git a/doc/html/dir_74e344cbec9860085ddf79a94754a2b6.html b/doc/html/dir_74e344cbec9860085ddf79a94754a2b6.html
new file mode 100644 (file)
index 0000000..9f5ed4b
--- /dev/null
@@ -0,0 +1,78 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>libhangul: /home/krisna/work/libhangul/doc/hangul/ 디렉토리 참조</title>
+
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  
+  
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">libhangul
+   &#160;<span id="projectnumber">Version 0.1.0</span>
+   </div>
+   
+  </td>
+  
+  
+  
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<!-- 다음에 의해 생성됨 :  Doxygen 1.7.6 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>메인&#160;페이지</span></a></li>
+      <li><a href="pages.html"><span>관련된&#160;페이지</span></a></li>
+      <li><a href="modules.html"><span>모듈</span></a></li>
+      <li><a href="files.html"><span>파일들</span></a></li>
+      <li><a href="dirs.html"><span>디렉토리</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_74e344cbec9860085ddf79a94754a2b6.html">hangul</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">hangul 디렉토리 참조</div>  </div>
+</div>
+<div class="contents">
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="files"></a>
+파일들</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">파일 &#160;</td><td class="memItemRight" valign="bottom"><b>hangul.h</b> <a href="hangul_8h_source.html">[코드]</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">파일 &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="hangulctype_8c.html">hangulctype.c</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">파일 &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="hangulinputcontext_8c.html">hangulinputcontext.c</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">파일 &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="hanja_8c.html">hanja.c</a></td></tr>
+</table>
+</div>
+</div>
+
+
+<hr class="footer"/><address class="footer"><small>
+생성시간 : 수 3월 28 2012 23:47:49, 프로젝트명 : libhangul, 생성자 :  &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.6
+</small></address>
+
+</body>
+</html>
diff --git a/doc/html/dirs.html b/doc/html/dirs.html
new file mode 100644 (file)
index 0000000..c78be25
--- /dev/null
@@ -0,0 +1,67 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>libhangul: 디렉토리</title>
+
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  
+  
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">libhangul
+   &#160;<span id="projectnumber">Version 0.1.0</span>
+   </div>
+   
+  </td>
+  
+  
+  
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<!-- 다음에 의해 생성됨 :  Doxygen 1.7.6 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>메인&#160;페이지</span></a></li>
+      <li><a href="pages.html"><span>관련된&#160;페이지</span></a></li>
+      <li><a href="modules.html"><span>모듈</span></a></li>
+      <li><a href="files.html"><span>파일들</span></a></li>
+      <li class="current"><a href="dirs.html"><span>디렉토리</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">디렉토리</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock">이 디렉토리 목록은 완전하진 않지만, (대략적으로) 알파벳순으로 정렬되어있습니다.:</div><ul>
+<li><a class="el" href="dir_74e344cbec9860085ddf79a94754a2b6.html">hangul</a></li>
+</ul>
+</div>
+
+
+<hr class="footer"/><address class="footer"><small>
+생성시간 : 수 3월 28 2012 23:47:49, 프로젝트명 : libhangul, 생성자 :  &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.6
+</small></address>
+
+</body>
+</html>
diff --git a/doc/html/doxygen.css b/doc/html/doxygen.css
new file mode 100644 (file)
index 0000000..09c099d
--- /dev/null
@@ -0,0 +1,949 @@
+/* The standard CSS for doxygen */
+
+body, table, div, p, dl {
+       font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
+       font-size: 13px;
+       line-height: 1.5;
+}
+
+/* @group Heading Levels */
+
+h1 {
+       font-size: 150%;
+}
+
+.title {
+       font-size: 150%;
+       font-weight: bold;
+       margin: 10px 2px;
+}
+
+h2 {
+       font-size: 120%;
+}
+
+h3 {
+       font-size: 100%;
+}
+
+dt {
+       font-weight: bold;
+}
+
+div.multicol {
+       -moz-column-gap: 1em;
+       -webkit-column-gap: 1em;
+       -moz-column-count: 3;
+       -webkit-column-count: 3;
+}
+
+p.startli, p.startdd, p.starttd {
+       margin-top: 2px;
+}
+
+p.endli {
+       margin-bottom: 0px;
+}
+
+p.enddd {
+       margin-bottom: 4px;
+}
+
+p.endtd {
+       margin-bottom: 2px;
+}
+
+/* @end */
+
+caption {
+       font-weight: bold;
+}
+
+span.legend {
+        font-size: 70%;
+        text-align: center;
+}
+
+h3.version {
+        font-size: 90%;
+        text-align: center;
+}
+
+div.qindex, div.navtab{
+       background-color: #EBEFF6;
+       border: 1px solid #A3B4D7;
+       text-align: center;
+}
+
+div.qindex, div.navpath {
+       width: 100%;
+       line-height: 140%;
+}
+
+div.navtab {
+       margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a {
+       color: #3D578C;
+       font-weight: normal;
+       text-decoration: none;
+}
+
+.contents a:visited {
+       color: #4665A2;
+}
+
+a:hover {
+       text-decoration: underline;
+}
+
+a.qindex {
+       font-weight: bold;
+}
+
+a.qindexHL {
+       font-weight: bold;
+       background-color: #9CAFD4;
+       color: #ffffff;
+       border: 1px double #869DCA;
+}
+
+.contents a.qindexHL:visited {
+        color: #ffffff;
+}
+
+a.el {
+       font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code {
+       color: #4665A2; 
+}
+
+a.codeRef {
+       color: #4665A2; 
+}
+
+/* @end */
+
+dl.el {
+       margin-left: -1cm;
+}
+
+.fragment {
+       font-family: monospace, fixed;
+       font-size: 105%;
+}
+
+pre.fragment {
+       border: 1px solid #C4CFE5;
+       background-color: #FBFCFD;
+       padding: 4px 6px;
+       margin: 4px 8px 4px 2px;
+       overflow: auto;
+       word-wrap: break-word;
+       font-size:  9pt;
+       line-height: 125%;
+}
+
+div.ah {
+       background-color: black;
+       font-weight: bold;
+       color: #ffffff;
+       margin-bottom: 3px;
+       margin-top: 3px;
+       padding: 0.2em;
+       border: solid thin #333;
+       border-radius: 0.5em;
+       -webkit-border-radius: .5em;
+       -moz-border-radius: .5em;
+       box-shadow: 2px 2px 3px #999;
+       -webkit-box-shadow: 2px 2px 3px #999;
+       -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
+       background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
+}
+
+div.groupHeader {
+       margin-left: 16px;
+       margin-top: 12px;
+       font-weight: bold;
+}
+
+div.groupText {
+       margin-left: 16px;
+       font-style: italic;
+}
+
+body {
+       background-color: white;
+       color: black;
+        margin: 0;
+}
+
+div.contents {
+       margin-top: 10px;
+       margin-left: 8px;
+       margin-right: 8px;
+}
+
+td.indexkey {
+       background-color: #EBEFF6;
+       font-weight: bold;
+       border: 1px solid #C4CFE5;
+       margin: 2px 0px 2px 0;
+       padding: 2px 10px;
+        white-space: nowrap;
+        vertical-align: top;
+}
+
+td.indexvalue {
+       background-color: #EBEFF6;
+       border: 1px solid #C4CFE5;
+       padding: 2px 10px;
+       margin: 2px 0px;
+}
+
+tr.memlist {
+       background-color: #EEF1F7;
+}
+
+p.formulaDsp {
+       text-align: center;
+}
+
+img.formulaDsp {
+       
+}
+
+img.formulaInl {
+       vertical-align: middle;
+}
+
+div.center {
+       text-align: center;
+        margin-top: 0px;
+        margin-bottom: 0px;
+        padding: 0px;
+}
+
+div.center img {
+       border: 0px;
+}
+
+address.footer {
+       text-align: right;
+       padding-right: 12px;
+}
+
+img.footer {
+       border: 0px;
+       vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+       color: #008000
+}
+
+span.keywordtype {
+       color: #604020
+}
+
+span.keywordflow {
+       color: #e08000
+}
+
+span.comment {
+       color: #800000
+}
+
+span.preprocessor {
+       color: #806020
+}
+
+span.stringliteral {
+       color: #002080
+}
+
+span.charliteral {
+       color: #008080
+}
+
+span.vhdldigit { 
+       color: #ff00ff 
+}
+
+span.vhdlchar { 
+       color: #000000 
+}
+
+span.vhdlkeyword { 
+       color: #700070 
+}
+
+span.vhdllogic { 
+       color: #ff0000 
+}
+
+/* @end */
+
+/*
+.search {
+       color: #003399;
+       font-weight: bold;
+}
+
+form.search {
+       margin-bottom: 0px;
+       margin-top: 0px;
+}
+
+input.search {
+       font-size: 75%;
+       color: #000080;
+       font-weight: normal;
+       background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+       font-size: 75%;
+}
+
+.dirtab {
+       padding: 4px;
+       border-collapse: collapse;
+       border: 1px solid #A3B4D7;
+}
+
+th.dirtab {
+       background: #EBEFF6;
+       font-weight: bold;
+}
+
+hr {
+       height: 0px;
+       border: none;
+       border-top: 1px solid #4A6AAA;
+}
+
+hr.footer {
+       height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+       border-spacing: 0px;
+       padding: 0px;
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+       background-color: #F9FAFC;
+       border: none;
+       margin: 4px;
+       padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+       padding: 0px 8px 4px 8px;
+       color: #555;
+}
+
+.memItemLeft, .memItemRight, .memTemplParams {
+       border-top: 1px solid #C4CFE5;
+}
+
+.memItemLeft, .memTemplItemLeft {
+        white-space: nowrap;
+}
+
+.memItemRight {
+       width: 100%;
+}
+
+.memTemplParams {
+       color: #4665A2;
+        white-space: nowrap;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtemplate {
+       font-size: 80%;
+       color: #4665A2;
+       font-weight: normal;
+       margin-left: 9px;
+}
+
+.memnav {
+       background-color: #EBEFF6;
+       border: 1px solid #A3B4D7;
+       text-align: center;
+       margin: 2px;
+       margin-right: 15px;
+       padding: 2px;
+}
+
+.mempage {
+       width: 100%;
+}
+
+.memitem {
+       padding: 0;
+       margin-bottom: 10px;
+       margin-right: 5px;
+}
+
+.memname {
+        white-space: nowrap;
+        font-weight: bold;
+        margin-left: 6px;
+}
+
+.memproto, dl.reflist dt {
+        border-top: 1px solid #A8B8D9;
+        border-left: 1px solid #A8B8D9;
+        border-right: 1px solid #A8B8D9;
+        padding: 6px 0px 6px 0px;
+        color: #253555;
+        font-weight: bold;
+        text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+        /* opera specific markup */
+        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        border-top-right-radius: 8px;
+        border-top-left-radius: 8px;
+        /* firefox specific markup */
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        -moz-border-radius-topright: 8px;
+        -moz-border-radius-topleft: 8px;
+        /* webkit specific markup */
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        -webkit-border-top-right-radius: 8px;
+        -webkit-border-top-left-radius: 8px;
+        background-image:url('nav_f.png');
+        background-repeat:repeat-x;
+        background-color: #E2E8F2;
+
+}
+
+.memdoc, dl.reflist dd {
+        border-bottom: 1px solid #A8B8D9;      
+        border-left: 1px solid #A8B8D9;      
+        border-right: 1px solid #A8B8D9; 
+        padding: 2px 5px;
+        background-color: #FBFCFD;
+        border-top-width: 0;
+        /* opera specific markup */
+        border-bottom-left-radius: 8px;
+        border-bottom-right-radius: 8px;
+        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        /* firefox specific markup */
+        -moz-border-radius-bottomleft: 8px;
+        -moz-border-radius-bottomright: 8px;
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7);
+        /* webkit specific markup */
+        -webkit-border-bottom-left-radius: 8px;
+        -webkit-border-bottom-right-radius: 8px;
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7));
+}
+
+dl.reflist dt {
+        padding: 5px;
+}
+
+dl.reflist dd {
+        margin: 0px 0px 10px 0px;
+        padding: 5px;
+}
+
+.paramkey {
+       text-align: right;
+}
+
+.paramtype {
+       white-space: nowrap;
+}
+
+.paramname {
+       color: #602020;
+       white-space: nowrap;
+}
+.paramname em {
+       font-style: normal;
+}
+
+.params, .retval, .exception, .tparams {
+        border-spacing: 6px 2px;
+}       
+
+.params .paramname, .retval .paramname {
+        font-weight: bold;
+        vertical-align: top;
+}
+        
+.params .paramtype {
+        font-style: italic;
+        vertical-align: top;
+}       
+        
+.params .paramdir {
+        font-family: "courier new",courier,monospace;
+        vertical-align: top;
+}
+
+
+
+
+/* @end */
+
+/* @group Directory (tree) */
+
+/* for the tree view */
+
+.ftvtree {
+       font-family: sans-serif;
+       margin: 0px;
+}
+
+/* these are for tree view when used as main index */
+
+.directory {
+       font-size: 9pt;
+       font-weight: bold;
+       margin: 5px;
+}
+
+.directory h3 {
+       margin: 0px;
+       margin-top: 1em;
+       font-size: 11pt;
+}
+
+/*
+The following two styles can be used to replace the root node title
+with an image of your choice.  Simply uncomment the next two styles,
+specify the name of your image and be sure to set 'height' to the
+proper pixel height of your image.
+*/
+
+/*
+.directory h3.swap {
+       height: 61px;
+       background-repeat: no-repeat;
+       background-image: url("yourimage.gif");
+}
+.directory h3.swap span {
+       display: none;
+}
+*/
+
+.directory > h3 {
+       margin-top: 0;
+}
+
+.directory p {
+       margin: 0px;
+       white-space: nowrap;
+}
+
+.directory div {
+       display: none;
+       margin: 0px;
+}
+
+.directory img {
+       vertical-align: -30%;
+}
+
+/* these are for tree view when not used as main index */
+
+.directory-alt {
+       font-size: 100%;
+       font-weight: bold;
+}
+
+.directory-alt h3 {
+       margin: 0px;
+       margin-top: 1em;
+       font-size: 11pt;
+}
+
+.directory-alt > h3 {
+       margin-top: 0;
+}
+
+.directory-alt p {
+       margin: 0px;
+       white-space: nowrap;
+}
+
+.directory-alt div {
+       display: none;
+       margin: 0px;
+}
+
+.directory-alt img {
+       vertical-align: -30%;
+}
+
+/* @end */
+
+div.dynheader {
+        margin-top: 8px;
+}
+
+address {
+       font-style: normal;
+       color: #2A3D61;
+}
+
+table.doxtable {
+       border-collapse:collapse;
+}
+
+table.doxtable td, table.doxtable th {
+       border: 1px solid #2D4068;
+       padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+       background-color: #374F7F;
+       color: #FFFFFF;
+       font-size: 110%;
+       padding-bottom: 4px;
+       padding-top: 5px;
+       text-align:left;
+}
+
+table.fieldtable {
+        width: 100%;
+        margin-bottom: 10px;
+        border: 1px solid #A8B8D9;
+        border-spacing: 0px;
+        -moz-border-radius: 4px;
+        -webkit-border-radius: 4px;
+        border-radius: 4px;
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+        -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+        box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+}
+
+.fieldtable td, .fieldtable th {
+        padding: 3px 7px 2px;
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname {
+        white-space: nowrap;
+        border-right: 1px solid #A8B8D9;
+        border-bottom: 1px solid #A8B8D9;
+        vertical-align: top;
+}
+
+.fieldtable td.fielddoc {
+        border-bottom: 1px solid #A8B8D9;
+        width: 100%;
+}
+
+.fieldtable tr:last-child td {
+        border-bottom: none;
+}
+
+.fieldtable th {
+        background-image:url('nav_f.png');
+        background-repeat:repeat-x;
+        background-color: #E2E8F2;
+        font-size: 90%;
+        color: #253555;
+        padding-bottom: 4px;
+        padding-top: 5px;
+        text-align:left;
+        -moz-border-radius-topleft: 4px;
+        -moz-border-radius-topright: 4px;
+        -webkit-border-top-left-radius: 4px;
+        -webkit-border-top-right-radius: 4px;
+        border-top-left-radius: 4px;
+        border-top-right-radius: 4px;
+        border-bottom: 1px solid #A8B8D9;
+}
+
+
+.tabsearch {
+       top: 0px;
+       left: 10px;
+       height: 36px;
+       background-image: url('tab_b.png');
+       z-index: 101;
+       overflow: hidden;
+       font-size: 13px;
+}
+
+.navpath ul
+{
+       font-size: 11px;
+       background-image:url('tab_b.png');
+       background-repeat:repeat-x;
+       height:30px;
+       line-height:30px;
+       color:#8AA0CC;
+       border:solid 1px #C2CDE4;
+       overflow:hidden;
+       margin:0px;
+       padding:0px;
+}
+
+.navpath li
+{
+       list-style-type:none;
+       float:left;
+       padding-left:10px;
+       padding-right:15px;
+       background-image:url('bc_s.png');
+       background-repeat:no-repeat;
+       background-position:right;
+       color:#364D7C;
+}
+
+.navpath li.navelem a
+{
+       height:32px;
+       display:block;
+       text-decoration: none;
+       outline: none;
+}
+
+.navpath li.navelem a:hover
+{
+       color:#6884BD;
+}
+
+.navpath li.footer
+{
+        list-style-type:none;
+        float:right;
+        padding-left:10px;
+        padding-right:15px;
+        background-image:none;
+        background-repeat:no-repeat;
+        background-position:right;
+        color:#364D7C;
+        font-size: 8pt;
+}
+
+
+div.summary
+{
+       float: right;
+       font-size: 8pt;
+       padding-right: 5px;
+       width: 50%;
+       text-align: right;
+}       
+
+div.summary a
+{
+       white-space: nowrap;
+}
+
+div.ingroups
+{
+       margin-left: 5px;
+       font-size: 8pt;
+       padding-left: 5px;
+       width: 50%;
+       text-align: left;
+}
+
+div.ingroups a
+{
+       white-space: nowrap;
+}
+
+div.header
+{
+        background-image:url('nav_h.png');
+        background-repeat:repeat-x;
+       background-color: #F9FAFC;
+       margin:  0px;
+       border-bottom: 1px solid #C4CFE5;
+}
+
+div.headertitle
+{
+       padding: 5px 5px 5px 7px;
+}
+
+dl
+{
+        padding: 0 0 0 10px;
+}
+
+dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug
+{
+        border-left:4px solid;
+        padding: 0 0 0 6px;
+}
+
+dl.note
+{
+        border-color: #D0C000;
+}
+
+dl.warning, dl.attention
+{
+        border-color: #FF0000;
+}
+
+dl.pre, dl.post, dl.invariant
+{
+        border-color: #00D000;
+}
+
+dl.deprecated
+{
+        border-color: #505050;
+}
+
+dl.todo
+{
+        border-color: #00C0E0;
+}
+
+dl.test
+{
+        border-color: #3030E0;
+}
+
+dl.bug
+{
+        border-color: #C08050;
+}
+
+#projectlogo
+{
+       text-align: center;
+       vertical-align: bottom;
+       border-collapse: separate;
+}
+#projectlogo img
+{ 
+       border: 0px none;
+}
+#projectname
+{
+       font: 300% Tahoma, Arial,sans-serif;
+       margin: 0px;
+       padding: 2px 0px;
+}
+    
+#projectbrief
+{
+       font: 120% Tahoma, Arial,sans-serif;
+       margin: 0px;
+       padding: 0px;
+}
+
+#projectnumber
+{
+       font: 50% Tahoma, Arial,sans-serif;
+       margin: 0px;
+       padding: 0px;
+}
+
+#titlearea
+{
+       padding: 0px;
+       margin: 0px;
+       width: 100%;
+       border-bottom: 1px solid #5373B4;
+}
+
+.image
+{
+        text-align: center;
+}
+
+.dotgraph
+{
+        text-align: center;
+}
+
+.mscgraph
+{
+        text-align: center;
+}
+
+.caption
+{
+       font-weight: bold;
+}
+
+div.zoom
+{
+       border: 1px solid #90A5CE;
+}
+
+dl.citelist {
+        margin-bottom:50px;
+}
+
+dl.citelist dt {
+        color:#334975;
+        float:left;
+        font-weight:bold;
+        margin-right:10px;
+        padding:5px;
+}
+
+dl.citelist dd {
+        margin:2px 0;
+        padding:5px 0;
+}
+
+@media print
+{
+  #top { display: none; }
+  #side-nav { display: none; }
+  #nav-path { display: none; }
+  body { overflow:visible; }
+  h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
+  .summary { display: none; }
+  .memitem { page-break-inside: avoid; }
+  #doc-content
+  {
+    margin-left:0 !important;
+    height:auto !important;
+    width:auto !important;
+    overflow:inherit;
+    display:inline;
+  }
+  pre.fragment
+  {
+    overflow: visible;
+    text-wrap: unrestricted;
+    white-space: -moz-pre-wrap; /* Moz */
+    white-space: -pre-wrap; /* Opera 4-6 */
+    white-space: -o-pre-wrap; /* Opera 7 */
+    white-space: pre-wrap; /* CSS3  */
+    word-wrap: break-word; /* IE 5.5+ */
+  }
+}
+
diff --git a/doc/html/doxygen.png b/doc/html/doxygen.png
new file mode 100644 (file)
index 0000000..635ed52
Binary files /dev/null and b/doc/html/doxygen.png differ
diff --git a/doc/html/files.html b/doc/html/files.html
new file mode 100644 (file)
index 0000000..547094f
--- /dev/null
@@ -0,0 +1,76 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>libhangul: 파일 목록</title>
+
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  
+  
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">libhangul
+   &#160;<span id="projectnumber">Version 0.1.0</span>
+   </div>
+   
+  </td>
+  
+  
+  
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<!-- 다음에 의해 생성됨 :  Doxygen 1.7.6 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>메인&#160;페이지</span></a></li>
+      <li><a href="pages.html"><span>관련된&#160;페이지</span></a></li>
+      <li><a href="modules.html"><span>모듈</span></a></li>
+      <li class="current"><a href="files.html"><span>파일들</span></a></li>
+      <li><a href="dirs.html"><span>디렉토리</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li class="current"><a href="files.html"><span>파일&#160;목록</span></a></li>
+      <li><a href="globals.html"><span>전역</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">파일 목록</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock">다음은 문서화된 모든 파일에 대한 목록입니다. (간략한 설명만을 보여줍니다) :</div><table>
+  <tr><td class="indexkey"><b>hangul.h</b> <a href="hangul_8h_source.html">[코드]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="hangulctype_8c.html">hangulctype.c</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="hangulinputcontext_8c.html">hangulinputcontext.c</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="hanja_8c.html">hanja.c</a></td><td class="indexvalue"></td></tr>
+</table>
+</div>
+
+
+<hr class="footer"/><address class="footer"><small>
+생성시간 : 수 3월 28 2012 23:47:49, 프로젝트명 : libhangul, 생성자 :  &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.6
+</small></address>
+
+</body>
+</html>
diff --git a/doc/html/globals.html b/doc/html/globals.html
new file mode 100644 (file)
index 0000000..1dfca48
--- /dev/null
@@ -0,0 +1,219 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>libhangul: 전역</title>
+
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  
+  
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">libhangul
+   &#160;<span id="projectnumber">Version 0.1.0</span>
+   </div>
+   
+  </td>
+  
+  
+  
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<!-- 다음에 의해 생성됨 :  Doxygen 1.7.6 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>메인&#160;페이지</span></a></li>
+      <li><a href="pages.html"><span>관련된&#160;페이지</span></a></li>
+      <li><a href="modules.html"><span>모듈</span></a></li>
+      <li class="current"><a href="files.html"><span>파일들</span></a></li>
+      <li><a href="dirs.html"><span>디렉토리</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>파일&#160;목록</span></a></li>
+      <li class="current"><a href="globals.html"><span>전역</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow3" class="tabs2">
+    <ul class="tablist">
+      <li class="current"><a href="globals.html"><span>모두</span></a></li>
+      <li><a href="globals_func.html"><span>함수</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow4" class="tabs3">
+    <ul class="tablist">
+      <li><a href="#index_h"><span>h</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<div class="textblock">다음은 문서화된 모든 함수, 변수, 매크로, 열거형, 타입정의들의 목록입니다. 각 항목은 그들에 대한 문서화 페이지의 링크를 가지고 있습니다. :</div>
+
+<h3><a class="anchor" id="index_h"></a>- h -</h3><ul>
+<li>hangul_ic_backspace()
+: <a class="el" href="group__hangulic.html#ga8d886ba7f2e3adb1fbc8c00d58b825b3">hangulinputcontext.c</a>
+</li>
+<li>hangul_ic_delete()
+: <a class="el" href="group__hangulic.html#ga3f153cf60e726535ad175ebb894f584d">hangulinputcontext.c</a>
+</li>
+<li>hangul_ic_flush()
+: <a class="el" href="group__hangulic.html#ga40e3e40e46d1554a6e2e85280396a6b5">hangulinputcontext.c</a>
+</li>
+<li>hangul_ic_get_commit_string()
+: <a class="el" href="group__hangulic.html#gabe09f347ac91563b4dd45f93c5bd9a03">hangulinputcontext.c</a>
+</li>
+<li>hangul_ic_get_preedit_string()
+: <a class="el" href="group__hangulic.html#gac39496296816be4b516659b322e73d64">hangulinputcontext.c</a>
+</li>
+<li>hangul_ic_has_choseong()
+: <a class="el" href="group__hangulic.html#gaf6a03d6bf05b58cc50ed10e2c7172a33">hangulinputcontext.c</a>
+</li>
+<li>hangul_ic_has_jongseong()
+: <a class="el" href="group__hangulic.html#gacef5c615ac50da4dc99f50934739c424">hangulinputcontext.c</a>
+</li>
+<li>hangul_ic_has_jungseong()
+: <a class="el" href="group__hangulic.html#ga4509b431ce3a9c8b2b74120ea5dde9b5">hangulinputcontext.c</a>
+</li>
+<li>hangul_ic_is_empty()
+: <a class="el" href="group__hangulic.html#ga392305eaf52e31967719fc039b267956">hangulinputcontext.c</a>
+</li>
+<li>hangul_ic_is_transliteration()
+: <a class="el" href="group__hangulic.html#gac9e3230e98035854b806436d0569596e">hangulinputcontext.c</a>
+</li>
+<li>hangul_ic_new()
+: <a class="el" href="group__hangulic.html#ga323e53954c0fe5869ffc4cbcfc2be897">hangulinputcontext.c</a>
+</li>
+<li>hangul_ic_process()
+: <a class="el" href="group__hangulic.html#ga26a39855a3fb03a1f794aca464ae132e">hangulinputcontext.c</a>
+</li>
+<li>hangul_ic_reset()
+: <a class="el" href="group__hangulic.html#ga2fa2f5972adbdacd38e1edf62ff9fc53">hangulinputcontext.c</a>
+</li>
+<li>hangul_ic_select_keyboard()
+: <a class="el" href="group__hangulic.html#ga7dd66ed8f04fe95ff401f2b29e10db1f">hangulinputcontext.c</a>
+</li>
+<li>hangul_is_choseong()
+: <a class="el" href="group__hangulctype.html#gae7e530bdd27641359932f0ec2f35baf7">hangulctype.c</a>
+</li>
+<li>hangul_is_choseong_conjoinable()
+: <a class="el" href="group__hangulctype.html#ga2000b538de4cb62a340a7e43c915d47c">hangulctype.c</a>
+</li>
+<li>hangul_is_cjamo()
+: <a class="el" href="group__hangulctype.html#ga45f5b595d03fd57b14605d53daae3e6e">hangulctype.c</a>
+</li>
+<li>hangul_is_jamo()
+: <a class="el" href="group__hangulctype.html#ga88f2449a0cbd08eaa7ad303fe31863ae">hangulctype.c</a>
+</li>
+<li>hangul_is_jongseong()
+: <a class="el" href="group__hangulctype.html#gaf27e727a59a10d93bce3000ba67cfee5">hangulctype.c</a>
+</li>
+<li>hangul_is_jongseong_conjoinable()
+: <a class="el" href="group__hangulctype.html#ga27bf78bb7bfaa411edefdbc352ae99ba">hangulctype.c</a>
+</li>
+<li>hangul_is_jungseong()
+: <a class="el" href="group__hangulctype.html#ga13911613692587dbee7ad7a8e55d05de">hangulctype.c</a>
+</li>
+<li>hangul_is_jungseong_conjoinable()
+: <a class="el" href="group__hangulctype.html#ga1f21b5668d639a6f8239c0768eba26bb">hangulctype.c</a>
+</li>
+<li>hangul_is_syllable()
+: <a class="el" href="group__hangulctype.html#gabd6ca2bb0cd27983821116adf56b4691">hangulctype.c</a>
+</li>
+<li>hangul_jamo_to_cjamo()
+: <a class="el" href="group__hangulctype.html#ga3098332f541aafb8112ea5f5a0b7d9d7">hangulctype.c</a>
+</li>
+<li>hangul_jamo_to_syllable()
+: <a class="el" href="group__hangulctype.html#ga7f79e6e65454c3b074ac0483bb11b256">hangulctype.c</a>
+</li>
+<li>hangul_jamos_to_syllables()
+: <a class="el" href="group__hangulctype.html#gaacc8ef9ce4b4f80385a9bb8add2e3f4c">hangulctype.c</a>
+</li>
+<li>hangul_syllable_iterator_next()
+: <a class="el" href="group__hangulctype.html#ga9eacc11b58f4c8d3d30fbdf7bea1ca66">hangulctype.c</a>
+</li>
+<li>hangul_syllable_iterator_prev()
+: <a class="el" href="group__hangulctype.html#ga713c0515d849c266f2140736d7f93061">hangulctype.c</a>
+</li>
+<li>hangul_syllable_len()
+: <a class="el" href="group__hangulctype.html#gaf6e252781050757fb56131a450c459b3">hangulctype.c</a>
+</li>
+<li>hangul_syllable_to_jamo()
+: <a class="el" href="group__hangulctype.html#gab3581b43f1b9903d01aedcf1da057b6b">hangulctype.c</a>
+</li>
+<li>hangul_syllable_to_jaso()
+: <a class="el" href="hangulctype_8c.html#a3bf938b66d001c7a1544ff7dce195af2">hangulctype.c</a>
+</li>
+<li>hanja_get_comment()
+: <a class="el" href="group__hanjadictionary.html#ga72b4748e039981d3f63d76fb6431361f">hanja.c</a>
+</li>
+<li>hanja_get_key()
+: <a class="el" href="group__hanjadictionary.html#ga859e26859e874957f89be5debd783644">hanja.c</a>
+</li>
+<li>hanja_get_value()
+: <a class="el" href="group__hanjadictionary.html#ga3b86a3debe7ca1db3edf86c4db6b07e6">hanja.c</a>
+</li>
+<li>hanja_list_delete()
+: <a class="el" href="group__hanjadictionary.html#ga63619e6913dd17925c0f7a13068eee72">hanja.c</a>
+</li>
+<li>hanja_list_get_key()
+: <a class="el" href="group__hanjadictionary.html#ga1fb2943130c52b8dc57566beca98a305">hanja.c</a>
+</li>
+<li>hanja_list_get_nth()
+: <a class="el" href="group__hanjadictionary.html#ga18b8b720d23613a7895f23f7dad926e1">hanja.c</a>
+</li>
+<li>hanja_list_get_nth_comment()
+: <a class="el" href="group__hanjadictionary.html#ga978c07c6bb77fa9bd468344dce5a407c">hanja.c</a>
+</li>
+<li>hanja_list_get_nth_key()
+: <a class="el" href="group__hanjadictionary.html#ga6185a26a275245ee52660eb91b9b57ca">hanja.c</a>
+</li>
+<li>hanja_list_get_nth_value()
+: <a class="el" href="group__hanjadictionary.html#gad86b9ac4d57462a74e5c2e6d7400a447">hanja.c</a>
+</li>
+<li>hanja_list_get_size()
+: <a class="el" href="group__hanjadictionary.html#ga752da8c61bdfd61b9fbca08fb585e490">hanja.c</a>
+</li>
+<li>hanja_table_delete()
+: <a class="el" href="group__hanjadictionary.html#ga59c749533062905732587d0ff9b6f5a9">hanja.c</a>
+</li>
+<li>hanja_table_load()
+: <a class="el" href="group__hanjadictionary.html#gaaad25fe6ea42acca94b6e94868d2d4fc">hanja.c</a>
+</li>
+<li>hanja_table_match_exact()
+: <a class="el" href="group__hanjadictionary.html#gaf260f28723a8084ed36e81d751f394f2">hanja.c</a>
+</li>
+<li>hanja_table_match_prefix()
+: <a class="el" href="group__hanjadictionary.html#ga8605f5e6a162e9bc60ca6ff43b4369e6">hanja.c</a>
+</li>
+<li>hanja_table_match_suffix()
+: <a class="el" href="group__hanjadictionary.html#ga2466c41d985a584f569b2ed6b9c74cca">hanja.c</a>
+</li>
+</ul>
+</div>
+
+
+<hr class="footer"/><address class="footer"><small>
+생성시간 : 수 3월 28 2012 23:47:49, 프로젝트명 : libhangul, 생성자 :  &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.6
+</small></address>
+
+</body>
+</html>
diff --git a/doc/html/globals_func.html b/doc/html/globals_func.html
new file mode 100644 (file)
index 0000000..feac62e
--- /dev/null
@@ -0,0 +1,219 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>libhangul: 전역</title>
+
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  
+  
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">libhangul
+   &#160;<span id="projectnumber">Version 0.1.0</span>
+   </div>
+   
+  </td>
+  
+  
+  
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<!-- 다음에 의해 생성됨 :  Doxygen 1.7.6 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>메인&#160;페이지</span></a></li>
+      <li><a href="pages.html"><span>관련된&#160;페이지</span></a></li>
+      <li><a href="modules.html"><span>모듈</span></a></li>
+      <li class="current"><a href="files.html"><span>파일들</span></a></li>
+      <li><a href="dirs.html"><span>디렉토리</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>파일&#160;목록</span></a></li>
+      <li class="current"><a href="globals.html"><span>전역</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow3" class="tabs2">
+    <ul class="tablist">
+      <li><a href="globals.html"><span>모두</span></a></li>
+      <li class="current"><a href="globals_func.html"><span>함수</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow4" class="tabs3">
+    <ul class="tablist">
+      <li><a href="#index_h"><span>h</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_h"></a>- h -</h3><ul>
+<li>hangul_ic_backspace()
+: <a class="el" href="group__hangulic.html#ga8d886ba7f2e3adb1fbc8c00d58b825b3">hangulinputcontext.c</a>
+</li>
+<li>hangul_ic_delete()
+: <a class="el" href="group__hangulic.html#ga3f153cf60e726535ad175ebb894f584d">hangulinputcontext.c</a>
+</li>
+<li>hangul_ic_flush()
+: <a class="el" href="group__hangulic.html#ga40e3e40e46d1554a6e2e85280396a6b5">hangulinputcontext.c</a>
+</li>
+<li>hangul_ic_get_commit_string()
+: <a class="el" href="group__hangulic.html#gabe09f347ac91563b4dd45f93c5bd9a03">hangulinputcontext.c</a>
+</li>
+<li>hangul_ic_get_preedit_string()
+: <a class="el" href="group__hangulic.html#gac39496296816be4b516659b322e73d64">hangulinputcontext.c</a>
+</li>
+<li>hangul_ic_has_choseong()
+: <a class="el" href="group__hangulic.html#gaf6a03d6bf05b58cc50ed10e2c7172a33">hangulinputcontext.c</a>
+</li>
+<li>hangul_ic_has_jongseong()
+: <a class="el" href="group__hangulic.html#gacef5c615ac50da4dc99f50934739c424">hangulinputcontext.c</a>
+</li>
+<li>hangul_ic_has_jungseong()
+: <a class="el" href="group__hangulic.html#ga4509b431ce3a9c8b2b74120ea5dde9b5">hangulinputcontext.c</a>
+</li>
+<li>hangul_ic_is_empty()
+: <a class="el" href="group__hangulic.html#ga392305eaf52e31967719fc039b267956">hangulinputcontext.c</a>
+</li>
+<li>hangul_ic_is_transliteration()
+: <a class="el" href="group__hangulic.html#gac9e3230e98035854b806436d0569596e">hangulinputcontext.c</a>
+</li>
+<li>hangul_ic_new()
+: <a class="el" href="group__hangulic.html#ga323e53954c0fe5869ffc4cbcfc2be897">hangulinputcontext.c</a>
+</li>
+<li>hangul_ic_process()
+: <a class="el" href="group__hangulic.html#ga26a39855a3fb03a1f794aca464ae132e">hangulinputcontext.c</a>
+</li>
+<li>hangul_ic_reset()
+: <a class="el" href="group__hangulic.html#ga2fa2f5972adbdacd38e1edf62ff9fc53">hangulinputcontext.c</a>
+</li>
+<li>hangul_ic_select_keyboard()
+: <a class="el" href="group__hangulic.html#ga7dd66ed8f04fe95ff401f2b29e10db1f">hangulinputcontext.c</a>
+</li>
+<li>hangul_is_choseong()
+: <a class="el" href="group__hangulctype.html#gae7e530bdd27641359932f0ec2f35baf7">hangulctype.c</a>
+</li>
+<li>hangul_is_choseong_conjoinable()
+: <a class="el" href="group__hangulctype.html#ga2000b538de4cb62a340a7e43c915d47c">hangulctype.c</a>
+</li>
+<li>hangul_is_cjamo()
+: <a class="el" href="group__hangulctype.html#ga45f5b595d03fd57b14605d53daae3e6e">hangulctype.c</a>
+</li>
+<li>hangul_is_jamo()
+: <a class="el" href="group__hangulctype.html#ga88f2449a0cbd08eaa7ad303fe31863ae">hangulctype.c</a>
+</li>
+<li>hangul_is_jongseong()
+: <a class="el" href="group__hangulctype.html#gaf27e727a59a10d93bce3000ba67cfee5">hangulctype.c</a>
+</li>
+<li>hangul_is_jongseong_conjoinable()
+: <a class="el" href="group__hangulctype.html#ga27bf78bb7bfaa411edefdbc352ae99ba">hangulctype.c</a>
+</li>
+<li>hangul_is_jungseong()
+: <a class="el" href="group__hangulctype.html#ga13911613692587dbee7ad7a8e55d05de">hangulctype.c</a>
+</li>
+<li>hangul_is_jungseong_conjoinable()
+: <a class="el" href="group__hangulctype.html#ga1f21b5668d639a6f8239c0768eba26bb">hangulctype.c</a>
+</li>
+<li>hangul_is_syllable()
+: <a class="el" href="group__hangulctype.html#gabd6ca2bb0cd27983821116adf56b4691">hangulctype.c</a>
+</li>
+<li>hangul_jamo_to_cjamo()
+: <a class="el" href="group__hangulctype.html#ga3098332f541aafb8112ea5f5a0b7d9d7">hangulctype.c</a>
+</li>
+<li>hangul_jamo_to_syllable()
+: <a class="el" href="group__hangulctype.html#ga7f79e6e65454c3b074ac0483bb11b256">hangulctype.c</a>
+</li>
+<li>hangul_jamos_to_syllables()
+: <a class="el" href="group__hangulctype.html#gaacc8ef9ce4b4f80385a9bb8add2e3f4c">hangulctype.c</a>
+</li>
+<li>hangul_syllable_iterator_next()
+: <a class="el" href="group__hangulctype.html#ga9eacc11b58f4c8d3d30fbdf7bea1ca66">hangulctype.c</a>
+</li>
+<li>hangul_syllable_iterator_prev()
+: <a class="el" href="group__hangulctype.html#ga713c0515d849c266f2140736d7f93061">hangulctype.c</a>
+</li>
+<li>hangul_syllable_len()
+: <a class="el" href="group__hangulctype.html#gaf6e252781050757fb56131a450c459b3">hangulctype.c</a>
+</li>
+<li>hangul_syllable_to_jamo()
+: <a class="el" href="group__hangulctype.html#gab3581b43f1b9903d01aedcf1da057b6b">hangulctype.c</a>
+</li>
+<li>hangul_syllable_to_jaso()
+: <a class="el" href="hangulctype_8c.html#a3bf938b66d001c7a1544ff7dce195af2">hangulctype.c</a>
+</li>
+<li>hanja_get_comment()
+: <a class="el" href="group__hanjadictionary.html#ga72b4748e039981d3f63d76fb6431361f">hanja.c</a>
+</li>
+<li>hanja_get_key()
+: <a class="el" href="group__hanjadictionary.html#ga859e26859e874957f89be5debd783644">hanja.c</a>
+</li>
+<li>hanja_get_value()
+: <a class="el" href="group__hanjadictionary.html#ga3b86a3debe7ca1db3edf86c4db6b07e6">hanja.c</a>
+</li>
+<li>hanja_list_delete()
+: <a class="el" href="group__hanjadictionary.html#ga63619e6913dd17925c0f7a13068eee72">hanja.c</a>
+</li>
+<li>hanja_list_get_key()
+: <a class="el" href="group__hanjadictionary.html#ga1fb2943130c52b8dc57566beca98a305">hanja.c</a>
+</li>
+<li>hanja_list_get_nth()
+: <a class="el" href="group__hanjadictionary.html#ga18b8b720d23613a7895f23f7dad926e1">hanja.c</a>
+</li>
+<li>hanja_list_get_nth_comment()
+: <a class="el" href="group__hanjadictionary.html#ga978c07c6bb77fa9bd468344dce5a407c">hanja.c</a>
+</li>
+<li>hanja_list_get_nth_key()
+: <a class="el" href="group__hanjadictionary.html#ga6185a26a275245ee52660eb91b9b57ca">hanja.c</a>
+</li>
+<li>hanja_list_get_nth_value()
+: <a class="el" href="group__hanjadictionary.html#gad86b9ac4d57462a74e5c2e6d7400a447">hanja.c</a>
+</li>
+<li>hanja_list_get_size()
+: <a class="el" href="group__hanjadictionary.html#ga752da8c61bdfd61b9fbca08fb585e490">hanja.c</a>
+</li>
+<li>hanja_table_delete()
+: <a class="el" href="group__hanjadictionary.html#ga59c749533062905732587d0ff9b6f5a9">hanja.c</a>
+</li>
+<li>hanja_table_load()
+: <a class="el" href="group__hanjadictionary.html#gaaad25fe6ea42acca94b6e94868d2d4fc">hanja.c</a>
+</li>
+<li>hanja_table_match_exact()
+: <a class="el" href="group__hanjadictionary.html#gaf260f28723a8084ed36e81d751f394f2">hanja.c</a>
+</li>
+<li>hanja_table_match_prefix()
+: <a class="el" href="group__hanjadictionary.html#ga8605f5e6a162e9bc60ca6ff43b4369e6">hanja.c</a>
+</li>
+<li>hanja_table_match_suffix()
+: <a class="el" href="group__hanjadictionary.html#ga2466c41d985a584f569b2ed6b9c74cca">hanja.c</a>
+</li>
+</ul>
+</div>
+
+
+<hr class="footer"/><address class="footer"><small>
+생성시간 : 수 3월 28 2012 23:47:49, 프로젝트명 : libhangul, 생성자 :  &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.6
+</small></address>
+
+</body>
+</html>
diff --git a/doc/html/group__hangulctype.html b/doc/html/group__hangulctype.html
new file mode 100644 (file)
index 0000000..8c290fe
--- /dev/null
@@ -0,0 +1,619 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>libhangul: 한글 글자 조작</title>
+
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  
+  
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">libhangul
+   &#160;<span id="projectnumber">Version 0.1.0</span>
+   </div>
+   
+  </td>
+  
+  
+  
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<!-- 다음에 의해 생성됨 :  Doxygen 1.7.6 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>메인&#160;페이지</span></a></li>
+      <li><a href="pages.html"><span>관련된&#160;페이지</span></a></li>
+      <li><a href="modules.html"><span>모듈</span></a></li>
+      <li><a href="files.html"><span>파일들</span></a></li>
+      <li><a href="dirs.html"><span>디렉토리</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#typedef-members">타입정의</a> &#124;
+<a href="#func-members">함수</a>  </div>
+  <div class="headertitle">
+<div class="title">한글 글자 조작</div>  </div>
+</div>
+<div class="contents">
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="typedef-members"></a>
+타입정의</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">UCS4 코드 단위의 글자 코드 값  <a href="#ga2c1a56543786ad0dcce173493019448c"></a><br/></td></tr>
+<tr><td colspan="2"><h2><a name="func-members"></a>
+함수</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#gae7e530bdd27641359932f0ec2f35baf7">hangul_is_choseong</a> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> c)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">초성인지 확인하는 함수  <a href="#gae7e530bdd27641359932f0ec2f35baf7"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#ga13911613692587dbee7ad7a8e55d05de">hangul_is_jungseong</a> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> c)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">중성인지 확인하는 함수  <a href="#ga13911613692587dbee7ad7a8e55d05de"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#gaf27e727a59a10d93bce3000ba67cfee5">hangul_is_jongseong</a> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> c)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">종성인지 확인하는 함수  <a href="#gaf27e727a59a10d93bce3000ba67cfee5"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2000b538de4cb62a340a7e43c915d47c"></a><!-- doxytag: member="hangulctype::hangul_is_choseong_conjoinable" ref="ga2000b538de4cb62a340a7e43c915d47c" args="(ucschar c)" -->
+bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#ga2000b538de4cb62a340a7e43c915d47c">hangul_is_choseong_conjoinable</a> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> c)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">초성이고 조합 가능한지 확인 <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga1f21b5668d639a6f8239c0768eba26bb"></a><!-- doxytag: member="hangulctype::hangul_is_jungseong_conjoinable" ref="ga1f21b5668d639a6f8239c0768eba26bb" args="(ucschar c)" -->
+bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#ga1f21b5668d639a6f8239c0768eba26bb">hangul_is_jungseong_conjoinable</a> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> c)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">중성이고 조합 가능한지 확인 <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga27bf78bb7bfaa411edefdbc352ae99ba"></a><!-- doxytag: member="hangulctype::hangul_is_jongseong_conjoinable" ref="ga27bf78bb7bfaa411edefdbc352ae99ba" args="(ucschar c)" -->
+bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#ga27bf78bb7bfaa411edefdbc352ae99ba">hangul_is_jongseong_conjoinable</a> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> c)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">종성이고 조합 가능한지 확인 <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#gabd6ca2bb0cd27983821116adf56b4691">hangul_is_syllable</a> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> c)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">한글 음절 인지 확  <a href="#gabd6ca2bb0cd27983821116adf56b4691"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#ga88f2449a0cbd08eaa7ad303fe31863ae">hangul_is_jamo</a> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> c)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">자모 인지 확인  <a href="#ga88f2449a0cbd08eaa7ad303fe31863ae"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#ga45f5b595d03fd57b14605d53daae3e6e">hangul_is_cjamo</a> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> c)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">호환 자모인지 확인  <a href="#ga45f5b595d03fd57b14605d53daae3e6e"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#ga3098332f541aafb8112ea5f5a0b7d9d7">hangul_jamo_to_cjamo</a> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> c)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">자모 코드를 대응하는 호환 자모로 변환  <a href="#ga3098332f541aafb8112ea5f5a0b7d9d7"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#ga7f79e6e65454c3b074ac0483bb11b256">hangul_jamo_to_syllable</a> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> choseong, <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> jungseong, <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> jongseong)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">자모 코드를 조합하여 한글 음절로 변환  <a href="#ga7f79e6e65454c3b074ac0483bb11b256"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#gab3581b43f1b9903d01aedcf1da057b6b">hangul_syllable_to_jamo</a> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> syllable, <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *choseong, <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *jungseong, <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *jongseong)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">음절을 자모로 분해  <a href="#gab3581b43f1b9903d01aedcf1da057b6b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#gaf6e252781050757fb56131a450c459b3">hangul_syllable_len</a> (const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *str, int max_len)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">한 음절에 해당하는 코드의 갯수를 구하는 함수  <a href="#gaf6e252781050757fb56131a450c459b3"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#ga713c0515d849c266f2140736d7f93061">hangul_syllable_iterator_prev</a> (const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *iter, const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *begin)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><em>iter를</em> 기준으로 이전 음절의 첫자모 글자에 대한 포인터를 구하는 함수  <a href="#ga713c0515d849c266f2140736d7f93061"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#ga9eacc11b58f4c8d3d30fbdf7bea1ca66">hangul_syllable_iterator_next</a> (const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *iter, const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *end)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><em>iter를</em> 기준으로 다음 음절의 첫자모 글자에 대한 포인터를 구하는 함수  <a href="#ga9eacc11b58f4c8d3d30fbdf7bea1ca66"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#gaacc8ef9ce4b4f80385a9bb8add2e3f4c">hangul_jamos_to_syllables</a> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *dest, int destlen, const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *src, int srclen)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">자모 스트링을 음절 스트링으로 변환  <a href="#gaacc8ef9ce4b4f80385a9bb8add2e3f4c"></a><br/></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>상세한 설명</h2>
+<h2><a class="anchor" id="hangulctype"></a>
+한글 글자 조작</h2>
+<p>libhangul은 한글 각 글자를 구분하고 조작하는데 사용할 수 있는 몇가지 함수를 제공한다. libhangul의 글자 구분 함수의 인터페이스에서 글자의 기본 단위는 UCS4 코드값이다. </p>
+<hr/><h2>타입정의 문서화</h2>
+<a class="anchor" id="ga2c1a56543786ad0dcce173493019448c"></a><!-- doxytag: member="hangul.h::ucschar" ref="ga2c1a56543786ad0dcce173493019448c" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>UCS4 코드 단위의 글자 코드 값 </p>
+<p>UCS4 코드 값을 저장한다. libhangul에서 사용하는 문자열의 기본단위이다. preedit 문자열과 commit 문자열 모두 ucschar 포인터 형으로 전달된다. 이 스트링은 C 스트링과 유사하게 0으로 끝난다. 유니코드 값이 한글의 어떤 범주에 속하는지 확인하는 함수도 모두 ucschar 형을 사용한다. </p>
+
+</div>
+</div>
+<hr/><h2>함수 문서화</h2>
+<a class="anchor" id="gae7e530bdd27641359932f0ec2f35baf7"></a><!-- doxytag: member="hangulctype.c::hangul_is_choseong" ref="gae7e530bdd27641359932f0ec2f35baf7" args="(ucschar c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="group__hangulctype.html#gae7e530bdd27641359932f0ec2f35baf7">hangul_is_choseong</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a>&#160;</td>
+          <td class="paramname"><em>c</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>초성인지 확인하는 함수 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>UCS4 코드 값 </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>반환값:</b></dt><dd><em>c</em> 가 초성에 해당하면 true를 리턴함, 아니면 false</dd></dl>
+<p><em>c</em> 로 주어진 UCS4 코드가 초성인지 확인한다. Unicode 5.2 지원 </p>
+
+<p>다음에 의해서 참조됨 :  <a class="el" href="group__hangulctype.html#ga88f2449a0cbd08eaa7ad303fe31863ae">hangul_is_jamo()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ga45f5b595d03fd57b14605d53daae3e6e"></a><!-- doxytag: member="hangulctype.c::hangul_is_cjamo" ref="ga45f5b595d03fd57b14605d53daae3e6e" args="(ucschar c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="group__hangulctype.html#ga45f5b595d03fd57b14605d53daae3e6e">hangul_is_cjamo</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a>&#160;</td>
+          <td class="paramname"><em>c</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>호환 자모인지 확인 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>UCS4 코드 값 </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>반환값:</b></dt><dd><em>c가</em> 호환자모이면 true, 그 외에는 false</dd></dl>
+<p>이 함수는 <em>c로</em> 주어진 UCS4 코드가 호환 자모인지 확인한다. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga88f2449a0cbd08eaa7ad303fe31863ae"></a><!-- doxytag: member="hangulctype.c::hangul_is_jamo" ref="ga88f2449a0cbd08eaa7ad303fe31863ae" args="(ucschar c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="group__hangulctype.html#ga88f2449a0cbd08eaa7ad303fe31863ae">hangul_is_jamo</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a>&#160;</td>
+          <td class="paramname"><em>c</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>자모 인지 확인 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>UCS4 코드 값 </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>반환값:</b></dt><dd><em>c</em> 가 자모 코드이면 true를 리턴, 그외에는 false</dd></dl>
+<p><em>c</em> 로 주어진 UCS4 코드가 자모 코드인지 확인한다. Unicode 5.2 지원 </p>
+
+<p>다음을 참조함 :  <a class="el" href="group__hangulctype.html#gae7e530bdd27641359932f0ec2f35baf7">hangul_is_choseong()</a>, <a class="el" href="group__hangulctype.html#gaf27e727a59a10d93bce3000ba67cfee5">hangul_is_jongseong()</a>, <a class="el" href="group__hangulctype.html#ga13911613692587dbee7ad7a8e55d05de">hangul_is_jungseong()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="gaf27e727a59a10d93bce3000ba67cfee5"></a><!-- doxytag: member="hangulctype.c::hangul_is_jongseong" ref="gaf27e727a59a10d93bce3000ba67cfee5" args="(ucschar c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="group__hangulctype.html#gaf27e727a59a10d93bce3000ba67cfee5">hangul_is_jongseong</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a>&#160;</td>
+          <td class="paramname"><em>c</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>종성인지 확인하는 함수 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>UCS4 코드 값 </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>반환값:</b></dt><dd><em>c</em> 가 종성에 해당하면 true를 리턴함, 아니면 false</dd></dl>
+<p><em>c</em> 로 주어진 UCS4 코드가 종성인지 확인한다. Unicode 5.2 지원 </p>
+
+<p>다음에 의해서 참조됨 :  <a class="el" href="group__hangulctype.html#ga88f2449a0cbd08eaa7ad303fe31863ae">hangul_is_jamo()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ga13911613692587dbee7ad7a8e55d05de"></a><!-- doxytag: member="hangulctype.c::hangul_is_jungseong" ref="ga13911613692587dbee7ad7a8e55d05de" args="(ucschar c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="group__hangulctype.html#ga13911613692587dbee7ad7a8e55d05de">hangul_is_jungseong</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a>&#160;</td>
+          <td class="paramname"><em>c</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>중성인지 확인하는 함수 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>UCS4 코드 값 </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>반환값:</b></dt><dd><em>c</em> 가 중성에 해당하면 true를 리턴함, 아니면 false</dd></dl>
+<p><em>c</em> 로 주어진 UCS4 코드가 중성인지 확인한다. Unicode 5.2 지원 </p>
+
+<p>다음에 의해서 참조됨 :  <a class="el" href="group__hangulctype.html#ga88f2449a0cbd08eaa7ad303fe31863ae">hangul_is_jamo()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="gabd6ca2bb0cd27983821116adf56b4691"></a><!-- doxytag: member="hangulctype.c::hangul_is_syllable" ref="gabd6ca2bb0cd27983821116adf56b4691" args="(ucschar c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="group__hangulctype.html#gabd6ca2bb0cd27983821116adf56b4691">hangul_is_syllable</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a>&#160;</td>
+          <td class="paramname"><em>c</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>한글 음절 인지 확 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>UCS4 코드 값 </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>반환값:</b></dt><dd><em>c가</em> 한글 음절 코드이면 true, 그 외에는 false</dd></dl>
+<p>이 함수는 <em>c로</em> 주어진 UCS4 코드가 현대 한글 음절에 해당하는지 확인한다. </p>
+
+<p>다음에 의해서 참조됨 :  <a class="el" href="group__hangulctype.html#gab3581b43f1b9903d01aedcf1da057b6b">hangul_syllable_to_jamo()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ga3098332f541aafb8112ea5f5a0b7d9d7"></a><!-- doxytag: member="hangulctype.c::hangul_jamo_to_cjamo" ref="ga3098332f541aafb8112ea5f5a0b7d9d7" args="(ucschar c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> <a class="el" href="group__hangulctype.html#ga3098332f541aafb8112ea5f5a0b7d9d7">hangul_jamo_to_cjamo</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a>&#160;</td>
+          <td class="paramname"><em>c</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>자모 코드를 대응하는 호환 자모로 변환 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>변환할 UCS4 코드 값 </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>반환값:</b></dt><dd><em>c</em> 에 대응되는 호환 자모 값, or c</dd></dl>
+<p>이 함수는 <em>c</em> 로 주어진 자모 코드와 같은 형태를 가진 호환 자모 값을 리턴한다. 자모와 같은 형태를 가진 호환 자모가 없는 경우에는 <em>c</em> 의 값을 그대로 리턴한다. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga7f79e6e65454c3b074ac0483bb11b256"></a><!-- doxytag: member="hangulctype.c::hangul_jamo_to_syllable" ref="ga7f79e6e65454c3b074ac0483bb11b256" args="(ucschar choseong, ucschar jungseong, ucschar jongseong)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> <a class="el" href="group__hangulctype.html#ga7f79e6e65454c3b074ac0483bb11b256">hangul_jamo_to_syllable</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a>&#160;</td>
+          <td class="paramname"><em>choseong</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a>&#160;</td>
+          <td class="paramname"><em>jungseong</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a>&#160;</td>
+          <td class="paramname"><em>jongseong</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>자모 코드를 조합하여 한글 음절로 변환 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">choseong</td><td>초성이 될 UCS4 코드 값 </td></tr>
+    <tr><td class="paramname">jungseong</td><td>중성이 될 UCS4 코드 값 </td></tr>
+    <tr><td class="paramname">jongseong</td><td>종성이 될 UCS4 코드 값 </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>반환값:</b></dt><dd><em>choseong</em> <em>jungseong</em> <em>jongseong을</em> 조합한 현대 한글 음절 코드, 또는 0</dd></dl>
+<p>이 함수는 <em>choseong</em> <em>jungseong</em> <em>jongseong으로</em> 주어진 코드 값을 각각 초성, 중성, 종성으로 하는 현대 한글 음절 코드를 구한다. <em>choseong</em> <em>jungseong</em> <em>jongseong</em> 이 조합 가능한 코드가 아니라면 0을 리턴한다. 종성이 없는 글자를 만들기 위해서는 jongseong에 0을 주면 된다. </p>
+
+<p>다음을 참조함 :  <a class="el" href="group__hangulctype.html#ga2000b538de4cb62a340a7e43c915d47c">hangul_is_choseong_conjoinable()</a>, <a class="el" href="group__hangulctype.html#ga27bf78bb7bfaa411edefdbc352ae99ba">hangul_is_jongseong_conjoinable()</a>, <a class="el" href="group__hangulctype.html#ga1f21b5668d639a6f8239c0768eba26bb">hangul_is_jungseong_conjoinable()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="gaacc8ef9ce4b4f80385a9bb8add2e3f4c"></a><!-- doxytag: member="hangulctype.c::hangul_jamos_to_syllables" ref="gaacc8ef9ce4b4f80385a9bb8add2e3f4c" args="(ucschar *dest, int destlen, const ucschar *src, int srclen)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="group__hangulctype.html#gaacc8ef9ce4b4f80385a9bb8add2e3f4c">hangul_jamos_to_syllables</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *&#160;</td>
+          <td class="paramname"><em>dest</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>destlen</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *&#160;</td>
+          <td class="paramname"><em>src</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>srclen</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>자모 스트링을 음절 스트링으로 변환 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">dest</td><td>음절형으로 변환된 결과가 저장될 버퍼 </td></tr>
+    <tr><td class="paramname">destlen</td><td>결과를 저장할 버퍼의 길이(ucschar 코드 단위) </td></tr>
+    <tr><td class="paramname">src</td><td>변환할 자모 스트링 </td></tr>
+    <tr><td class="paramname">srclen</td><td>변환할 자모 스트링의 길이(ucschar 코드 단위) </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>반환값:</b></dt><dd><em>destlen</em> 에 저장한 코드의 갯수</dd></dl>
+<p>이 함수는 L+V+T*M? 패턴에 따라 자모 스트링 변환을 시도한다. 한 음절을 판단하는 기준은 <a class="el" href="group__hangulctype.html#gaf6e252781050757fb56131a450c459b3">hangul_syllable_len</a> 을 참조한다. 만일 <em>src</em> 가 적절한 음절형태로 변환이 불가능한 경우에는 자모 스트링이 그대로 복사된다.</p>
+<p>이 함수는 자모 스트링 <em>src</em> 를 음절형으로 변환하여 <em>dest</em> 에 저장한다. <em>srclen</em> 에 지정된 갯수만큼 읽고, <em>destlen</em> 에 지정된 길이 이상 쓰지 않는다. <em>srclen</em> 이 -1이라면 <em>src</em> 는 0으로 끝나는 스트링으로 가정하고 0을 제외한 길이까지 변환을 시도한다. 따라서 변환된 결과 스트링은 0으로 끝나지 않는다. 만일 0으로 끝나는 스트링을 만들고 싶다면 다음과 같이 한다.</p>
+<div class="fragment"><pre class="fragment"> <span class="keywordtype">int</span> n = <a class="code" href="group__hangulctype.html#gaacc8ef9ce4b4f80385a9bb8add2e3f4c" title="자모 스트링을 음절 스트링으로 변환">hangul_jamos_to_syllables</a>(dest, destlen, src, srclen);
+ dest[n] = 0;
+</pre></div> 
+<p>다음을 참조함 :  <a class="el" href="group__hangulctype.html#gaf6e252781050757fb56131a450c459b3">hangul_syllable_len()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ga9eacc11b58f4c8d3d30fbdf7bea1ca66"></a><!-- doxytag: member="hangulctype.c::hangul_syllable_iterator_next" ref="ga9eacc11b58f4c8d3d30fbdf7bea1ca66" args="(const ucschar *iter, const ucschar *end)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a>* <a class="el" href="group__hangulctype.html#ga9eacc11b58f4c8d3d30fbdf7bea1ca66">hangul_syllable_iterator_next</a> </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *&#160;</td>
+          <td class="paramname"><em>iter</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *&#160;</td>
+          <td class="paramname"><em>end</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p><em>iter를</em> 기준으로 다음 음절의 첫자모 글자에 대한 포인터를 구하는 함수 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">iter</td><td>현재 위치 </td></tr>
+    <tr><td class="paramname">end</td><td>스트링의 끝위치, 포인터가 이동할 한계값 </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>반환값:</b></dt><dd>다음 음절의 첫번째 자모에 대한 포인터</dd></dl>
+<p>이 함수는 <em>iter로</em> 주어진 자모 스트링의 포인터를 기준으로 다음 음절의 첫번째 자모에 대한 포인터를 리턴한다. 음절을 찾기위해서 end를 넘어 이동하지 않는다.</p>
+<p>한 음절이라고 판단하는 기준은 L*V*T+M? 패턴에 따른다. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga713c0515d849c266f2140736d7f93061"></a><!-- doxytag: member="hangulctype.c::hangul_syllable_iterator_prev" ref="ga713c0515d849c266f2140736d7f93061" args="(const ucschar *iter, const ucschar *begin)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a>* <a class="el" href="group__hangulctype.html#ga713c0515d849c266f2140736d7f93061">hangul_syllable_iterator_prev</a> </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *&#160;</td>
+          <td class="paramname"><em>iter</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *&#160;</td>
+          <td class="paramname"><em>begin</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p><em>iter를</em> 기준으로 이전 음절의 첫자모 글자에 대한 포인터를 구하는 함수 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">iter</td><td>현재 위치 </td></tr>
+    <tr><td class="paramname">begin</td><td>스트링의 시작위치, 포인터가 이동할 한계값 </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>반환값:</b></dt><dd>이전 음절의 첫번째 자모에 대한 포인터</dd></dl>
+<p>이 함수는 <em>iter로</em> 주어진 자모 스트링의 포인터를 기준으로 이전 음절의 첫번째 자모에 대한 포인터를 리턴한다. 음절을 찾기위해서 begin보다 앞쪽으로 이동하지 않는다.</p>
+<p>한 음절이라고 판단하는 기준은 L*V*T+M? 패턴에 따른다. </p>
+
+</div>
+</div>
+<a class="anchor" id="gaf6e252781050757fb56131a450c459b3"></a><!-- doxytag: member="hangulctype.c::hangul_syllable_len" ref="gaf6e252781050757fb56131a450c459b3" args="(const ucschar *str, int max_len)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="group__hangulctype.html#gaf6e252781050757fb56131a450c459b3">hangul_syllable_len</a> </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *&#160;</td>
+          <td class="paramname"><em>str</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>max_len</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>한 음절에 해당하는 코드의 갯수를 구하는 함수 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">str</td><td>음절의 길이를 구할 스트링 </td></tr>
+    <tr><td class="paramname">max_len</td><td><em>str</em> 에서 읽을 길이의 제한값 </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>반환값:</b></dt><dd>한 음절에 해당하는 코드의 갯수</dd></dl>
+<p>이 함수는 <em>str</em> 에서 한 음절에 해당하는 코드의 갯수를 구한다. 한 음절에 해당하는 코드의 갯수가 <em>max_len</em> 보다 많다면 <em>max_len</em> 을 반환한다. 한 음절이라고 판단하는 기준은 L*V*T+ 패턴에 따른다. 이 패턴은 regular expression의 컨벤션을 따른 것으로, 1개 이상의 초성과 중성, 0개 이상의 종성이 모인 자모 스트링을 한 음절로 인식한다는 뜻이다. 예를 들면 다음과 같은 자모 스트링도 한 음절로 인식한다.</p>
+<p>예) "ㅂ ㅂ ㅜ ㅔ ㄹ ㄱ" -&gt; "쀍"</p>
+<p>따라서 위 경우에는 6을 반환하게 된다.</p>
+<p>일반적으로는 방점(U+302E, U+302F)까지 한 음절로 인식하겠지만, 이 함수는 음절과 자모간 변환을 편리하게 하기 위해 구현된 것으로 방점은 다른 음절로 인식한다.</p>
+<p><em>str</em> 이 자모 코드에 해당하지 않는 경우에는 1을 반환한다.</p>
+<p>이 함수는 자모 스트링에서 총 음절의 갯수를 구하는 함수가 아님에 주의한다. </p>
+
+<p>다음에 의해서 참조됨 :  <a class="el" href="group__hangulctype.html#gaacc8ef9ce4b4f80385a9bb8add2e3f4c">hangul_jamos_to_syllables()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="gab3581b43f1b9903d01aedcf1da057b6b"></a><!-- doxytag: member="hangulctype.c::hangul_syllable_to_jamo" ref="gab3581b43f1b9903d01aedcf1da057b6b" args="(ucschar syllable, ucschar *choseong, ucschar *jungseong, ucschar *jongseong)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="group__hangulctype.html#gab3581b43f1b9903d01aedcf1da057b6b">hangul_syllable_to_jamo</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a>&#160;</td>
+          <td class="paramname"><em>syllable</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *&#160;</td>
+          <td class="paramname"><em>choseong</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *&#160;</td>
+          <td class="paramname"><em>jungseong</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *&#160;</td>
+          <td class="paramname"><em>jongseong</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>음절을 자모로 분해 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">syllable</td><td>분해할 음절 </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt><b>반환값:</b></dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">choseong</td><td>음절에서 초성 부분의 코드 </td></tr>
+    <tr><td class="paramname">jungseong</td><td>음절에서 중성 부분의 코드 </td></tr>
+    <tr><td class="paramname">jongseong</td><td>음절에서 종성 부분의 코드, 종성이 없으면 0을 반환한다 </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>반환값:</b></dt><dd>없음</dd></dl>
+<p>이 함수는 <em>syllable</em> 로 주어진 음절 코드를 분해하여 자모 코드를 반환한다. 반환하는 값은 <em>choseong</em>, <em>jungseong</em>, <em>jongseong</em> 의 포인터에 대입하여 리턴한다. 종성이 없는 음절인 경우에는 <em>jongseong</em> 에 0을 반환한다. </p>
+
+<p>다음을 참조함 :  <a class="el" href="group__hangulctype.html#gabd6ca2bb0cd27983821116adf56b4691">hangul_is_syllable()</a>.</p>
+
+<p>다음에 의해서 참조됨 :  <a class="el" href="hangulctype_8c.html#a3bf938b66d001c7a1544ff7dce195af2">hangul_syllable_to_jaso()</a>.</p>
+
+</div>
+</div>
+</div>
+
+
+<hr class="footer"/><address class="footer"><small>
+생성시간 : 수 3월 28 2012 23:47:49, 프로젝트명 : libhangul, 생성자 :  &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.6
+</small></address>
+
+</body>
+</html>
diff --git a/doc/html/group__hangulic.html b/doc/html/group__hangulic.html
new file mode 100644 (file)
index 0000000..185eac0
--- /dev/null
@@ -0,0 +1,621 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>libhangul: 한글 입력 기능 구현</title>
+
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  
+  
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">libhangul
+   &#160;<span id="projectnumber">Version 0.1.0</span>
+   </div>
+   
+  </td>
+  
+  
+  
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<!-- 다음에 의해 생성됨 :  Doxygen 1.7.6 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>메인&#160;페이지</span></a></li>
+      <li><a href="pages.html"><span>관련된&#160;페이지</span></a></li>
+      <li><a href="modules.html"><span>모듈</span></a></li>
+      <li><a href="files.html"><span>파일들</span></a></li>
+      <li><a href="dirs.html"><span>디렉토리</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#typedef-members">타입정의</a> &#124;
+<a href="#func-members">함수</a>  </div>
+  <div class="headertitle">
+<div class="title">한글 입력 기능 구현</div>  </div>
+</div>
+<div class="contents">
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="typedef-members"></a>
+타입정의</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef struct _HangulInputContext&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">한글 입력 상태를 관리하기 위한 오브젝트  <a href="#ga623ec57b85ebf33279989f3e6bc2d59a"></a><br/></td></tr>
+<tr><td colspan="2"><h2><a name="func-members"></a>
+함수</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#ga26a39855a3fb03a1f794aca464ae132e">hangul_ic_process</a> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic, int ascii)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">키 입력을 처리하여 실제로 한글 조합을 하는 함수  <a href="#ga26a39855a3fb03a1f794aca464ae132e"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#gac39496296816be4b516659b322e73d64">hangul_ic_get_preedit_string</a> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">현재 상태의 preedit string을 구하는 함수  <a href="#gac39496296816be4b516659b322e73d64"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#gabe09f347ac91563b4dd45f93c5bd9a03">hangul_ic_get_commit_string</a> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">현재 상태의 commit string을 구하는 함수  <a href="#gabe09f347ac91563b4dd45f93c5bd9a03"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#ga2fa2f5972adbdacd38e1edf62ff9fc53">hangul_ic_reset</a> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 를 초기상태로 되돌리는 함수  <a href="#ga2fa2f5972adbdacd38e1edf62ff9fc53"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#ga40e3e40e46d1554a6e2e85280396a6b5">hangul_ic_flush</a> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 의 입력 상태를 완료하는 함수  <a href="#ga40e3e40e46d1554a6e2e85280396a6b5"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#ga8d886ba7f2e3adb1fbc8c00d58b825b3">hangul_ic_backspace</a> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 가 backspace 키를 처리하도록 하는 함수  <a href="#ga8d886ba7f2e3adb1fbc8c00d58b825b3"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#ga392305eaf52e31967719fc039b267956">hangul_ic_is_empty</a> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 가 조합중인 글자를 가지고 있는지 확인하는 함수  <a href="#ga392305eaf52e31967719fc039b267956"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#gaf6a03d6bf05b58cc50ed10e2c7172a33">hangul_ic_has_choseong</a> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 가 조합중인 초성을 가지고 있는지 확인하는 함수  <a href="#gaf6a03d6bf05b58cc50ed10e2c7172a33"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#ga4509b431ce3a9c8b2b74120ea5dde9b5">hangul_ic_has_jungseong</a> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 가 조합중인 중성을 가지고 있는지 확인하는 함수  <a href="#ga4509b431ce3a9c8b2b74120ea5dde9b5"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#gacef5c615ac50da4dc99f50934739c424">hangul_ic_has_jongseong</a> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 가 조합중인 종성을 가지고 있는지 확인하는 함수  <a href="#gacef5c615ac50da4dc99f50934739c424"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#ga7dd66ed8f04fe95ff401f2b29e10db1f">hangul_ic_select_keyboard</a> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic, const char *id)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 의 자판 배열을 바꾸는 함수  <a href="#ga7dd66ed8f04fe95ff401f2b29e10db1f"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#ga323e53954c0fe5869ffc4cbcfc2be897">hangul_ic_new</a> (const char *keyboard)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 오브젝트를 생성한다.  <a href="#ga323e53954c0fe5869ffc4cbcfc2be897"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#ga3f153cf60e726535ad175ebb894f584d">hangul_ic_delete</a> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 를 삭제하는 함수  <a href="#ga3f153cf60e726535ad175ebb894f584d"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#gac9e3230e98035854b806436d0569596e">hangul_ic_is_transliteration</a> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">주어진 hic가 transliteration method인지 판별  <a href="#gac9e3230e98035854b806436d0569596e"></a><br/></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>상세한 설명</h2>
+<h2><a class="anchor" id="hangulicusage"></a>
+Hangul Input Context의 사용법</h2>
+<p>이 섹션에서는 한글 입력 기능을 구현하는 핵심 기능에 대해 설명한다.</p>
+<p>먼저 preedit string과 commit string 이 두 용어에 대해서 설멍하겠다. 이 두가지 용어는 Unix 계열의 입력기 framework에서 널리 쓰이는 표현이다.</p>
+<p>preedit string은 아직 조합중으로 어플리케이션에 완전히 입력되지 않은 스트링을 가리킨다. 일반적으로 한글 입력기에서는 역상으로 보이고 일본 중국어 입력기에서는 underline이 붙어 나타난다. 아직 완성이 되지 않은 스트링이므로 어플리케이션에 전달이 되지 않고 사라질 수도 있다.</p>
+<p>commit string은 조합이 완료되어 어플리케이션에 전달되는 스트링이다. 이 스트링은 실제 어플리케이션의 텍스트로 인식이 되므로 이 이후에는 더이상 입력기가 관리할 수 있는 데이터가 아니다.</p>
+<p>한글 입력과정은 다음과 같은 과정을 거치게 된다. 입력된 영문 키를 그에 해댱하는 한글 자모로 변환한후 한글 자모를 모아 하나의 음절을 만든다. 여기까지 이루어지는 과정을 preedit string 형태로 사용자에게 계속 보이게 하는 것이 필요하다. 그리고는 한글 음절이 완성되고나면 그 글자를 어플리케이션에 commit string 형태로 보내여 입력을 완료하는 것이다. 다음 키를 받게 되면 이 과정을 반복해서 수행한다.</p>
+<p>libhangul에서 한글 조합 기능은 <a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 를 이용해서 구현하게 되는데 기본 적인 방법은 <a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 에 사용자로부터의 입력을 순서대로 전달하면서 그 상태가 바뀜에 따라서 preedit 나 commit 스트링을 상황에 맞게 변화시키는 것이다.</p>
+<p>입력 코드들은 GUI 코드와 밀접하게 붙어 있어서 키 이벤트를 받아서 처리하도록 구현하는 것이 보통이다. 그런데 유닉스에는 많은 입력 프레임웍들이 난립하고 있는 상황이어서 매 입력 프레임웍마다 한글 조합 루틴을 작성해서 넣는 것은 비효율적이다. 간단한 API를 구현하여 여러 프레임웍에서 바로 사용할 수 있도록 구현하는 편이 사용성이 높아지게 된다.</p>
+<p>그래서 libhangul에서는 키 이벤트를 따로 재정의하지 않고 ASCII 코드를 직접 사용하는 방향으로 재정의된 데이터가 많지 않도록 하였다. 실제 사용 방법은 말로 설명하는 것보다 샘플 코드를 사용하는 편이 이해가 빠를 것이다. 그래서 대략적인 진행 과정을 샘플 코드로 작성하였다.</p>
+<p>아래 예제는 실제로는 존재하지 않는 GUI 라이브러리 코드를 사용하였다. 실제 GUI 코드를 사용하면 코드가 너무 길어져서 설명이 어렵고 코드가 길어지면 핵심을 놓치기 쉽기 때문에 가공의 함수를 사용하였다. 또한 텍스트의 encoding conversion 관련된 부분도 생략하였다. 여기서 사용한 가공의 GUI 코드는 TWin으로 시작하게 하였다.</p>
+<div class="fragment"><pre class="fragment">    <a class="code" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a>* hic = <a class="code" href="group__hangulic.html#ga323e53954c0fe5869ffc4cbcfc2be897" title="HangulInputContext 오브젝트를 생성한다.">hangul_ic_new</a>(<span class="stringliteral">&quot;2&quot;</span>);
+    ...
+
+    <span class="comment">// 아래는 키 입력만 처리하는 이벤트 루프이다.</span>
+    <span class="comment">// 실제 GUI코드는 이렇게 단순하진 않지만</span>
+    <span class="comment">// 편의상 키 입력만 처리하는 코드로 작성하였다.</span>
+
+    TWinKeyEvent <span class="keyword">event</span> = TWinGetKeyEvent(); <span class="comment">// 키이벤트를 받는 이런 함수가</span>
+                                            <span class="comment">// 있다고 치자</span>
+    <span class="keywordflow">while</span> (ascii != 0) {
+        <span class="keywordtype">bool</span> res;
+        <span class="keywordflow">if</span> (event.isBackspace()) {
+            <span class="comment">// backspace를 ascii로 변환하기가 좀 꺼림직해서</span>
+            <span class="comment">// libhangul에서는 backspace 처리를 위한 </span>
+            <span class="comment">// 함수를 따로 만들었다.</span>
+            res = <a class="code" href="group__hangulic.html#ga8d886ba7f2e3adb1fbc8c00d58b825b3" title="HangulInputContext 가 backspace 키를 처리하도록 하는 함수">hangul_ic_backspace</a>(hic);
+        } <span class="keywordflow">else</span> {
+            <span class="comment">// 키 입력을 해당하는 ascii 코드로 변환한다.</span>
+            <span class="comment">// libhangul에서는 이 ascii 코드가 키 이벤트</span>
+            <span class="comment">// 코드와 마찬가지다.</span>
+            <span class="keywordtype">int</span> ascii = <span class="keyword">event</span>.getAscii();
+
+            <span class="comment">// 키 입력을 받았으면 이것을 hic에 먼저 보낸다.</span>
+            <span class="comment">// 그래야 hic가 이 키를 사용할 것인지 아닌지를 판단할 수 있다.</span>
+            <span class="comment">// 함수가 true를 리턴하면 이 키를 사용했다는 의미이므로 </span>
+            <span class="comment">// GUI 코드가 이 키 입력을 프로세싱하지 않도록 해야 한다.</span>
+            <span class="comment">// 그렇지 않으면 한 키입력이 두번 프로세싱된다.</span>
+            res = <a class="code" href="group__hangulic.html#ga26a39855a3fb03a1f794aca464ae132e" title="키 입력을 처리하여 실제로 한글 조합을 하는 함수">hangul_ic_process</a>(hic, ascii);
+        }
+        
+        <span class="comment">// hic는 한번 키입력을 받고 나면 내부 상태 변화가 일어나고</span>
+        <span class="comment">// 완성된 글자를 어플리케이션에 보내야 하는 상황이 있을 수 있다.</span>
+        <span class="comment">// 이것을 HangulInputContext에서는 commit 스트링이 있는지로</span>
+        <span class="comment">// 판단한다. commit 스트링을 받아봐서 스트링이 있다면 </span>
+        <span class="comment">// 그 스트링으로 입력이 완료된 걸로 본다.</span>
+        <span class="keyword">const</span> <a class="code" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c" title="UCS4 코드 단위의 글자 코드 값">ucschar</a> commit;
+        commit = <a class="code" href="group__hangulic.html#gabe09f347ac91563b4dd45f93c5bd9a03" title="현재 상태의 commit string을 구하는 함수">hangul_ic_get_commit_string</a>(hic);
+        <span class="keywordflow">if</span> (commit[0] != 0) {   <span class="comment">// 스트링의 길이를 재서 commit 스트링이 있는지</span>
+                                <span class="comment">// 판단한다.</span>
+            TWinInputUnicodeChars(commit);
+        }
+
+        <span class="comment">// 키입력 후에는 preedit string도 역시 변화하게 되는데</span>
+        <span class="comment">// 입력기 프레임웍에서는 이 스트링을 화면에 보여주어야</span>
+        <span class="comment">// 조합중인 글자가 화면에 표시가 되는 것이다.</span>
+        <span class="keyword">const</span> <a class="code" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c" title="UCS4 코드 단위의 글자 코드 값">ucschar</a> preedit;
+        preedit = <a class="code" href="group__hangulic.html#gac39496296816be4b516659b322e73d64" title="현재 상태의 preedit string을 구하는 함수">hangul_ic_get_preedit_string</a>(hic);
+        <span class="comment">// 이 경우에는 스트링의 길이에 관계없이 항상 업데이트를 </span>
+        <span class="comment">// 해야 한다. 왜냐하면 이전에 조합중이던 글자가 있다가</span>
+        <span class="comment">// 조합이 완료되면서 조합중인 상태의 글자가 없어질 수도 있기 때문에</span>
+        <span class="comment">// 스트링의 길이에 관계없이 현재 상태의 스트링을 preedit </span>
+        <span class="comment">// 스트링으로 보여주면 되는 것이다.</span>
+        TWinUpdatePreeditString(preedit);
+
+        <span class="comment">// 위 두작업이 끝난후에는 키 이벤트를 계속 프로세싱해야 하는지 </span>
+        <span class="comment">// 아닌지를 처리해야 한다.</span>
+        <span class="comment">// hic가 키 이벤트를 사용하지 않았다면 기본 GUI 코드에 계속해서</span>
+        <span class="comment">// 키 이벤트 프로세싱을 진행하도록 해야 한다.</span>
+        <span class="keywordflow">if</span> (!res)
+            TWinForwardKeyEventToUI(ascii);
+
+        ascii = GetKeyEvent();
+    }
+
+    <a class="code" href="group__hangulic.html#ga3f153cf60e726535ad175ebb894f584d" title="HangulInputContext 를 삭제하는 함수">hangul_ic_delete</a>(hic);
+</pre></div> <hr/><h2>타입정의 문서화</h2>
+<a class="anchor" id="ga623ec57b85ebf33279989f3e6bc2d59a"></a><!-- doxytag: member="hangul.h::HangulInputContext" ref="ga623ec57b85ebf33279989f3e6bc2d59a" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>한글 입력 상태를 관리하기 위한 오브젝트 </p>
+<p>libhangul에서 제공하는 한글 조합 루틴에서 상태 정보를 저장하는 opaque 데이타 오브젝트이다. 이 오브젝트에 키입력 정보를 순차적으로 보내주면서 preedit 스트링이나, commit 스트링을 받아서 처리하면 한글 입력 기능을 손쉽게 구현할 수 있다. 내부의 데이터 멤버는 공개되어 있지 않다. 각각의 멤버는 accessor 함수로만 참조하여야 한다. </p>
+
+</div>
+</div>
+<hr/><h2>함수 문서화</h2>
+<a class="anchor" id="ga8d886ba7f2e3adb1fbc8c00d58b825b3"></a><!-- doxytag: member="hangulinputcontext.c::hangul_ic_backspace" ref="ga8d886ba7f2e3adb1fbc8c00d58b825b3" args="(HangulInputContext *hic)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="group__hangulic.html#ga8d886ba7f2e3adb1fbc8c00d58b825b3">hangul_ic_backspace</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *&#160;</td>
+          <td class="paramname"><em>hic</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 가 backspace 키를 처리하도록 하는 함수 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">hic</td><td><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 를 가리키는 포인터 </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>반환값:</b></dt><dd><em>hic가</em> 키를 사용했으면 true, 사용하지 않았으면 false</dd></dl>
+<p>이 함수는 <em>hic가</em> 가리키는 <a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 의 조합중이던 글자를 뒤에서부터 하나 지우는 기능을 한다. backspace 키를 눌렀을 때 발생하는 동작을 한다. 따라서 이 함수를 부르고 나면 preedit string이 바뀌므로 반드시 업데이트를 해야 한다.</p>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>이 함수는 <a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 의 상태를 변화 시킨다. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga3f153cf60e726535ad175ebb894f584d"></a><!-- doxytag: member="hangulinputcontext.c::hangul_ic_delete" ref="ga3f153cf60e726535ad175ebb894f584d" args="(HangulInputContext *hic)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="group__hangulic.html#ga3f153cf60e726535ad175ebb894f584d">hangul_ic_delete</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *&#160;</td>
+          <td class="paramname"><em>hic</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 를 삭제하는 함수 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">hic</td><td><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 오브젝트</td></tr>
+  </table>
+  </dd>
+</dl>
+<p><em>hic가</em> 가리키는 <a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 오브젝트의 메모리를 해제한다. <a class="el" href="group__hangulic.html#ga323e53954c0fe5869ffc4cbcfc2be897" title="HangulInputContext 오브젝트를 생성한다.">hangul_ic_new()</a> 함수로 생성된 모든 <a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 오브젝트는 이 함수로 메모리해제를 해야 한다. 메모리 해제 과정에서 상태 변화는 일어나지 않으므로 마지막 입력된 조합중이던 내용은 사라지게 된다. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga40e3e40e46d1554a6e2e85280396a6b5"></a><!-- doxytag: member="hangulinputcontext.c::hangul_ic_flush" ref="ga40e3e40e46d1554a6e2e85280396a6b5" args="(HangulInputContext *hic)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a>* <a class="el" href="group__hangulic.html#ga40e3e40e46d1554a6e2e85280396a6b5">hangul_ic_flush</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *&#160;</td>
+          <td class="paramname"><em>hic</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 의 입력 상태를 완료하는 함수 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">hic</td><td><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 를 가리키는 포인터 </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>반환값:</b></dt><dd>조합 완료된 스트링, 스트링의 길이가 0이면 조합 완료된 스트링이 없는 것</dd></dl>
+<p>이 함수는 <em>hic가</em> 가리키는 <a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 의 입력 상태를 완료한다. 조합중이던 스트링을 완성하여 리턴한다. 그리고 입력 상태가 초기 상태로 되돌아 간다. 조합중이던 글자를 강제로 commit하고 싶을때 사용하는 함수다. 보통의 경우 입력 framework에서 focus가 나갈때 이 함수를 불러서 마지막 상태를 완료해야 조합중이던 글자를 잃어버리지 않게 된다.</p>
+<p>비교: <a class="el" href="group__hangulic.html#ga2fa2f5972adbdacd38e1edf62ff9fc53" title="HangulInputContext 를 초기상태로 되돌리는 함수">hangul_ic_reset()</a></p>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>이 함수는 <a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 의 상태를 변화 시킨다. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="gabe09f347ac91563b4dd45f93c5bd9a03"></a><!-- doxytag: member="hangulinputcontext.c::hangul_ic_get_commit_string" ref="gabe09f347ac91563b4dd45f93c5bd9a03" args="(HangulInputContext *hic)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a>* <a class="el" href="group__hangulic.html#gabe09f347ac91563b4dd45f93c5bd9a03">hangul_ic_get_commit_string</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *&#160;</td>
+          <td class="paramname"><em>hic</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>현재 상태의 commit string을 구하는 함수 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">hic</td><td>commit string을 구하고자하는 입력 상태 object </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>반환값:</b></dt><dd>UCS4 commit 스트링, 이 스트링은 <em>hic</em> 내부의 데이터이므로 수정하거나 free해서는 안된다.</dd></dl>
+<p>이 함수는 <em>hic</em> 내부의 현재 상태의 commit string을 리턴한다. 따라서 hic가 다른 키 이벤트를 처리하고 나면 그 내용이 바뀔 수 있다.</p>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>이 함수는 <a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 의 상태를 변화 시키지 않는다. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="gac39496296816be4b516659b322e73d64"></a><!-- doxytag: member="hangulinputcontext.c::hangul_ic_get_preedit_string" ref="gac39496296816be4b516659b322e73d64" args="(HangulInputContext *hic)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a>* <a class="el" href="group__hangulic.html#gac39496296816be4b516659b322e73d64">hangul_ic_get_preedit_string</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *&#160;</td>
+          <td class="paramname"><em>hic</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>현재 상태의 preedit string을 구하는 함수 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">hic</td><td>preedit string을 구하고자하는 입력 상태 object </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>반환값:</b></dt><dd>UCS4 preedit 스트링, 이 스트링은 <em>hic</em> 내부의 데이터이므로 수정하거나 free해서는 안된다.</dd></dl>
+<p>이 함수는 <em>hic</em> 내부의 현재 상태의 preedit string을 리턴한다. 따라서 hic가 다른 키 이벤트를 처리하고 나면 그 내용이 바뀔 수 있다.</p>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>이 함수는 <a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 의 상태를 변화 시키지 않는다. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="gaf6a03d6bf05b58cc50ed10e2c7172a33"></a><!-- doxytag: member="hangulinputcontext.c::hangul_ic_has_choseong" ref="gaf6a03d6bf05b58cc50ed10e2c7172a33" args="(HangulInputContext *hic)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="group__hangulic.html#gaf6a03d6bf05b58cc50ed10e2c7172a33">hangul_ic_has_choseong</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *&#160;</td>
+          <td class="paramname"><em>hic</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 가 조합중인 초성을 가지고 있는지 확인하는 함수 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">hic</td><td><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 를 가리키는 포인터</td></tr>
+  </table>
+  </dd>
+</dl>
+<p><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 가 조합중인 글자가 초성이 있으면 true를 리턴한다.</p>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>이 함수는 <a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 의 상태를 변화 시키지 않는다. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="gacef5c615ac50da4dc99f50934739c424"></a><!-- doxytag: member="hangulinputcontext.c::hangul_ic_has_jongseong" ref="gacef5c615ac50da4dc99f50934739c424" args="(HangulInputContext *hic)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="group__hangulic.html#gacef5c615ac50da4dc99f50934739c424">hangul_ic_has_jongseong</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *&#160;</td>
+          <td class="paramname"><em>hic</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 가 조합중인 종성을 가지고 있는지 확인하는 함수 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">hic</td><td><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 를 가리키는 포인터</td></tr>
+  </table>
+  </dd>
+</dl>
+<p><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 가 조합중인 글자가 종성이 있으면 true를 리턴한다.</p>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>이 함수는 <a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 의 상태를 변화 시키지 않는다. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga4509b431ce3a9c8b2b74120ea5dde9b5"></a><!-- doxytag: member="hangulinputcontext.c::hangul_ic_has_jungseong" ref="ga4509b431ce3a9c8b2b74120ea5dde9b5" args="(HangulInputContext *hic)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="group__hangulic.html#ga4509b431ce3a9c8b2b74120ea5dde9b5">hangul_ic_has_jungseong</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *&#160;</td>
+          <td class="paramname"><em>hic</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 가 조합중인 중성을 가지고 있는지 확인하는 함수 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">hic</td><td><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 를 가리키는 포인터</td></tr>
+  </table>
+  </dd>
+</dl>
+<p><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 가 조합중인 글자가 중성이 있으면 true를 리턴한다.</p>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>이 함수는 <a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 의 상태를 변화 시키지 않는다. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga392305eaf52e31967719fc039b267956"></a><!-- doxytag: member="hangulinputcontext.c::hangul_ic_is_empty" ref="ga392305eaf52e31967719fc039b267956" args="(HangulInputContext *hic)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="group__hangulic.html#ga392305eaf52e31967719fc039b267956">hangul_ic_is_empty</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *&#160;</td>
+          <td class="paramname"><em>hic</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 가 조합중인 글자를 가지고 있는지 확인하는 함수 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">hic</td><td><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 를 가리키는 포인터</td></tr>
+  </table>
+  </dd>
+</dl>
+<p><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 가 조합중인 글자가 있으면 true를 리턴한다.</p>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>이 함수는 <a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 의 상태를 변화 시키지 않는다. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="gac9e3230e98035854b806436d0569596e"></a><!-- doxytag: member="hangulinputcontext.c::hangul_ic_is_transliteration" ref="gac9e3230e98035854b806436d0569596e" args="(HangulInputContext *hic)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="group__hangulic.html#gac9e3230e98035854b806436d0569596e">hangul_ic_is_transliteration</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *&#160;</td>
+          <td class="paramname"><em>hic</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>주어진 hic가 transliteration method인지 판별 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">hic</td><td>상태를 알고자 하는 HangulInputContext 포인터 </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>반환값:</b></dt><dd>hic가 transliteration method인 경우 true를 리턴, 아니면 false</dd></dl>
+<p>이 함수는 <em>hic</em> 가 transliteration method인지 판별하는 함수다. 이 함수가 false를 리턴할 경우에는 process 함수에 keycode를 넘기기 전에 키보드 자판 배열에 독립적인 값으로 변환한 후 넘겨야 한다. 그렇지 않으면 유럽어 자판과 한국어 자판을 같이 쓸때 한글 입력이 제대로 되지 않는다. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga323e53954c0fe5869ffc4cbcfc2be897"></a><!-- doxytag: member="hangulinputcontext.c::hangul_ic_new" ref="ga323e53954c0fe5869ffc4cbcfc2be897" args="(const char *keyboard)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a>* <a class="el" href="group__hangulic.html#ga323e53954c0fe5869ffc4cbcfc2be897">hangul_ic_new</a> </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>keyboard</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 오브젝트를 생성한다. </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">keyboard</td><td>사용하고자 하는 키보드, 사용 가능한 값에 대해서는 <a class="el" href="group__hangulic.html#ga7dd66ed8f04fe95ff401f2b29e10db1f" title="HangulInputContext 의 자판 배열을 바꾸는 함수">hangul_ic_select_keyboard()</a> 함수 설명을 참조한다. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>반환값:</b></dt><dd>새로 생성된 <a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 에 대한 포인터</dd></dl>
+<p>이 함수는 한글 조합 기능을 제공하는 <a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 오브젝트를 생성한다. 생성할때 지정한 자판은 나중에 <a class="el" href="group__hangulic.html#ga7dd66ed8f04fe95ff401f2b29e10db1f" title="HangulInputContext 의 자판 배열을 바꾸는 함수">hangul_ic_select_keyboard()</a> 함수로 다른 자판으로 변경이 가능하다. 더이상 사용하지 않을 때에는 <a class="el" href="group__hangulic.html#ga3f153cf60e726535ad175ebb894f584d" title="HangulInputContext 를 삭제하는 함수">hangul_ic_delete()</a> 함수로 삭제해야 한다. </p>
+
+<p>다음을 참조함 :  <a class="el" href="group__hangulic.html#ga7dd66ed8f04fe95ff401f2b29e10db1f">hangul_ic_select_keyboard()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ga26a39855a3fb03a1f794aca464ae132e"></a><!-- doxytag: member="hangulinputcontext.c::hangul_ic_process" ref="ga26a39855a3fb03a1f794aca464ae132e" args="(HangulInputContext *hic, int ascii)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="group__hangulic.html#ga26a39855a3fb03a1f794aca464ae132e">hangul_ic_process</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *&#160;</td>
+          <td class="paramname"><em>hic</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>ascii</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>키 입력을 처리하여 실제로 한글 조합을 하는 함수 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">hic</td><td><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 오브젝트 </td></tr>
+    <tr><td class="paramname">ascii</td><td>키 이벤트 </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>반환값:</b></dt><dd><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 가 이 키를 사용했으면 true, 사용하지 않았으면 false</dd></dl>
+<p>ascii 값으로 주어진 키 이벤트를 받아서 내부의 한글 조합 상태를 변화시키고, preedit, commit 스트링을 저장한다.</p>
+<p>libhangul의 키 이벤트 프로세스는 ASCII 코드 값을 기준으로 처리한다. 이 키 값은 US Qwerty 자판 배열에서의 키 값에 해당한다. 따라서 유럽어 자판을 사용하는 경우에는 해당 키의 ASCII 코드를 직접 전달하면 안되고, 그 키가 US Qwerty 자판이었을 경우에 발생할 수 있는 ASCII 코드 값을 주어야 한다. 또한 ASCII 코드 이므로 Shift 상태는 대문자로 전달이 된다. Capslock이 눌린 경우에는 대소문자를 뒤바꾸어 보내주지 않으면 마치 Shift가 눌린 것 처럼 동작할 수 있으므로 주의한다. preedit, commit 스트링은 <a class="el" href="group__hangulic.html#gac39496296816be4b516659b322e73d64" title="현재 상태의 preedit string을 구하는 함수">hangul_ic_get_preedit_string()</a>, <a class="el" href="group__hangulic.html#gabe09f347ac91563b4dd45f93c5bd9a03" title="현재 상태의 commit string을 구하는 함수">hangul_ic_get_commit_string()</a> 함수를 이용하여 구할 수 있다.</p>
+<p>이 함수의 사용법에 대한 설명은 <a class="el" href="group__hangulic.html#hangulicusage">Hangul Input Context의 사용법</a> 부분을 참조한다.</p>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>이 함수는 <a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 의 상태를 변화 시킨다. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga2fa2f5972adbdacd38e1edf62ff9fc53"></a><!-- doxytag: member="hangulinputcontext.c::hangul_ic_reset" ref="ga2fa2f5972adbdacd38e1edf62ff9fc53" args="(HangulInputContext *hic)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="group__hangulic.html#ga2fa2f5972adbdacd38e1edf62ff9fc53">hangul_ic_reset</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *&#160;</td>
+          <td class="paramname"><em>hic</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 를 초기상태로 되돌리는 함수 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">hic</td><td><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 를 가리키는 포인터</td></tr>
+  </table>
+  </dd>
+</dl>
+<p>이 함수는 <em>hic가</em> 가리키는 <a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 의 상태를 처음 상태로 되돌린다. preedit 스트링, commit 스트링, flush 스트링이 없어지고, 입력되었던 키에 대한 기록이 없어진다. 영어 상태로 바뀌는 것이 아니다.</p>
+<p>비교: <a class="el" href="group__hangulic.html#ga40e3e40e46d1554a6e2e85280396a6b5" title="HangulInputContext 의 입력 상태를 완료하는 함수">hangul_ic_flush()</a></p>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>이 함수는 <a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 의 상태를 변화 시킨다. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga7dd66ed8f04fe95ff401f2b29e10db1f"></a><!-- doxytag: member="hangulinputcontext.c::hangul_ic_select_keyboard" ref="ga7dd66ed8f04fe95ff401f2b29e10db1f" args="(HangulInputContext *hic, const char *id)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="group__hangulic.html#ga7dd66ed8f04fe95ff401f2b29e10db1f">hangul_ic_select_keyboard</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *&#160;</td>
+          <td class="paramname"><em>hic</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>id</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 의 자판 배열을 바꾸는 함수 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">hic</td><td><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 오브젝트 </td></tr>
+    <tr><td class="paramname">id</td><td>선택하고자 하는 자판, 아래와 같은 값을 선택할 수 있다. <ul>
+<li>"2" <a class="el" href="group__hangulkeyboards.html#layout_2">두벌식</a> 자판 </li>
+<li>"2y" <a class="el" href="group__hangulkeyboards.html#layout_2y">두벌식 옛글</a> 자판 </li>
+<li>"3f" <a class="el" href="group__hangulkeyboards.html#layout_3f">세벌식 최종</a> 자판 </li>
+<li>"39" <a class="el" href="group__hangulkeyboards.html#layout_390">세벌식 390</a> 자판 </li>
+<li>"3s" <a class="el" href="group__hangulkeyboards.html#layout_3s">세벌식 순아래</a> 자판 </li>
+<li>"3y" <a class="el" href="group__hangulkeyboards.html#layout_3y">세벌식 옛글</a> 자판 </li>
+<li>"32" <a class="el" href="group__hangulkeyboards.html#layout_32">세벌식 두벌배열</a> 자판 </li>
+<li>"ro" <a class="el" href="group__hangulkeyboards.html#layout_ro">로마자</a> 자판</li>
+</ul>
+libhangul이 지원하는 자판에 대한 정보는 <a class="el" href="group__hangulkeyboards.html">한글 자판</a> 페이지를 참조하라. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>반환값:</b></dt><dd>없음</dd></dl>
+<p>이 함수는 <a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 의 자판을 <em>id로</em> 지정된 것으로 변경한다.</p>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>이 함수는 <a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 의 내부 조합 상태에는 영향을 미치지 않는다. 따라서 입력 중간에 자판을 변경하더라도 조합 상태는 유지된다. </dd></dl>
+
+<p>다음에 의해서 참조됨 :  <a class="el" href="group__hangulic.html#ga323e53954c0fe5869ffc4cbcfc2be897">hangul_ic_new()</a>.</p>
+
+</div>
+</div>
+</div>
+
+
+<hr class="footer"/><address class="footer"><small>
+생성시간 : 수 3월 28 2012 23:47:49, 프로젝트명 : libhangul, 생성자 :  &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.6
+</small></address>
+
+</body>
+</html>
diff --git a/doc/html/group__hangulkeyboards.html b/doc/html/group__hangulkeyboards.html
new file mode 100644 (file)
index 0000000..e2e14c3
--- /dev/null
@@ -0,0 +1,1355 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>libhangul: 한글 자판</title>
+
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  
+  
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">libhangul
+   &#160;<span id="projectnumber">Version 0.1.0</span>
+   </div>
+   
+  </td>
+  
+  
+  
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<!-- 다음에 의해 생성됨 :  Doxygen 1.7.6 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>메인&#160;페이지</span></a></li>
+      <li><a href="pages.html"><span>관련된&#160;페이지</span></a></li>
+      <li><a href="modules.html"><span>모듈</span></a></li>
+      <li><a href="files.html"><span>파일들</span></a></li>
+      <li><a href="dirs.html"><span>디렉토리</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">한글 자판</div>  </div>
+</div>
+<div class="contents">
+<p>libhangul에서 builtin으로 지원하는 자판은 <a class="el" href="group__hangulkeyboards.html#layout_2">두벌식</a>, <a class="el" href="group__hangulkeyboards.html#layout_2y">두벌식 옛글</a>, <a class="el" href="group__hangulkeyboards.html#layout_3f">세벌식 최종</a>, <a class="el" href="group__hangulkeyboards.html#layout_390">세벌식 390</a>, <a class="el" href="group__hangulkeyboards.html#layout_3s">세벌식 순아래</a>, <a class="el" href="group__hangulkeyboards.html#layout_3y">세벌식 옛글</a>, <a class="el" href="group__hangulkeyboards.html#layout_ahn">안마태</a>, <a class="el" href="group__hangulkeyboards.html#layout_ro">로마자</a> 자판 이다.</p>
+<p>아래의 자판 배열은 libhangul에서 지원하는 자판을 알아보기 쉽게 그림형태로 나타낸 것이다. </p>
+<ul>
+<li>각 네모에 표시된 글자중 위에 있는 글자는 shift와 함께 눌렀을때 입력되는 글자고 아래에 있는 글자는 그냥 눌렀을때 입력되는 글자다. </li>
+<li>초성, 중성, 종성은 각각 붉은색, 녹색, 파란색(RGB 순서)으로 표시하였다. </li>
+<li>한글이 아닌 것은 검은색으로 표시하였다.</li>
+</ul>
+
+<style type="text/css">
+
+.choseong {
+       color: darkred;
+}
+
+.jungseong {
+       color: darkgreen;
+}
+
+.jongseong {
+       color: darkblue;
+}
+
+.other {
+       color: black;
+}
+
+table.keyboard {
+       font-family: sans-serif;
+       font-size: 120%;
+       border: 0px solid darkgray;
+       padding: 3px;
+       border-collapse: collapse;
+       border-collapse: separate;
+}
+
+td.emptycell {
+       width: 8px;
+       height: -3px;
+       padding: 0px;
+       margin: 0px;
+       border-style: none;
+}
+
+td.keycell {
+       text-align: center;
+       line-height: 110%;
+       background: whitesmoke;
+       padding: 2px;
+       margin: 1px;
+       border: 1px solid dimgray;
+       //border-width: 0px 1px 1px 0px;
+}
+
+td.graykeycell {
+       font-size: small;
+       text-align: center;
+       line-height: 110%;
+       color: lightgray;
+       background-color: white;
+       padding: 2px;
+       margin: 0px;
+       border: 2px solid lightgray;
+       border-width: 1px 1px 1px 1px;
+}
+
+</style>
+
+<h2><a class="anchor" id="layout_2"></a>
+두벌식</h2>
+<p>이 자판은 표준 두벌식을 구현한 것이다. 그러나 표준 자판과 조금 다른 동작이 있다. 된소리 ㅃㅉㄸㄲㅆ들은 shift와 함께 누르는 방법 이외에도 반복해서 누르면 입력된다.</p>
+
+<table class="keyboard">
+<tr>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+</tr>
+<tr>
+<td class="keycell" colspan="4"><span class="other">&#126;</span><br/><span class="other">&#96;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#33;</span><br/><span class="other">&#49;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#64;</span><br/><span class="other">&#50;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#35;</span><br/><span class="other">&#51;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#36;</span><br/><span class="other">&#52;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#37;</span><br/><span class="other">&#53;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#94;</span><br/><span class="other">&#54;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#38;</span><br/><span class="other">&#55;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#42;</span><br/><span class="other">&#56;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#40;</span><br/><span class="other">&#57;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#41;</span><br/><span class="other">&#48;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#95;</span><br/><span class="other">&#45;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#43;</span><br/><span class="other">&#61;</span></td>
+<td class="graykeycell" colspan="8">Backspace</td>
+</tr>
+<tr>
+<td class="graykeycell" colspan="6">Tab</td>
+<td class="keycell" colspan="4"><span class="choseong">&#12611;</span><br/><span class="choseong">&#12610;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#12617;</span><br/><span class="choseong">&#12616;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#12600;</span><br/><span class="choseong">&#12599;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#12594;</span><br/><span class="choseong">&#12593;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#12614;</span><br/><span class="choseong">&#12613;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12635;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12629;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12625;</span></td>
+<td class="keycell" colspan="4"><span class="jungseong">&#12626;</span><br/><span class="jungseong">&#12624;</span></td>
+<td class="keycell" colspan="4"><span class="jungseong">&#12630;</span><br/><span class="jungseong">&#12628;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#123;</span><br/><span class="other">&#91;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#125;</span><br/><span class="other">&#93;</span></td>
+<td class="keycell" colspan="6"><span class="other">&#124;</span><br/><span class="other">&#92;</span></td>
+</tr>
+<tr>
+<td class="graykeycell" colspan="8">Caps Lock</td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="choseong">&#12609;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="choseong">&#12596;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="choseong">&#12615;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="choseong">&#12601;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="choseong">&#12622;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12631;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12627;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12623;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12643;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#58;</span><br/><span class="other">&#59;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#34;</span><br/><span class="other">&#39;</span></td>
+<td class="graykeycell" colspan="8">Enter</td>
+</tr>
+<tr>
+<td class="graykeycell" colspan="10">Shift</td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="choseong">&#12619;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="choseong">&#12620;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="choseong">&#12618;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="choseong">&#12621;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12640;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12636;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12641;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#60;</span><br/><span class="other">&#44;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#62;</span><br/><span class="other">&#46;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#63;</span><br/><span class="other">&#47;</span></td>
+<td class="graykeycell" colspan="10">Shift</td>
+</tr>
+<!--
+<tr>
+<td class="graykeycell" colspan="5">Ctrl</td>
+<td class="graykeycell" colspan="4">Super</td>
+<td class="graykeycell" colspan="5">Alt</td>
+<td class="graykeycell" colspan="4">한자</td>
+<td class="graykeycell" colspan="20">&nbsp;<br/>&nbsp;</td>
+<td class="graykeycell" colspan="4">한/영</td>
+<td class="graykeycell" colspan="5">Alt</td>
+<td class="graykeycell" colspan="4">Super</td>
+<td class="graykeycell" colspan="4">Menu</td>
+<td class="graykeycell" colspan="5">Ctrl</td>
+</tr>
+-->
+</table>
+
+<h2><a class="anchor" id="layout_2y"></a>
+두벌식 옛글</h2>
+<p>이 자판은 옛한글을 입력하기 위한 두벌식 자판이다. 아래한글의 두벌식 옛글 자판과 같은 배열을 가지도록 만들었다. <a class="el" href="group__hangulkeyboards.html#layout_2">두벌식</a> 자판과 마찬가지로 된소리를 두번 누르는 방법으로 입력할 수 있다.</p>
+
+<table class="keyboard">
+<tr>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+</tr>
+<tr>
+<td class="keycell" colspan="4"><span class="other">&#126;</span><br/><span class="other">&#96;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#33;</span><br/><span class="other">&#49;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#64;</span><br/><span class="other">&#50;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#35;</span><br/><span class="other">&#51;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#36;</span><br/><span class="other">&#52;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#37;</span><br/><span class="other">&#53;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#94;</span><br/><span class="other">&#54;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#38;</span><br/><span class="other">&#55;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#42;</span><br/><span class="other">&#56;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#40;</span><br/><span class="other">&#57;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#41;</span><br/><span class="other">&#48;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#95;</span><br/><span class="other">&#45;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#43;</span><br/><span class="other">&#61;</span></td>
+<td class="graykeycell" colspan="8">Backspace</td>
+</tr>
+<tr>
+<td class="graykeycell" colspan="6">Tab</td>
+<td class="keycell" colspan="4"><span class="choseong">&#12611;</span><br/><span class="choseong">&#12610;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#12617;</span><br/><span class="choseong">&#12616;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#12600;</span><br/><span class="choseong">&#12599;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#12594;</span><br/><span class="choseong">&#12593;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#12614;</span><br/><span class="choseong">&#12613;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12635;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12629;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12625;</span></td>
+<td class="keycell" colspan="4"><span class="jungseong">&#12626;</span><br/><span class="jungseong">&#12624;</span></td>
+<td class="keycell" colspan="4"><span class="jungseong">&#12630;</span><br/><span class="jungseong">&#12628;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#123;</span><br/><span class="other">&#91;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#125;</span><br/><span class="other">&#93;</span></td>
+<td class="keycell" colspan="6"><span class="other">&#124;</span><br/><span class="other">&#92;</span></td>
+</tr>
+<tr>
+<td class="graykeycell" colspan="8">Caps Lock</td>
+<td class="keycell" colspan="4"><span class="choseong">&#12671;</span><br/><span class="choseong">&#12609;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#4445;&#4448;</span><br/><span class="choseong">&#12596;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#12673;</span><br/><span class="choseong">&#12615;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#12608;</span><br/><span class="choseong">&#12601;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#12678;</span><br/><span class="choseong">&#12622;</span></td>
+<td class="keycell" colspan="4"><span class="jungseong">&#4447;&#4483;</span><br/><span class="jungseong">&#12631;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12627;</span></td>
+<td class="keycell" colspan="4"><span class="jungseong">&#12685;</span><br/><span class="jungseong">&#12623;</span></td>
+<td class="keycell" colspan="4"><span class="jungseong">&#12684;</span><br/><span class="jungseong">&#12643;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#58;</span><br/><span class="other">&#59;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#34;</span><br/><span class="other">&#39;</span></td>
+<td class="graykeycell" colspan="8">Enter</td>
+</tr>
+<tr>
+<td class="graykeycell" colspan="10">Shift</td>
+<td class="keycell" colspan="4"><span class="choseong">&#4412;&#4448;</span><br/><span class="choseong">&#12619;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#4414;&#4448;</span><br/><span class="choseong">&#12620;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#4430;&#4448;</span><br/><span class="choseong">&#12618;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#4432;&#4448;</span><br/><span class="choseong">&#12621;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#4436;&#4448;</span><br/><span class="jungseong">&#12640;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#4437;&#4448;</span><br/><span class="jungseong">&#12636;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12641;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#60;</span><br/><span class="other">&#44;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#62;</span><br/><span class="other">&#46;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#63;</span><br/><span class="other">&#47;</span></td>
+<td class="graykeycell" colspan="10">Shift</td>
+</tr>
+<!--
+<tr>
+<td class="graykeycell" colspan="5">Ctrl</td>
+<td class="graykeycell" colspan="4">Super</td>
+<td class="graykeycell" colspan="5">Alt</td>
+<td class="graykeycell" colspan="4">한자</td>
+<td class="graykeycell" colspan="20">&nbsp;<br/>&nbsp;</td>
+<td class="graykeycell" colspan="4">한/영</td>
+<td class="graykeycell" colspan="5">Alt</td>
+<td class="graykeycell" colspan="4">Super</td>
+<td class="graykeycell" colspan="4">Menu</td>
+<td class="graykeycell" colspan="5">Ctrl</td>
+</tr>
+-->
+</table>
+
+<h2><a class="anchor" id="layout_3f"></a>
+세벌식 최종</h2>
+<p>이 자판은 세벌식 최종 자판을 구현한 것이다. 원래 방식대로라면 왼쪽의 ㅗㅜ는 다른 모음과 조합되지 않아야 하지만, libhangul에서는 좌우의 ㅗㅜ를 구분하지 않고 다른 모음과 조합된다.</p>
+
+<table class="keyboard">
+<tr>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+</tr>
+<tr>
+<td class="keycell" colspan="4"><span class="other">&#8251;</span><br/><span class="other">&#42;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12594;</span><br/><span class="jongseong">&#12622;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12602;</span><br/><span class="jongseong">&#12614;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12616;</span><br/><span class="jongseong">&#12610;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12607;</span><br/><span class="jungseong">&#12635;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12606;</span><br/><span class="jungseong">&#12640;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#61;</span><br/><span class="jungseong">&#12625;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#8220;</span><br/><span class="jungseong">&#12630;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#8221;</span><br/><span class="jungseong">&#12642;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#39;</span><br/><span class="jungseong">&#12636;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#126;</span><br/><span class="choseong">&#12619;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#59;</span><br/><span class="other">&#41;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#43;</span><br/><span class="other">&#62;</span></td>
+<td class="graykeycell" colspan="8">Backspace</td>
+</tr>
+<tr>
+<td class="graykeycell" colspan="6">Tab</td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12621;</span><br/><span class="jongseong">&#12613;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12620;</span><br/><span class="jongseong">&#12601;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12597;</span><br/><span class="jungseong">&#12629;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12608;</span><br/><span class="jungseong">&#12624;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12605;</span><br/><span class="jungseong">&#12627;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#53;</span><br/><span class="choseong">&#12601;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#54;</span><br/><span class="choseong">&#12599;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#55;</span><br/><span class="choseong">&#12609;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#56;</span><br/><span class="choseong">&#12618;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#57;</span><br/><span class="choseong">&#12621;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#37;</span><br/><span class="other">&#40;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#47;</span><br/><span class="other">&#60;</span></td>
+<td class="keycell" colspan="6"><span class="other">&#92;</span><br/><span class="other">&#58;</span></td>
+</tr>
+<tr>
+<td class="graykeycell" colspan="8">Caps Lock</td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12599;</span><br/><span class="jongseong">&#12615;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12598;</span><br/><span class="jongseong">&#12596;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12604;</span><br/><span class="jungseong">&#12643;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12603;</span><br/><span class="jungseong">&#12623;</span></td>
+<td class="keycell" colspan="4"><span class="jungseong">&#12626;</span><br/><span class="jungseong">&#12641;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#48;</span><br/><span class="choseong">&#12596;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#49;</span><br/><span class="choseong">&#12615;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#50;</span><br/><span class="choseong">&#12593;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#51;</span><br/><span class="choseong">&#12616;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#52;</span><br/><span class="choseong">&#12610;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#183;</span><br/><span class="choseong">&#12620;</span></td>
+<td class="graykeycell" colspan="8">Enter</td>
+</tr>
+<tr>
+<td class="graykeycell" colspan="10">Shift</td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12618;</span><br/><span class="jongseong">&#12609;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12612;</span><br/><span class="jongseong">&#12593;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12619;</span><br/><span class="jungseong">&#12628;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12595;</span><br/><span class="jungseong">&#12631;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#63;</span><br/><span class="jungseong">&#12636;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#45;</span><br/><span class="choseong">&#12613;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#34;</span><br/><span class="choseong">&#12622;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="other">&#44;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="other">&#46;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#33;</span><br/><span class="jungseong">&#12631;</span></td>
+<td class="graykeycell" colspan="10">Shift</td>
+</tr>
+<!--
+<tr>
+<td class="graykeycell" colspan="5">Ctrl</td>
+<td class="graykeycell" colspan="4">Super</td>
+<td class="graykeycell" colspan="5">Alt</td>
+<td class="graykeycell" colspan="4">한자</td>
+<td class="graykeycell" colspan="20">&nbsp;<br/>&nbsp;</td>
+<td class="graykeycell" colspan="4">한/영</td>
+<td class="graykeycell" colspan="5">Alt</td>
+<td class="graykeycell" colspan="4">Super</td>
+<td class="graykeycell" colspan="4">Menu</td>
+<td class="graykeycell" colspan="5">Ctrl</td>
+</tr>
+-->
+</table>
+
+<h2><a class="anchor" id="layout_390"></a>
+세벌식 390</h2>
+<p>이 자판은 세벌식 390 자판을 구현한 것이다. 원래 방식대로라면 왼쪽의 ㅗㅜ는 다른 모음과 조합되지 않아야 하지만, libhangul에서는 좌우의 ㅗㅜ를 구분하지 않고 다른 모음과 조합된다.</p>
+
+<table class="keyboard">
+<tr>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+</tr>
+<tr>
+<td class="keycell" colspan="4"><span class="other">&#126;</span><br/><span class="other">&#96;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12616;</span><br/><span class="jongseong">&#12622;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#64;</span><br/><span class="jongseong">&#12614;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#35;</span><br/><span class="jongseong">&#12610;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#36;</span><br/><span class="jungseong">&#12635;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#37;</span><br/><span class="jungseong">&#12640;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#94;</span><br/><span class="jungseong">&#12625;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#38;</span><br/><span class="jungseong">&#12630;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#42;</span><br/><span class="jungseong">&#12642;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#40;</span><br/><span class="jungseong">&#12636;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#41;</span><br/><span class="choseong">&#12619;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#95;</span><br/><span class="other">&#45;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#43;</span><br/><span class="other">&#61;</span></td>
+<td class="graykeycell" colspan="8">Backspace</td>
+</tr>
+<tr>
+<td class="graykeycell" colspan="6">Tab</td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12621;</span><br/><span class="jongseong">&#12613;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12620;</span><br/><span class="jongseong">&#12601;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12619;</span><br/><span class="jungseong">&#12629;</span></td>
+<td class="keycell" colspan="4"><span class="jungseong">&#12626;</span><br/><span class="jungseong">&#12624;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#59;</span><br/><span class="jungseong">&#12627;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#60;</span><br/><span class="choseong">&#12601;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#55;</span><br/><span class="choseong">&#12599;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#56;</span><br/><span class="choseong">&#12609;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#57;</span><br/><span class="choseong">&#12618;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#62;</span><br/><span class="choseong">&#12621;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#123;</span><br/><span class="other">&#91;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#125;</span><br/><span class="other">&#93;</span></td>
+<td class="keycell" colspan="6"><span class="other">&#124;</span><br/><span class="other">&#92;</span></td>
+</tr>
+<tr>
+<td class="graykeycell" colspan="8">Caps Lock</td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12599;</span><br/><span class="jongseong">&#12615;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12598;</span><br/><span class="jongseong">&#12596;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12602;</span><br/><span class="jungseong">&#12643;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12594;</span><br/><span class="jungseong">&#12623;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#47;</span><br/><span class="jungseong">&#12641;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#39;</span><br/><span class="choseong">&#12596;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#52;</span><br/><span class="choseong">&#12615;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#53;</span><br/><span class="choseong">&#12593;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#54;</span><br/><span class="choseong">&#12616;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#58;</span><br/><span class="choseong">&#12610;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#34;</span><br/><span class="choseong">&#12620;</span></td>
+<td class="graykeycell" colspan="8">Enter</td>
+</tr>
+<tr>
+<td class="graykeycell" colspan="10">Shift</td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12618;</span><br/><span class="jongseong">&#12609;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12612;</span><br/><span class="jongseong">&#12593;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12603;</span><br/><span class="jungseong">&#12628;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12608;</span><br/><span class="jungseong">&#12631;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#33;</span><br/><span class="jungseong">&#12636;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#48;</span><br/><span class="choseong">&#12613;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#49;</span><br/><span class="choseong">&#12622;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#50;</span><br/><span class="other">&#44;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#51;</span><br/><span class="other">&#46;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#63;</span><br/><span class="jungseong">&#12631;</span></td>
+<td class="graykeycell" colspan="10">Shift</td>
+</tr>
+<!--
+<tr>
+<td class="graykeycell" colspan="5">Ctrl</td>
+<td class="graykeycell" colspan="4">Super</td>
+<td class="graykeycell" colspan="5">Alt</td>
+<td class="graykeycell" colspan="4">한자</td>
+<td class="graykeycell" colspan="20">&nbsp;<br/>&nbsp;</td>
+<td class="graykeycell" colspan="4">한/영</td>
+<td class="graykeycell" colspan="5">Alt</td>
+<td class="graykeycell" colspan="4">Super</td>
+<td class="graykeycell" colspan="4">Menu</td>
+<td class="graykeycell" colspan="5">Ctrl</td>
+</tr>
+-->
+</table>
+
+<h2><a class="anchor" id="layout_3s"></a>
+세벌식 순아래</h2>
+<p>이 자판은 세벌식 순아래 자판을 구현한 것이다.</p>
+
+<table class="keyboard">
+<tr>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+</tr>
+<tr>
+<td class="keycell" colspan="4"><span class="other">&#126;</span><br/><span class="other">&#96;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#33;</span><br/><span class="jongseong">&#12622;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#64;</span><br/><span class="jongseong">&#12614;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#35;</span><br/><span class="jongseong">&#12610;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#36;</span><br/><span class="jungseong">&#12635;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#37;</span><br/><span class="jungseong">&#12640;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#94;</span><br/><span class="jungseong">&#12625;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#38;</span><br/><span class="jungseong">&#12630;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#42;</span><br/><span class="jungseong">&#12642;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#40;</span><br/><span class="choseong">&#12619;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#41;</span><br/><span class="jungseong">&#12626;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#95;</span><br/><span class="jongseong">&#12616;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#43;</span><br/><span class="jongseong">&#12618;</span></td>
+<td class="graykeycell" colspan="8">Backspace</td>
+</tr>
+<tr>
+<td class="graykeycell" colspan="6">Tab</td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jongseong">&#12613;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jongseong">&#12601;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12629;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12624;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#59;</span><br/><span class="jungseong">&#12627;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#60;</span><br/><span class="choseong">&#12601;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#55;</span><br/><span class="choseong">&#12599;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#56;</span><br/><span class="choseong">&#12609;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#57;</span><br/><span class="choseong">&#12618;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#62;</span><br/><span class="choseong">&#12621;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#123;</span><br/><span class="jongseong">&#12620;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#125;</span><br/><span class="jongseong">&#12621;</span></td>
+<td class="keycell" colspan="6"><span class="other">&#124;</span><br/><span class="jongseong">&#12619;</span></td>
+</tr>
+<tr>
+<td class="graykeycell" colspan="8">Caps Lock</td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jongseong">&#12615;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#91;</span><br/><span class="jongseong">&#12596;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#93;</span><br/><span class="jungseong">&#12643;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12623;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#47;</span><br/><span class="jungseong">&#12641;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#39;</span><br/><span class="choseong">&#12596;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#52;</span><br/><span class="choseong">&#12615;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#53;</span><br/><span class="choseong">&#12593;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#54;</span><br/><span class="choseong">&#12616;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#58;</span><br/><span class="choseong">&#12610;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#34;</span><br/><span class="choseong">&#12620;</span></td>
+<td class="graykeycell" colspan="8">Enter</td>
+</tr>
+<tr>
+<td class="graykeycell" colspan="10">Shift</td>
+<td class="keycell" colspan="4"><span class="other">&#45;</span><br/><span class="jongseong">&#12609;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#61;</span><br/><span class="jongseong">&#12593;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#92;</span><br/><span class="jungseong">&#12628;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12631;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#33;</span><br/><span class="jungseong">&#12636;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#48;</span><br/><span class="choseong">&#12613;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#49;</span><br/><span class="choseong">&#12622;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#50;</span><br/><span class="other">&#44;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#51;</span><br/><span class="other">&#46;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#63;</span><br/><span class="jongseong">&#12599;</span></td>
+<td class="graykeycell" colspan="10">Shift</td>
+</tr>
+<!--
+<tr>
+<td class="graykeycell" colspan="5">Ctrl</td>
+<td class="graykeycell" colspan="4">Super</td>
+<td class="graykeycell" colspan="5">Alt</td>
+<td class="graykeycell" colspan="4">한자</td>
+<td class="graykeycell" colspan="20">&nbsp;<br/>&nbsp;</td>
+<td class="graykeycell" colspan="4">한/영</td>
+<td class="graykeycell" colspan="5">Alt</td>
+<td class="graykeycell" colspan="4">Super</td>
+<td class="graykeycell" colspan="4">Menu</td>
+<td class="graykeycell" colspan="5">Ctrl</td>
+</tr>
+-->
+</table>
+
+<h2><a class="anchor" id="layout_3y"></a>
+세벌식 옛글</h2>
+<p>이 자판은 세벌식 옛글 자판을 구현한 것이다. 자판 배열은 아래한글의 세벌식 옛글 자판과 동일하다.</p>
+
+<table class="keyboard">
+<tr>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+</tr>
+<tr>
+<td class="keycell" colspan="4"><span class="jongseong">&#4447;&#4448;&#4592;</span><br/><span class="jongseong">&#4447;&#4448;&#4601;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12616;</span><br/><span class="jongseong">&#12622;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#4447;&#4448;&#4587;</span><br/><span class="jongseong">&#12614;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#35;</span><br/><span class="jongseong">&#12610;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#36;</span><br/><span class="jungseong">&#12635;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#37;</span><br/><span class="jungseong">&#12640;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#12673;</span><br/><span class="jungseong">&#12625;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#38;</span><br/><span class="jungseong">&#12630;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#42;</span><br/><span class="jungseong">&#12642;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#40;</span><br/><span class="jungseong">&#12636;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#41;</span><br/><span class="choseong">&#12619;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#95;</span><br/><span class="other">&#45;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#43;</span><br/><span class="other">&#61;</span></td>
+<td class="graykeycell" colspan="8">Backspace</td>
+</tr>
+<tr>
+<td class="graykeycell" colspan="6">Tab</td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12621;</span><br/><span class="jongseong">&#12613;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12620;</span><br/><span class="jongseong">&#12601;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12619;</span><br/><span class="jungseong">&#12629;</span></td>
+<td class="keycell" colspan="4"><span class="jungseong">&#12626;</span><br/><span class="jungseong">&#12624;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#59;</span><br/><span class="jungseong">&#12627;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#60;</span><br/><span class="choseong">&#12601;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#183;</span><br/><span class="choseong">&#12599;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#4436;&#4448;</span><br/><span class="choseong">&#12609;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#4437;&#4448;</span><br/><span class="choseong">&#12618;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#62;</span><br/><span class="choseong">&#12621;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#123;</span><br/><span class="other">&#91;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#125;</span><br/><span class="other">&#93;</span></td>
+<td class="keycell" colspan="6"><span class="other">&#124;</span><br/><span class="other">&#92;</span></td>
+</tr>
+<tr>
+<td class="graykeycell" colspan="8">Caps Lock</td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12599;</span><br/><span class="jongseong">&#12615;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12598;</span><br/><span class="jongseong">&#12596;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12602;</span><br/><span class="jungseong">&#12643;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12594;</span><br/><span class="jungseong">&#12623;</span></td>
+<td class="keycell" colspan="4"><span class="jungseong">&#12685;</span><br/><span class="jungseong">&#12641;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#39;</span><br/><span class="choseong">&#12596;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#12673;</span><br/><span class="choseong">&#12615;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#4430;&#4448;</span><br/><span class="choseong">&#12593;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#4432;&#4448;</span><br/><span class="choseong">&#12616;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#58;</span><br/><span class="choseong">&#12610;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#34;</span><br/><span class="choseong">&#12620;</span></td>
+<td class="graykeycell" colspan="8">Enter</td>
+</tr>
+<tr>
+<td class="graykeycell" colspan="10">Shift</td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12618;</span><br/><span class="jongseong">&#12609;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12612;</span><br/><span class="jongseong">&#12593;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12603;</span><br/><span class="jungseong">&#12628;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12608;</span><br/><span class="jungseong">&#12631;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#33;</span><br/><span class="jungseong">&#12636;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#12671;</span><br/><span class="choseong">&#12613;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#12678;</span><br/><span class="choseong">&#12622;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#4412;&#4448;</span><br/><span class="other">&#44;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#4414;&#4448;</span><br/><span class="other">&#46;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#63;</span><br/><span class="jungseong">&#12631;</span></td>
+<td class="graykeycell" colspan="10">Shift</td>
+</tr>
+<!--
+<tr>
+<td class="graykeycell" colspan="5">Ctrl</td>
+<td class="graykeycell" colspan="4">Super</td>
+<td class="graykeycell" colspan="5">Alt</td>
+<td class="graykeycell" colspan="4">한자</td>
+<td class="graykeycell" colspan="20">&nbsp;<br/>&nbsp;</td>
+<td class="graykeycell" colspan="4">한/영</td>
+<td class="graykeycell" colspan="5">Alt</td>
+<td class="graykeycell" colspan="4">Super</td>
+<td class="graykeycell" colspan="4">Menu</td>
+<td class="graykeycell" colspan="5">Ctrl</td>
+</tr>
+-->
+</table>
+
+<h2><a class="anchor" id="layout_32"></a>
+세벌식 두벌배열</h2>
+<p>이 자판은 두벌식 자판의 배열을 그대로 사용하면서 shift와 함께 자음을 누르면 종성으로 입력되도록 만든 자판이다. 일반 사용을 위해 만들어진 것이 아니고 두벌식 사용자가 손쉽게 세벌식 자판의 테스트를 할 수 있도록 하기 위해서 만든 자판이다.</p>
+
+<table class="keyboard">
+<tr>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+</tr>
+<tr>
+<td class="keycell" colspan="4"><span class="other">&#8251;</span><br/><span class="other">&#96;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#33;</span><br/><span class="other">&#49;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#64;</span><br/><span class="other">&#50;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#35;</span><br/><span class="other">&#51;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#36;</span><br/><span class="other">&#52;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#37;</span><br/><span class="other">&#53;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#94;</span><br/><span class="other">&#54;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#38;</span><br/><span class="other">&#55;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#42;</span><br/><span class="other">&#56;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#40;</span><br/><span class="other">&#57;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#41;</span><br/><span class="other">&#48;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#95;</span><br/><span class="other">&#45;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#43;</span><br/><span class="other">&#61;</span></td>
+<td class="graykeycell" colspan="8">Backspace</td>
+</tr>
+<tr>
+<td class="graykeycell" colspan="6">Tab</td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12610;</span><br/><span class="choseong">&#12610;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12616;</span><br/><span class="choseong">&#12616;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12599;</span><br/><span class="choseong">&#12599;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12593;</span><br/><span class="choseong">&#12593;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12613;</span><br/><span class="choseong">&#12613;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12635;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12629;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12625;</span></td>
+<td class="keycell" colspan="4"><span class="jungseong">&#12626;</span><br/><span class="jungseong">&#12624;</span></td>
+<td class="keycell" colspan="4"><span class="jungseong">&#12630;</span><br/><span class="jungseong">&#12628;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#123;</span><br/><span class="other">&#91;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#125;</span><br/><span class="other">&#93;</span></td>
+<td class="keycell" colspan="6"><span class="other">&#124;</span><br/><span class="other">&#92;</span></td>
+</tr>
+<tr>
+<td class="graykeycell" colspan="8">Caps Lock</td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12609;</span><br/><span class="choseong">&#12609;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12596;</span><br/><span class="choseong">&#12596;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12615;</span><br/><span class="choseong">&#12615;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12601;</span><br/><span class="choseong">&#12601;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12622;</span><br/><span class="choseong">&#12622;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12631;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12627;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12623;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12643;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#58;</span><br/><span class="other">&#59;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#34;</span><br/><span class="other">&#39;</span></td>
+<td class="graykeycell" colspan="8">Enter</td>
+</tr>
+<tr>
+<td class="graykeycell" colspan="10">Shift</td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12619;</span><br/><span class="choseong">&#12619;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12620;</span><br/><span class="choseong">&#12620;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12618;</span><br/><span class="choseong">&#12618;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#12621;</span><br/><span class="choseong">&#12621;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12640;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12636;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12641;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#60;</span><br/><span class="other">&#44;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#62;</span><br/><span class="other">&#46;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#63;</span><br/><span class="other">&#47;</span></td>
+<td class="graykeycell" colspan="10">Shift</td>
+</tr>
+<!--
+<tr>
+<td class="graykeycell" colspan="5">Ctrl</td>
+<td class="graykeycell" colspan="4">Super</td>
+<td class="graykeycell" colspan="5">Alt</td>
+<td class="graykeycell" colspan="4">한자</td>
+<td class="graykeycell" colspan="20">&nbsp;<br/>&nbsp;</td>
+<td class="graykeycell" colspan="4">한/영</td>
+<td class="graykeycell" colspan="5">Alt</td>
+<td class="graykeycell" colspan="4">Super</td>
+<td class="graykeycell" colspan="4">Menu</td>
+<td class="graykeycell" colspan="5">Ctrl</td>
+</tr>
+-->
+</table>
+
+<h2><a class="anchor" id="layout_ahn"></a>
+안마태</h2>
+<p>이 자판은 안마태 자판을 구현한 것이다. libhangul의 안마태 자판 구현은 안마태 자판의 규격을 충실하게 구현한 것은 아니고 적당한 수준에서 사용가능하게 만든 것이다. 키입력이 동시에 일어났는지 판단하여 입력을 하는 방식이 아니고, 키를 순서대로 입력하여도 자모를 조합하도록 구현하여, 안마태 자판과 유사한 동작을 하도록 구현하였다.</p>
+
+<table class="keyboard">
+<tr>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+<td class="emptycell"></td>
+</tr>
+<tr>
+<td class="keycell" colspan="4"><span class="other">&#126;</span><br/><span class="other">&#96;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#33;</span><br/><span class="other">&#49;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#64;</span><br/><span class="other">&#50;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#35;</span><br/><span class="other">&#51;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#36;</span><br/><span class="other">&#52;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#37;</span><br/><span class="other">&#53;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#94;</span><br/><span class="other">&#54;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#38;</span><br/><span class="other">&#55;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#42;</span><br/><span class="other">&#56;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#40;</span><br/><span class="other">&#57;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#41;</span><br/><span class="other">&#48;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#95;</span><br/><span class="other">&#45;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#43;</span><br/><span class="other">&#61;</span></td>
+<td class="graykeycell" colspan="8">Backspace</td>
+</tr>
+<tr>
+<td class="graykeycell" colspan="6">Tab</td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="choseong">&#12609;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#12671;</span><br/><span class="choseong">&#12613;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="choseong">&#12596;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="choseong">&#12601;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#12678;</span><br/><span class="choseong">&#12622;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#59;</span><br/><span class="jungseong">&#12629;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#39;</span><br/><span class="jungseong">&#12625;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#47;</span><br/><span class="jungseong">&#12641;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#91;</span><br/><span class="jungseong">&#12635;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#93;</span><br/><span class="jungseong">&#12640;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#123;</span><br/><span class="other">&#44;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#125;</span><br/><span class="other">&#63;</span></td>
+<td class="keycell" colspan="6"><span class="other">&#124;</span><br/><span class="other">&#92;</span></td>
+</tr>
+<tr>
+<td class="graykeycell" colspan="8">Caps Lock</td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="choseong">&#12610;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="choseong">&#12616;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="choseong">&#12599;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="choseong">&#12593;</span></td>
+<td class="keycell" colspan="4"><span class="choseong">&#12673;</span><br/><span class="choseong">&#12615;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12627;</span></td>
+<td class="keycell" colspan="4"><span class="jungseong">&#12685;</span><br/><span class="jungseong">&#12623;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12643;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jungseong">&#12631;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#58;</span><br/><span class="jungseong">&#12636;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#34;</span><br/><span class="other">&#46;</span></td>
+<td class="graykeycell" colspan="8">Enter</td>
+</tr>
+<tr>
+<td class="graykeycell" colspan="10">Shift</td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jongseong">&#12616;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jongseong">&#12599;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jongseong">&#12610;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jongseong">&#12593;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#4447;&#4448;&#4592;</span><br/><span class="jongseong">&#12615;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#4447;&#4448;&#4587;</span><br/><span class="jongseong">&#12613;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#32;</span><br/><span class="jongseong">&#12596;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#60;</span><br/><span class="jongseong">&#12609;</span></td>
+<td class="keycell" colspan="4"><span class="other">&#62;</span><br/><span class="jongseong">&#12601;</span></td>
+<td class="keycell" colspan="4"><span class="jongseong">&#4447;&#4448;&#4601;</span><br/><span class="jongseong">&#12622;</span></td>
+<td class="graykeycell" colspan="10">Shift</td>
+</tr>
+<!--
+<tr>
+<td class="graykeycell" colspan="5">Ctrl</td>
+<td class="graykeycell" colspan="4">Super</td>
+<td class="graykeycell" colspan="5">Alt</td>
+<td class="graykeycell" colspan="4">한자</td>
+<td class="graykeycell" colspan="20">&nbsp;<br/>&nbsp;</td>
+<td class="graykeycell" colspan="4">한/영</td>
+<td class="graykeycell" colspan="5">Alt</td>
+<td class="graykeycell" colspan="4">Super</td>
+<td class="graykeycell" colspan="4">Menu</td>
+<td class="graykeycell" colspan="5">Ctrl</td>
+</tr>
+-->
+</table>
+
+<h2><a class="anchor" id="layout_ro"></a>
+로마자</h2>
+<p>이 자판은 현재 자판 배열의 라틴 문자를 음차하여 한글로 입력되도록 만든 자판이다. 예를 들면 'an'을 치면 '안'이 입력되는 방식이다. 로마자 자판은 다른 한글자판과 달리 <a href="http://en.wikipedia.org/wiki/Transliteration">Transliteration</a> 방식으로 작동하는 자판이므로 별도의 레이아웃이 없다. 이 입력 자판에서 사용한 알파벳과 한글 자모의 대응은 기본적으로 한글 로마자 표기법과 유사하지만 동일하지는 않다. 로마자 자판은 한글을 입력하기 위한 것이므로 한글을 그럴듯 하게 표기하기 위한 로마자 표기법과는 목적이 다르다. 주로 한글 자모를 모두 입력할 수 있도록 하는 것을 우선적으로 고려하였다. 따라서 아래 자판의 대응대로 한글을 로마자로 표기하는 것은 로마자 표기법으로는 적절하지 않다.</p>
+<p>한글 자모와 알파벳의 대응은 아래와 같다. </p>
+<ul>
+<li>ㄱ : g </li>
+<li>ㄴ : n </li>
+<li>ㄷ : d </li>
+<li>ㄹ : r, l </li>
+<li>ㅁ : m </li>
+<li>ㅂ : b, v </li>
+<li>ㅅ : s </li>
+<li>ㅇ : ng </li>
+<li>ㅈ : j </li>
+<li>ㅊ : c, ch </li>
+<li>ㅋ : k, q </li>
+<li>ㅌ : t </li>
+<li>ㅍ : f, p </li>
+<li>ㅎ : h</li>
+</ul>
+<ul>
+<li>ㄲ : gg </li>
+<li>ㄸ : dd </li>
+<li>ㅃ : bb </li>
+<li>ㅆ : ss </li>
+<li>ㅉ : jj </li>
+<li>ㅊ : ch</li>
+</ul>
+<ul>
+<li>ㅏ : a </li>
+<li>ㅐ : ae, ai </li>
+<li>ㅑ : ya, ia </li>
+<li>ㅒ : yae, yai, iae, iai </li>
+<li>ㅓ : eo </li>
+<li>ㅔ : e </li>
+<li>ㅕ : yeo, ieo </li>
+<li>ㅖ : ye, ie </li>
+<li>ㅗ : o </li>
+<li>ㅘ : oa, wa </li>
+<li>ㅙ : oae, oai </li>
+<li>ㅚ : oi </li>
+<li>ㅛ : yo, io </li>
+<li>ㅜ : u, w </li>
+<li>ㅝ : ueo, weo, uo </li>
+<li>ㅞ : ue </li>
+<li>ㅟ : ui, wi </li>
+<li>ㅠ : yu, iu </li>
+<li>ㅡ : eu </li>
+<li>ㅢ : eui </li>
+<li>ㅣ : i, y</li>
+</ul>
+<p>그 외에 다음과 같은 조합 규칙이 있다.</p>
+<ul>
+<li>자음없이 모음만 먼저 입력하면 초성 ㅇ이 추가된다. 예를 들어 'a'만 눌러도 '아'로 입력된다. </li>
+<li>ng 는 종성 ㅇ으로 입력된다. </li>
+<li>x는 음절의 시작에서는 초성 ㅈ, 끝에서는 종성 ㄳ으로 입력된다. </li>
+<li>종성의 자음군은 앞음절의 글자로 입력된다. 예를 들어 'banga'는 '방아'로 입력된다. </li>
+<li>대문자를 입력하면 음절의 시작으로 인식한다. 예를 들어 'banga'는 '방아'로, 'banGa'는 '반가'로 입력된다. 'beos'는 '벗'으로 'beOs'는 '베옷'으로 입력된다. </li>
+<li>자음군으로 음절이 시작되면 ㅡ를 자동으로 추가한다. 예를 들어 'string'을 입력하면 s와 t에 ㅡ가 붙게 되어 '스트링'으로 입력된다.</li>
+</ul>
+<dl class="see"><dt><b>참고:</b></dt><dd>다음 위키 페이지를 참조하라. <br/>
+ <a href="http://en.wikipedia.org/wiki/Korean_romanization">http://en.wikipedia.org/wiki/Korean_romanization</a> <br/>
+ <a href="http://en.wikipedia.org/wiki/Revised_Romanization_of_Korean">http://en.wikipedia.org/wiki/Revised_Romanization_of_Korean</a> </dd></dl>
+</div>
+
+
+<hr class="footer"/><address class="footer"><small>
+생성시간 : 수 3월 28 2012 23:47:49, 프로젝트명 : libhangul, 생성자 :  &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.6
+</small></address>
+
+</body>
+</html>
diff --git a/doc/html/group__hanjadictionary.html b/doc/html/group__hanjadictionary.html
new file mode 100644 (file)
index 0000000..d1b32ce
--- /dev/null
@@ -0,0 +1,630 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>libhangul: 한자 사전 검색 기능</title>
+
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  
+  
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">libhangul
+   &#160;<span id="projectnumber">Version 0.1.0</span>
+   </div>
+   
+  </td>
+  
+  
+  
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<!-- 다음에 의해 생성됨 :  Doxygen 1.7.6 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>메인&#160;페이지</span></a></li>
+      <li><a href="pages.html"><span>관련된&#160;페이지</span></a></li>
+      <li><a href="modules.html"><span>모듈</span></a></li>
+      <li><a href="files.html"><span>파일들</span></a></li>
+      <li><a href="dirs.html"><span>디렉토리</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#typedef-members">타입정의</a> &#124;
+<a href="#func-members">함수</a>  </div>
+  <div class="headertitle">
+<div class="title">한자 사전 검색 기능</div>  </div>
+</div>
+<div class="contents">
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="typedef-members"></a>
+타입정의</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef struct _Hanja&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">한자 사전 검색 결과의 최소 단위  <a href="#ga96969351e2a98eb1e776275338822271"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef struct _HanjaList&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">한자 사전의 검색 결과를 전달하는데 사용하는 오브젝트  <a href="#ga4a7a4937b0fbe7689f2d2935c34be19b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef struct _HanjaTable&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#gad58042533438c8e2672738474bf9f981">HanjaTable</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">한자 사전을 관리하는데 사용하는 오브젝트  <a href="#gad58042533438c8e2672738474bf9f981"></a><br/></td></tr>
+<tr><td colspan="2"><h2><a name="func-members"></a>
+함수</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#ga859e26859e874957f89be5debd783644">hanja_get_key</a> (const <a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> *hanja)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> 의 키를 찾아본다.  <a href="#ga859e26859e874957f89be5debd783644"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#ga3b86a3debe7ca1db3edf86c4db6b07e6">hanja_get_value</a> (const <a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> *hanja)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> 의 값을 찾아본다.  <a href="#ga3b86a3debe7ca1db3edf86c4db6b07e6"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#ga72b4748e039981d3f63d76fb6431361f">hanja_get_comment</a> (const <a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> *hanja)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> 의 설명을 찾아본다.  <a href="#ga72b4748e039981d3f63d76fb6431361f"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__hanjadictionary.html#gad58042533438c8e2672738474bf9f981">HanjaTable</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#gaaad25fe6ea42acca94b6e94868d2d4fc">hanja_table_load</a> (const char *filename)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">한자 사전 파일을 로딩하는 함수  <a href="#gaaad25fe6ea42acca94b6e94868d2d4fc"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#ga59c749533062905732587d0ff9b6f5a9">hanja_table_delete</a> (<a class="el" href="group__hanjadictionary.html#gad58042533438c8e2672738474bf9f981">HanjaTable</a> *table)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">한자 사전 object를 free하는 함수  <a href="#ga59c749533062905732587d0ff9b6f5a9"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#gaf260f28723a8084ed36e81d751f394f2">hanja_table_match_exact</a> (const <a class="el" href="group__hanjadictionary.html#gad58042533438c8e2672738474bf9f981">HanjaTable</a> *table, const char *key)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">한자 사전에서 매치되는 키를 가진 엔트리를 찾는 함수  <a href="#gaf260f28723a8084ed36e81d751f394f2"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#ga8605f5e6a162e9bc60ca6ff43b4369e6">hanja_table_match_prefix</a> (const <a class="el" href="group__hanjadictionary.html#gad58042533438c8e2672738474bf9f981">HanjaTable</a> *table, const char *key)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">한자 사전에서 앞부분이 매치되는 키를 가진 엔트리를 찾는 함수  <a href="#ga8605f5e6a162e9bc60ca6ff43b4369e6"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#ga2466c41d985a584f569b2ed6b9c74cca">hanja_table_match_suffix</a> (const <a class="el" href="group__hanjadictionary.html#gad58042533438c8e2672738474bf9f981">HanjaTable</a> *table, const char *key)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">한자 사전에서 뒷부분이 매치되는 키를 가진 엔트리를 찾는 함수  <a href="#ga2466c41d985a584f569b2ed6b9c74cca"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga752da8c61bdfd61b9fbca08fb585e490"></a><!-- doxytag: member="hanjadictionary::hanja_list_get_size" ref="ga752da8c61bdfd61b9fbca08fb585e490" args="(const HanjaList *list)" -->
+int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#ga752da8c61bdfd61b9fbca08fb585e490">hanja_list_get_size</a> (const <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> *list)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 가 가지고 있는 아이템의 갯수를 구하는 함수 <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#ga1fb2943130c52b8dc57566beca98a305">hanja_list_get_key</a> (const <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> *list)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 가 생성될때 검색함수에서 사용한 키를 구하는 함수  <a href="#ga1fb2943130c52b8dc57566beca98a305"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#ga18b8b720d23613a7895f23f7dad926e1">hanja_list_get_nth</a> (const <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> *list, unsigned int n)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 의 n번째 <a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> 아이템의 포인터를 구하는 함수  <a href="#ga18b8b720d23613a7895f23f7dad926e1"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#ga6185a26a275245ee52660eb91b9b57ca">hanja_list_get_nth_key</a> (const <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> *list, unsigned int n)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 의 n번째 아이템의 키를 구하는 함수  <a href="#ga6185a26a275245ee52660eb91b9b57ca"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#gad86b9ac4d57462a74e5c2e6d7400a447">hanja_list_get_nth_value</a> (const <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> *list, unsigned int n)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 의 n번째 아이템의 값를 구하는 함수  <a href="#gad86b9ac4d57462a74e5c2e6d7400a447"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#ga978c07c6bb77fa9bd468344dce5a407c">hanja_list_get_nth_comment</a> (const <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> *list, unsigned int n)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 의 n번째 아이템의 설명을 구하는 함수  <a href="#ga978c07c6bb77fa9bd468344dce5a407c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#ga63619e6913dd17925c0f7a13068eee72">hanja_list_delete</a> (<a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> *list)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">한자 사전 검색 함수가 리턴한 결과를 free하는 함수  <a href="#ga63619e6913dd17925c0f7a13068eee72"></a><br/></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>상세한 설명</h2>
+<h2><a class="anchor" id="hanjadictionaryusage"></a>
+한자 사전 루틴의 사용 방법</h2>
+<p>libhangul에서는 한자 사전 파일과 그 사전 파일을 검색할 수 있는 몇가지 함수의 셋을 제공한다. 여기에서 사용되는 모든 스트링은 UTF-8 인코딩을 사용한다. libhangul에서 사용하는 한자 사전 파일의 포맷은 <a class="el" href="group__hanjadictionary.html#gad58042533438c8e2672738474bf9f981">HanjaTable</a> 섹션을 참조한다.</p>
+<p>그 개략적인 사용 방법은 다음과 같다.</p>
+<div class="fragment"><pre class="fragment">    <span class="comment">// 지정된 위치의 한자 사전 파일을 로딩한다.</span>
+    <span class="comment">// 아래 코드에서는 libhangul의 한자 사전 파일을 로딩하기 위해서</span>
+    <span class="comment">// NULL을 argument로 준다.</span>
+    <a class="code" href="group__hanjadictionary.html#gad58042533438c8e2672738474bf9f981" title="한자 사전을 관리하는데 사용하는 오브젝트">HanjaTable</a>* table = <a class="code" href="group__hanjadictionary.html#gaaad25fe6ea42acca94b6e94868d2d4fc" title="한자 사전 파일을 로딩하는 함수">hanja_table_load</a>(NULL);
+
+    <span class="comment">// &quot;삼국사기&quot;에 해당하는 한자를 찾는다.</span>
+    <a class="code" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b" title="한자 사전의 검색 결과를 전달하는데 사용하는 오브젝트">HanjaList</a>* list = <a class="code" href="group__hanjadictionary.html#gaf260f28723a8084ed36e81d751f394f2" title="한자 사전에서 매치되는 키를 가진 엔트리를 찾는 함수">hanja_table_match_exact</a>(table, <span class="stringliteral">&quot;삼국사기&quot;</span>);
+    <span class="keywordflow">if</span> (list != NULL) {
+        <span class="keywordtype">int</span> i;
+        <span class="keywordtype">int</span> n = <a class="code" href="group__hanjadictionary.html#ga752da8c61bdfd61b9fbca08fb585e490" title="HanjaList 가 가지고 있는 아이템의 갯수를 구하는 함수">hanja_list_get_size</a>(list);
+        <span class="keywordflow">for</span> (i = 0; i &lt; n; ++i) {
+            <span class="keyword">const</span> <span class="keywordtype">char</span>* hanja = <a class="code" href="group__hanjadictionary.html#gad86b9ac4d57462a74e5c2e6d7400a447" title="HanjaList 의 n번째 아이템의 값를 구하는 함수">hanja_list_get_nth_value</a>(list);
+            printf(<span class="stringliteral">&quot;한자: %s\n&quot;</span>, hanja);
+        }
+        <a class="code" href="group__hanjadictionary.html#ga63619e6913dd17925c0f7a13068eee72" title="한자 사전 검색 함수가 리턴한 결과를 free하는 함수">hanja_list_delete</a>(list);
+    }
+    
+    <a class="code" href="group__hanjadictionary.html#ga59c749533062905732587d0ff9b6f5a9" title="한자 사전 object를 free하는 함수">hanja_table_delete</a>(table);
+</pre></div> <hr/><h2>타입정의 문서화</h2>
+<a class="anchor" id="ga96969351e2a98eb1e776275338822271"></a><!-- doxytag: member="hangul.h::Hanja" ref="ga96969351e2a98eb1e776275338822271" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>한자 사전 검색 결과의 최소 단위 </p>
+<p>Hanja 오브젝트는 한자 사전 파일의 각 엔트리에 해당한다. 각 엔트리는 키(key), 밸류(value) 페어로 볼 수 있는데, libhangul에서는 약간 확장을 하여 설명(comment)도 포함하고 있다. 한자 사전 포맷은 <a class="el" href="group__hanjadictionary.html#gad58042533438c8e2672738474bf9f981">HanjaTable</a> 부분을 참조한다.</p>
+<p>한자 사전을 검색하면 결과는 Hanja 오브젝트의 리스트 형태로 전달된다. <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 에서 각 엔트리의 내용을 하나씩 확인할 수 있다. <a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> 의 멤버는 직접 참조할 수 없고, <a class="el" href="group__hanjadictionary.html#ga859e26859e874957f89be5debd783644" title="Hanja 의 키를 찾아본다.">hanja_get_key()</a>, <a class="el" href="group__hanjadictionary.html#ga3b86a3debe7ca1db3edf86c4db6b07e6" title="Hanja 의 값을 찾아본다.">hanja_get_value()</a>, <a class="el" href="group__hanjadictionary.html#ga72b4748e039981d3f63d76fb6431361f" title="Hanja 의 설명을 찾아본다.">hanja_get_comment()</a> 함수로 찾아볼 수 있다. char 스트링으로 전달되는 내용은 모두 UTF-8 인코딩으로 되어 있다. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga4a7a4937b0fbe7689f2d2935c34be19b"></a><!-- doxytag: member="hangul.h::HanjaList" ref="ga4a7a4937b0fbe7689f2d2935c34be19b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>한자 사전의 검색 결과를 전달하는데 사용하는 오브젝트 </p>
+<p>한자 사전의 검색 함수를 사용하면 이 타입으로 결과를 리턴한다. 이 오브젝트에서 <a class="el" href="group__hanjadictionary.html#ga18b8b720d23613a7895f23f7dad926e1" title="HanjaList 의 n번째 Hanja 아이템의 포인터를 구하는 함수">hanja_list_get_nth()</a>함수를 이용하여 검색 결과를 이터레이션할 수 있다. 내부 구현 내용은 외부로 노출되어 있지 않다. <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 가 가지고 있는 아이템들은 accessor 함수들을 이용해서 참조한다.</p>
+<p>참조: <a class="el" href="group__hanjadictionary.html#ga18b8b720d23613a7895f23f7dad926e1" title="HanjaList 의 n번째 Hanja 아이템의 포인터를 구하는 함수">hanja_list_get_nth()</a>, <a class="el" href="group__hanjadictionary.html#ga6185a26a275245ee52660eb91b9b57ca" title="HanjaList 의 n번째 아이템의 키를 구하는 함수">hanja_list_get_nth_key()</a>, <a class="el" href="group__hanjadictionary.html#gad86b9ac4d57462a74e5c2e6d7400a447" title="HanjaList 의 n번째 아이템의 값를 구하는 함수">hanja_list_get_nth_value()</a>, <a class="el" href="group__hanjadictionary.html#ga978c07c6bb77fa9bd468344dce5a407c" title="HanjaList 의 n번째 아이템의 설명을 구하는 함수">hanja_list_get_nth_comment()</a> </p>
+
+</div>
+</div>
+<a class="anchor" id="gad58042533438c8e2672738474bf9f981"></a><!-- doxytag: member="hangul.h::HanjaTable" ref="gad58042533438c8e2672738474bf9f981" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__hanjadictionary.html#gad58042533438c8e2672738474bf9f981">HanjaTable</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>한자 사전을 관리하는데 사용하는 오브젝트 </p>
+<p>libhangul에서 한자 사전을 관리하는데 사용하는 오브젝트로 내부 구현 내용은 외부로 노출되어 있지 않다.</p>
+<p>libhangul에서 사용하는 한자 사전 파일의 포맷은 다음과 같은 형식이다.</p>
+<div class="fragment"><pre class="fragment"><span class="preprocessor"> # comment</span>
+<span class="preprocessor"></span> key1:value1:comment1
+ key2:value2:comment2
+ key3:value3:comment3
+ ...
+</pre></div><p>각 필드는 <b><code></code>:</b> 으로 구분하고, 첫번째 필드는 각 한자를 찾을 키값이고 두번째 필드는 그 키값에 해당하는 한자 스트링, 세번째 필드는 이 키와 값에 대한 설명이다. # 으로 시작하는 라인은 주석으로 무시된다.</p>
+<p>실제 예를 들면 다음과 같은 식이다.</p>
+<div class="fragment"><pre class="fragment"> 삼국사기:三國史記:삼국사기
+ 한자:漢字:한자
+</pre></div><p>그 내용은 키값에 대해서 sorting 되어야 있어야 한다. 파일의 인코딩은 UTF-8이어야 한다. </p>
+
+</div>
+</div>
+<hr/><h2>함수 문서화</h2>
+<a class="anchor" id="ga72b4748e039981d3f63d76fb6431361f"></a><!-- doxytag: member="hanja.c::hanja_get_comment" ref="ga72b4748e039981d3f63d76fb6431361f" args="(const Hanja *hanja)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* <a class="el" href="group__hanjadictionary.html#ga72b4748e039981d3f63d76fb6431361f">hanja_get_comment</a> </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> *&#160;</td>
+          <td class="paramname"><em>hanja</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p><a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> 의 설명을 찾아본다. </p>
+<dl class="return"><dt><b>반환값:</b></dt><dd><em>hanja</em> 오브젝트의 comment 필드, UTF-8</dd></dl>
+<p>일반적으로 <a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> 아이템의 설명은 한글과 그 한자에 대한 설명이다. 파일에 따라서 내용이 없을 수 있다. 리턴되는 스트링은 <em>hanja</em> 오브젝트 내부적으로 관리하는 데이터로 수정하거나 free되어서는 안된다. </p>
+
+<p>다음에 의해서 참조됨 :  <a class="el" href="group__hanjadictionary.html#ga978c07c6bb77fa9bd468344dce5a407c">hanja_list_get_nth_comment()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ga859e26859e874957f89be5debd783644"></a><!-- doxytag: member="hanja.c::hanja_get_key" ref="ga859e26859e874957f89be5debd783644" args="(const Hanja *hanja)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* <a class="el" href="group__hanjadictionary.html#ga859e26859e874957f89be5debd783644">hanja_get_key</a> </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> *&#160;</td>
+          <td class="paramname"><em>hanja</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p><a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> 의 키를 찾아본다. </p>
+<dl class="return"><dt><b>반환값:</b></dt><dd><em>hanja</em> 오브젝트의 키, UTF-8</dd></dl>
+<p>일반적으로 <a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> 아이템의 키는 한글이다. 리턴되는 스트링은 <em>hanja</em> 오브젝트 내부적으로 관리하는 데이터로 수정하거나 free 되어서는 안된다. </p>
+
+<p>다음에 의해서 참조됨 :  <a class="el" href="group__hanjadictionary.html#ga6185a26a275245ee52660eb91b9b57ca">hanja_list_get_nth_key()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ga3b86a3debe7ca1db3edf86c4db6b07e6"></a><!-- doxytag: member="hanja.c::hanja_get_value" ref="ga3b86a3debe7ca1db3edf86c4db6b07e6" args="(const Hanja *hanja)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* <a class="el" href="group__hanjadictionary.html#ga3b86a3debe7ca1db3edf86c4db6b07e6">hanja_get_value</a> </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> *&#160;</td>
+          <td class="paramname"><em>hanja</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p><a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> 의 값을 찾아본다. </p>
+<dl class="return"><dt><b>반환값:</b></dt><dd><em>hanja</em> 오브젝트의 값, UTF-8</dd></dl>
+<p>일반적으로 <a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> 아이템의 값은 key에 대응되는 한자다. 리턴되는 스트링은 <em>hanja</em> 오브젝트 내부적으로 관리하는 데이터로 수정하거나 free되어서는 안된다. </p>
+
+<p>다음에 의해서 참조됨 :  <a class="el" href="group__hanjadictionary.html#gad86b9ac4d57462a74e5c2e6d7400a447">hanja_list_get_nth_value()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ga63619e6913dd17925c0f7a13068eee72"></a><!-- doxytag: member="hanja.c::hanja_list_delete" ref="ga63619e6913dd17925c0f7a13068eee72" args="(HanjaList *list)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="group__hanjadictionary.html#ga63619e6913dd17925c0f7a13068eee72">hanja_list_delete</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> *&#160;</td>
+          <td class="paramname"><em>list</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>한자 사전 검색 함수가 리턴한 결과를 free하는 함수 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">list</td><td>free할 <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a></td></tr>
+  </table>
+  </dd>
+</dl>
+<p>libhangul의 모든 한자 사전 검색 루틴이 리턴한 결과는 반드시 이 함수로 free해야 한다. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga1fb2943130c52b8dc57566beca98a305"></a><!-- doxytag: member="hanja.c::hanja_list_get_key" ref="ga1fb2943130c52b8dc57566beca98a305" args="(const HanjaList *list)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* <a class="el" href="group__hanjadictionary.html#ga1fb2943130c52b8dc57566beca98a305">hanja_list_get_key</a> </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> *&#160;</td>
+          <td class="paramname"><em>list</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 가 생성될때 검색함수에서 사용한 키를 구하는 함수 </p>
+<dl class="return"><dt><b>반환값:</b></dt><dd><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 의 key 스트링</dd></dl>
+<p>한자 사전 검색 함수로 <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 를 생성하면 <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 는 그 검색할때 사용한 키를 기억하고 있다. 이 값을 확인할때 사용한다. 주의할 점은, 각 Hanja 아이템들은 각각의 키를 가지고 있지만, 이것이 반드시 <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 와 일치하지는 않는다는 것이다. 검색할 당시에 사용한 함수가 prefix나 suffix계열이면 더 짧은 키로도 검색하기 때문에 <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 의 키와 검색 결과의 키와 다른 것들도 가지고 있게 된다.</p>
+<p>리턴된 스트링 포인터는 <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 에서 관리하는 스트링으로 수정하거나 free해서는 안된다. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga18b8b720d23613a7895f23f7dad926e1"></a><!-- doxytag: member="hanja.c::hanja_list_get_nth" ref="ga18b8b720d23613a7895f23f7dad926e1" args="(const HanjaList *list, unsigned int n)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const <a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a>* <a class="el" href="group__hanjadictionary.html#ga18b8b720d23613a7895f23f7dad926e1">hanja_list_get_nth</a> </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> *&#160;</td>
+          <td class="paramname"><em>list</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&#160;</td>
+          <td class="paramname"><em>n</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 의 n번째 <a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> 아이템의 포인터를 구하는 함수 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">list</td><td><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 를 가리키는 포인터 </td></tr>
+    <tr><td class="paramname">n</td><td>참조할 아이템의 인덱스 </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>반환값:</b></dt><dd><a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> 를 가리키는 포인터</dd></dl>
+<p>이 함수는 <em>list가</em> 가리키는 <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 의 n번째 <a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> 오브젝트를 가리키는 포인터를 리턴한다. <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 의 각 아이템은 정수형 인덱스로 각각 참조할 수 있다. <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 가 가진 엔트리 갯수를 넘어서는 인덱스를 주면 NULL을 리턴한다. 리턴된 <a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> 오브젝트는 <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 가 관리하는 오브젝트로 free하거나 수정해서는 안된다.</p>
+<p>다음의 예제는 list로 주어진 <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 의 모든 값을 프린트 하는 코드다.</p>
+<div class="fragment"><pre class="fragment"> <span class="keywordtype">int</span> i;
+ <span class="keywordtype">int</span> n = <a class="code" href="group__hanjadictionary.html#ga752da8c61bdfd61b9fbca08fb585e490" title="HanjaList 가 가지고 있는 아이템의 갯수를 구하는 함수">hanja_list_get_size</a>(list);
+ <span class="keywordflow">for</span> (i = 0; i &lt; n; i++) {
+        <a class="code" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271" title="한자 사전 검색 결과의 최소 단위">Hanja</a>* hanja = <a class="code" href="group__hanjadictionary.html#ga18b8b720d23613a7895f23f7dad926e1" title="HanjaList 의 n번째 Hanja 아이템의 포인터를 구하는 함수">hanja_list_get_nth</a>(i);
+        <span class="keyword">const</span> <span class="keywordtype">char</span>* value = <a class="code" href="group__hanjadictionary.html#ga3b86a3debe7ca1db3edf86c4db6b07e6" title="Hanja 의 값을 찾아본다.">hanja_get_value</a>(hanja);
+        printf(<span class="stringliteral">&quot;Hanja: %s\n&quot;</span>, value);
+        <span class="comment">// 또는 hanja에서 다른 정보를 참조하거나</span>
+        <span class="comment">// 다른 작업을 할 수도 있다.</span>
+ }
+</pre></div> 
+<p>다음에 의해서 참조됨 :  <a class="el" href="group__hanjadictionary.html#ga978c07c6bb77fa9bd468344dce5a407c">hanja_list_get_nth_comment()</a>, <a class="el" href="group__hanjadictionary.html#ga6185a26a275245ee52660eb91b9b57ca">hanja_list_get_nth_key()</a>, <a class="el" href="group__hanjadictionary.html#gad86b9ac4d57462a74e5c2e6d7400a447">hanja_list_get_nth_value()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ga978c07c6bb77fa9bd468344dce5a407c"></a><!-- doxytag: member="hanja.c::hanja_list_get_nth_comment" ref="ga978c07c6bb77fa9bd468344dce5a407c" args="(const HanjaList *list, unsigned int n)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* <a class="el" href="group__hanjadictionary.html#ga978c07c6bb77fa9bd468344dce5a407c">hanja_list_get_nth_comment</a> </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> *&#160;</td>
+          <td class="paramname"><em>list</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&#160;</td>
+          <td class="paramname"><em>n</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 의 n번째 아이템의 설명을 구하는 함수 </p>
+<dl class="return"><dt><b>반환값:</b></dt><dd>n번째 아이템의 설명(comment), UTF-8</dd></dl>
+<p>HanjaList_get_nth()의 convenient 함수 </p>
+
+<p>다음을 참조함 :  <a class="el" href="group__hanjadictionary.html#ga72b4748e039981d3f63d76fb6431361f">hanja_get_comment()</a>, <a class="el" href="group__hanjadictionary.html#ga18b8b720d23613a7895f23f7dad926e1">hanja_list_get_nth()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ga6185a26a275245ee52660eb91b9b57ca"></a><!-- doxytag: member="hanja.c::hanja_list_get_nth_key" ref="ga6185a26a275245ee52660eb91b9b57ca" args="(const HanjaList *list, unsigned int n)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* <a class="el" href="group__hanjadictionary.html#ga6185a26a275245ee52660eb91b9b57ca">hanja_list_get_nth_key</a> </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> *&#160;</td>
+          <td class="paramname"><em>list</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&#160;</td>
+          <td class="paramname"><em>n</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 의 n번째 아이템의 키를 구하는 함수 </p>
+<dl class="return"><dt><b>반환값:</b></dt><dd>n번째 아이템의 키, UTF-8</dd></dl>
+<p>HanjaList_get_nth()의 convenient 함수 </p>
+
+<p>다음을 참조함 :  <a class="el" href="group__hanjadictionary.html#ga859e26859e874957f89be5debd783644">hanja_get_key()</a>, <a class="el" href="group__hanjadictionary.html#ga18b8b720d23613a7895f23f7dad926e1">hanja_list_get_nth()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="gad86b9ac4d57462a74e5c2e6d7400a447"></a><!-- doxytag: member="hanja.c::hanja_list_get_nth_value" ref="gad86b9ac4d57462a74e5c2e6d7400a447" args="(const HanjaList *list, unsigned int n)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* <a class="el" href="group__hanjadictionary.html#gad86b9ac4d57462a74e5c2e6d7400a447">hanja_list_get_nth_value</a> </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> *&#160;</td>
+          <td class="paramname"><em>list</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&#160;</td>
+          <td class="paramname"><em>n</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 의 n번째 아이템의 값를 구하는 함수 </p>
+<dl class="return"><dt><b>반환값:</b></dt><dd>n번째 아이템의 값(value), UTF-8</dd></dl>
+<p>HanjaList_get_nth()의 convenient 함수 </p>
+
+<p>다음을 참조함 :  <a class="el" href="group__hanjadictionary.html#ga3b86a3debe7ca1db3edf86c4db6b07e6">hanja_get_value()</a>, <a class="el" href="group__hanjadictionary.html#ga18b8b720d23613a7895f23f7dad926e1">hanja_list_get_nth()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ga59c749533062905732587d0ff9b6f5a9"></a><!-- doxytag: member="hanja.c::hanja_table_delete" ref="ga59c749533062905732587d0ff9b6f5a9" args="(HanjaTable *table)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="group__hanjadictionary.html#ga59c749533062905732587d0ff9b6f5a9">hanja_table_delete</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__hanjadictionary.html#gad58042533438c8e2672738474bf9f981">HanjaTable</a> *&#160;</td>
+          <td class="paramname"><em>table</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>한자 사전 object를 free하는 함수 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">table</td><td>free할 한자 사전 object </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gaaad25fe6ea42acca94b6e94868d2d4fc"></a><!-- doxytag: member="hanja.c::hanja_table_load" ref="gaaad25fe6ea42acca94b6e94868d2d4fc" args="(const char *filename)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__hanjadictionary.html#gad58042533438c8e2672738474bf9f981">HanjaTable</a>* <a class="el" href="group__hanjadictionary.html#gaaad25fe6ea42acca94b6e94868d2d4fc">hanja_table_load</a> </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>filename</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>한자 사전 파일을 로딩하는 함수 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">filename</td><td>로딩할 사전 파일의 위치, 또는 NULL </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>반환값:</b></dt><dd>한자 사전 object 또는 NULL</dd></dl>
+<p>이 함수는 한자 사전 파일을 로딩하는 함수로 <em>filename으로</em> 지정된 파일을 로딩한다. 한자 사전 파일은 libhangul에서 사용하는 포맷이어야 한다. 한자 사전 파일의 포맷에 대한 정보는 HanjaTable을 참조한다.</p>
+<p><em>filename은</em> locale에 따른 인코딩으로 되어 있어야 한다. UTF-8이 아닐 수 있으므로 주의한다.</p>
+<p><em>filename</em> 에 NULL을 주면 libhangul에서 디폴트로 배포하는 사전을 로딩한다. 파일이 없거나, 포맷이 맞지 않으면 로딩에 실패하고 NULL을 리턴한다. 한자 사전이 더이상 필요없으면 <a class="el" href="group__hanjadictionary.html#ga59c749533062905732587d0ff9b6f5a9" title="한자 사전 object를 free하는 함수">hanja_table_delete()</a> 함수로 삭제해야 한다. </p>
+
+</div>
+</div>
+<a class="anchor" id="gaf260f28723a8084ed36e81d751f394f2"></a><!-- doxytag: member="hanja.c::hanja_table_match_exact" ref="gaf260f28723a8084ed36e81d751f394f2" args="(const HanjaTable *table, const char *key)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a>* <a class="el" href="group__hanjadictionary.html#gaf260f28723a8084ed36e81d751f394f2">hanja_table_match_exact</a> </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="group__hanjadictionary.html#gad58042533438c8e2672738474bf9f981">HanjaTable</a> *&#160;</td>
+          <td class="paramname"><em>table</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>key</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>한자 사전에서 매치되는 키를 가진 엔트리를 찾는 함수 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">table</td><td>한자 사전 object </td></tr>
+    <tr><td class="paramname">key</td><td>찾을 키, UTF-8 인코딩 </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>반환값:</b></dt><dd>찾은 결과를 HanjaList object로 리턴한다. 찾은 것이 없거나 에러가 있으면 NULL을 리턴한다.</dd></dl>
+<p><em>key</em> 값과 같은 키를 가진 엔트리를 검색한다. 리턴된 결과는 다 사용하고 나면 반드시 <a class="el" href="group__hanjadictionary.html#ga63619e6913dd17925c0f7a13068eee72" title="한자 사전 검색 함수가 리턴한 결과를 free하는 함수">hanja_list_delete()</a> 함수로 free해야 한다. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga8605f5e6a162e9bc60ca6ff43b4369e6"></a><!-- doxytag: member="hanja.c::hanja_table_match_prefix" ref="ga8605f5e6a162e9bc60ca6ff43b4369e6" args="(const HanjaTable *table, const char *key)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a>* <a class="el" href="group__hanjadictionary.html#ga8605f5e6a162e9bc60ca6ff43b4369e6">hanja_table_match_prefix</a> </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="group__hanjadictionary.html#gad58042533438c8e2672738474bf9f981">HanjaTable</a> *&#160;</td>
+          <td class="paramname"><em>table</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>key</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>한자 사전에서 앞부분이 매치되는 키를 가진 엔트리를 찾는 함수 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">table</td><td>한자 사전 object </td></tr>
+    <tr><td class="paramname">key</td><td>찾을 키, UTF-8 인코딩 </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>반환값:</b></dt><dd>찾은 결과를 HanjaList object로 리턴한다. 찾은 것이 없거나 에러가 있으면 NULL을 리턴한다.</dd></dl>
+<p><em>key</em> 값과 같거나 앞부분이 같은 키를 가진 엔트리를 검색한다. 그리고 key를 뒤에서부터 한자씩 줄여가면서 검색을 계속한다. 예로 들면 "삼국사기"를 검색하면 "삼국사기", "삼국사", "삼국", "삼"을 각각 모두 검색한다. 리턴된 결과는 다 사용하고 나면 반드시 <a class="el" href="group__hanjadictionary.html#ga63619e6913dd17925c0f7a13068eee72" title="한자 사전 검색 함수가 리턴한 결과를 free하는 함수">hanja_list_delete()</a> 함수로 free해야 한다. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga2466c41d985a584f569b2ed6b9c74cca"></a><!-- doxytag: member="hanja.c::hanja_table_match_suffix" ref="ga2466c41d985a584f569b2ed6b9c74cca" args="(const HanjaTable *table, const char *key)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a>* <a class="el" href="group__hanjadictionary.html#ga2466c41d985a584f569b2ed6b9c74cca">hanja_table_match_suffix</a> </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="group__hanjadictionary.html#gad58042533438c8e2672738474bf9f981">HanjaTable</a> *&#160;</td>
+          <td class="paramname"><em>table</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>key</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>한자 사전에서 뒷부분이 매치되는 키를 가진 엔트리를 찾는 함수 </p>
+<dl class="params"><dt><b>매개변수:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">table</td><td>한자 사전 object </td></tr>
+    <tr><td class="paramname">key</td><td>찾을 키, UTF-8 인코딩 </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>반환값:</b></dt><dd>찾은 결과를 HanjaList object로 리턴한다. 찾은 것이 없거나 에러가 있으면 NULL을 리턴한다.</dd></dl>
+<p><em>key</em> 값과 같거나 뒷부분이 같은 키를 가진 엔트리를 검색한다. 그리고 key를 앞에서부터 한자씩 줄여가면서 검색을 계속한다. 예로 들면 "삼국사기"를 검색하면 "삼국사기", "국사기", "사기", "기"를 각각 모두 검색한다. 리턴된 결과는 다 사용하고 나면 반드시 <a class="el" href="group__hanjadictionary.html#ga63619e6913dd17925c0f7a13068eee72" title="한자 사전 검색 함수가 리턴한 결과를 free하는 함수">hanja_list_delete()</a> 함수로 free해야 한다. </p>
+
+</div>
+</div>
+</div>
+
+
+<hr class="footer"/><address class="footer"><small>
+생성시간 : 수 3월 28 2012 23:47:49, 프로젝트명 : libhangul, 생성자 :  &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.6
+</small></address>
+
+</body>
+</html>
diff --git a/doc/html/hangul_8h-source.html b/doc/html/hangul_8h-source.html
new file mode 100644 (file)
index 0000000..bd32178
--- /dev/null
@@ -0,0 +1,185 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>libhangul: hangul.h 소스 파일</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- 다음에 의해 생성됨 :  Doxygen 1.5.3-20071008 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>메인&nbsp;페이지</span></a></li>
+    <li><a href="modules.html"><span>모듈</span></a></li>
+    <li class="current"><a href="files.html"><span>파일들</span></a></li>
+    <li><a href="dirs.html"><span>디렉토리</span></a></li>
+    <li><a href="pages.html"><span>관련된&nbsp;페이지</span></a></li>
+  </ul>
+</div>
+<div class="nav">
+<a class="el" href="dir_74e344cbec9860085ddf79a94754a2b6.html">hangul</a></div>
+<h1>hangul.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* libhangul</span>
+<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2004 - 2007 Choe Hwanjin</span>
+<a name="l00003"></a>00003 <span class="comment"> *</span>
+<a name="l00004"></a>00004 <span class="comment"> * This library is free software; you can redistribute it and/or</span>
+<a name="l00005"></a>00005 <span class="comment"> * modify it under the terms of the GNU Lesser General Public</span>
+<a name="l00006"></a>00006 <span class="comment"> * License as published by the Free Software Foundation; either</span>
+<a name="l00007"></a>00007 <span class="comment"> * version 2.1 of the License, or (at your option) any later version.</span>
+<a name="l00008"></a>00008 <span class="comment"> *</span>
+<a name="l00009"></a>00009 <span class="comment"> * This library is distributed in the hope that it will be useful,</span>
+<a name="l00010"></a>00010 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
+<a name="l00011"></a>00011 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span>
+<a name="l00012"></a>00012 <span class="comment"> * Lesser General Public License for more details.</span>
+<a name="l00013"></a>00013 <span class="comment"> *</span>
+<a name="l00014"></a>00014 <span class="comment"> * You should have received a copy of the GNU Lesser General Public</span>
+<a name="l00015"></a>00015 <span class="comment"> * License along with this library; if not, write to the Free Software</span>
+<a name="l00016"></a>00016 <span class="comment"> * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA</span>
+<a name="l00017"></a>00017 <span class="comment"> */</span>
+<a name="l00018"></a>00018 
+<a name="l00019"></a>00019 <span class="preprocessor">#ifndef libhangul_hangul_h</span>
+<a name="l00020"></a>00020 <span class="preprocessor"></span><span class="preprocessor">#define libhangul_hangul_h</span>
+<a name="l00021"></a>00021 <span class="preprocessor"></span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;stdbool.h&gt;</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;inttypes.h&gt;</span>
+<a name="l00024"></a>00024 
+<a name="l00025"></a>00025 <span class="preprocessor">#ifdef __GNUC__</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define LIBHANGUL_DEPRECATED __attribute__((deprecated));</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">#define LIBHANGUL_DEPRECATED</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00030"></a>00030 <span class="preprocessor"></span>
+<a name="l00031"></a>00031 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
+<a name="l00033"></a>00033 <span class="preprocessor">#endif</span>
+<a name="l00034"></a>00034 <span class="preprocessor"></span>
+<a name="l00035"></a>00035 <span class="comment">/* hangulctype.c */</span>
+<a name="l00036"></a>00036 <span class="keyword">enum</span> {
+<a name="l00037"></a>00037     HANGUL_CHOSEONG_FILLER  = 0x115f,   <span class="comment">/* hangul choseong filler */</span>
+<a name="l00038"></a>00038     HANGUL_JUNGSEONG_FILLER = 0x1160    <span class="comment">/* hangul jungseong filler */</span>
+<a name="l00039"></a>00039 };
+<a name="l00040"></a>00040 
+<a name="l00041"></a><a class="code" href="group__hangulctype.html#g2c1a56543786ad0dcce173493019448c">00041</a> <span class="keyword">typedef</span> uint32_t <a class="code" href="group__hangulctype.html#g2c1a56543786ad0dcce173493019448c" title="UCS4 코드 단위의 글자 코드 값">ucschar</a>;
+<a name="l00042"></a>00042 
+<a name="l00043"></a>00043 <span class="keywordtype">bool</span> <a class="code" href="group__hangulctype.html#ge7e530bdd27641359932f0ec2f35baf7" title="초성인지 확인하는 함수">hangul_is_choseong</a>(ucschar c);
+<a name="l00044"></a>00044 <span class="keywordtype">bool</span> <a class="code" href="group__hangulctype.html#g13911613692587dbee7ad7a8e55d05de" title="중성인지 확인하는 함수">hangul_is_jungseong</a>(ucschar c);
+<a name="l00045"></a>00045 <span class="keywordtype">bool</span> <a class="code" href="group__hangulctype.html#gf27e727a59a10d93bce3000ba67cfee5" title="종성인지 확인하는 함수">hangul_is_jongseong</a>(ucschar c);
+<a name="l00046"></a>00046 <span class="keywordtype">bool</span> <a class="code" href="group__hangulctype.html#g2000b538de4cb62a340a7e43c915d47c" title="초성이고 조합 가능한지 확인">hangul_is_choseong_conjoinable</a>(ucschar c);
+<a name="l00047"></a>00047 <span class="keywordtype">bool</span> <a class="code" href="group__hangulctype.html#g1f21b5668d639a6f8239c0768eba26bb" title="중성이고 조합 가능한지 확인">hangul_is_jungseong_conjoinable</a>(ucschar c);
+<a name="l00048"></a>00048 <span class="keywordtype">bool</span> <a class="code" href="group__hangulctype.html#g27bf78bb7bfaa411edefdbc352ae99ba" title="종성이고 조합 가능한지 확인">hangul_is_jongseong_conjoinable</a>(ucschar c);
+<a name="l00049"></a>00049 <span class="keywordtype">bool</span> <a class="code" href="group__hangulctype.html#gbd6ca2bb0cd27983821116adf56b4691" title="한글 음절 인지 확">hangul_is_syllable</a>(ucschar c);
+<a name="l00050"></a>00050 <span class="keywordtype">bool</span> <a class="code" href="group__hangulctype.html#g88f2449a0cbd08eaa7ad303fe31863ae" title="자모 인지 확인">hangul_is_jamo</a>(ucschar c);
+<a name="l00051"></a>00051 <span class="keywordtype">bool</span> <a class="code" href="group__hangulctype.html#g45f5b595d03fd57b14605d53daae3e6e" title="호환 자모인지 확인">hangul_is_cjamo</a>(ucschar c);
+<a name="l00052"></a>00052 
+<a name="l00053"></a>00053 ucschar <a class="code" href="group__hangulctype.html#g3098332f541aafb8112ea5f5a0b7d9d7" title="자모 코드를 대응하는 호환 자모로 변환">hangul_jamo_to_cjamo</a>(ucschar ch);
+<a name="l00054"></a>00054 
+<a name="l00055"></a>00055 <span class="keyword">const</span> ucschar* <a class="code" href="group__hangulctype.html#g713c0515d849c266f2140736d7f93061" title="iter를 기준으로 이전 음절의 첫자모 글자에 대한 포인터를 구하는...">hangul_syllable_iterator_prev</a>(<span class="keyword">const</span> ucschar* str,
+<a name="l00056"></a>00056                                              <span class="keyword">const</span> ucschar* begin);
+<a name="l00057"></a>00057 <span class="keyword">const</span> ucschar* <a class="code" href="group__hangulctype.html#g9eacc11b58f4c8d3d30fbdf7bea1ca66" title="iter를 기준으로 다음 음절의 첫자모 글자에 대한 포인터를 구하는...">hangul_syllable_iterator_next</a>(<span class="keyword">const</span> ucschar* str,
+<a name="l00058"></a>00058                                              <span class="keyword">const</span> ucschar* end);
+<a name="l00059"></a>00059 
+<a name="l00060"></a>00060 <span class="keywordtype">int</span>     <a class="code" href="group__hangulctype.html#gf6e252781050757fb56131a450c459b3" title="한 음절에 해당하는 코드의 갯수를 구하는 함수">hangul_syllable_len</a>(<span class="keyword">const</span> ucschar* str, <span class="keywordtype">int</span> max_len);
+<a name="l00061"></a>00061 
+<a name="l00062"></a>00062 ucschar <a class="code" href="group__hangulctype.html#g7f79e6e65454c3b074ac0483bb11b256" title="자모 코드를 조합하여 한글 음절로 변환">hangul_jamo_to_syllable</a>(ucschar choseong,
+<a name="l00063"></a>00063                                 ucschar jungseong,
+<a name="l00064"></a>00064                                 ucschar jongseong);
+<a name="l00065"></a>00065 <span class="keywordtype">void</span>    <a class="code" href="group__hangulctype.html#gb3581b43f1b9903d01aedcf1da057b6b" title="음절을 자모로 분해">hangul_syllable_to_jamo</a>(ucschar syllable,
+<a name="l00066"></a>00066                                 ucschar* choseong,
+<a name="l00067"></a>00067                                 ucschar* jungseong,
+<a name="l00068"></a>00068                                 ucschar* jongseong);
+<a name="l00069"></a>00069 <span class="keywordtype">int</span>     <a class="code" href="group__hangulctype.html#gacc8ef9ce4b4f80385a9bb8add2e3f4c" title="자모 스트링을 음절 스트링으로 변환">hangul_jamos_to_syllables</a>(ucschar* dest, <span class="keywordtype">int</span> destlen,
+<a name="l00070"></a>00070                                   <span class="keyword">const</span> ucschar* src, <span class="keywordtype">int</span> srclen);
+<a name="l00071"></a>00071 
+<a name="l00072"></a>00072 <span class="comment">/* hangulinputcontext.c */</span>
+<a name="l00073"></a>00073 <span class="keyword">typedef</span> <span class="keyword">struct </span>_HangulKeyboard        HangulKeyboard;
+<a name="l00074"></a>00074 <span class="keyword">typedef</span> <span class="keyword">struct </span>_HangulCombination     HangulCombination;
+<a name="l00075"></a>00075 <span class="keyword">typedef</span> <span class="keyword">struct </span>_HangulBuffer          HangulBuffer;
+<a name="l00076"></a><a class="code" href="group__hangulic.html#g623ec57b85ebf33279989f3e6bc2d59a">00076</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>_HangulInputContext    <a class="code" href="group__hangulic.html#g623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a>;
+<a name="l00077"></a>00077 
+<a name="l00078"></a>00078 <span class="keyword">enum</span> {
+<a name="l00079"></a>00079     HANGUL_OUTPUT_SYLLABLE,
+<a name="l00080"></a>00080     HANGUL_OUTPUT_JAMO
+<a name="l00081"></a>00081 };
+<a name="l00082"></a>00082 
+<a name="l00083"></a>00083 <span class="keyword">enum</span> {
+<a name="l00084"></a>00084     HANGUL_KEYBOARD_TYPE_JAMO,
+<a name="l00085"></a>00085     HANGUL_KEYBOARD_TYPE_JASO,
+<a name="l00086"></a>00086     HANGUL_KEYBOARD_TYPE_ROMAJA
+<a name="l00087"></a>00087 };
+<a name="l00088"></a>00088 
+<a name="l00089"></a>00089 <span class="comment">/* keyboard */</span>
+<a name="l00090"></a>00090 HangulKeyboard* hangul_keyboard_new(<span class="keywordtype">void</span>);
+<a name="l00091"></a>00091 <span class="keywordtype">void</span>    hangul_keyboard_delete(HangulKeyboard *keyboard);
+<a name="l00092"></a>00092 <span class="keywordtype">void</span>    hangul_keyboard_set_value(HangulKeyboard *keyboard,
+<a name="l00093"></a>00093                                   <span class="keywordtype">int</span> key, ucschar value);
+<a name="l00094"></a>00094 <span class="keywordtype">void</span>    hangul_keyboard_set_type(HangulKeyboard *keyboard, <span class="keywordtype">int</span> type);
+<a name="l00095"></a>00095 
+<a name="l00096"></a>00096 <span class="comment">/* combination */</span>
+<a name="l00097"></a>00097 HangulCombination* hangul_combination_new(<span class="keywordtype">void</span>);
+<a name="l00098"></a>00098 <span class="keywordtype">void</span> hangul_combination_delete(HangulCombination *combination);
+<a name="l00099"></a>00099 <span class="keywordtype">bool</span> hangul_combination_set_data(HangulCombination* combination, 
+<a name="l00100"></a>00100                      ucschar* first, ucschar* second, ucschar* result, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n);
+<a name="l00101"></a>00101 
+<a name="l00102"></a>00102 <span class="comment">/* input context */</span>
+<a name="l00103"></a>00103 <a class="code" href="group__hangulic.html#g623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a>* <a class="code" href="group__hangulic.html#g323e53954c0fe5869ffc4cbcfc2be897" title="HangulInputContext 오브젝트를 생성한다.">hangul_ic_new</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* keyboard);
+<a name="l00104"></a>00104 <span class="keywordtype">void</span> <a class="code" href="group__hangulic.html#g3f153cf60e726535ad175ebb894f584d" title="HangulInputContext를 삭제하는 함수">hangul_ic_delete</a>(<a class="code" href="group__hangulic.html#g623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic);
+<a name="l00105"></a>00105 <span class="keywordtype">bool</span> <a class="code" href="group__hangulic.html#g26a39855a3fb03a1f794aca464ae132e" title="키 입력을 처리하여 실제로 한글 조합을 하는 함수">hangul_ic_process</a>(<a class="code" href="group__hangulic.html#g623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic, <span class="keywordtype">int</span> ascii);
+<a name="l00106"></a>00106 <span class="keywordtype">void</span> <a class="code" href="group__hangulic.html#g2fa2f5972adbdacd38e1edf62ff9fc53" title="HangulInputContext를 초기상태로 되돌리는 함수">hangul_ic_reset</a>(<a class="code" href="group__hangulic.html#g623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic);
+<a name="l00107"></a>00107 <span class="keywordtype">bool</span> <a class="code" href="group__hangulic.html#g8d886ba7f2e3adb1fbc8c00d58b825b3" title="HangulInputContext가 backspace 키를 처리하도록 하는 함수">hangul_ic_backspace</a>(<a class="code" href="group__hangulic.html#g623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic);
+<a name="l00108"></a>00108 
+<a name="l00109"></a>00109 <span class="keywordtype">bool</span> <a class="code" href="group__hangulic.html#g392305eaf52e31967719fc039b267956" title="HangulInputContext가 조합중인 글자를 가지고 있는지 확인하는 함수...">hangul_ic_is_empty</a>(<a class="code" href="group__hangulic.html#g623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic);
+<a name="l00110"></a>00110 <span class="keywordtype">bool</span> <a class="code" href="group__hangulic.html#gf6a03d6bf05b58cc50ed10e2c7172a33" title="HangulInputContext가 조합중인 초성을 가지고 있는지 확인하는 함수...">hangul_ic_has_choseong</a>(<a class="code" href="group__hangulic.html#g623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic);
+<a name="l00111"></a>00111 <span class="keywordtype">bool</span> <a class="code" href="group__hangulic.html#g4509b431ce3a9c8b2b74120ea5dde9b5" title="HangulInputContext가 조합중인 중성을 가지고 있는지 확인하는 함수...">hangul_ic_has_jungseong</a>(<a class="code" href="group__hangulic.html#g623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic);
+<a name="l00112"></a>00112 <span class="keywordtype">bool</span> <a class="code" href="group__hangulic.html#gcef5c615ac50da4dc99f50934739c424" title="HangulInputContext가 조합중인 종성을 가지고 있는지 확인하는 함수...">hangul_ic_has_jongseong</a>(<a class="code" href="group__hangulic.html#g623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic);
+<a name="l00113"></a>00113 <span class="keywordtype">bool</span> <a class="code" href="group__hangulic.html#gc9e3230e98035854b806436d0569596e" title="주어진 hic가 transliteration method인지 판별">hangul_ic_is_transliteration</a>(<a class="code" href="group__hangulic.html#g623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic);
+<a name="l00114"></a>00114 
+<a name="l00115"></a>00115 <span class="keywordtype">void</span> hangul_ic_set_output_mode(<a class="code" href="group__hangulic.html#g623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic, <span class="keywordtype">int</span> mode);
+<a name="l00116"></a>00116 <span class="keywordtype">void</span> hangul_ic_set_keyboard(<a class="code" href="group__hangulic.html#g623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic,
+<a name="l00117"></a>00117                             <span class="keyword">const</span> HangulKeyboard *keyboard);
+<a name="l00118"></a>00118 <span class="keywordtype">void</span> <a class="code" href="group__hangulic.html#g7dd66ed8f04fe95ff401f2b29e10db1f" title="HangulInputContext의 자판 배열을 바꾸는 함수">hangul_ic_select_keyboard</a>(<a class="code" href="group__hangulic.html#g623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic,
+<a name="l00119"></a>00119                                <span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keywordtype">id</span>);
+<a name="l00120"></a>00120 <span class="keywordtype">void</span> hangul_ic_set_combination(<a class="code" href="group__hangulic.html#g623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic,
+<a name="l00121"></a>00121                                <span class="keyword">const</span> HangulCombination *combination);
+<a name="l00122"></a>00122 <span class="keywordtype">void</span> hangul_ic_connect_callback(<a class="code" href="group__hangulic.html#g623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a>* hic, <span class="keyword">const</span> <span class="keywordtype">char</span>* event,
+<a name="l00123"></a>00123                                 <span class="keywordtype">void</span>* callback, <span class="keywordtype">void</span>* user_data);
+<a name="l00124"></a>00124 
+<a name="l00125"></a>00125 <span class="keywordtype">unsigned</span>    hangul_ic_get_n_keyboards();
+<a name="l00126"></a>00126 <span class="keyword">const</span> <span class="keywordtype">char</span>* hangul_ic_get_keyboard_id(<span class="keywordtype">unsigned</span> index_);
+<a name="l00127"></a>00127 <span class="keyword">const</span> <span class="keywordtype">char</span>* hangul_ic_get_keyboard_name(<span class="keywordtype">unsigned</span> index_);
+<a name="l00128"></a>00128 
+<a name="l00129"></a>00129 <span class="keyword">const</span> ucschar* <a class="code" href="group__hangulic.html#gc39496296816be4b516659b322e73d64" title="현재 상태의 preedit string을 구하는 함수">hangul_ic_get_preedit_string</a>(<a class="code" href="group__hangulic.html#g623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic);
+<a name="l00130"></a>00130 <span class="keyword">const</span> ucschar* <a class="code" href="group__hangulic.html#gbe09f347ac91563b4dd45f93c5bd9a03" title="현재 상태의 commit string을 구하는 함수">hangul_ic_get_commit_string</a>(<a class="code" href="group__hangulic.html#g623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic);
+<a name="l00131"></a>00131 <span class="keyword">const</span> ucschar* <a class="code" href="group__hangulic.html#g40e3e40e46d1554a6e2e85280396a6b5" title="HangulInputContext의 입력 상태를 완료하는 함수">hangul_ic_flush</a>(<a class="code" href="group__hangulic.html#g623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic);
+<a name="l00132"></a>00132 
+<a name="l00133"></a>00133 <span class="comment">/* hanja.c */</span>
+<a name="l00134"></a><a class="code" href="group__hanjadictionary.html#g96969351e2a98eb1e776275338822271">00134</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>_Hanja <a class="code" href="group__hanjadictionary.html#g96969351e2a98eb1e776275338822271" title="한자 사전 검색 결과의 최소 단위">Hanja</a>;
+<a name="l00135"></a><a class="code" href="group__hanjadictionary.html#g4a7a4937b0fbe7689f2d2935c34be19b">00135</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>_HanjaList <a class="code" href="group__hanjadictionary.html#g4a7a4937b0fbe7689f2d2935c34be19b" title="한자 사전의 검색 결과를 전달하는데 사용하는 오브젝트">HanjaList</a>;
+<a name="l00136"></a><a class="code" href="group__hanjadictionary.html#gd58042533438c8e2672738474bf9f981">00136</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>_HanjaTable <a class="code" href="group__hanjadictionary.html#gd58042533438c8e2672738474bf9f981" title="한자 사전을 관리하는데 사용하는 오브젝트">HanjaTable</a>;
+<a name="l00137"></a>00137 
+<a name="l00138"></a>00138 <a class="code" href="group__hanjadictionary.html#gd58042533438c8e2672738474bf9f981" title="한자 사전을 관리하는데 사용하는 오브젝트">HanjaTable</a>*  <a class="code" href="group__hanjadictionary.html#gaad25fe6ea42acca94b6e94868d2d4fc" title="한자 사전 파일을 로딩하는 함수">hanja_table_load</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename);
+<a name="l00139"></a>00139 <a class="code" href="group__hanjadictionary.html#g4a7a4937b0fbe7689f2d2935c34be19b" title="한자 사전의 검색 결과를 전달하는데 사용하는 오브젝트">HanjaList</a>*   <a class="code" href="group__hanjadictionary.html#gf260f28723a8084ed36e81d751f394f2" title="한자 사전에서 매치되는 키를 가진 엔트리를 찾는 함수">hanja_table_match_exact</a>(<span class="keyword">const</span> <a class="code" href="group__hanjadictionary.html#gd58042533438c8e2672738474bf9f981" title="한자 사전을 관리하는데 사용하는 오브젝트">HanjaTable</a>* table, <span class="keyword">const</span> <span class="keywordtype">char</span> *key);
+<a name="l00140"></a>00140 <a class="code" href="group__hanjadictionary.html#g4a7a4937b0fbe7689f2d2935c34be19b" title="한자 사전의 검색 결과를 전달하는데 사용하는 오브젝트">HanjaList</a>*   <a class="code" href="group__hanjadictionary.html#g8605f5e6a162e9bc60ca6ff43b4369e6" title="한자 사전에서 앞부분이 매치되는 키를 가진 엔트리를 찾는 함수...">hanja_table_match_prefix</a>(<span class="keyword">const</span> <a class="code" href="group__hanjadictionary.html#gd58042533438c8e2672738474bf9f981" title="한자 사전을 관리하는데 사용하는 오브젝트">HanjaTable</a>* table, <span class="keyword">const</span> <span class="keywordtype">char</span> *key);
+<a name="l00141"></a>00141 <a class="code" href="group__hanjadictionary.html#g4a7a4937b0fbe7689f2d2935c34be19b" title="한자 사전의 검색 결과를 전달하는데 사용하는 오브젝트">HanjaList</a>*   <a class="code" href="group__hanjadictionary.html#g2466c41d985a584f569b2ed6b9c74cca" title="한자 사전에서 뒷부분이 매치되는 키를 가진 엔트리를 찾는 함수...">hanja_table_match_suffix</a>(<span class="keyword">const</span> <a class="code" href="group__hanjadictionary.html#gd58042533438c8e2672738474bf9f981" title="한자 사전을 관리하는데 사용하는 오브젝트">HanjaTable</a>* table, <span class="keyword">const</span> <span class="keywordtype">char</span> *key);
+<a name="l00142"></a>00142 <span class="keywordtype">void</span>         <a class="code" href="group__hanjadictionary.html#g59c749533062905732587d0ff9b6f5a9" title="한자 사전 object를 free하는 함수">hanja_table_delete</a>(<a class="code" href="group__hanjadictionary.html#gd58042533438c8e2672738474bf9f981" title="한자 사전을 관리하는데 사용하는 오브젝트">HanjaTable</a> *table);
+<a name="l00143"></a>00143 
+<a name="l00144"></a>00144 <span class="keywordtype">int</span>          <a class="code" href="group__hanjadictionary.html#g752da8c61bdfd61b9fbca08fb585e490" title="HanjaList가 가지고 있는 아이템의 갯수를 구하는 함수">hanja_list_get_size</a>(<span class="keyword">const</span> <a class="code" href="group__hanjadictionary.html#g4a7a4937b0fbe7689f2d2935c34be19b" title="한자 사전의 검색 결과를 전달하는데 사용하는 오브젝트">HanjaList</a> *list);
+<a name="l00145"></a>00145 <span class="keyword">const</span> <span class="keywordtype">char</span>*  <a class="code" href="group__hanjadictionary.html#g1fb2943130c52b8dc57566beca98a305" title="HanjaList가 생성될때 검색함수에서 사용한 키를 구하는 함수">hanja_list_get_key</a>(<span class="keyword">const</span> <a class="code" href="group__hanjadictionary.html#g4a7a4937b0fbe7689f2d2935c34be19b" title="한자 사전의 검색 결과를 전달하는데 사용하는 오브젝트">HanjaList</a> *list);
+<a name="l00146"></a>00146 <span class="keyword">const</span> <a class="code" href="group__hanjadictionary.html#g96969351e2a98eb1e776275338822271" title="한자 사전 검색 결과의 최소 단위">Hanja</a>* <a class="code" href="group__hanjadictionary.html#g18b8b720d23613a7895f23f7dad926e1" title="HanjaList 의 n번째 Hanja 아이템의 포인터를 구하는 함수">hanja_list_get_nth</a>(<span class="keyword">const</span> <a class="code" href="group__hanjadictionary.html#g4a7a4937b0fbe7689f2d2935c34be19b" title="한자 사전의 검색 결과를 전달하는데 사용하는 오브젝트">HanjaList</a> *list, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n);
+<a name="l00147"></a>00147 <span class="keyword">const</span> <span class="keywordtype">char</span>*  <a class="code" href="group__hanjadictionary.html#g6185a26a275245ee52660eb91b9b57ca" title="HanjaList 의 n번째 아이템의 키를 구하는 함수">hanja_list_get_nth_key</a>(<span class="keyword">const</span> <a class="code" href="group__hanjadictionary.html#g4a7a4937b0fbe7689f2d2935c34be19b" title="한자 사전의 검색 결과를 전달하는데 사용하는 오브젝트">HanjaList</a> *list, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n);
+<a name="l00148"></a>00148 <span class="keyword">const</span> <span class="keywordtype">char</span>*  <a class="code" href="group__hanjadictionary.html#gd86b9ac4d57462a74e5c2e6d7400a447" title="HanjaList의 n번째 아이템의 값를 구하는 함수">hanja_list_get_nth_value</a>(<span class="keyword">const</span> <a class="code" href="group__hanjadictionary.html#g4a7a4937b0fbe7689f2d2935c34be19b" title="한자 사전의 검색 결과를 전달하는데 사용하는 오브젝트">HanjaList</a> *list, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n);
+<a name="l00149"></a>00149 <span class="keyword">const</span> <span class="keywordtype">char</span>*  <a class="code" href="group__hanjadictionary.html#g978c07c6bb77fa9bd468344dce5a407c" title="HanjaList의 n번째 아이템의 설명을 구하는 함수">hanja_list_get_nth_comment</a>(<span class="keyword">const</span> <a class="code" href="group__hanjadictionary.html#g4a7a4937b0fbe7689f2d2935c34be19b" title="한자 사전의 검색 결과를 전달하는데 사용하는 오브젝트">HanjaList</a> *list, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n);
+<a name="l00150"></a>00150 <span class="keywordtype">void</span>         <a class="code" href="group__hanjadictionary.html#g63619e6913dd17925c0f7a13068eee72" title="한자 사전 검색 함수가 리턴한 결과를 free하는 함수">hanja_list_delete</a>(<a class="code" href="group__hanjadictionary.html#g4a7a4937b0fbe7689f2d2935c34be19b" title="한자 사전의 검색 결과를 전달하는데 사용하는 오브젝트">HanjaList</a> *list);
+<a name="l00151"></a>00151 
+<a name="l00152"></a>00152 <span class="keyword">const</span> <span class="keywordtype">char</span>*  <a class="code" href="group__hanjadictionary.html#g859e26859e874957f89be5debd783644" title="Hanja의 키를 찾아본다.">hanja_get_key</a>(<span class="keyword">const</span> <a class="code" href="group__hanjadictionary.html#g96969351e2a98eb1e776275338822271" title="한자 사전 검색 결과의 최소 단위">Hanja</a>* hanja);
+<a name="l00153"></a>00153 <span class="keyword">const</span> <span class="keywordtype">char</span>*  <a class="code" href="group__hanjadictionary.html#g3b86a3debe7ca1db3edf86c4db6b07e6" title="Hanja의 값을 찾아본다.">hanja_get_value</a>(<span class="keyword">const</span> <a class="code" href="group__hanjadictionary.html#g96969351e2a98eb1e776275338822271" title="한자 사전 검색 결과의 최소 단위">Hanja</a>* hanja);
+<a name="l00154"></a>00154 <span class="keyword">const</span> <span class="keywordtype">char</span>*  <a class="code" href="group__hanjadictionary.html#g72b4748e039981d3f63d76fb6431361f" title="Hanja의 설명을 찾아본다.">hanja_get_comment</a>(<span class="keyword">const</span> <a class="code" href="group__hanjadictionary.html#g96969351e2a98eb1e776275338822271" title="한자 사전 검색 결과의 최소 단위">Hanja</a>* hanja);
+<a name="l00155"></a>00155 
+<a name="l00156"></a>00156 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00157"></a>00157 <span class="preprocessor"></span>}
+<a name="l00158"></a>00158 <span class="preprocessor">#endif</span>
+<a name="l00159"></a>00159 <span class="preprocessor"></span>
+<a name="l00160"></a>00160 <span class="preprocessor">#undef LIBHANGUL_DEPRECATED</span>
+<a name="l00161"></a>00161 <span class="preprocessor"></span>
+<a name="l00162"></a>00162 <span class="preprocessor">#endif </span><span class="comment">/* libhangul_hangul_h */</span>
+</pre></div><hr size="1"><address style="text-align: right;"><small>생성시간 : Wed Nov 23 23:31:45 2011, 프로젝트명 : libhangul, 생성자 : &nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3-20071008 </small></address>
+</body>
+</html>
diff --git a/doc/html/hangul_8h_source.html b/doc/html/hangul_8h_source.html
new file mode 100644 (file)
index 0000000..7421a9d
--- /dev/null
@@ -0,0 +1,238 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>libhangul: hangul.h 소스 파일</title>
+
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  
+  
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">libhangul
+   &#160;<span id="projectnumber">Version 0.1.0</span>
+   </div>
+   
+  </td>
+  
+  
+  
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<!-- 다음에 의해 생성됨 :  Doxygen 1.7.6 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>메인&#160;페이지</span></a></li>
+      <li><a href="pages.html"><span>관련된&#160;페이지</span></a></li>
+      <li><a href="modules.html"><span>모듈</span></a></li>
+      <li class="current"><a href="files.html"><span>파일들</span></a></li>
+      <li><a href="dirs.html"><span>디렉토리</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>파일&#160;목록</span></a></li>
+      <li><a href="globals.html"><span>전역</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_74e344cbec9860085ddf79a94754a2b6.html">hangul</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">hangul.h</div>  </div>
+</div>
+<div class="contents">
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* libhangul</span>
+<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2004 - 2007 Choe Hwanjin</span>
+<a name="l00003"></a>00003 <span class="comment"> *</span>
+<a name="l00004"></a>00004 <span class="comment"> * This library is free software; you can redistribute it and/or</span>
+<a name="l00005"></a>00005 <span class="comment"> * modify it under the terms of the GNU Lesser General Public</span>
+<a name="l00006"></a>00006 <span class="comment"> * License as published by the Free Software Foundation; either</span>
+<a name="l00007"></a>00007 <span class="comment"> * version 2.1 of the License, or (at your option) any later version.</span>
+<a name="l00008"></a>00008 <span class="comment"> *</span>
+<a name="l00009"></a>00009 <span class="comment"> * This library is distributed in the hope that it will be useful,</span>
+<a name="l00010"></a>00010 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
+<a name="l00011"></a>00011 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span>
+<a name="l00012"></a>00012 <span class="comment"> * Lesser General Public License for more details.</span>
+<a name="l00013"></a>00013 <span class="comment"> *</span>
+<a name="l00014"></a>00014 <span class="comment"> * You should have received a copy of the GNU Lesser General Public</span>
+<a name="l00015"></a>00015 <span class="comment"> * License along with this library; if not, write to the Free Software</span>
+<a name="l00016"></a>00016 <span class="comment"> * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA</span>
+<a name="l00017"></a>00017 <span class="comment"> */</span>
+<a name="l00018"></a>00018 
+<a name="l00019"></a>00019 <span class="preprocessor">#ifndef libhangul_hangul_h</span>
+<a name="l00020"></a>00020 <span class="preprocessor"></span><span class="preprocessor">#define libhangul_hangul_h</span>
+<a name="l00021"></a>00021 <span class="preprocessor"></span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;stdbool.h&gt;</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;inttypes.h&gt;</span>
+<a name="l00024"></a>00024 
+<a name="l00025"></a>00025 <span class="preprocessor">#ifdef __GNUC__</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define LIBHANGUL_DEPRECATED __attribute__((deprecated));</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">#define LIBHANGUL_DEPRECATED</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00030"></a>00030 <span class="preprocessor"></span>
+<a name="l00031"></a>00031 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {
+<a name="l00033"></a>00033 <span class="preprocessor">#endif</span>
+<a name="l00034"></a>00034 <span class="preprocessor"></span>
+<a name="l00035"></a>00035 <span class="comment">/* hangulctype.c */</span>
+<a name="l00036"></a>00036 <span class="keyword">enum</span> {
+<a name="l00037"></a>00037     HANGUL_CHOSEONG_FILLER  = 0x115f,   <span class="comment">/* hangul choseong filler */</span>
+<a name="l00038"></a>00038     HANGUL_JUNGSEONG_FILLER = 0x1160    <span class="comment">/* hangul jungseong filler */</span>
+<a name="l00039"></a>00039 };
+<a name="l00040"></a>00040 
+<a name="l00041"></a><a class="code" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">00041</a> <span class="keyword">typedef</span> uint32_t <a class="code" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c" title="UCS4 코드 단위의 글자 코드 값">ucschar</a>;
+<a name="l00042"></a>00042 
+<a name="l00043"></a>00043 <span class="keywordtype">bool</span> <a class="code" href="group__hangulctype.html#gae7e530bdd27641359932f0ec2f35baf7" title="초성인지 확인하는 함수">hangul_is_choseong</a>(ucschar c);
+<a name="l00044"></a>00044 <span class="keywordtype">bool</span> <a class="code" href="group__hangulctype.html#ga13911613692587dbee7ad7a8e55d05de" title="중성인지 확인하는 함수">hangul_is_jungseong</a>(ucschar c);
+<a name="l00045"></a>00045 <span class="keywordtype">bool</span> <a class="code" href="group__hangulctype.html#gaf27e727a59a10d93bce3000ba67cfee5" title="종성인지 확인하는 함수">hangul_is_jongseong</a>(ucschar c);
+<a name="l00046"></a>00046 <span class="keywordtype">bool</span> <a class="code" href="group__hangulctype.html#ga2000b538de4cb62a340a7e43c915d47c" title="초성이고 조합 가능한지 확인">hangul_is_choseong_conjoinable</a>(ucschar c);
+<a name="l00047"></a>00047 <span class="keywordtype">bool</span> <a class="code" href="group__hangulctype.html#ga1f21b5668d639a6f8239c0768eba26bb" title="중성이고 조합 가능한지 확인">hangul_is_jungseong_conjoinable</a>(ucschar c);
+<a name="l00048"></a>00048 <span class="keywordtype">bool</span> <a class="code" href="group__hangulctype.html#ga27bf78bb7bfaa411edefdbc352ae99ba" title="종성이고 조합 가능한지 확인">hangul_is_jongseong_conjoinable</a>(ucschar c);
+<a name="l00049"></a>00049 <span class="keywordtype">bool</span> <a class="code" href="group__hangulctype.html#gabd6ca2bb0cd27983821116adf56b4691" title="한글 음절 인지 확">hangul_is_syllable</a>(ucschar c);
+<a name="l00050"></a>00050 <span class="keywordtype">bool</span> <a class="code" href="group__hangulctype.html#ga88f2449a0cbd08eaa7ad303fe31863ae" title="자모 인지 확인">hangul_is_jamo</a>(ucschar c);
+<a name="l00051"></a>00051 <span class="keywordtype">bool</span> <a class="code" href="group__hangulctype.html#ga45f5b595d03fd57b14605d53daae3e6e" title="호환 자모인지 확인">hangul_is_cjamo</a>(ucschar c);
+<a name="l00052"></a>00052 
+<a name="l00053"></a>00053 ucschar <a class="code" href="group__hangulctype.html#ga3098332f541aafb8112ea5f5a0b7d9d7" title="자모 코드를 대응하는 호환 자모로 변환">hangul_jamo_to_cjamo</a>(ucschar ch);
+<a name="l00054"></a>00054 
+<a name="l00055"></a>00055 <span class="keyword">const</span> ucschar* <a class="code" href="group__hangulctype.html#ga713c0515d849c266f2140736d7f93061" title="iter를 기준으로 이전 음절의 첫자모 글자에 대한 포인터를 구하는 함수">hangul_syllable_iterator_prev</a>(<span class="keyword">const</span> ucschar* str,
+<a name="l00056"></a>00056                                              <span class="keyword">const</span> ucschar* begin);
+<a name="l00057"></a>00057 <span class="keyword">const</span> ucschar* <a class="code" href="group__hangulctype.html#ga9eacc11b58f4c8d3d30fbdf7bea1ca66" title="iter를 기준으로 다음 음절의 첫자모 글자에 대한 포인터를 구하는 함수">hangul_syllable_iterator_next</a>(<span class="keyword">const</span> ucschar* str,
+<a name="l00058"></a>00058                                              <span class="keyword">const</span> ucschar* end);
+<a name="l00059"></a>00059 
+<a name="l00060"></a>00060 <span class="keywordtype">int</span>     <a class="code" href="group__hangulctype.html#gaf6e252781050757fb56131a450c459b3" title="한 음절에 해당하는 코드의 갯수를 구하는 함수">hangul_syllable_len</a>(<span class="keyword">const</span> ucschar* str, <span class="keywordtype">int</span> max_len);
+<a name="l00061"></a>00061 
+<a name="l00062"></a>00062 ucschar <a class="code" href="group__hangulctype.html#ga7f79e6e65454c3b074ac0483bb11b256" title="자모 코드를 조합하여 한글 음절로 변환">hangul_jamo_to_syllable</a>(ucschar choseong,
+<a name="l00063"></a>00063                                 ucschar jungseong,
+<a name="l00064"></a>00064                                 ucschar jongseong);
+<a name="l00065"></a>00065 <span class="keywordtype">void</span>    <a class="code" href="group__hangulctype.html#gab3581b43f1b9903d01aedcf1da057b6b" title="음절을 자모로 분해">hangul_syllable_to_jamo</a>(ucschar syllable,
+<a name="l00066"></a>00066                                 ucschar* choseong,
+<a name="l00067"></a>00067                                 ucschar* jungseong,
+<a name="l00068"></a>00068                                 ucschar* jongseong);
+<a name="l00069"></a>00069 <span class="keywordtype">int</span>     <a class="code" href="group__hangulctype.html#gaacc8ef9ce4b4f80385a9bb8add2e3f4c" title="자모 스트링을 음절 스트링으로 변환">hangul_jamos_to_syllables</a>(ucschar* dest, <span class="keywordtype">int</span> destlen,
+<a name="l00070"></a>00070                                   <span class="keyword">const</span> ucschar* src, <span class="keywordtype">int</span> srclen);
+<a name="l00071"></a>00071 
+<a name="l00072"></a>00072 <span class="comment">/* hangulinputcontext.c */</span>
+<a name="l00073"></a>00073 <span class="keyword">typedef</span> <span class="keyword">struct </span>_HangulKeyboard        HangulKeyboard;
+<a name="l00074"></a>00074 <span class="keyword">typedef</span> <span class="keyword">struct </span>_HangulCombination     HangulCombination;
+<a name="l00075"></a>00075 <span class="keyword">typedef</span> <span class="keyword">struct </span>_HangulBuffer          HangulBuffer;
+<a name="l00076"></a><a class="code" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">00076</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>_HangulInputContext    <a class="code" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a>;
+<a name="l00077"></a>00077 
+<a name="l00078"></a>00078 <span class="keyword">enum</span> {
+<a name="l00079"></a>00079     HANGUL_OUTPUT_SYLLABLE,
+<a name="l00080"></a>00080     HANGUL_OUTPUT_JAMO
+<a name="l00081"></a>00081 };
+<a name="l00082"></a>00082 
+<a name="l00083"></a>00083 <span class="keyword">enum</span> {
+<a name="l00084"></a>00084     HANGUL_KEYBOARD_TYPE_JAMO,
+<a name="l00085"></a>00085     HANGUL_KEYBOARD_TYPE_JASO,
+<a name="l00086"></a>00086     HANGUL_KEYBOARD_TYPE_ROMAJA
+<a name="l00087"></a>00087 };
+<a name="l00088"></a>00088 
+<a name="l00089"></a>00089 <span class="comment">/* keyboard */</span>
+<a name="l00090"></a>00090 HangulKeyboard* hangul_keyboard_new(<span class="keywordtype">void</span>);
+<a name="l00091"></a>00091 <span class="keywordtype">void</span>    hangul_keyboard_delete(HangulKeyboard *keyboard);
+<a name="l00092"></a>00092 <span class="keywordtype">void</span>    hangul_keyboard_set_value(HangulKeyboard *keyboard,
+<a name="l00093"></a>00093                                   <span class="keywordtype">int</span> key, ucschar value);
+<a name="l00094"></a>00094 <span class="keywordtype">void</span>    hangul_keyboard_set_type(HangulKeyboard *keyboard, <span class="keywordtype">int</span> type);
+<a name="l00095"></a>00095 
+<a name="l00096"></a>00096 <span class="comment">/* combination */</span>
+<a name="l00097"></a>00097 HangulCombination* hangul_combination_new(<span class="keywordtype">void</span>);
+<a name="l00098"></a>00098 <span class="keywordtype">void</span> hangul_combination_delete(HangulCombination *combination);
+<a name="l00099"></a>00099 <span class="keywordtype">bool</span> hangul_combination_set_data(HangulCombination* combination, 
+<a name="l00100"></a>00100                      ucschar* first, ucschar* second, ucschar* result, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n);
+<a name="l00101"></a>00101 
+<a name="l00102"></a>00102 <span class="comment">/* input context */</span>
+<a name="l00103"></a>00103 <a class="code" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a>* <a class="code" href="group__hangulic.html#ga323e53954c0fe5869ffc4cbcfc2be897" title="HangulInputContext 오브젝트를 생성한다.">hangul_ic_new</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* keyboard);
+<a name="l00104"></a>00104 <span class="keywordtype">void</span> <a class="code" href="group__hangulic.html#ga3f153cf60e726535ad175ebb894f584d" title="HangulInputContext 를 삭제하는 함수">hangul_ic_delete</a>(<a class="code" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic);
+<a name="l00105"></a>00105 <span class="keywordtype">bool</span> <a class="code" href="group__hangulic.html#ga26a39855a3fb03a1f794aca464ae132e" title="키 입력을 처리하여 실제로 한글 조합을 하는 함수">hangul_ic_process</a>(<a class="code" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic, <span class="keywordtype">int</span> ascii);
+<a name="l00106"></a>00106 <span class="keywordtype">void</span> <a class="code" href="group__hangulic.html#ga2fa2f5972adbdacd38e1edf62ff9fc53" title="HangulInputContext 를 초기상태로 되돌리는 함수">hangul_ic_reset</a>(<a class="code" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic);
+<a name="l00107"></a>00107 <span class="keywordtype">bool</span> <a class="code" href="group__hangulic.html#ga8d886ba7f2e3adb1fbc8c00d58b825b3" title="HangulInputContext 가 backspace 키를 처리하도록 하는 함수">hangul_ic_backspace</a>(<a class="code" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic);
+<a name="l00108"></a>00108 
+<a name="l00109"></a>00109 <span class="keywordtype">bool</span> <a class="code" href="group__hangulic.html#ga392305eaf52e31967719fc039b267956" title="HangulInputContext 가 조합중인 글자를 가지고 있는지 확인하는 함수">hangul_ic_is_empty</a>(<a class="code" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic);
+<a name="l00110"></a>00110 <span class="keywordtype">bool</span> <a class="code" href="group__hangulic.html#gaf6a03d6bf05b58cc50ed10e2c7172a33" title="HangulInputContext 가 조합중인 초성을 가지고 있는지 확인하는 함수">hangul_ic_has_choseong</a>(<a class="code" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic);
+<a name="l00111"></a>00111 <span class="keywordtype">bool</span> <a class="code" href="group__hangulic.html#ga4509b431ce3a9c8b2b74120ea5dde9b5" title="HangulInputContext 가 조합중인 중성을 가지고 있는지 확인하는 함수">hangul_ic_has_jungseong</a>(<a class="code" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic);
+<a name="l00112"></a>00112 <span class="keywordtype">bool</span> <a class="code" href="group__hangulic.html#gacef5c615ac50da4dc99f50934739c424" title="HangulInputContext 가 조합중인 종성을 가지고 있는지 확인하는 함수">hangul_ic_has_jongseong</a>(<a class="code" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic);
+<a name="l00113"></a>00113 <span class="keywordtype">bool</span> <a class="code" href="group__hangulic.html#gac9e3230e98035854b806436d0569596e" title="주어진 hic가 transliteration method인지 판별">hangul_ic_is_transliteration</a>(<a class="code" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic);
+<a name="l00114"></a>00114 
+<a name="l00115"></a>00115 <span class="keywordtype">void</span> hangul_ic_set_output_mode(<a class="code" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic, <span class="keywordtype">int</span> mode);
+<a name="l00116"></a>00116 <span class="keywordtype">void</span> hangul_ic_set_keyboard(<a class="code" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic,
+<a name="l00117"></a>00117                             <span class="keyword">const</span> HangulKeyboard *keyboard);
+<a name="l00118"></a>00118 <span class="keywordtype">void</span> <a class="code" href="group__hangulic.html#ga7dd66ed8f04fe95ff401f2b29e10db1f" title="HangulInputContext 의 자판 배열을 바꾸는 함수">hangul_ic_select_keyboard</a>(<a class="code" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic,
+<a name="l00119"></a>00119                                <span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keywordtype">id</span>);
+<a name="l00120"></a>00120 <span class="keywordtype">void</span> hangul_ic_set_combination(<a class="code" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic,
+<a name="l00121"></a>00121                                <span class="keyword">const</span> HangulCombination *combination);
+<a name="l00122"></a>00122 <span class="keywordtype">void</span> hangul_ic_connect_callback(<a class="code" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a>* hic, <span class="keyword">const</span> <span class="keywordtype">char</span>* event,
+<a name="l00123"></a>00123                                 <span class="keywordtype">void</span>* callback, <span class="keywordtype">void</span>* user_data);
+<a name="l00124"></a>00124 
+<a name="l00125"></a>00125 <span class="keywordtype">unsigned</span>    hangul_ic_get_n_keyboards();
+<a name="l00126"></a>00126 <span class="keyword">const</span> <span class="keywordtype">char</span>* hangul_ic_get_keyboard_id(<span class="keywordtype">unsigned</span> index_);
+<a name="l00127"></a>00127 <span class="keyword">const</span> <span class="keywordtype">char</span>* hangul_ic_get_keyboard_name(<span class="keywordtype">unsigned</span> index_);
+<a name="l00128"></a>00128 
+<a name="l00129"></a>00129 <span class="keyword">const</span> ucschar* <a class="code" href="group__hangulic.html#gac39496296816be4b516659b322e73d64" title="현재 상태의 preedit string을 구하는 함수">hangul_ic_get_preedit_string</a>(<a class="code" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic);
+<a name="l00130"></a>00130 <span class="keyword">const</span> ucschar* <a class="code" href="group__hangulic.html#gabe09f347ac91563b4dd45f93c5bd9a03" title="현재 상태의 commit string을 구하는 함수">hangul_ic_get_commit_string</a>(<a class="code" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic);
+<a name="l00131"></a>00131 <span class="keyword">const</span> ucschar* <a class="code" href="group__hangulic.html#ga40e3e40e46d1554a6e2e85280396a6b5" title="HangulInputContext 의 입력 상태를 완료하는 함수">hangul_ic_flush</a>(<a class="code" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a" title="한글 입력 상태를 관리하기 위한 오브젝트">HangulInputContext</a> *hic);
+<a name="l00132"></a>00132 
+<a name="l00133"></a>00133 <span class="comment">/* hanja.c */</span>
+<a name="l00134"></a><a class="code" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">00134</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>_Hanja <a class="code" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271" title="한자 사전 검색 결과의 최소 단위">Hanja</a>;
+<a name="l00135"></a><a class="code" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">00135</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>_HanjaList <a class="code" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b" title="한자 사전의 검색 결과를 전달하는데 사용하는 오브젝트">HanjaList</a>;
+<a name="l00136"></a><a class="code" href="group__hanjadictionary.html#gad58042533438c8e2672738474bf9f981">00136</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>_HanjaTable <a class="code" href="group__hanjadictionary.html#gad58042533438c8e2672738474bf9f981" title="한자 사전을 관리하는데 사용하는 오브젝트">HanjaTable</a>;
+<a name="l00137"></a>00137 
+<a name="l00138"></a>00138 <a class="code" href="group__hanjadictionary.html#gad58042533438c8e2672738474bf9f981" title="한자 사전을 관리하는데 사용하는 오브젝트">HanjaTable</a>*  <a class="code" href="group__hanjadictionary.html#gaaad25fe6ea42acca94b6e94868d2d4fc" title="한자 사전 파일을 로딩하는 함수">hanja_table_load</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename);
+<a name="l00139"></a>00139 <a class="code" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b" title="한자 사전의 검색 결과를 전달하는데 사용하는 오브젝트">HanjaList</a>*   <a class="code" href="group__hanjadictionary.html#gaf260f28723a8084ed36e81d751f394f2" title="한자 사전에서 매치되는 키를 가진 엔트리를 찾는 함수">hanja_table_match_exact</a>(<span class="keyword">const</span> <a class="code" href="group__hanjadictionary.html#gad58042533438c8e2672738474bf9f981" title="한자 사전을 관리하는데 사용하는 오브젝트">HanjaTable</a>* table, <span class="keyword">const</span> <span class="keywordtype">char</span> *key);
+<a name="l00140"></a>00140 <a class="code" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b" title="한자 사전의 검색 결과를 전달하는데 사용하는 오브젝트">HanjaList</a>*   <a class="code" href="group__hanjadictionary.html#ga8605f5e6a162e9bc60ca6ff43b4369e6" title="한자 사전에서 앞부분이 매치되는 키를 가진 엔트리를 찾는 함수">hanja_table_match_prefix</a>(<span class="keyword">const</span> <a class="code" href="group__hanjadictionary.html#gad58042533438c8e2672738474bf9f981" title="한자 사전을 관리하는데 사용하는 오브젝트">HanjaTable</a>* table, <span class="keyword">const</span> <span class="keywordtype">char</span> *key);
+<a name="l00141"></a>00141 <a class="code" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b" title="한자 사전의 검색 결과를 전달하는데 사용하는 오브젝트">HanjaList</a>*   <a class="code" href="group__hanjadictionary.html#ga2466c41d985a584f569b2ed6b9c74cca" title="한자 사전에서 뒷부분이 매치되는 키를 가진 엔트리를 찾는 함수">hanja_table_match_suffix</a>(<span class="keyword">const</span> <a class="code" href="group__hanjadictionary.html#gad58042533438c8e2672738474bf9f981" title="한자 사전을 관리하는데 사용하는 오브젝트">HanjaTable</a>* table, <span class="keyword">const</span> <span class="keywordtype">char</span> *key);
+<a name="l00142"></a>00142 <span class="keywordtype">void</span>         <a class="code" href="group__hanjadictionary.html#ga59c749533062905732587d0ff9b6f5a9" title="한자 사전 object를 free하는 함수">hanja_table_delete</a>(<a class="code" href="group__hanjadictionary.html#gad58042533438c8e2672738474bf9f981" title="한자 사전을 관리하는데 사용하는 오브젝트">HanjaTable</a> *table);
+<a name="l00143"></a>00143 
+<a name="l00144"></a>00144 <span class="keywordtype">int</span>          <a class="code" href="group__hanjadictionary.html#ga752da8c61bdfd61b9fbca08fb585e490" title="HanjaList 가 가지고 있는 아이템의 갯수를 구하는 함수">hanja_list_get_size</a>(<span class="keyword">const</span> <a class="code" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b" title="한자 사전의 검색 결과를 전달하는데 사용하는 오브젝트">HanjaList</a> *list);
+<a name="l00145"></a>00145 <span class="keyword">const</span> <span class="keywordtype">char</span>*  <a class="code" href="group__hanjadictionary.html#ga1fb2943130c52b8dc57566beca98a305" title="HanjaList 가 생성될때 검색함수에서 사용한 키를 구하는 함수">hanja_list_get_key</a>(<span class="keyword">const</span> <a class="code" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b" title="한자 사전의 검색 결과를 전달하는데 사용하는 오브젝트">HanjaList</a> *list);
+<a name="l00146"></a>00146 <span class="keyword">const</span> <a class="code" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271" title="한자 사전 검색 결과의 최소 단위">Hanja</a>* <a class="code" href="group__hanjadictionary.html#ga18b8b720d23613a7895f23f7dad926e1" title="HanjaList 의 n번째 Hanja 아이템의 포인터를 구하는 함수">hanja_list_get_nth</a>(<span class="keyword">const</span> <a class="code" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b" title="한자 사전의 검색 결과를 전달하는데 사용하는 오브젝트">HanjaList</a> *list, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n);
+<a name="l00147"></a>00147 <span class="keyword">const</span> <span class="keywordtype">char</span>*  <a class="code" href="group__hanjadictionary.html#ga6185a26a275245ee52660eb91b9b57ca" title="HanjaList 의 n번째 아이템의 키를 구하는 함수">hanja_list_get_nth_key</a>(<span class="keyword">const</span> <a class="code" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b" title="한자 사전의 검색 결과를 전달하는데 사용하는 오브젝트">HanjaList</a> *list, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n);
+<a name="l00148"></a>00148 <span class="keyword">const</span> <span class="keywordtype">char</span>*  <a class="code" href="group__hanjadictionary.html#gad86b9ac4d57462a74e5c2e6d7400a447" title="HanjaList 의 n번째 아이템의 값를 구하는 함수">hanja_list_get_nth_value</a>(<span class="keyword">const</span> <a class="code" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b" title="한자 사전의 검색 결과를 전달하는데 사용하는 오브젝트">HanjaList</a> *list, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n);
+<a name="l00149"></a>00149 <span class="keyword">const</span> <span class="keywordtype">char</span>*  <a class="code" href="group__hanjadictionary.html#ga978c07c6bb77fa9bd468344dce5a407c" title="HanjaList 의 n번째 아이템의 설명을 구하는 함수">hanja_list_get_nth_comment</a>(<span class="keyword">const</span> <a class="code" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b" title="한자 사전의 검색 결과를 전달하는데 사용하는 오브젝트">HanjaList</a> *list, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n);
+<a name="l00150"></a>00150 <span class="keywordtype">void</span>         <a class="code" href="group__hanjadictionary.html#ga63619e6913dd17925c0f7a13068eee72" title="한자 사전 검색 함수가 리턴한 결과를 free하는 함수">hanja_list_delete</a>(<a class="code" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b" title="한자 사전의 검색 결과를 전달하는데 사용하는 오브젝트">HanjaList</a> *list);
+<a name="l00151"></a>00151 
+<a name="l00152"></a>00152 <span class="keyword">const</span> <span class="keywordtype">char</span>*  <a class="code" href="group__hanjadictionary.html#ga859e26859e874957f89be5debd783644" title="Hanja 의 키를 찾아본다.">hanja_get_key</a>(<span class="keyword">const</span> <a class="code" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271" title="한자 사전 검색 결과의 최소 단위">Hanja</a>* hanja);
+<a name="l00153"></a>00153 <span class="keyword">const</span> <span class="keywordtype">char</span>*  <a class="code" href="group__hanjadictionary.html#ga3b86a3debe7ca1db3edf86c4db6b07e6" title="Hanja 의 값을 찾아본다.">hanja_get_value</a>(<span class="keyword">const</span> <a class="code" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271" title="한자 사전 검색 결과의 최소 단위">Hanja</a>* hanja);
+<a name="l00154"></a>00154 <span class="keyword">const</span> <span class="keywordtype">char</span>*  <a class="code" href="group__hanjadictionary.html#ga72b4748e039981d3f63d76fb6431361f" title="Hanja 의 설명을 찾아본다.">hanja_get_comment</a>(<span class="keyword">const</span> <a class="code" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271" title="한자 사전 검색 결과의 최소 단위">Hanja</a>* hanja);
+<a name="l00155"></a>00155 
+<a name="l00156"></a>00156 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00157"></a>00157 <span class="preprocessor"></span>}
+<a name="l00158"></a>00158 <span class="preprocessor">#endif</span>
+<a name="l00159"></a>00159 <span class="preprocessor"></span>
+<a name="l00160"></a>00160 <span class="preprocessor">#undef LIBHANGUL_DEPRECATED</span>
+<a name="l00161"></a>00161 <span class="preprocessor"></span>
+<a name="l00162"></a>00162 <span class="preprocessor">#endif </span><span class="comment">/* libhangul_hangul_h */</span>
+</pre></div></div>
+</div>
+
+
+<hr class="footer"/><address class="footer"><small>
+생성시간 : 수 3월 28 2012 23:47:49, 프로젝트명 : libhangul, 생성자 :  &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.6
+</small></address>
+
+</body>
+</html>
diff --git a/doc/html/hangulctype_8c.html b/doc/html/hangulctype_8c.html
new file mode 100644 (file)
index 0000000..2138ccd
--- /dev/null
@@ -0,0 +1,176 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>libhangul: hangulctype.c 파일 참조</title>
+
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  
+  
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">libhangul
+   &#160;<span id="projectnumber">Version 0.1.0</span>
+   </div>
+   
+  </td>
+  
+  
+  
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<!-- 다음에 의해 생성됨 :  Doxygen 1.7.6 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>메인&#160;페이지</span></a></li>
+      <li><a href="pages.html"><span>관련된&#160;페이지</span></a></li>
+      <li><a href="modules.html"><span>모듈</span></a></li>
+      <li class="current"><a href="files.html"><span>파일들</span></a></li>
+      <li><a href="dirs.html"><span>디렉토리</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>파일&#160;목록</span></a></li>
+      <li><a href="globals.html"><span>전역</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_74e344cbec9860085ddf79a94754a2b6.html">hangul</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#func-members">함수</a>  </div>
+  <div class="headertitle">
+<div class="title">hangulctype.c 파일 참조</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include &lt;stdlib.h&gt;</code><br/>
+<code>#include &quot;hangul.h&quot;</code><br/>
+</div><table class="memberdecls">
+<tr><td colspan="2"><h2><a name="func-members"></a>
+함수</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#gae7e530bdd27641359932f0ec2f35baf7">hangul_is_choseong</a> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> c)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">초성인지 확인하는 함수  <a href="group__hangulctype.html#gae7e530bdd27641359932f0ec2f35baf7"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#ga13911613692587dbee7ad7a8e55d05de">hangul_is_jungseong</a> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> c)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">중성인지 확인하는 함수  <a href="group__hangulctype.html#ga13911613692587dbee7ad7a8e55d05de"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#gaf27e727a59a10d93bce3000ba67cfee5">hangul_is_jongseong</a> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> c)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">종성인지 확인하는 함수  <a href="group__hangulctype.html#gaf27e727a59a10d93bce3000ba67cfee5"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac77601cadf6807bb654d744bbf773507"></a><!-- doxytag: member="hangulctype.c::hangul_is_combining_mark" ref="ac77601cadf6807bb654d744bbf773507" args="(ucschar c)" -->
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>hangul_is_combining_mark</b> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> c)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2000b538de4cb62a340a7e43c915d47c"></a><!-- doxytag: member="hangulctype.c::hangul_is_choseong_conjoinable" ref="ga2000b538de4cb62a340a7e43c915d47c" args="(ucschar c)" -->
+bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#ga2000b538de4cb62a340a7e43c915d47c">hangul_is_choseong_conjoinable</a> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> c)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">초성이고 조합 가능한지 확인 <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga1f21b5668d639a6f8239c0768eba26bb"></a><!-- doxytag: member="hangulctype.c::hangul_is_jungseong_conjoinable" ref="ga1f21b5668d639a6f8239c0768eba26bb" args="(ucschar c)" -->
+bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#ga1f21b5668d639a6f8239c0768eba26bb">hangul_is_jungseong_conjoinable</a> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> c)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">중성이고 조합 가능한지 확인 <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga27bf78bb7bfaa411edefdbc352ae99ba"></a><!-- doxytag: member="hangulctype.c::hangul_is_jongseong_conjoinable" ref="ga27bf78bb7bfaa411edefdbc352ae99ba" args="(ucschar c)" -->
+bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#ga27bf78bb7bfaa411edefdbc352ae99ba">hangul_is_jongseong_conjoinable</a> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> c)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">종성이고 조합 가능한지 확인 <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#gabd6ca2bb0cd27983821116adf56b4691">hangul_is_syllable</a> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> c)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">한글 음절 인지 확  <a href="group__hangulctype.html#gabd6ca2bb0cd27983821116adf56b4691"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#ga88f2449a0cbd08eaa7ad303fe31863ae">hangul_is_jamo</a> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> c)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">자모 인지 확인  <a href="group__hangulctype.html#ga88f2449a0cbd08eaa7ad303fe31863ae"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#ga45f5b595d03fd57b14605d53daae3e6e">hangul_is_cjamo</a> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> c)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">호환 자모인지 확인  <a href="group__hangulctype.html#ga45f5b595d03fd57b14605d53daae3e6e"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#ga3098332f541aafb8112ea5f5a0b7d9d7">hangul_jamo_to_cjamo</a> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> c)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">자모 코드를 대응하는 호환 자모로 변환  <a href="group__hangulctype.html#ga3098332f541aafb8112ea5f5a0b7d9d7"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a62a8a7ec9f58b2b342385e5897806139"></a><!-- doxytag: member="hangulctype.c::hangul_choseong_to_jongseong" ref="a62a8a7ec9f58b2b342385e5897806139" args="(ucschar c)" -->
+<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a>&#160;</td><td class="memItemRight" valign="bottom"><b>hangul_choseong_to_jongseong</b> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> c)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1ec46ebbf60456b1f8fc2932b30d6dd3"></a><!-- doxytag: member="hangulctype.c::hangul_jongseong_to_choseong" ref="a1ec46ebbf60456b1f8fc2932b30d6dd3" args="(ucschar c)" -->
+<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a>&#160;</td><td class="memItemRight" valign="bottom"><b>hangul_jongseong_to_choseong</b> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> c)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4a58d555e994e17650e08d8abd93eb4b"></a><!-- doxytag: member="hangulctype.c::hangul_jongseong_decompose" ref="a4a58d555e994e17650e08d8abd93eb4b" args="(ucschar c, ucschar *jong, ucschar *cho)" -->
+void&#160;</td><td class="memItemRight" valign="bottom"><b>hangul_jongseong_decompose</b> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> c, <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *jong, <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *cho)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a440bf7561e8e8ac298d3d1050218442e"></a><!-- doxytag: member="hangulctype.c::hangul_jongseong_dicompose" ref="a440bf7561e8e8ac298d3d1050218442e" args="(ucschar c, ucschar *jong, ucschar *cho)" -->
+void&#160;</td><td class="memItemRight" valign="bottom"><b>hangul_jongseong_dicompose</b> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> c, <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *jong, <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *cho)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a381508f7b026232fb288f829f10b655f"></a><!-- doxytag: member="hangulctype.c::hangul_jongseong_get_diff" ref="a381508f7b026232fb288f829f10b655f" args="(ucschar prevjong, ucschar jong)" -->
+<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a>&#160;</td><td class="memItemRight" valign="bottom"><b>hangul_jongseong_get_diff</b> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> prevjong, <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> jong)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#ga7f79e6e65454c3b074ac0483bb11b256">hangul_jamo_to_syllable</a> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> choseong, <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> jungseong, <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> jongseong)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">자모 코드를 조합하여 한글 음절로 변환  <a href="group__hangulctype.html#ga7f79e6e65454c3b074ac0483bb11b256"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#gab3581b43f1b9903d01aedcf1da057b6b">hangul_syllable_to_jamo</a> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> syllable, <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *choseong, <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *jungseong, <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *jongseong)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">음절을 자모로 분해  <a href="group__hangulctype.html#gab3581b43f1b9903d01aedcf1da057b6b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="hangulctype_8c.html#a3bf938b66d001c7a1544ff7dce195af2">hangul_syllable_to_jaso</a> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> syllable, <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *choseong, <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *jungseong, <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *jongseong)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#gaf6e252781050757fb56131a450c459b3">hangul_syllable_len</a> (const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *str, int max_len)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">한 음절에 해당하는 코드의 갯수를 구하는 함수  <a href="group__hangulctype.html#gaf6e252781050757fb56131a450c459b3"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#ga713c0515d849c266f2140736d7f93061">hangul_syllable_iterator_prev</a> (const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *iter, const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *begin)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><em>iter를</em> 기준으로 이전 음절의 첫자모 글자에 대한 포인터를 구하는 함수  <a href="group__hangulctype.html#ga713c0515d849c266f2140736d7f93061"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#ga9eacc11b58f4c8d3d30fbdf7bea1ca66">hangul_syllable_iterator_next</a> (const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *iter, const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *end)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><em>iter를</em> 기준으로 다음 음절의 첫자모 글자에 대한 포인터를 구하는 함수  <a href="group__hangulctype.html#ga9eacc11b58f4c8d3d30fbdf7bea1ca66"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulctype.html#gaacc8ef9ce4b4f80385a9bb8add2e3f4c">hangul_jamos_to_syllables</a> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *dest, int destlen, const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *src, int srclen)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">자모 스트링을 음절 스트링으로 변환  <a href="group__hangulctype.html#gaacc8ef9ce4b4f80385a9bb8add2e3f4c"></a><br/></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>상세한 설명</h2>
+<div class="textblock"></div><hr/><h2>함수 문서화</h2>
+<a class="anchor" id="a3bf938b66d001c7a1544ff7dce195af2"></a><!-- doxytag: member="hangulctype.c::hangul_syllable_to_jaso" ref="a3bf938b66d001c7a1544ff7dce195af2" args="(ucschar syllable, ucschar *choseong, ucschar *jungseong, ucschar *jongseong)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="hangulctype_8c.html#a3bf938b66d001c7a1544ff7dce195af2">hangul_syllable_to_jaso</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a>&#160;</td>
+          <td class="paramname"><em>syllable</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *&#160;</td>
+          <td class="paramname"><em>choseong</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *&#160;</td>
+          <td class="paramname"><em>jungseong</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *&#160;</td>
+          <td class="paramname"><em>jongseong</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000001">잘못된 코드:</a></b></dt><dd>이 함수 대신 hangul_syllable_to_jamo함수를 사용한다. </dd></dl>
+
+<p>다음을 참조함 :  <a class="el" href="group__hangulctype.html#gab3581b43f1b9903d01aedcf1da057b6b">hangul_syllable_to_jamo()</a>.</p>
+
+</div>
+</div>
+</div>
+</div>
+
+
+<hr class="footer"/><address class="footer"><small>
+생성시간 : 수 3월 28 2012 23:47:49, 프로젝트명 : libhangul, 생성자 :  &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.6
+</small></address>
+
+</body>
+</html>
diff --git a/doc/html/hangulinputcontext_8c.html b/doc/html/hangulinputcontext_8c.html
new file mode 100644 (file)
index 0000000..69e4779
--- /dev/null
@@ -0,0 +1,173 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>libhangul: hangulinputcontext.c 파일 참조</title>
+
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  
+  
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">libhangul
+   &#160;<span id="projectnumber">Version 0.1.0</span>
+   </div>
+   
+  </td>
+  
+  
+  
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<!-- 다음에 의해 생성됨 :  Doxygen 1.7.6 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>메인&#160;페이지</span></a></li>
+      <li><a href="pages.html"><span>관련된&#160;페이지</span></a></li>
+      <li><a href="modules.html"><span>모듈</span></a></li>
+      <li class="current"><a href="files.html"><span>파일들</span></a></li>
+      <li><a href="dirs.html"><span>디렉토리</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>파일&#160;목록</span></a></li>
+      <li><a href="globals.html"><span>전역</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_74e344cbec9860085ddf79a94754a2b6.html">hangul</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#define-members">매크로</a> &#124;
+<a href="#typedef-members">타입정의</a> &#124;
+<a href="#func-members">함수</a>  </div>
+  <div class="headertitle">
+<div class="title">hangulinputcontext.c 파일 참조</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include &lt;stdlib.h&gt;</code><br/>
+<code>#include &lt;string.h&gt;</code><br/>
+<code>#include &lt;ctype.h&gt;</code><br/>
+<code>#include &lt;inttypes.h&gt;</code><br/>
+<code>#include &lt;limits.h&gt;</code><br/>
+<code>#include &quot;hangul-gettext.h&quot;</code><br/>
+<code>#include &quot;hangul.h&quot;</code><br/>
+<code>#include &quot;hangulinternals.h&quot;</code><br/>
+<code>#include &quot;hangulkeyboard.h&quot;</code><br/>
+</div><table class="memberdecls">
+<tr><td colspan="2"><h2><a name="define-members"></a>
+매크로</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa8cecfc5c5c054d2875c03e77b7be15d"></a><!-- doxytag: member="hangulinputcontext.c::TRUE" ref="aa8cecfc5c5c054d2875c03e77b7be15d" args="" -->
+#define&#160;</td><td class="memItemRight" valign="bottom"><b>TRUE</b>&#160;&#160;&#160;1</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa93f0eb578d23995850d61f7d61c55c1"></a><!-- doxytag: member="hangulinputcontext.c::FALSE" ref="aa93f0eb578d23995850d61f7d61c55c1" args="" -->
+#define&#160;</td><td class="memItemRight" valign="bottom"><b>FALSE</b>&#160;&#160;&#160;0</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adcaecd327afc5ecbf29b2ef3e7c17a35"></a><!-- doxytag: member="hangulinputcontext.c::HANGUL_KEYBOARD_TABLE_SIZE" ref="adcaecd327afc5ecbf29b2ef3e7c17a35" args="" -->
+#define&#160;</td><td class="memItemRight" valign="bottom"><b>HANGUL_KEYBOARD_TABLE_SIZE</b>&#160;&#160;&#160;0x80</td></tr>
+<tr><td colspan="2"><h2><a name="typedef-members"></a>
+타입정의</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4f665d7dbfcf5fe0b6909aa72f9bf980"></a><!-- doxytag: member="hangulinputcontext.c::HangulOnTranslate" ref="a4f665d7dbfcf5fe0b6909aa72f9bf980" args=")(HangulInputContext *, int, ucschar *, void *)" -->
+typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><b>HangulOnTranslate</b> )(<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *, int, <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *, void *)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8e20d78d6896462d048460ad37349824"></a><!-- doxytag: member="hangulinputcontext.c::HangulOnTransition" ref="a8e20d78d6896462d048460ad37349824" args=")(HangulInputContext *, ucschar, const ucschar *, void *)" -->
+typedef bool(*&#160;</td><td class="memItemRight" valign="bottom"><b>HangulOnTransition</b> )(<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *, <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a>, const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *, void *)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afc7d7725c2a82c5e2ab8512c01af7d3f"></a><!-- doxytag: member="hangulinputcontext.c::HangulCombinationItem" ref="afc7d7725c2a82c5e2ab8512c01af7d3f" args="" -->
+typedef struct <br class="typebreak"/>
+_HangulCombinationItem&#160;</td><td class="memItemRight" valign="bottom"><b>HangulCombinationItem</b></td></tr>
+<tr><td colspan="2"><h2><a name="func-members"></a>
+함수</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa1e31f577769f6d72f7c61afbd93264e"></a><!-- doxytag: member="hangulinputcontext.c::hangul_keyboard_new" ref="aa1e31f577769f6d72f7c61afbd93264e" args="()" -->
+HangulKeyboard *&#160;</td><td class="memItemRight" valign="bottom"><b>hangul_keyboard_new</b> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a79eafff8267f318ef85dc9fd3a375bfc"></a><!-- doxytag: member="hangulinputcontext.c::hangul_keyboard_set_value" ref="a79eafff8267f318ef85dc9fd3a375bfc" args="(HangulKeyboard *keyboard, int key, ucschar value)" -->
+void&#160;</td><td class="memItemRight" valign="bottom"><b>hangul_keyboard_set_value</b> (HangulKeyboard *keyboard, int key, <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> value)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1bf5c8c293778d361ffa864df2caffe8"></a><!-- doxytag: member="hangulinputcontext.c::hangul_keyboard_set_type" ref="a1bf5c8c293778d361ffa864df2caffe8" args="(HangulKeyboard *keyboard, int type)" -->
+void&#160;</td><td class="memItemRight" valign="bottom"><b>hangul_keyboard_set_type</b> (HangulKeyboard *keyboard, int type)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af0656bbcc61e45427e1a7e06f7105cc2"></a><!-- doxytag: member="hangulinputcontext.c::hangul_keyboard_delete" ref="af0656bbcc61e45427e1a7e06f7105cc2" args="(HangulKeyboard *keyboard)" -->
+void&#160;</td><td class="memItemRight" valign="bottom"><b>hangul_keyboard_delete</b> (HangulKeyboard *keyboard)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a35027ede291c32b782b9cebecabe63c8"></a><!-- doxytag: member="hangulinputcontext.c::hangul_combination_new" ref="a35027ede291c32b782b9cebecabe63c8" args="()" -->
+HangulCombination *&#160;</td><td class="memItemRight" valign="bottom"><b>hangul_combination_new</b> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af15e7f6ea9795177cd87c5bf69a8216c"></a><!-- doxytag: member="hangulinputcontext.c::hangul_combination_delete" ref="af15e7f6ea9795177cd87c5bf69a8216c" args="(HangulCombination *combination)" -->
+void&#160;</td><td class="memItemRight" valign="bottom"><b>hangul_combination_delete</b> (HangulCombination *combination)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0edecc23e68405d7efc4098d44788846"></a><!-- doxytag: member="hangulinputcontext.c::hangul_combination_set_data" ref="a0edecc23e68405d7efc4098d44788846" args="(HangulCombination *combination, ucschar *first, ucschar *second, ucschar *result, unsigned int n)" -->
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>hangul_combination_set_data</b> (HangulCombination *combination, <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *first, <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *second, <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *result, unsigned int n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af336dd69633d36b11aa97d24864b6080"></a><!-- doxytag: member="hangulinputcontext.c::hangul_combination_combine" ref="af336dd69633d36b11aa97d24864b6080" args="(const HangulCombination *combination, ucschar first, ucschar second)" -->
+<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a>&#160;</td><td class="memItemRight" valign="bottom"><b>hangul_combination_combine</b> (const HangulCombination *combination, <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> first, <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> second)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#ga26a39855a3fb03a1f794aca464ae132e">hangul_ic_process</a> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic, int ascii)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">키 입력을 처리하여 실제로 한글 조합을 하는 함수  <a href="group__hangulic.html#ga26a39855a3fb03a1f794aca464ae132e"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#gac39496296816be4b516659b322e73d64">hangul_ic_get_preedit_string</a> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">현재 상태의 preedit string을 구하는 함수  <a href="group__hangulic.html#gac39496296816be4b516659b322e73d64"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#gabe09f347ac91563b4dd45f93c5bd9a03">hangul_ic_get_commit_string</a> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">현재 상태의 commit string을 구하는 함수  <a href="group__hangulic.html#gabe09f347ac91563b4dd45f93c5bd9a03"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#ga2fa2f5972adbdacd38e1edf62ff9fc53">hangul_ic_reset</a> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 를 초기상태로 되돌리는 함수  <a href="group__hangulic.html#ga2fa2f5972adbdacd38e1edf62ff9fc53"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#ga40e3e40e46d1554a6e2e85280396a6b5">hangul_ic_flush</a> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 의 입력 상태를 완료하는 함수  <a href="group__hangulic.html#ga40e3e40e46d1554a6e2e85280396a6b5"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#ga8d886ba7f2e3adb1fbc8c00d58b825b3">hangul_ic_backspace</a> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 가 backspace 키를 처리하도록 하는 함수  <a href="group__hangulic.html#ga8d886ba7f2e3adb1fbc8c00d58b825b3"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#ga392305eaf52e31967719fc039b267956">hangul_ic_is_empty</a> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 가 조합중인 글자를 가지고 있는지 확인하는 함수  <a href="group__hangulic.html#ga392305eaf52e31967719fc039b267956"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#gaf6a03d6bf05b58cc50ed10e2c7172a33">hangul_ic_has_choseong</a> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 가 조합중인 초성을 가지고 있는지 확인하는 함수  <a href="group__hangulic.html#gaf6a03d6bf05b58cc50ed10e2c7172a33"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#ga4509b431ce3a9c8b2b74120ea5dde9b5">hangul_ic_has_jungseong</a> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 가 조합중인 중성을 가지고 있는지 확인하는 함수  <a href="group__hangulic.html#ga4509b431ce3a9c8b2b74120ea5dde9b5"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#gacef5c615ac50da4dc99f50934739c424">hangul_ic_has_jongseong</a> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 가 조합중인 종성을 가지고 있는지 확인하는 함수  <a href="group__hangulic.html#gacef5c615ac50da4dc99f50934739c424"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7962e0c8664cb68c7ae3225a3aeec435"></a><!-- doxytag: member="hangulinputcontext.c::hangul_ic_set_output_mode" ref="a7962e0c8664cb68c7ae3225a3aeec435" args="(HangulInputContext *hic, int mode)" -->
+void&#160;</td><td class="memItemRight" valign="bottom"><b>hangul_ic_set_output_mode</b> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic, int mode)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a67b85826fb91109744478394f0ddc83b"></a><!-- doxytag: member="hangulinputcontext.c::hangul_ic_connect_translate" ref="a67b85826fb91109744478394f0ddc83b" args="(HangulInputContext *hic, HangulOnTranslate callback, void *user_data)" -->
+void&#160;</td><td class="memItemRight" valign="bottom"><b>hangul_ic_connect_translate</b> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic, HangulOnTranslate callback, void *user_data)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a10ca098afd5ec326a27cf83c29b23ec2"></a><!-- doxytag: member="hangulinputcontext.c::hangul_ic_connect_transition" ref="a10ca098afd5ec326a27cf83c29b23ec2" args="(HangulInputContext *hic, HangulOnTransition callback, void *user_data)" -->
+void&#160;</td><td class="memItemRight" valign="bottom"><b>hangul_ic_connect_transition</b> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic, HangulOnTransition callback, void *user_data)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a67ce78abf5c3770bf32f3573c0a286d7"></a><!-- doxytag: member="hangulinputcontext.c::hangul_ic_connect_callback" ref="a67ce78abf5c3770bf32f3573c0a286d7" args="(HangulInputContext *hic, const char *event, void *callback, void *user_data)" -->
+void&#160;</td><td class="memItemRight" valign="bottom"><b>hangul_ic_connect_callback</b> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic, const char *event, void *callback, void *user_data)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a844132d3ee5f32ada864b08ebd51c5cb"></a><!-- doxytag: member="hangulinputcontext.c::hangul_ic_set_keyboard" ref="a844132d3ee5f32ada864b08ebd51c5cb" args="(HangulInputContext *hic, const HangulKeyboard *keyboard)" -->
+void&#160;</td><td class="memItemRight" valign="bottom"><b>hangul_ic_set_keyboard</b> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic, const HangulKeyboard *keyboard)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#ga7dd66ed8f04fe95ff401f2b29e10db1f">hangul_ic_select_keyboard</a> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic, const char *id)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 의 자판 배열을 바꾸는 함수  <a href="group__hangulic.html#ga7dd66ed8f04fe95ff401f2b29e10db1f"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab55e720da4a2e58093c047b6455dac65"></a><!-- doxytag: member="hangulinputcontext.c::hangul_ic_set_combination" ref="ab55e720da4a2e58093c047b6455dac65" args="(HangulInputContext *hic, const HangulCombination *combination)" -->
+void&#160;</td><td class="memItemRight" valign="bottom"><b>hangul_ic_set_combination</b> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic, const HangulCombination *combination)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#ga323e53954c0fe5869ffc4cbcfc2be897">hangul_ic_new</a> (const char *keyboard)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 오브젝트를 생성한다.  <a href="group__hangulic.html#ga323e53954c0fe5869ffc4cbcfc2be897"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#ga3f153cf60e726535ad175ebb894f584d">hangul_ic_delete</a> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> 를 삭제하는 함수  <a href="group__hangulic.html#ga3f153cf60e726535ad175ebb894f584d"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5d47f1e2719d4b2da567fbd5e4c2358f"></a><!-- doxytag: member="hangulinputcontext.c::hangul_ic_get_n_keyboards" ref="a5d47f1e2719d4b2da567fbd5e4c2358f" args="()" -->
+unsigned int&#160;</td><td class="memItemRight" valign="bottom"><b>hangul_ic_get_n_keyboards</b> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4483f1201eb7c65721a55cf115f3f37"></a><!-- doxytag: member="hangulinputcontext.c::hangul_ic_get_keyboard_id" ref="aa4483f1201eb7c65721a55cf115f3f37" args="(unsigned index_)" -->
+const char *&#160;</td><td class="memItemRight" valign="bottom"><b>hangul_ic_get_keyboard_id</b> (unsigned index_)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3f2b7753d6274dc938390406fa39c2d9"></a><!-- doxytag: member="hangulinputcontext.c::hangul_ic_get_keyboard_name" ref="a3f2b7753d6274dc938390406fa39c2d9" args="(unsigned index_)" -->
+const char *&#160;</td><td class="memItemRight" valign="bottom"><b>hangul_ic_get_keyboard_name</b> (unsigned index_)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hangulic.html#gac9e3230e98035854b806436d0569596e">hangul_ic_is_transliteration</a> (<a class="el" href="group__hangulic.html#ga623ec57b85ebf33279989f3e6bc2d59a">HangulInputContext</a> *hic)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">주어진 hic가 transliteration method인지 판별  <a href="group__hangulic.html#gac9e3230e98035854b806436d0569596e"></a><br/></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>상세한 설명</h2>
+<div class="textblock"></div></div>
+</div>
+
+
+<hr class="footer"/><address class="footer"><small>
+생성시간 : 수 3월 28 2012 23:47:49, 프로젝트명 : libhangul, 생성자 :  &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.6
+</small></address>
+
+</body>
+</html>
diff --git a/doc/html/hanja_8c.html b/doc/html/hanja_8c.html
new file mode 100644 (file)
index 0000000..79d66df
--- /dev/null
@@ -0,0 +1,144 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>libhangul: hanja.c 파일 참조</title>
+
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  
+  
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">libhangul
+   &#160;<span id="projectnumber">Version 0.1.0</span>
+   </div>
+   
+  </td>
+  
+  
+  
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<!-- 다음에 의해 생성됨 :  Doxygen 1.7.6 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>메인&#160;페이지</span></a></li>
+      <li><a href="pages.html"><span>관련된&#160;페이지</span></a></li>
+      <li><a href="modules.html"><span>모듈</span></a></li>
+      <li class="current"><a href="files.html"><span>파일들</span></a></li>
+      <li><a href="dirs.html"><span>디렉토리</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>파일&#160;목록</span></a></li>
+      <li><a href="globals.html"><span>전역</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_74e344cbec9860085ddf79a94754a2b6.html">hangul</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#define-members">매크로</a> &#124;
+<a href="#typedef-members">타입정의</a> &#124;
+<a href="#func-members">함수</a>  </div>
+  <div class="headertitle">
+<div class="title">hanja.c 파일 참조</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include &lt;sys/types.h&gt;</code><br/>
+<code>#include &lt;sys/stat.h&gt;</code><br/>
+<code>#include &lt;unistd.h&gt;</code><br/>
+<code>#include &lt;limits.h&gt;</code><br/>
+<code>#include &lt;stdio.h&gt;</code><br/>
+<code>#include &lt;stdlib.h&gt;</code><br/>
+<code>#include &lt;string.h&gt;</code><br/>
+<code>#include &quot;hangul.h&quot;</code><br/>
+<code>#include &quot;hangulinternals.h&quot;</code><br/>
+<code>#include &quot;hanjacompatible.h&quot;</code><br/>
+</div><table class="memberdecls">
+<tr><td colspan="2"><h2><a name="define-members"></a>
+매크로</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa8cecfc5c5c054d2875c03e77b7be15d"></a><!-- doxytag: member="hanja.c::TRUE" ref="aa8cecfc5c5c054d2875c03e77b7be15d" args="" -->
+#define&#160;</td><td class="memItemRight" valign="bottom"><b>TRUE</b>&#160;&#160;&#160;1</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa93f0eb578d23995850d61f7d61c55c1"></a><!-- doxytag: member="hanja.c::FALSE" ref="aa93f0eb578d23995850d61f7d61c55c1" args="" -->
+#define&#160;</td><td class="memItemRight" valign="bottom"><b>FALSE</b>&#160;&#160;&#160;0</td></tr>
+<tr><td colspan="2"><h2><a name="typedef-members"></a>
+타입정의</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a788b62c5b5b50be0c2324fb41c241e3a"></a><!-- doxytag: member="hanja.c::HanjaIndex" ref="a788b62c5b5b50be0c2324fb41c241e3a" args="" -->
+typedef struct _HanjaIndex&#160;</td><td class="memItemRight" valign="bottom"><b>HanjaIndex</b></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0305d3fb0f62615c9515a7cd4219c3b1"></a><!-- doxytag: member="hanja.c::HanjaPair" ref="a0305d3fb0f62615c9515a7cd4219c3b1" args="" -->
+typedef struct _HanjaPair&#160;</td><td class="memItemRight" valign="bottom"><b>HanjaPair</b></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef0e6994643783e06166588e9be98aff"></a><!-- doxytag: member="hanja.c::HanjaPairArray" ref="aef0e6994643783e06166588e9be98aff" args="" -->
+typedef struct _HanjaPairArray&#160;</td><td class="memItemRight" valign="bottom"><b>HanjaPairArray</b></td></tr>
+<tr><td colspan="2"><h2><a name="func-members"></a>
+함수</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#ga859e26859e874957f89be5debd783644">hanja_get_key</a> (const <a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> *hanja)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> 의 키를 찾아본다.  <a href="group__hanjadictionary.html#ga859e26859e874957f89be5debd783644"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#ga3b86a3debe7ca1db3edf86c4db6b07e6">hanja_get_value</a> (const <a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> *hanja)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> 의 값을 찾아본다.  <a href="group__hanjadictionary.html#ga3b86a3debe7ca1db3edf86c4db6b07e6"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#ga72b4748e039981d3f63d76fb6431361f">hanja_get_comment</a> (const <a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> *hanja)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> 의 설명을 찾아본다.  <a href="group__hanjadictionary.html#ga72b4748e039981d3f63d76fb6431361f"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__hanjadictionary.html#gad58042533438c8e2672738474bf9f981">HanjaTable</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#gaaad25fe6ea42acca94b6e94868d2d4fc">hanja_table_load</a> (const char *filename)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">한자 사전 파일을 로딩하는 함수  <a href="group__hanjadictionary.html#gaaad25fe6ea42acca94b6e94868d2d4fc"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#ga59c749533062905732587d0ff9b6f5a9">hanja_table_delete</a> (<a class="el" href="group__hanjadictionary.html#gad58042533438c8e2672738474bf9f981">HanjaTable</a> *table)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">한자 사전 object를 free하는 함수  <a href="group__hanjadictionary.html#ga59c749533062905732587d0ff9b6f5a9"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#gaf260f28723a8084ed36e81d751f394f2">hanja_table_match_exact</a> (const <a class="el" href="group__hanjadictionary.html#gad58042533438c8e2672738474bf9f981">HanjaTable</a> *table, const char *key)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">한자 사전에서 매치되는 키를 가진 엔트리를 찾는 함수  <a href="group__hanjadictionary.html#gaf260f28723a8084ed36e81d751f394f2"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#ga8605f5e6a162e9bc60ca6ff43b4369e6">hanja_table_match_prefix</a> (const <a class="el" href="group__hanjadictionary.html#gad58042533438c8e2672738474bf9f981">HanjaTable</a> *table, const char *key)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">한자 사전에서 앞부분이 매치되는 키를 가진 엔트리를 찾는 함수  <a href="group__hanjadictionary.html#ga8605f5e6a162e9bc60ca6ff43b4369e6"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#ga2466c41d985a584f569b2ed6b9c74cca">hanja_table_match_suffix</a> (const <a class="el" href="group__hanjadictionary.html#gad58042533438c8e2672738474bf9f981">HanjaTable</a> *table, const char *key)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">한자 사전에서 뒷부분이 매치되는 키를 가진 엔트리를 찾는 함수  <a href="group__hanjadictionary.html#ga2466c41d985a584f569b2ed6b9c74cca"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga752da8c61bdfd61b9fbca08fb585e490"></a><!-- doxytag: member="hanja.c::hanja_list_get_size" ref="ga752da8c61bdfd61b9fbca08fb585e490" args="(const HanjaList *list)" -->
+int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#ga752da8c61bdfd61b9fbca08fb585e490">hanja_list_get_size</a> (const <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> *list)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 가 가지고 있는 아이템의 갯수를 구하는 함수 <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#ga1fb2943130c52b8dc57566beca98a305">hanja_list_get_key</a> (const <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> *list)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 가 생성될때 검색함수에서 사용한 키를 구하는 함수  <a href="group__hanjadictionary.html#ga1fb2943130c52b8dc57566beca98a305"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#ga18b8b720d23613a7895f23f7dad926e1">hanja_list_get_nth</a> (const <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> *list, unsigned int n)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 의 n번째 <a class="el" href="group__hanjadictionary.html#ga96969351e2a98eb1e776275338822271">Hanja</a> 아이템의 포인터를 구하는 함수  <a href="group__hanjadictionary.html#ga18b8b720d23613a7895f23f7dad926e1"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#ga6185a26a275245ee52660eb91b9b57ca">hanja_list_get_nth_key</a> (const <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> *list, unsigned int n)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 의 n번째 아이템의 키를 구하는 함수  <a href="group__hanjadictionary.html#ga6185a26a275245ee52660eb91b9b57ca"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#gad86b9ac4d57462a74e5c2e6d7400a447">hanja_list_get_nth_value</a> (const <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> *list, unsigned int n)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 의 n번째 아이템의 값를 구하는 함수  <a href="group__hanjadictionary.html#gad86b9ac4d57462a74e5c2e6d7400a447"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#ga978c07c6bb77fa9bd468344dce5a407c">hanja_list_get_nth_comment</a> (const <a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> *list, unsigned int n)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> 의 n번째 아이템의 설명을 구하는 함수  <a href="group__hanjadictionary.html#ga978c07c6bb77fa9bd468344dce5a407c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hanjadictionary.html#ga63619e6913dd17925c0f7a13068eee72">hanja_list_delete</a> (<a class="el" href="group__hanjadictionary.html#ga4a7a4937b0fbe7689f2d2935c34be19b">HanjaList</a> *list)</td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">한자 사전 검색 함수가 리턴한 결과를 free하는 함수  <a href="group__hanjadictionary.html#ga63619e6913dd17925c0f7a13068eee72"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab1dee1e691a58a183e82ab91131c0af4"></a><!-- doxytag: member="hanja.c::hanja_compatibility_form" ref="ab1dee1e691a58a183e82ab91131c0af4" args="(ucschar *hanja, const ucschar *hangul, size_t n)" -->
+size_t&#160;</td><td class="memItemRight" valign="bottom"><b>hanja_compatibility_form</b> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *hanja, const <a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *hangul, size_t n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4bfc5c25d6a52c26b38f7f7168f45d04"></a><!-- doxytag: member="hanja.c::hanja_unified_form" ref="a4bfc5c25d6a52c26b38f7f7168f45d04" args="(ucschar *str, size_t n)" -->
+size_t&#160;</td><td class="memItemRight" valign="bottom"><b>hanja_unified_form</b> (<a class="el" href="group__hangulctype.html#ga2c1a56543786ad0dcce173493019448c">ucschar</a> *str, size_t n)</td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>상세한 설명</h2>
+<div class="textblock"></div></div>
+</div>
+
+
+<hr class="footer"/><address class="footer"><small>
+생성시간 : 수 3월 28 2012 23:47:49, 프로젝트명 : libhangul, 생성자 :  &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.6
+</small></address>
+
+</body>
+</html>
diff --git a/doc/html/index.html b/doc/html/index.html
new file mode 100644 (file)
index 0000000..093d171
--- /dev/null
@@ -0,0 +1,90 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>libhangul: 메인 페이지</title>
+
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  
+  
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">libhangul
+   &#160;<span id="projectnumber">Version 0.1.0</span>
+   </div>
+   
+  </td>
+  
+  
+  
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<!-- 다음에 의해 생성됨 :  Doxygen 1.7.6 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li class="current"><a href="index.html"><span>메인&#160;페이지</span></a></li>
+      <li><a href="pages.html"><span>관련된&#160;페이지</span></a></li>
+      <li><a href="modules.html"><span>모듈</span></a></li>
+      <li><a href="files.html"><span>파일들</span></a></li>
+      <li><a href="dirs.html"><span>디렉토리</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">libhangul 문서화</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><h2><a class="anchor" id="introduction"></a>
+libhangul 소개</h2>
+<p>libhangul은 기본적인 한글 관련 루틴들을 구현한 라이브러리다. 주로 한글 입력기능을 구현한 것으로 이 라이브러리를 사용하면 비교적 손쉽게 한글 입력기를 구현할 수 있다. 현재 많은 linux의 입력기들이 이 라이브러리로 구현되어 있다.</p>
+<h2><a class="anchor" id="documentation"></a>
+개발 문서</h2>
+<p>libhangul에서 제공하는 기능들은 다음 레퍼런스에서 찾아볼 수 있다. </p>
+<ul>
+<li><a class="el" href="group__hangulctype.html#hangulctype">한글 글자 조작</a> : 유니코드로된 한글 글자를 구분하고 조작하는 함수이다. 이 함수들을 이용하면 자모 코드를 음절로 조합할 수 있고 또 음절을 자모 코드로 분리할 수 있다. </li>
+<li><a class="el" href="group__hangulic.html#hangulicusage">Hangul Input Context의 사용법</a> : 한글 입력 기능을 제공한다. 이 함수들을 이용하여 키 입력에 따른 한글 조합 기능을 손쉽게 구현할 수 있다. </li>
+<li><a class="el" href="group__hanjadictionary.html#hanjadictionaryusage">한자 사전 루틴의 사용 방법</a> : 한자 사전 파일 관련 기능을 제공한다. 이 함수들을 이용하여 libhangul에서 제공하는 한자 사전 파일을 찾아볼 수 있다. </li>
+<li><a class="el" href="group__hangulkeyboards.html">한글 자판</a> : libhangul에서 제공하는 한글 자판에 대한 설명이다.</li>
+</ul>
+<h2><a class="anchor" id="download"></a>
+다운로드</h2>
+<p>최근 릴리스들은 libhangul의 프로젝트 페이지에서 받을 수 있다.</p>
+<p><a href="http://code.google.com/p/libhangul/downloads/list">http://code.google.com/p/libhangul/downloads/list</a></p>
+<p>개발버젼의 소스는 <a href="http://github.com/">github</a>의 repository에서 받을 수 있다.</p>
+<div class="fragment"><pre class="fragment">git clone git:<span class="comment">//github.com/choehwanjin/libhangul.git</span>
+</pre></div><h2><a class="anchor" id="bug"></a>
+버그리포트</h2>
+<p>libhangul의 버그는 <a href="http://code.google.com/">Google code</a>의 버그트래커로 관리하고 있다.</p>
+<p>버그트래커: <a href="http://code.google.com/p/libhangul/issues/list">http://code.google.com/p/libhangul/issues/list</a></p>
+<h2><a class="anchor" id="website"></a>
+웹주소</h2>
+<p>libhangul은 <a href="http://code.google.com/">Google code</a>에서 호스팅되고 있다.</p>
+<p>Project page: <a href="http://code.google.com/p/libhangul/">http://code.google.com/p/libhangul/</a> </p>
+</div></div>
+
+
+<hr class="footer"/><address class="footer"><small>
+생성시간 : 수 3월 28 2012 23:47:49, 프로젝트명 : libhangul, 생성자 :  &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.6
+</small></address>
+
+</body>
+</html>
diff --git a/doc/html/modules.html b/doc/html/modules.html
new file mode 100644 (file)
index 0000000..395cb27
--- /dev/null
@@ -0,0 +1,70 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>libhangul: 모듈</title>
+
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  
+  
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">libhangul
+   &#160;<span id="projectnumber">Version 0.1.0</span>
+   </div>
+   
+  </td>
+  
+  
+  
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<!-- 다음에 의해 생성됨 :  Doxygen 1.7.6 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>메인&#160;페이지</span></a></li>
+      <li><a href="pages.html"><span>관련된&#160;페이지</span></a></li>
+      <li class="current"><a href="modules.html"><span>모듈</span></a></li>
+      <li><a href="files.html"><span>파일들</span></a></li>
+      <li><a href="dirs.html"><span>디렉토리</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">모듈</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock">다음은 모든 모듈들의 목록입니다.:</div><ul>
+<li><a class="el" href="group__hangulctype.html">한글 글자 조작</a></li>
+<li><a class="el" href="group__hangulic.html">한글 입력 기능 구현</a></li>
+<li><a class="el" href="group__hanjadictionary.html">한자 사전 검색 기능</a></li>
+<li><a class="el" href="group__hangulkeyboards.html">한글 자판</a></li>
+</ul>
+</div>
+
+
+<hr class="footer"/><address class="footer"><small>
+생성시간 : 수 3월 28 2012 23:47:49, 프로젝트명 : libhangul, 생성자 :  &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.6
+</small></address>
+
+</body>
+</html>
diff --git a/doc/html/nav_f.png b/doc/html/nav_f.png
new file mode 100644 (file)
index 0000000..1b07a16
Binary files /dev/null and b/doc/html/nav_f.png differ
diff --git a/doc/html/nav_h.png b/doc/html/nav_h.png
new file mode 100644 (file)
index 0000000..01f5fa6
Binary files /dev/null and b/doc/html/nav_h.png differ
diff --git a/doc/html/open.png b/doc/html/open.png
new file mode 100644 (file)
index 0000000..7b35d2c
Binary files /dev/null and b/doc/html/open.png differ
diff --git a/doc/html/pages.html b/doc/html/pages.html
new file mode 100644 (file)
index 0000000..1e033fb
--- /dev/null
@@ -0,0 +1,68 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>libhangul: 관련된 페이지</title>
+
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  
+  
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">libhangul
+   &#160;<span id="projectnumber">Version 0.1.0</span>
+   </div>
+   
+  </td>
+  
+  
+  
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<!-- 다음에 의해 생성됨 :  Doxygen 1.7.6 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>메인&#160;페이지</span></a></li>
+      <li class="current"><a href="pages.html"><span>관련된&#160;페이지</span></a></li>
+      <li><a href="modules.html"><span>모듈</span></a></li>
+      <li><a href="files.html"><span>파일들</span></a></li>
+      <li><a href="dirs.html"><span>디렉토리</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">관련된 페이지</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock">다음은 관련된 모든 문서화 페이지들의 목록입니다.:</div><ul>
+<li><a class="el" href="deprecated.html">잘못된 코드 목록</a>
+</li>
+</ul>
+</div>
+
+
+<hr class="footer"/><address class="footer"><small>
+생성시간 : 수 3월 28 2012 23:47:49, 프로젝트명 : libhangul, 생성자 :  &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.6
+</small></address>
+
+</body>
+</html>
diff --git a/doc/html/tab_a.png b/doc/html/tab_a.png
new file mode 100644 (file)
index 0000000..2d99ef2
Binary files /dev/null and b/doc/html/tab_a.png differ
diff --git a/doc/html/tab_b.gif b/doc/html/tab_b.gif
new file mode 100644 (file)
index 0000000..0d62348
Binary files /dev/null and b/doc/html/tab_b.gif differ
diff --git a/doc/html/tab_b.png b/doc/html/tab_b.png
new file mode 100644 (file)
index 0000000..b2c3d2b
Binary files /dev/null and b/doc/html/tab_b.png differ
diff --git a/doc/html/tab_h.png b/doc/html/tab_h.png
new file mode 100644 (file)
index 0000000..c11f48f
Binary files /dev/null and b/doc/html/tab_h.png differ
diff --git a/doc/html/tab_l.gif b/doc/html/tab_l.gif
new file mode 100644 (file)
index 0000000..9b1e633
Binary files /dev/null and b/doc/html/tab_l.gif differ
diff --git a/doc/html/tab_r.gif b/doc/html/tab_r.gif
new file mode 100644 (file)
index 0000000..ce9dd9f
Binary files /dev/null and b/doc/html/tab_r.gif differ
diff --git a/doc/html/tab_s.png b/doc/html/tab_s.png
new file mode 100644 (file)
index 0000000..978943a
Binary files /dev/null and b/doc/html/tab_s.png differ
diff --git a/doc/html/tabs.css b/doc/html/tabs.css
new file mode 100644 (file)
index 0000000..2192056
--- /dev/null
@@ -0,0 +1,59 @@
+.tabs, .tabs2, .tabs3 {
+    background-image: url('tab_b.png');
+    width: 100%;
+    z-index: 101;
+    font-size: 13px;
+}
+
+.tabs2 {
+    font-size: 10px;
+}
+.tabs3 {
+    font-size: 9px;
+}
+
+.tablist {
+    margin: 0;
+    padding: 0;
+    display: table;
+}
+
+.tablist li {
+    float: left;
+    display: table-cell;
+    background-image: url('tab_b.png');
+    line-height: 36px;
+    list-style: none;
+}
+
+.tablist a {
+    display: block;
+    padding: 0 20px;
+    font-weight: bold;
+    background-image:url('tab_s.png');
+    background-repeat:no-repeat;
+    background-position:right;
+    color: #283A5D;
+    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+    text-decoration: none;
+    outline: none;
+}
+
+.tabs3 .tablist a {
+    padding: 0 10px;
+}
+
+.tablist a:hover {
+    background-image: url('tab_h.png');
+    background-repeat:repeat-x;
+    color: #fff;
+    text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+    text-decoration: none;
+}
+
+.tablist li.current a {
+    background-image: url('tab_a.png');
+    background-repeat:repeat-x;
+    color: #fff;
+    text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+}
index 7278e20..919aff6 100644 (file)
@@ -3,40 +3,44 @@
 @mainpage
 
 @section introduction libhangul 소개
-libhangul은 기본적인 한글 관련 루틴들을 구현한 라이브러리입니다.
+libhangul은 기본적인 한글 관련 루틴들을 구현한 라이브러리다.
 주로 한글 입력기능을 구현한 것으로 이 라이브러리를 사용하면 비교적 손쉽게
-한글 입력기를 구현할 수 있습니다. 현재 많은 linux의 입력기들이 이 라이브러리로
-구현되어 있습니다.
+한글 입력기를 구현할 수 있다. 현재 많은 linux의 입력기들이 이 라이브러리로
+구현되어 있다.
 
 @section documentation 개발 문서
-libhangul에서 제공하는 기능들은 다음 레퍼런스에서 찾아볼 수 있습니다.
-@li @ref hangulctype : 유니코드에서 한글 글자를 구분하고 조작하는 함수들입니다.
-이 함수들을 이용하면 자모 코드를 음절로 조합할 수 있고 또 음절을 자모 코드로 분리할 수 있습니다.
-@li @ref hangulicusage : 한글 입력 기능을 제공합니다. 이 함수들을 이용하여 키 입력에 따른 한글 조합 기능을 손쉽게 구현할 수 있습니다.
-@li @ref hanjadictionaryusage : 한자 사전 파일 관련 기능을 제공합니다. 이 함수들을 이용하여 libhangul에서 제공하는 한자 사전 파일을 찾아볼 수 있습니다.
+libhangul에서 제공하는 기능들은 다음 레퍼런스에서 찾아볼 수 있다.
+@li @ref hangulctype : 유니코드로된 한글 글자를 구분하고 조작하는 함수이다.
+이 함수들을 이용하면 자모 코드를 음절로 조합할 수 있고 또 음절을 자모 코드로
+분리할 수 있다.
+@li @ref hangulicusage : 한글 입력 기능을 제공한다. 이 함수들을 이용하여 키
+입력에 따른 한글 조합 기능을 손쉽게 구현할 수 있다.
+@li @ref hanjadictionaryusage : 한자 사전 파일 관련 기능을 제공한다.
+이 함수들을 이용하여 libhangul에서 제공하는 한자 사전 파일을 찾아볼 수 있다.
+@li @ref hangulkeyboards : libhangul에서 제공하는 한글 자판에 대한 설명이다.
 
 @section download 다운로드
-최근 릴리스들은 libhangul의 프로젝트 페이지에서 받을 수 있습니다.
-@li http://kldp.net/frs/?group_id=362
+최근 릴리스들은 libhangul의 프로젝트 페이지에서 받을 수 있다.
 
-개발버젼의 소스는 <a href="http://kldp.net/">KLDP.net</a>의 subversion 
-repository에서 받을 수 있습니다.
-@li subversion: http://kldp.net/scm/?group_id=362
+http://code.google.com/p/libhangul/downloads/list
 
-@section bug 버그리포트
-libhangul의 버그는 <a href="http://kldp.net/">KLDP.net</a>의 버그트래커로
-관리하고 있습니다.
+개발버젼의 소스는 <a href="http://github.com/">github</a>의 
+repository에서 받을 수 있다.
+
+@code
+git clone git://github.com/choehwanjin/libhangul.git
+@endcode
 
-@li 버그트래커: http://kldp.net/tracker/?group_id=362
+@section bug 버그리포트
+libhangul의 버그는 <a href="http://code.google.com/">Google code</a>의
+버그트래커로 관리하고 있다.
 
-@section mailinglist 메일링 리스트
-@li 메일링리스트: http://lists.kldp.net/mailman/listinfo/hangul-hackers
-@li 메일링리스트 아카이브: http://lists.kldp.net/pipermail/hangul-hackers/
+버그트래커: http://code.google.com/p/libhangul/issues/list
 
 @section website 웹주소
-libhangul은 <a href="http://kldp.net/">KLDP.net</a>에서 호스팅되고 있습니다.
- @li Home page: http://hangul.kldp.net/
- @li Project page: http://kldp.net/projects/hangul/
- @li Wiki page: http://wiki.kldp.org/wiki.php/libhangul
+libhangul은 <a href="http://code.google.com/">Google code</a>에서 호스팅되고
+있다.
+
+Project page: http://code.google.com/p/libhangul/
 
  */
old mode 100755 (executable)
new mode 100644 (file)
index bd9770f..e3213c4
@@ -4,6 +4,7 @@ libhangulinclude_HEADERS = hangul.h
 
 lib_LTLIBRARIES = libhangul.la
 noinst_HEADERS = \
+       hangul-gettext.h \
        hangulkeyboard.h \
        hangulinternals.h \
        hanjacompatible.h
@@ -14,6 +15,7 @@ libhangul_la_SOURCES = \
        hanja.c
 
 libhangul_la_CFLAGS = \
+    -DLOCALEDIR=\"$(localedir)\" \
     -DLIBHANGUL_DEFAULT_HANJA_DIC=\"$(datadir)/libhangul/hanja/hanja.txt\"
 
 libhangul_la_LDFLAGS = -version-info $(LIBHANGUL_CURRENT):$(LIBHANGUL_REVISION):$(LIBHANGUL_AGE)
diff --git a/hangul/hangul-gettext.h b/hangul/hangul-gettext.h
new file mode 100644 (file)
index 0000000..05606a2
--- /dev/null
@@ -0,0 +1,18 @@
+#ifndef libhangul_hangul_gettext_h
+#define libhangul_hangul_gettext_h
+
+#ifdef ENABLE_NLS
+
+#include <libintl.h>
+
+#define _(x)       dgettext(GETTEXT_PACKAGE, x)
+#define N_(x)      x
+
+#else /* ENABLE_NLS */
+
+#define _(x)       (x)
+#define N_(x)      x
+
+#endif /* ENABLE_NLS */
+
+#endif // libhangul_hangul_gettext_h
index 26e1871..d437ef4 100644 (file)
@@ -52,10 +52,6 @@ bool hangul_is_cjamo(ucschar c);
 
 ucschar hangul_jamo_to_cjamo(ucschar ch);
 
-ucschar hangul_choseong_to_jongseong(ucschar ch);
-ucschar hangul_jongseong_to_choseong(ucschar ch);
-void    hangul_jongseong_dicompose(ucschar ch, ucschar* jong, ucschar* cho);
-
 const ucschar* hangul_syllable_iterator_prev(const ucschar* str,
                                             const ucschar* begin);
 const ucschar* hangul_syllable_iterator_next(const ucschar* str,
@@ -114,6 +110,7 @@ bool hangul_ic_is_empty(HangulInputContext *hic);
 bool hangul_ic_has_choseong(HangulInputContext *hic);
 bool hangul_ic_has_jungseong(HangulInputContext *hic);
 bool hangul_ic_has_jongseong(HangulInputContext *hic);
+bool hangul_ic_is_transliteration(HangulInputContext *hic);
 
 void hangul_ic_set_output_mode(HangulInputContext *hic, int mode);
 void hangul_ic_set_keyboard(HangulInputContext *hic,
@@ -125,6 +122,10 @@ void hangul_ic_set_combination(HangulInputContext *hic,
 void hangul_ic_connect_callback(HangulInputContext* hic, const char* event,
                                void* callback, void* user_data);
 
+unsigned    hangul_ic_get_n_keyboards();
+const char* hangul_ic_get_keyboard_id(unsigned index_);
+const char* hangul_ic_get_keyboard_name(unsigned index_);
+
 const ucschar* hangul_ic_get_preedit_string(HangulInputContext *hic);
 const ucschar* hangul_ic_get_commit_string(HangulInputContext *hic);
 const ucschar* hangul_ic_flush(HangulInputContext *hic);
@@ -152,23 +153,6 @@ const char*  hanja_get_key(const Hanja* hanja);
 const char*  hanja_get_value(const Hanja* hanja);
 const char*  hanja_get_comment(const Hanja* hanja);
 
-
-/* deprecated */
-bool hangul_is_jaso(ucschar c) LIBHANGUL_DEPRECATED;
-ucschar hangul_jaso_to_jamo(ucschar ch) LIBHANGUL_DEPRECATED;
-ucschar hangul_jaso_to_syllable(ucschar choseong,
-                               ucschar jungseong,
-                               ucschar jongseong) LIBHANGUL_DEPRECATED;
-void    hangul_syllable_to_jaso(ucschar syllable,
-                               ucschar* choseong,
-                               ucschar* jungseong,
-                               ucschar* jongseong) LIBHANGUL_DEPRECATED;
-typedef bool (*HangulICFilter) (ucschar*, ucschar, ucschar, ucschar, void*);
-void hangul_ic_set_filter(HangulInputContext *hic,
-                         HangulICFilter func, void *user_data) LIBHANGUL_DEPRECATED;
-int  hangul_ic_dvorak_to_qwerty(int qwerty) LIBHANGUL_DEPRECATED;
-
-
 #ifdef __cplusplus
 }
 #endif
index 4bda161..4ba2415 100644 (file)
@@ -85,7 +85,7 @@ hangul_is_choseong(ucschar c)
 bool
 hangul_is_jungseong(ucschar c)
 {
-    return (c >= 0x1161 && c <= 0x11a2) ||
+    return (c >= 0x1160 && c <= 0x11a7) ||
           (c >= 0xd7b0 && c <= 0xd7c6);
 }
 
@@ -101,7 +101,7 @@ hangul_is_jungseong(ucschar c)
 bool
 hangul_is_jongseong(ucschar c)
 {
-    return (c >= 0x11a8 && c <= 0x11f9) ||
+    return (c >= 0x11a8 && c <= 0x11ff) ||
           (c >= 0xd7cb && c <= 0xd7fb);
 }
 
@@ -176,13 +176,6 @@ hangul_is_jamo(ucschar c)
           hangul_is_jongseong(c);
 }
 
-/** @deprecated 이 함수 대신 hangul_is_jamo()함수를 사용한다. */
-bool
-hangul_is_jaso(ucschar c)
-{
-    return hangul_is_jamo(c);
-}
-
 /**
  * @ingroup hangulctype
  * @brief 호환 자모인지 확인
@@ -379,33 +372,33 @@ hangul_jamo_to_cjamo(ucschar c)
        0x0000,     /* 0x11a5 */
        0x0000,     /* 0x11a6 */
        0x0000,     /* 0x11a7 */
-       0x0000,     /* 0x11a8 */
-       0x0000,     /* 0x11a9 */
-       0x3133,     /* 0x11aa */
-       0x0000,     /* 0x11ab */
-       0x3135,     /* 0x11ac */
-       0x3136,     /* 0x11ad */
-       0x0000,     /* 0x11ae */
-       0x0000,     /* 0x11af */
-       0x313a,     /* 0x11b0 */
-       0x313b,     /* 0x11b1 */
-       0x313c,     /* 0x11b2 */
-       0x313d,     /* 0x11b3 */
-       0x313e,     /* 0x11b4 */
-       0x313f,     /* 0x11b5 */
-       0x0000,     /* 0x11b6 */
-       0x0000,     /* 0x11b7 */
-       0x0000,     /* 0x11b8 */
-       0x0000,     /* 0x11b9 */
-       0x0000,     /* 0x11ba */
-       0x0000,     /* 0x11bb */
-       0x0000,     /* 0x11bc */
-       0x0000,     /* 0x11bd */
-       0x0000,     /* 0x11be */
-       0x0000,     /* 0x11bf */
-       0x0000,     /* 0x11c0 */
-       0x0000,     /* 0x11c1 */
-       0x0000,     /* 0x11c2 */
+       0x3131,     /* 0x11a8 */
+       0x3132,     /* 0x11a9 */
+       0x3133,     /* 0x11aa */
+       0x3134,     /* 0x11ab */
+       0x3135,     /* 0x11ac */
+       0x3136,     /* 0x11ad */
+       0x3137,     /* 0x11ae */
+       0x3139,     /* 0x11af */
+       0x313a,     /* 0x11b0 */
+       0x313b,     /* 0x11b1 */
+       0x313c,     /* 0x11b2 */
+       0x313d,     /* 0x11b3 */
+       0x313e,     /* 0x11b4 */
+       0x313f,     /* 0x11b5 */
+       0x3140,     /* 0x11b6 */
+       0x3141,     /* 0x11b7 */
+       0x3142,     /* 0x11b8 */
+       0x3144,     /* 0x11b9 */
+       0x3145,     /* 0x11ba */
+       0x3146,     /* 0x11bb */
+       0x3147,     /* 0x11bc */
+       0x3148,     /* 0x11bd */
+       0x314a,     /* 0x11be */
+       0x314b,     /* 0x11bf */
+       0x314c,     /* 0x11c0 */
+       0x314d,     /* 0x11c1 */
+       0x314e,     /* 0x11c2 */
        0x0000,     /* 0x11c3 */
        0x0000,     /* 0x11c4 */
        0x0000,     /* 0x11c5 */
@@ -592,81 +585,304 @@ hangul_jamo_to_cjamo(ucschar c)
     return ret;
 }
 
-/** @deprecated 이 함수 대신 hangul_jamo_to_cjamo()함수를 사용한다. */
-ucschar
-hangul_jaso_to_jamo(ucschar c)
-{
-    return hangul_jamo_to_cjamo(c);
-}
-
 ucschar
 hangul_choseong_to_jongseong(ucschar c)
 {
-    static ucschar table[] = {
-       0x11a8,  /* choseong kiyeok      -> jongseong kiyeok      */
-       0x11a9,  /* choseong ssangkiyeok -> jongseong ssangkiyeok */
-       0x11ab,  /* choseong nieun       -> jongseong nieun       */
-       0x11ae,  /* choseong tikeut      -> jongseong tikeut      */
-       0x0,     /* choseong ssangtikeut -> jongseong tikeut      */
-       0x11af,  /* choseong rieul       -> jongseong rieul       */
-       0x11b7,  /* choseong mieum       -> jongseong mieum       */
-       0x11b8,  /* choseong pieup       -> jongseong pieup       */
-       0x0,     /* choseong ssangpieup  -> jongseong pieup       */
-       0x11ba,  /* choseong sios        -> jongseong sios        */
-       0x11bb,  /* choseong ssangsios   -> jongseong ssangsios   */
-       0x11bc,  /* choseong ieung       -> jongseong ieung       */
-       0x11bd,  /* choseong cieuc       -> jongseong cieuc       */
-       0x0,     /* choseong ssangcieuc  -> jongseong cieuc       */
-       0x11be,  /* choseong chieuch     -> jongseong chieuch     */
-       0x11bf,  /* choseong khieukh     -> jongseong khieukh     */
-       0x11c0,  /* choseong thieuth     -> jongseong thieuth     */
-       0x11c1,  /* choseong phieuph     -> jongseong phieuph     */
-       0x11c2   /* choseong hieuh       -> jongseong hieuh       */
+    static const ucschar table[] = {
+       0x11a8,  /* cho kiyeok               -> jong kiyeok               */
+       0x11a9,  /* cho ssangkiyeok          -> jong ssangkiyeok          */
+       0x11ab,  /* cho nieun                -> jong nieun                */
+       0x11ae,  /* cho tikeut               -> jong tikeut               */
+       0xd7cd,  /* cho ssangtikeut          -> jong ssangtikeut          */
+       0x11af,  /* cho rieul                -> jong rieul                */
+       0x11b7,  /* cho mieum                -> jong mieum                */
+       0x11b8,  /* cho pieup                -> jong pieup                */
+       0xd7e6,  /* cho ssangpieup           -> jong ssangpieup           */
+       0x11ba,  /* cho sios                 -> jong sios                 */
+       0x11bb,  /* cho ssangsios            -> jong ssangsios            */
+       0x11bc,  /* cho ieung                -> jong ieung                */
+       0x11bd,  /* cho cieuc                -> jong cieuc                */
+       0xd7f9,  /* cho ssangcieuc           -> jong ssangcieuc           */
+       0x11be,  /* cho chieuch              -> jong chieuch              */
+       0x11bf,  /* cho khieukh              -> jong khieukh              */
+       0x11c0,  /* cho thieuth              -> jong thieuth              */
+       0x11c1,  /* cho phieuph              -> jong phieuph              */
+       0x11c2,  /* cho hieuh                -> jong hieuh                */
+       0x11c5,  /* cho nieun-kiyeok         -> jong nieun-kiyeok         */
+       0x11ff,  /* cho ssangnieun           -> jong ssangnieun           */
+       0x11c6,  /* cho nieun-tikeut         -> jong nieun-tikeut         */
+       0,       /* cho nieun-pieup                                      */
+       0x11ca,  /* cho tikeut-kiyeok        -> jong tikeut-kiyeok        */
+       0x11cd,  /* cho rieul-nieun          -> jong rieul-nieun          */
+       0x11d0,  /* cho ssangrieul           -> jong ssangrieul           */
+       0x11b6,  /* cho rieul-hieuh          -> jong rieul-hieuh          */
+       0xd7dd,  /* cho kapyeounrieul        -> jong kapyeounrieul        */
+       0x11dc,  /* cho mieum-pieup          -> jong mieum-pieup          */
+       0x11e2,  /* cho kapyeounmieum        -> jong kapyeounmieum        */
+       0,       /* cho pieup-kiyeok                                     */
+       0,       /* cho pieup-nieun                                      */
+       0xd7e3,  /* cho pieup-tikeut         -> jong pieup-tikeut         */
+       0x11b9,  /* cho pieup-sios           -> jong pieup-sios           */
+       0,       /* cho pieup-sios-kiyeok                                */
+       0xd7e7,  /* cho pieup-sios-tikeut    -> jong pieup-sios-tikeut    */
+       0,       /* cho pieup-sios-pieup                                 */
+       0,       /* cho pieup-ssangsios                                  */
+       0,       /* cho pieup-sios-cieuc                                 */
+       0xd7e8,  /* cho pieup-cieuc          -> jong pieup-cieuc          */
+       0xd7e9,  /* cho pieup-chieuch        -> jong pieup-chieuch        */
+       0,       /* cho pieup-thieuth                                    */
+       0x11e4,  /* cho pieup-phieuph        -> jong pieup-phieuph        */
+       0x11e6,  /* cho kapyeounpieup        -> jong kapyeounpieup        */
+       0,       /* cho kapyeounssangpieup                               */
+       0x11e7,  /* cho sios-kiyeok          -> jong sios-kiyeok          */
+       0,       /* cho sios-nieun                                       */
+       0x11e8,  /* cho sios-tikeut          -> jong sios-tikeut          */
+       0x11e9,  /* cho sios-rieul           -> jong sios-rieul           */
+       0xd7ea,  /* cho sios-mieum           -> jong sios-mieum           */
+       0x11ea,  /* cho sios-pieup           -> jong sios-pieup           */
+       0,       /* cho sios-pieup-kiyeok                                */
+       0,       /* cho sios-ssangsios                                   */
+       0,       /* cho sios-ieung                                       */
+       0xd7ef,  /* cho sios-cieuc           -> jong sios-cieuc           */
+       0xd7f0,  /* cho sios-chieuch         -> jong sios-chieuch         */
+       0,       /* cho sios-khieukh                                     */
+       0xd7f1,  /* cho sios-thieuth         -> jong sios-thieuth         */
+       0,       /* cho sios-phieuph                                     */
+       0xd7f2,  /* cho sios-hieuh           -> jong sios-hieuh           */
+       0,       /* cho chitueumsios                                     */
+       0,       /* cho chitueumssangsios                                */
+       0,       /* cho ceongchieumsios                                  */
+       0,       /* cho ceongchieumssangsios                             */
+       0x11eb,  /* cho pansios              -> jong pansios              */
+       0x11ec,  /* cho ieung-kiyeok         -> jong ieung-kiyeok         */
+       0,       /* cho ieung-tikeut                                     */
+       0,       /* cho ieung-mieum                                      */
+       0,       /* cho ieung-pieup                                      */
+       0,       /* cho ieung-sios                                       */
+       0,       /* cho ieung-pansios                                    */
+       0x11ee,  /* cho ssangieung           -> jong ssangieung           */
+       0,       /* cho ieung-cieuc                                      */
+       0,       /* cho ieung-chieuch                                    */
+       0,       /* cho ieung-thieuth                                    */
+       0,       /* cho ieung-phieuph                                    */
+       0x11f0,  /* cho yesieung             -> jong yesieung             */
+       0,       /* cho cieuc-ieung                                      */
+       0,       /* cho chitueumcieuc                                    */
+       0,       /* cho chitueumssangcieuc                               */
+       0,       /* cho ceongchieumcieuc                                 */
+       0,       /* cho ceongchieumssangcieuc                            */
+       0,       /* cho chieuch-khieukh                                  */
+       0,       /* cho chieuch-hieuh                                    */
+       0,       /* cho chitueumchieuch                                  */
+       0,       /* cho ceongchieumchieuch                               */
+       0x11f3,  /* cho phieuph-pieup        -> jong phieuph-pieup        */
+       0x11f4,  /* cho kapyeounphieuph      -> jong kapyeounphieuph      */
+       0,       /* cho ssanghieuh                                       */
+       0x11f9,  /* cho yeorinhieuh          -> jong yeorinhieuh          */
+       0,       /* cho kiyeok-tikeut                                    */
+       0x11c7,  /* cho nieun-sios           -> jong nieun-sios           */
+       0x11ac,  /* cho nieun-cieuc          -> jong nieun-cieuc          */
+       0x11ad,  /* cho nieun-hieuh          -> jong nieun-hieuh          */
+       0x11cb,  /* cho tikeut-rieul         -> jong tikeut-rieul         */
+       0,       /* cho filler                                           */
     };
-    if (c < 0x1100 || c > 0x1112)
-       return 0;
-    return table[c - 0x1100];
+
+    static const ucschar table_ext_a[] = {
+       0,       /* cho tikeut-mieum                                     */
+       0xd7cf,  /* cho tikeut-pieup         -> jong tikeut-pieup         */
+       0xd7d0,  /* cho tikeut-sios          -> jong tikeut-sios          */
+       0xd7d2,  /* cho tikeut-cieuc         -> jong tikeut-cieuc         */
+       0x11b0,  /* cho rieul-kiyeok         -> jong rieul-kiyeok         */
+       0xd7d5,  /* cho rieul-ssangkiyeok    -> jong rieul-ssangkiyeok    */
+       0x11ce,  /* cho rieul-tikeut         -> jong rieul-tikeut         */
+       0,       /* cho rieul-ssangtikeut                                */
+       0x11b1,  /* cho rieul-mieum          -> jong rieul-mieum          */
+       0x11b2,  /* cho rieul-pieup          -> jong rieul-pieup          */
+       0,       /* cho rieul-ssangpieup                                 */
+       0x11d5,  /* cho rieul-kapyeounpieup  -> jong rieul-kapyeounpieup  */
+       0x11b3,  /* cho rieul-sios           -> jong rieul-sios           */
+       0,       /* cho rieul-cieuc                                      */
+       0x11d8,  /* cho rieul-khieukh        -> jong rieul-khieukh        */
+       0x11da,  /* cho mieum-kiyeok         -> jong mieum-kiyeok         */
+       0,       /* cho mieum-tikeut                                     */
+       0x11dd,  /* cho mieum-sios           -> jong mieum-sios           */
+       0,       /* cho pieup-sios-thieuth                               */
+       0,       /* cho pieup-khieukh                                    */
+       0x11e5,  /* cho pieup-hieuh          -> jong pieup-hieuh          */
+       0,       /* cho ssangsios-pieup                                  */
+       0,       /* cho ieung-rieul                                      */
+       0,       /* cho ieung-hieuh                                      */
+       0,       /* cho ssangcieuc-hieuh                                 */
+       0,       /* cho ssangthieuth                                     */
+       0,       /* cho phieuph-hieuh                                    */
+       0,       /* cho hieuh-sios                                       */
+       0,       /* cho ssangyeorinhieuh                                 */
+    };
+
+    if (c >= 0x1100 && c <= 0x115e)
+       return table[c - 0x1100];
+    else if (c >= 0xa960 && c <= 0xa97c)
+       return table_ext_a[c - 0xa960];
+
+    return 0;
 }
 
 ucschar
 hangul_jongseong_to_choseong(ucschar c)
 {
-    static ucschar table[] = {
-      0x1100,  /* jongseong kiyeok        -> choseong kiyeok       */
-      0x1101,  /* jongseong ssangkiyeok   -> choseong ssangkiyeok  */
-      0x1109,  /* jongseong kiyeok-sios   -> choseong sios         */
-      0x1102,  /* jongseong nieun         -> choseong nieun        */
-      0x110c,  /* jongseong nieun-cieuc   -> choseong cieuc        */
-      0x1112,  /* jongseong nieun-hieuh   -> choseong hieuh        */
-      0x1103,  /* jongseong tikeut        -> choseong tikeut       */
-      0x1105,  /* jongseong rieul         -> choseong rieul        */
-      0x1100,  /* jongseong rieul-kiyeok  -> choseong kiyeok       */
-      0x1106,  /* jongseong rieul-mieum   -> choseong mieum        */
-      0x1107,  /* jongseong rieul-pieup   -> choseong pieup        */
-      0x1109,  /* jongseong rieul-sios    -> choseong sios         */
-      0x1110,  /* jongseong rieul-thieuth -> choseong thieuth      */
-      0x1111,  /* jongseong rieul-phieuph -> choseong phieuph      */
-      0x1112,  /* jongseong rieul-hieuh   -> choseong hieuh        */
-      0x1106,  /* jongseong mieum         -> choseong mieum        */
-      0x1107,  /* jongseong pieup         -> choseong pieup        */
-      0x1109,  /* jongseong pieup-sios    -> choseong sios         */
-      0x1109,  /* jongseong sios          -> choseong sios         */
-      0x110a,  /* jongseong ssangsios     -> choseong ssangsios    */
-      0x110b,  /* jongseong ieung         -> choseong ieung        */
-      0x110c,  /* jongseong cieuc         -> choseong cieuc        */
-      0x110e,  /* jongseong chieuch       -> choseong chieuch      */
-      0x110f,  /* jongseong khieukh       -> choseong khieukh      */
-      0x1110,  /* jongseong thieuth       -> choseong thieuth      */
-      0x1111,  /* jongseong phieuph       -> choseong phieuph      */
-      0x1112   /* jongseong hieuh         -> choseong hieuh        */
+    static const ucschar table[] = {
+       0x1100,  /* jong kiyeok               -> cho kiyeok               */
+       0x1101,  /* jong ssangkiyeok          -> cho ssangkiyeok          */
+       0,       /* jong kiyeok-sios                                      */
+       0x1102,  /* jong nieun                -> cho nieun                */
+       0x115c,  /* jong nieun-cieuc          -> cho nieun-cieuc          */
+       0x115d,  /* jong nieun-hieuh          -> cho nieun-hieuh          */
+       0x1103,  /* jong tikeut               -> cho tikeut               */
+       0x1105,  /* jong rieul                -> cho rieul                */
+       0xa964,  /* jong rieul-kiyeok         -> cho rieul-kiyeok         */
+       0xa968,  /* jong rieul-mieum          -> cho rieul-mieum          */
+       0xa969,  /* jong rieul-pieup          -> cho rieul-pieup          */
+       0xa96c,  /* jong rieul-sios           -> cho rieul-sios           */
+       0,       /* jong rieul-thieuth                                    */
+       0,       /* jong rieul-phieuph                                    */
+       0x111a,  /* jong rieul-hieuh          -> cho rieul-hieuh          */
+       0x1106,  /* jong mieum                -> cho mieum                */
+       0x1107,  /* jong pieup                -> cho pieup                */
+       0x1121,  /* jong pieup-sios           -> cho pieup-sios           */
+       0x1109,  /* jong sios                 -> cho sios                 */
+       0x110a,  /* jong ssangsios            -> cho ssangsios            */
+       0x110b,  /* jong ieung                -> cho ieung                */
+       0x110c,  /* jong cieuc                -> cho cieuc                */
+       0x110e,  /* jong chieuch              -> cho chieuch              */
+       0x110f,  /* jong khieukh              -> cho khieukh              */
+       0x1110,  /* jong thieuth              -> cho thieuth              */
+       0x1111,  /* jong phieuph              -> cho phieuph              */
+       0x1112,  /* jong hieuh                -> cho hieuh                */
+       0,       /* jong kiyeok-rieul                                     */
+       0,       /* jong kiyeok-sios-kiyeok                               */
+       0x1113,  /* jong nieun-kiyeok         -> cho nieun-kiyeok         */
+       0x1115,  /* jong nieun-tikeut         -> cho nieun-tikeut         */
+       0x115b,  /* jong nieun-sios           -> cho nieun-sios           */
+       0,       /* jong nieun-pansios                                    */
+       0,       /* jong nieun-thieuth                                    */
+       0x1117,  /* jong tikeut-kiyeok        -> cho tikeut-kiyeok        */
+       0x115e,  /* jong tikeut-rieul         -> cho tikeut-rieul         */
+       0,       /* jong rieul-kiyeok-sios                                */
+       0x1118,  /* jong rieul-nieun          -> cho rieul-nieun          */
+       0xa966,  /* jong rieul-tikeut         -> cho rieul-tikeut         */
+       0,       /* jong rieul-tikeut-hieuh                               */
+       0x1119,  /* jong ssangrieul           -> cho ssangrieul           */
+       0,       /* jong rieul-mieum-kiyeok                               */
+       0,       /* jong rieul-mieum-sios                                 */
+       0,       /* jong rieul-pieup-sios                                 */
+       0,       /* jong rieul-pieup-hieuh                                */
+       0xa96b,  /* jong rieul-kapyeounpieup  -> cho rieul-kapyeounpieup  */
+       0,       /* jong rieul-ssangsios                                  */
+       0,       /* jong rieul-pansios                                    */
+       0xa96e,  /* jong rieul-khieukh        -> cho rieul-khieukh        */
+       0,       /* jong rieul-yeorinhieuh                                */
+       0xa96f,  /* jong mieum-kiyeok         -> cho mieum-kiyeok         */
+       0,       /* jong mieum-rieul                                      */
+       0x111c,  /* jong mieum-pieup          -> cho mieum-pieup          */
+       0xa971,  /* jong mieum-sios           -> cho mieum-sios           */
+       0,       /* jong mieum-ssangsios                                  */
+       0,       /* jong mieum-pansios                                    */
+       0,       /* jong mieum-chieuch                                    */
+       0,       /* jong mieum-hieuh                                      */
+       0x111d,  /* jong kapyeounmieum        -> cho kapyeounmieum        */
+       0,       /* jong pieup-rieul                                      */
+       0x112a,  /* jong pieup-phieuph        -> cho pieup-phieuph        */
+       0xa974,  /* jong pieup-hieuh          -> cho pieup-hieuh          */
+       0x112b,  /* jong kapyeounpieup        -> cho kapyeounpieup        */
+       0x112d,  /* jong sios-kiyeok          -> cho sios-kiyeok          */
+       0x112f,  /* jong sios-tikeut          -> cho sios-tikeut          */
+       0x1130,  /* jong sios-rieul           -> cho sios-rieul           */
+       0x1132,  /* jong sios-pieup           -> cho sios-pieup           */
+       0x1140,  /* jong pansios              -> cho pansios              */
+       0x1141,  /* jong ieung-kiyeok         -> cho ieung-kiyeok         */
+       0,       /* jong ieung-ssangkiyeok                                */
+       0x1147,  /* jong ssangieung           -> cho ssangieung           */
+       0,       /* jong ieung-khieukh                                    */
+       0x114c,  /* jong yesieung             -> cho yesieung             */
+       0,       /* jong yesieung-sios                                    */
+       0,       /* jong yesieung-pansios                                 */
+       0x1156,  /* jong phieuph-pieup        -> cho phieuph-pieup        */
+       0x1157,  /* jong kapyeounphieuph      -> cho kapyeounphieuph      */
+       0,       /* jong hieuh-nieun                                      */
+       0,       /* jong hieuh-rieul                                      */
+       0,       /* jong hieuh-mieum                                      */
+       0,       /* jong hieuh-pieup                                      */
+       0x1159,  /* jong yeorinhieuh          -> cho yeorinhieuh          */
+       0,       /* jong kiyeok-nieun                                     */
+       0,       /* jong kiyeok-pieup                                     */
+       0,       /* jong kiyeok-chieuch                                   */
+       0,       /* jong kiyeok-khieukh                                   */
+       0,       /* jong kiyeok-hieuh                                     */
+       0x1114,  /* jong ssangnieun           -> cho ssangnieun           */
     };
-    if (c < 0x11a8 || c > 0x11c2)
-       return 0;
-    return table[c - 0x11a8];
+
+    static const ucschar table_ext_b[] = {
+       0,       /* jong nieun-rieul                                      */
+       0,       /* jong nieun-chieuch                                    */
+       0x1104,  /* jong ssangtikeut          -> cho ssangtikeut          */
+       0,       /* jong ssangtikeut-pieup                                */
+       0xa961,  /* jong tikeut-pieup         -> cho tikeut-pieup         */
+       0xa962,  /* jong tikeut-sios          -> cho tikeut-sios          */
+       0,       /* jong tikeut-sios-kiyeok                               */
+       0xa963,  /* jong tikeut-cieuc         -> cho tikeut-cieuc         */
+       0,       /* jong tikeut-chieuch                                   */
+       0,       /* jong tikeut-thieuth                                   */
+       0xa965,  /* jong rieul-ssangkiyeok    -> cho rieul-ssangkiyeok    */
+       0,       /* jong rieul-kiyeok-hieuh                               */
+       0,       /* jong ssangrieul-khieukh                               */
+       0,       /* jong rieul-mieum-hieuh                                */
+       0,       /* jong rieul-pieup-tikeut                               */
+       0,       /* jong rieul-pieup-phieuph                              */
+       0,       /* jong rieul-yesieung                                   */
+       0,       /* jong rieul-yeorinhieuh-hieuh                          */
+       0x111b,  /* jong kapyeounrieul        -> cho kapyeounrieul        */
+       0,       /* jong mieum-nieun                                      */
+       0,       /* jong mieum-ssangnieun                                 */
+       0,       /* jong ssangmieum                                       */
+       0,       /* jong mieum-pieup-sios                                 */
+       0,       /* jong mieum-cieuc                                      */
+       0x1120,  /* jong pieup-tikeut         -> cho pieup-tikeut         */
+       0,       /* jong pieup-rieul-phieuph                              */
+       0,       /* jong pieup-mieum                                      */
+       0x1108,  /* jong ssangpieup           -> cho ssangpieup           */
+       0x1123,  /* jong pieup-sios-tikeut    -> cho pieup-sios-tikeut    */
+       0x1127,  /* jong pieup-cieuc          -> cho pieup-cieuc          */
+       0x1128,  /* jong pieup-chieuch        -> cho pieup-chieuch        */
+       0x1131,  /* jong sios-mieum           -> cho sios-mieum           */
+       0,       /* jong sios-kapyeounpieup                               */
+       0,       /* jong ssangsios-kiyeok                                 */
+       0,       /* jong ssangsios-tikeut                                 */
+       0,       /* jong sios-pansios                                     */
+       0x1136,  /* jong sios-cieuc           -> cho sios-cieuc           */
+       0x1137,  /* jong sios-chieuch         -> cho sios-chieuch         */
+       0x1139,  /* jong sios-thieuth         -> cho sios-thieuth         */
+       0x113b,  /* jong sios-hieuh           -> cho sios-hieuh           */
+       0,       /* jong pansios-pieup                                    */
+       0,       /* jong pansios-kapyeounpieup                            */
+       0,       /* jong yesieung-mieum                                   */
+       0,       /* jong yesieung-hieuh                                   */
+       0,       /* jong cieuc-pieup                                      */
+       0,       /* jong cieuc-ssangpieup                                 */
+       0x110d,  /* jong ssangcieuc           -> cho ssangcieuc           */
+       0,       /* jong phieuph-sios                                     */
+       0,       /* jong phieuph-thieuth                                  */
+    };
+
+    if (c >= 0x11a8 && c <= 0x11ff)
+       return table[c - 0x11a8];
+    else if (c >= 0xd7cb && c <= 0xd7fb)
+       return table_ext_b[c - 0xd7cb];
+
+    return 0;
 }
 
 void
-hangul_jongseong_dicompose(ucschar c, ucschar* jong, ucschar* cho)
+hangul_jongseong_decompose(ucschar c, ucschar* jong, ucschar* cho)
 {
     static ucschar table[][2] = {
     { 0,      0x1100 }, /* jong kiyeok       = cho  kiyeok               */
@@ -702,6 +918,340 @@ hangul_jongseong_dicompose(ucschar c, ucschar* jong, ucschar* cho)
     *cho  = table[c - 0x11a8][1];
 }
 
+void
+hangul_jongseong_dicompose(ucschar c, ucschar* jong, ucschar* cho)
+{
+    hangul_jongseong_decompose(c, jong, cho);
+}
+
+static int
+hangul_jongseong_get_ncomponent(ucschar jong)
+{
+    static const char table[] = {
+       1, /* kiyeok                            */
+       2, /* ssangkiyeok                       */
+       2, /* kiyeok-sios                       */
+       1, /* nieun                             */
+       2, /* nieun-cieuc                       */
+       2, /* nieun-hieuh                       */
+       1, /* tikeut                            */
+       1, /* rieul                             */
+       2, /* rieul-kiyeok                      */
+       2, /* rieul-mieum                       */
+       2, /* rieul-pieup                       */
+       2, /* rieul-sios                        */
+       2, /* rieul-thieuth                     */
+       2, /* rieul-phieuph                     */
+       2, /* rieul-hieuh                       */
+       1, /* mieum                             */
+       1, /* pieup                             */
+       2, /* pieup-sios                        */
+       1, /* sios                              */
+       2, /* ssangsios                         */
+       1, /* ieung                             */
+       1, /* cieuc                             */
+       1, /* chieuch                           */
+       1, /* khieukh                           */
+       1, /* thieuth                           */
+       1, /* phieuph                           */
+       1, /* hieuh                             */
+       2, /* kiyeok-rieul                      */
+       3, /* kiyeok-sios-kiyeok                */
+       2, /* nieun-kiyeok                      */
+       2, /* nieun-tikeut                      */
+       2, /* nieun-sios                        */
+       2, /* nieun-pansios                     */
+       2, /* nieun-thieuth                     */
+       2, /* tikeut-kiyeok                     */
+       2, /* tikeut-rieul                      */
+       3, /* rieul-kiyeok-sios                 */
+       2, /* rieul-nieun                       */
+       2, /* rieul-tikeut                      */
+       3, /* rieul-tikeut-hieuh                */
+       2, /* ssangrieul                        */
+       3, /* rieul-mieum-kiyeok                */
+       3, /* rieul-mieum-sios                  */
+       3, /* rieul-pieup-sios                  */
+       3, /* rieul-pieup-hieuh                 */
+       3, /* rieul-kapyeounpieup               */
+       3, /* rieul-ssangsios                   */
+       2, /* rieul-pansios                     */
+       2, /* rieul-khieukh                     */
+       2, /* rieul-yeorinhieuh                 */
+       2, /* mieum-kiyeok                      */
+       2, /* mieum-rieul                       */
+       2, /* mieum-pieup                       */
+       2, /* mieum-sios                        */
+       3, /* mieum-ssangsios                   */
+       2, /* mieum-pansios                     */
+       2, /* mieum-chieuch                     */
+       2, /* mieum-hieuh                       */
+       2, /* kapyeounmieum                     */
+       2, /* pieup-rieul                       */
+       2, /* pieup-phieuph                     */
+       2, /* pieup-hieuh                       */
+       2, /* kapyeounpieup                     */
+       2, /* sios-kiyeok                       */
+       2, /* sios-tikeut                       */
+       2, /* sios-rieul                        */
+       2, /* sios-pieup                        */
+       1, /* pansios                           */
+       2, /* ieung-kiyeok                      */
+       3, /* ieung-ssangkiyeok                 */
+       2, /* ssangieung                        */
+       2, /* ieung-khieukh                     */
+       1, /* yesieung                          */
+       2, /* yesieung-sios                     */
+       2, /* yesieung-pansios                  */
+       2, /* phieuph-pieup                     */
+       2, /* kapyeounphieuph                   */
+       2, /* hieuh-nieun                       */
+       2, /* hieuh-rieul                       */
+       2, /* hieuh-mieum                       */
+       2, /* hieuh-pieup                       */
+       1, /* yeorinhieuh                       */
+       2, /* kiyeok-nieun                      */
+       2, /* kiyeok-pieup                      */
+       2, /* kiyeok-chieuch                    */
+       2, /* kiyeok-khieukh                    */
+       2, /* kiyeok-hieuh                      */
+       2, /* ssangnieun                        */
+    };
+
+    static const char table_ext_b[] = {
+       2, /* nieun-rieul                       */
+       2, /* nieun-chieuch                     */
+       2, /* ssangtikeut                       */
+       3, /* ssangtikeut-pieup                 */
+       2, /* tikeut-pieup                      */
+       2, /* tikeut-sios                       */
+       3, /* tikeut-sios-kiyeok                */
+       2, /* tikeut-cieuc                      */
+       2, /* tikeut-chieuch                    */
+       2, /* tikeut-thieuth                    */
+       3, /* rieul-ssangkiyeok                 */
+       3, /* rieul-kiyeok-hieuh                */
+       3, /* ssangrieul-khieukh                */
+       3, /* rieul-mieum-hieuh                 */
+       3, /* rieul-pieup-tikeut                */
+       3, /* rieul-pieup-phieuph               */
+       2, /* rieul-yesieung                    */
+       3, /* rieul-yeorinhieuh-hieuh           */
+       2, /* kapyeounrieul                     */
+       2, /* mieum-nieun                       */
+       3, /* mieum-ssangnieun                  */
+       2, /* ssangmieum                        */
+       3, /* mieum-pieup-sios                  */
+       2, /* mieum-cieuc                       */
+       2, /* pieup-tikeut                      */
+       3, /* pieup-rieul-phieuph               */
+       2, /* pieup-mieum                       */
+       2, /* ssangpieup                        */
+       3, /* pieup-sios-tikeut                 */
+       2, /* pieup-cieuc                       */
+       2, /* pieup-chieuch                     */
+       2, /* sios-mieum                        */
+       3, /* sios-kapyeounpieup                */
+       3, /* ssangsios-kiyeok                  */
+       3, /* ssangsios-tikeut                  */
+       2, /* sios-pansios                      */
+       2, /* sios-cieuc                        */
+       2, /* sios-chieuch                      */
+       2, /* sios-thieuth                      */
+       2, /* sios-hieuh                        */
+       2, /* pansios-pieup                     */
+       3, /* pansios-kapyeounpieup             */
+       2, /* yesieung-mieum                    */
+       2, /* yesieung-hieuh                    */
+       2, /* cieuc-pieup                       */
+       3, /* cieuc-ssangpieup                  */
+       2, /* ssangcieuc                        */
+       2, /* phieuph-sios                      */
+       2, /* phieuph-thieuth                   */
+    };
+
+    if (jong >= 0x11a8 && jong <= 0x11ff) {
+       return table[jong - 0x11a8];
+    } else if (jong >= 0xd7cb && jong <= 0xd7fb) {
+       return table_ext_b[jong - 0xd7cb];
+    }
+
+    return 0;
+}
+
+ucschar
+hangul_jongseong_get_diff(ucschar prevjong, ucschar jong)
+{
+    static const ucschar table[][2] = {
+       { 0x1100, 0x1100 }, /* kiyeok: kiyeok, kiyeok                      */
+       { 0x1100, 0x1101 }, /* ssangkiyeok: kiyeok, ssangkiyeok            */
+       { 0x1109, 0      }, /* kiyeok-sios: sios                           */
+       { 0x1102, 0x1102 }, /* nieun: nieun, nieun                         */
+       { 0x110c, 0x115c }, /* nieun-cieuc: cieuc, nieun-cieuc             */
+       { 0x1112, 0x115d }, /* nieun-hieuh: hieuh, nieun-hieuh             */
+       { 0x1103, 0x1103 }, /* tikeut: tikeut, tikeut                      */
+       { 0x1105, 0x1105 }, /* rieul: rieul, rieul                         */
+       { 0x1100, 0xa964 }, /* rieul-kiyeok: kiyeok, rieul-kiyeok          */
+       { 0x1106, 0xa968 }, /* rieul-mieum: mieum, rieul-mieum             */
+       { 0x1107, 0xa969 }, /* rieul-pieup: pieup, rieul-pieup             */
+       { 0x1109, 0xa96c }, /* rieul-sios: sios, rieul-sios                */
+       { 0x1110, 0      }, /* rieul-thieuth: thieuth                      */
+       { 0x1111, 0      }, /* rieul-phieuph: phieuph                      */
+       { 0x1112, 0x111a }, /* rieul-hieuh: hieuh, rieul-hieuh             */
+       { 0x1106, 0x1106 }, /* mieum: mieum, mieum                         */
+       { 0x1107, 0x1107 }, /* pieup: pieup, pieup                         */
+       { 0x1109, 0x1121 }, /* pieup-sios: sios, pieup-sios                */
+       { 0x1109, 0x1109 }, /* sios: sios, sios                            */
+       { 0x1109, 0x110a }, /* ssangsios: sios, ssangsios                  */
+       { 0x110b, 0x110b }, /* ieung: ieung, ieung                         */
+       { 0x110c, 0x110c }, /* cieuc: cieuc, cieuc                         */
+       { 0x110e, 0x110e }, /* chieuch: chieuch, chieuch                   */
+       { 0x110f, 0x110f }, /* khieukh: khieukh, khieukh                   */
+       { 0x1110, 0x1110 }, /* thieuth: thieuth, thieuth                   */
+       { 0x1111, 0x1111 }, /* phieuph: phieuph, phieuph                   */
+       { 0x1112, 0x1112 }, /* hieuh: hieuh, hieuh                         */
+       { 0x1105, 0      }, /* kiyeok-rieul: rieul                         */
+       { 0x1100, 0x112d }, /* kiyeok-sios-kiyeok: kiyeok, sios-kiyeok     */
+       { 0x1100, 0x1113 }, /* nieun-kiyeok: kiyeok, nieun-kiyeok          */
+       { 0x1103, 0x1115 }, /* nieun-tikeut: tikeut, nieun-tikeut          */
+       { 0x1109, 0x115b }, /* nieun-sios: sios, nieun-sios                */
+       { 0x1140, 0      }, /* nieun-pansios: pansios                      */
+       { 0x1110, 0      }, /* nieun-thieuth: thieuth                      */
+       { 0x1100, 0x1117 }, /* tikeut-kiyeok: kiyeok, tikeut-kiyeok        */
+       { 0x1105, 0x115e }, /* tikeut-rieul: rieul, tikeut-rieul           */
+       { 0x1109, 0      }, /* rieul-kiyeok-sios: sios                     */
+       { 0x1102, 0x1118 }, /* rieul-nieun: nieun, rieul-nieun             */
+       { 0x1103, 0xa966 }, /* rieul-tikeut: tikeut, rieul-tikeut          */
+       { 0x1112, 0      }, /* rieul-tikeut-hieuh: hieuh                   */
+       { 0x1105, 0x1119 }, /* ssangrieul: rieul, ssangrieul               */
+       { 0x1100, 0xa96f }, /* rieul-mieum-kiyeok: kiyeok, mieum-kiyeok    */
+       { 0x1109, 0xa971 }, /* rieul-mieum-sios: sios, mieum-sios          */
+       { 0x1109, 0x1121 }, /* rieul-pieup-sios: sios, pieup-sios          */
+       { 0x1112, 0xa974 }, /* rieul-pieup-hieuh: hieuh, pieup-hieuh       */
+       { 0x110b, 0x112b }, /* rieul-kapyeounpieup: ieung, kapyeounpieup   */
+       { 0x1109, 0x110a }, /* rieul-ssangsios: sios, ssangsios            */
+       { 0x1140, 0      }, /* rieul-pansios: pansios                      */
+       { 0x110f, 0xa96e }, /* rieul-khieukh: khieukh, rieul-khieukh       */
+       { 0x1159, 0      }, /* rieul-yeorinhieuh: yeorinhieuh              */
+       { 0x1100, 0xa96f }, /* mieum-kiyeok: kiyeok, mieum-kiyeok          */
+       { 0x1105, 0      }, /* mieum-rieul: rieul                          */
+       { 0x1107, 0x111c }, /* mieum-pieup: pieup, mieum-pieup             */
+       { 0x1109, 0xa971 }, /* mieum-sios: sios, mieum-sios                */
+       { 0x1109, 0x110a }, /* mieum-ssangsios: sios, ssangsios            */
+       { 0x1140, 0      }, /* mieum-pansios: pansios                      */
+       { 0x110e, 0      }, /* mieum-chieuch: chieuch                      */
+       { 0x1112, 0      }, /* mieum-hieuh: hieuh                          */
+       { 0x110b, 0x111d }, /* kapyeounmieum: ieung, kapyeounmieum         */
+       { 0x1105, 0      }, /* pieup-rieul: rieul                          */
+       { 0x1111, 0x112a }, /* pieup-phieuph: phieuph, pieup-phieuph       */
+       { 0x1112, 0xa974 }, /* pieup-hieuh: hieuh, pieup-hieuh             */
+       { 0x110b, 0x112b }, /* kapyeounpieup: ieung, kapyeounpieup         */
+       { 0x1100, 0x112d }, /* sios-kiyeok: kiyeok, sios-kiyeok            */
+       { 0x1103, 0x112f }, /* sios-tikeut: tikeut, sios-tikeut            */
+       { 0x1105, 0x1130 }, /* sios-rieul: rieul, sios-rieul               */
+       { 0x1107, 0x1132 }, /* sios-pieup: pieup, sios-pieup               */
+       { 0x1140, 0x1140 }, /* pansios: pansios, pansios                   */
+       { 0x1100, 0      }, /* yesieung-kiyeok: kiyeok                     */
+       { 0x1100, 0x1101 }, /* yesieung-ssangkiyeok: kiyeok, ssangkiyeok   */
+       { 0x114c, 0      }, /* ssangyesieung: yesieung                     */
+       { 0x110f, 0      }, /* yesieung-khieukh: khieukh                   */
+       { 0x114c, 0x114c }, /* yesieung: yesieung, yesieung                */
+       { 0x1109, 0      }, /* yesieung-sios: sios                         */
+       { 0x1140, 0      }, /* yesieung-pansios: pansios                   */
+       { 0x1107, 0x1156 }, /* phieuph-pieup: pieup, phieuph-pieup         */
+       { 0x110b, 0x1157 }, /* kapyeounphieuph: ieung, kapyeounphieuph     */
+       { 0x1102, 0      }, /* hieuh-nieun: nieun                          */
+       { 0x1105, 0      }, /* hieuh-rieul: rieul                          */
+       { 0x1106, 0      }, /* hieuh-mieum: mieum                          */
+       { 0x1107, 0      }, /* hieuh-pieup: pieup                          */
+       { 0x1159, 0x1159 }, /* yeorinhieuh: yeorinhieuh, yeorinhieuh       */
+       { 0x1102, 0      }, /* kiyeok-nieun: nieun                         */
+       { 0x1107, 0      }, /* kiyeok-pieup: pieup                         */
+       { 0x110e, 0      }, /* kiyeok-chieuch: chieuch                     */
+       { 0x110f, 0      }, /* kiyeok-khieukh: khieukh                     */
+       { 0x1112, 0      }, /* kiyeok-hieuh: hieuh                         */
+       { 0x1102, 0x1114 }, /* ssangnieun: nieun, ssangnieun               */
+    };
+
+    static const ucschar table_ext_b[][2] = {
+       { 0x1105, 0      }, /* nieun-rieul: rieul                          */
+       { 0x110e, 0      }, /* nieun-chieuch: chieuch                      */
+       { 0x1103, 0x1104 }, /* ssangtikeut: tikeut, ssangtikeut            */
+       { 0x1107, 0xa961 }, /* ssangtikeut-pieup: pieup, tikeut-pieup      */
+       { 0x1107, 0xa961 }, /* tikeut-pieup: pieup, tikeut-pieup           */
+       { 0x1109, 0xa962 }, /* tikeut-sios: sios, tikeut-sios              */
+       { 0x1100, 0x112d }, /* tikeut-sios-kiyeok: kiyeok, sios-kiyeok     */
+       { 0x110c, 0xa963 }, /* tikeut-cieuc: cieuc, tikeut-cieuc           */
+       { 0x110e, 0      }, /* tikeut-chieuch: chieuch                     */
+       { 0x1110, 0      }, /* tikeut-thieuth: thieuth                     */
+       { 0x1100, 0x1101 }, /* rieul-ssangkiyeok: kiyeok, ssangkiyeok      */
+       { 0x1112, 0      }, /* rieul-kiyeok-hieuh: hieuh                   */
+       { 0x110f, 0xa96e }, /* ssangrieul-khieukh: khieukh, rieul-khieukh  */
+       { 0x1112, 0      }, /* rieul-mieum-hieuh: hieuh                    */
+       { 0x1103, 0x1120 }, /* rieul-pieup-tikeut: tikeut, pieup-tikeut    */
+       { 0x1111, 0x112a }, /* rieul-pieup-phieuph: phieuph, pieup-phieuph */
+       { 0x114c, 0      }, /* rieul-yesieung: yesieung                    */
+       { 0x1112, 0      }, /* rieul-yeorinhieuh-hieuh: hieuh              */
+       { 0x110b, 0x111b }, /* kapyeounrieul: ieung, kapyeounrieul         */
+       { 0x1102, 0      }, /* mieum-nieun: nieun                          */
+       { 0x1102, 0x1114 }, /* mieum-ssangnieun: nieun, ssangnieun         */
+       { 0x1106, 0      }, /* ssangmieum: mieum                           */
+       { 0x1109, 0x1121 }, /* mieum-pieup-sios: sios, pieup-sios          */
+       { 0x110c, 0      }, /* mieum-cieuc: cieuc                          */
+       { 0x1103, 0x1120 }, /* pieup-tikeut: tikeut, pieup-tikeut          */
+       { 0x1111, 0      }, /* pieup-rieul-phieuph: phieuph                */
+       { 0x1106, 0      }, /* pieup-mieum: mieum                          */
+       { 0x1107, 0x1108 }, /* ssangpieup: pieup, ssangpieup               */
+       { 0x1103, 0x112f }, /* pieup-sios-tikeut: tikeut, sios-tikeut      */
+       { 0x110c, 0x1127 }, /* pieup-cieuc: cieuc, pieup-cieuc             */
+       { 0x110e, 0x1128 }, /* pieup-chieuch: chieuch, pieup-chieuch       */
+       { 0x1106, 0x1131 }, /* sios-mieum: mieum, sios-mieum               */
+       { 0x110b, 0x112b }, /* sios-kapyeounpieup: ieung, kapyeounpieup    */
+       { 0x1100, 0x112d }, /* ssangsios-kiyeok: kiyeok, sios-kiyeok       */
+       { 0x1103, 0x112f }, /* ssangsios-tikeut: tikeut, sios-tikeut       */
+       { 0x1140, 0      }, /* sios-pansios: pansios                       */
+       { 0x110c, 0x1136 }, /* sios-cieuc: cieuc, sios-cieuc               */
+       { 0x110e, 0x1137 }, /* sios-chieuch: chieuch, sios-chieuch         */
+       { 0x1110, 0x1139 }, /* sios-thieuth: thieuth, sios-thieuth         */
+       { 0x1112, 0x113b }, /* sios-hieuh: hieuh, sios-hieuh               */
+       { 0x1107, 0      }, /* pansios-pieup: pieup                        */
+       { 0x110b, 0x112b }, /* pansios-kapyeounpieup: ieung, kapyeounpieup */
+       { 0x1106, 0      }, /* yesieung-mieum: mieum                       */
+       { 0x1112, 0      }, /* yesieung-hieuh: hieuh                       */
+       { 0x1107, 0      }, /* cieuc-pieup: pieup                          */
+       { 0x1107, 0x1108 }, /* cieuc-ssangpieup: pieup, ssangpieup         */
+       { 0x110c, 0x110d }, /* ssangcieuc: cieuc, ssangcieuc               */
+       { 0x1109, 0      }, /* phieuph-sios: sios                          */
+       { 0x1110, 0      }, /* phieuph-thieuth: thieuth                    */
+    };
+
+    ucschar cho = 0;
+
+    if (prevjong == 0) {
+       cho = hangul_jongseong_to_choseong(jong);
+    } else {
+       int diff;
+       int n1;
+       int n2;
+
+       n1 = hangul_jongseong_get_ncomponent(prevjong);
+       n2 = hangul_jongseong_get_ncomponent(jong);
+
+       diff = n2 - n1 - 1;
+       if (diff >= 0 && diff < 2) {
+           if (jong >= 0x11a8 && jong <= 0x11ff) {
+               cho = table[jong - 0x11a8][diff];
+           } else if (jong >= 0xd7cb && jong <= 0xd7fb) {
+               cho = table_ext_b[jong - 0xd7cb][diff];
+           }
+       } else if (diff == 2) {
+           cho = hangul_jongseong_to_choseong(jong);
+       }
+    }
+
+    return cho;
+}
+
 /**
  * @ingroup hangulctype
  * @brief 자모 코드를 조합하여 한글 음절로 변환
@@ -741,13 +1291,6 @@ hangul_jamo_to_syllable(ucschar choseong, ucschar jungseong, ucschar jongseong)
     return c;
 }
 
-/** @deprecated 이 함수 대신 hangul_jamo_to_syllable()을 사용한다. */
-ucschar
-hangul_jaso_to_syllable(ucschar choseong, ucschar jungseong, ucschar jongseong)
-{
-    return hangul_jamo_to_syllable(choseong, jungseong, jongseong);
-}
-
 /**
  * @ingroup hangulctype
  * @brief 음절을 자모로 분해
index 6e47da2..0915c76 100644 (file)
@@ -25,6 +25,7 @@
 #include <inttypes.h>
 #include <limits.h>
 
+#include "hangul-gettext.h"
 #include "hangul.h"
 #include "hangulinternals.h"
 
@@ -54,8 +55,8 @@
  * string 형태로 보내여 입력을 완료하는 것이다. 다음 키를 받게 되면 
  * 이 과정을 반복해서 수행한다.
  * 
- * libhangul에서 한글 조합 기능은 @ref HangulInputContext를 이용해서 구현하게
- * 되는데 기본 적인 방법은 @ref HangulInputContext에 사용자로부터의 입력을
+ * libhangul에서 한글 조합 기능은 @ref HangulInputContext 를 이용해서 구현하게
+ * 되는데 기본 적인 방법은 @ref HangulInputContext 에 사용자로부터의 입력을
  * 순서대로 전달하면서 그 상태가 바뀜에 따라서 preedit 나 commit 스트링을
  * 상황에 맞게 변화시키는 것이다.
  * 
@@ -188,7 +189,10 @@ typedef struct _HangulCombinationItem HangulCombinationItem;
 
 struct _HangulKeyboard {
     int type;
-    ucschar* table;
+    const char* id;
+    const char* name;
+    const ucschar* table;
+    const HangulCombination* combination;
 };
 
 struct _HangulCombinationItem {
@@ -214,7 +218,6 @@ struct _HangulInputContext {
     int type;
 
     const HangulKeyboard*    keyboard;
-    const HangulCombination* combination;
 
     HangulBuffer buffer;
     int output_mode;
@@ -229,63 +232,115 @@ struct _HangulInputContext {
     HangulOnTransition  on_transition;
     void*               on_transition_data;
 
-    HangulICFilter filter;
-    void *filter_data;
-
     unsigned int use_jamo_mode_only : 1;
 };
 
 #include "hangulkeyboard.h"
 
+static const HangulCombination hangul_combination_default = {
+    N_ELEMENTS(hangul_combination_table_default),
+    (HangulCombinationItem*)hangul_combination_table_default
+};
+
+static const HangulCombination hangul_combination_romaja = {
+    N_ELEMENTS(hangul_combination_table_romaja),
+    (HangulCombinationItem*)hangul_combination_table_romaja
+};
+
+static const HangulCombination hangul_combination_full = {
+    N_ELEMENTS(hangul_combination_table_full),
+    (HangulCombinationItem*)hangul_combination_table_full
+};
+
+static const HangulCombination hangul_combination_ahn = {
+    N_ELEMENTS(hangul_combination_table_ahn),
+    (HangulCombinationItem*)hangul_combination_table_ahn
+};
+
 static const HangulKeyboard hangul_keyboard_2 = {
     HANGUL_KEYBOARD_TYPE_JAMO,
-    (ucschar*)hangul_keyboard_table_2
+    "2", 
+    N_("Dubeolsik"), 
+    (ucschar*)hangul_keyboard_table_2,
+    &hangul_combination_default
+};
+
+static const HangulKeyboard hangul_keyboard_2y = {
+    HANGUL_KEYBOARD_TYPE_JAMO,
+    "2y", 
+    N_("Dubeolsik Yetgeul"), 
+    (ucschar*)hangul_keyboard_table_2y,
+    &hangul_combination_full
 };
 
 static const HangulKeyboard hangul_keyboard_32 = {
     HANGUL_KEYBOARD_TYPE_JASO,
-    (ucschar*)hangul_keyboard_table_32
+    "32",
+    N_("Sebeolsik Dubeol Layout"),
+    (ucschar*)hangul_keyboard_table_32,
+    &hangul_combination_default
 };
 
 static const HangulKeyboard hangul_keyboard_390 = {
     HANGUL_KEYBOARD_TYPE_JASO,
-    (ucschar*)hangul_keyboard_table_390
+    "39",
+    N_("Sebeolsik 390"),
+    (ucschar*)hangul_keyboard_table_390,
+    &hangul_combination_default
 };
 
 static const HangulKeyboard hangul_keyboard_3final = {
     HANGUL_KEYBOARD_TYPE_JASO,
-    (ucschar*)hangul_keyboard_table_3final
+    "3f",
+    N_("Sebeolsik Final"),
+    (ucschar*)hangul_keyboard_table_3final,
+    &hangul_combination_default
 };
 
 static const HangulKeyboard hangul_keyboard_3sun = {
     HANGUL_KEYBOARD_TYPE_JASO,
-    (ucschar*)hangul_keyboard_table_3sun
+    "3s",
+    N_("Sebeolsik Noshift"),
+    (ucschar*)hangul_keyboard_table_3sun,
+    &hangul_combination_default
 };
 
 static const HangulKeyboard hangul_keyboard_3yet = {
     HANGUL_KEYBOARD_TYPE_JASO,
-    (ucschar*)hangul_keyboard_table_3yet
+    "3y",
+    N_("Sebeolsik Yetgeul"),
+    (ucschar*)hangul_keyboard_table_3yet,
+    &hangul_combination_full
 };
 
 static const HangulKeyboard hangul_keyboard_romaja = {
     HANGUL_KEYBOARD_TYPE_ROMAJA,
-    (ucschar*)hangul_keyboard_table_romaja
+    "ro",
+    N_("Romaja"),
+    (ucschar*)hangul_keyboard_table_romaja,
+    &hangul_combination_romaja
 };
 
-static const HangulCombination hangul_combination_default = {
-    N_ELEMENTS(hangul_combination_table_default),
-    (HangulCombinationItem*)hangul_combination_table_default
+static const HangulKeyboard hangul_keyboard_ahn = {
+    HANGUL_KEYBOARD_TYPE_JASO,
+    "ahn",
+    N_("Ahnmatae"),
+    (ucschar*)hangul_keyboard_table_ahn,
+    &hangul_combination_ahn
 };
 
-static const HangulCombination hangul_combination_romaja = {
-    N_ELEMENTS(hangul_combination_table_romaja),
-    (HangulCombinationItem*)hangul_combination_table_romaja
+static const HangulKeyboard* hangul_keyboards[] = {
+    &hangul_keyboard_2,
+    &hangul_keyboard_2y,
+    &hangul_keyboard_390,
+    &hangul_keyboard_3final,
+    &hangul_keyboard_3sun,
+    &hangul_keyboard_3yet,
+    &hangul_keyboard_32,
+    &hangul_keyboard_romaja,
+    &hangul_keyboard_ahn,
 };
 
-static const HangulCombination hangul_combination_full = {
-    N_ELEMENTS(hangul_combination_table_full),
-    (HangulCombinationItem*)hangul_combination_table_full
-};
 
 static void    hangul_buffer_push(HangulBuffer *buffer, ucschar ch);
 static ucschar hangul_buffer_pop (HangulBuffer *buffer);
@@ -302,12 +357,13 @@ hangul_keyboard_new()
 {
     HangulKeyboard *keyboard = malloc(sizeof(HangulKeyboard));
     if (keyboard != NULL) {
-       keyboard->table = malloc(sizeof(ucschar) * HANGUL_KEYBOARD_TABLE_SIZE);
-       if (keyboard->table != NULL) {
+       ucschar* table = malloc(sizeof(ucschar) * HANGUL_KEYBOARD_TABLE_SIZE);
+       if (table != NULL) {
            int i;
            for (i = 0; i < HANGUL_KEYBOARD_TABLE_SIZE; i++)
-               keyboard->table[i] = 0;
+               table[i] = 0;
 
+           keyboard->table = table;
            return keyboard;
        }
        free(keyboard);
@@ -331,8 +387,10 @@ void
 hangul_keyboard_set_value(HangulKeyboard *keyboard, int key, ucschar value)
 {
     if (keyboard != NULL) {
-       if (key >= 0 && key < N_ELEMENTS(keyboard->table))
-           keyboard->table[key] = value;
+       if (key >= 0 && key < N_ELEMENTS(keyboard->table)) {
+           ucschar* table = (ucschar*)keyboard->table;
+           table[key] = value;
+       }
     }
 }
 
@@ -421,7 +479,15 @@ hangul_combination_cmp(const void* p1, const void* p2)
 {
     const HangulCombinationItem *item1 = p1;
     const HangulCombinationItem *item2 = p2;
-    return item1->key - item2->key;
+
+    /* key는 unsigned int이므로 단순히 빼서 리턴하면 안된다.
+     * 두 수의 차가 큰 경우 int로 변환하면서 음수가 될 수 있다. */
+    if (item1->key < item2->key)
+       return -1;
+    else if (item1->key > item2->key)
+       return 1;
+    else
+       return 0;
 }
 
 ucschar
@@ -557,38 +623,60 @@ hangul_jaso_to_string(ucschar cho, ucschar jung, ucschar jong,
        if (jung) {
            /* have cho, jung, jong or no jong */
            ch = hangul_jamo_to_syllable(cho, jung, jong);
-           buf[n++] = ch;
+           if (ch != 0) {
+               buf[n++] = ch;
+           } else {
+               /* 한글 음절로 표현 불가능한 경우 */
+               buf[n++] = cho;
+               buf[n++] = jung;
+               if (jong != 0)
+                   buf[n++] = jong;
+           }
        } else {
            if (jong) {
                /* have cho, jong */
-               ch = hangul_jamo_to_cjamo(cho);
-               buf[n++] = ch;
-               ch = hangul_jamo_to_cjamo(jong);
-               buf[n++] = ch;
+               buf[n++] = cho;
+               buf[n++] = HANGUL_JUNGSEONG_FILLER;
+               buf[n++] = jong;
            } else {
                /* have cho */
                ch = hangul_jamo_to_cjamo(cho);
-               buf[n++] = ch;
+               if (hangul_is_cjamo(ch)) {
+                   buf[n++] = ch;
+               } else {
+                   buf[n++] = cho;
+                   buf[n++] = HANGUL_JUNGSEONG_FILLER;
+               }
            }
        }
     } else {
        if (jung) {
            if (jong) {
                /* have jung, jong */
-               ch = hangul_jamo_to_cjamo(jung);
-               buf[n++] = ch;
-               ch = hangul_jamo_to_cjamo(jong);
-               buf[n++] = ch;
+               buf[n++] = HANGUL_CHOSEONG_FILLER;
+               buf[n++] = jung;
+               buf[n++] = jong;
            } else {
                /* have jung */
                ch = hangul_jamo_to_cjamo(jung);
-               buf[n++] = ch;
+               if (hangul_is_cjamo(ch)) {
+                   buf[n++] = ch;
+               } else {
+                   buf[n++] = HANGUL_CHOSEONG_FILLER;
+                   buf[n++] = jung;
+               }
            }
        } else {
            if (jong) { 
                /* have jong */
                ch = hangul_jamo_to_cjamo(jong);
-               buf[n++] = ch;
+               if (hangul_is_cjamo(ch)) {
+                   buf[n++] = ch;
+               } else {
+                   buf[n++] = HANGUL_CHOSEONG_FILLER;
+                   buf[n++] = HANGUL_JUNGSEONG_FILLER;
+                   buf[n++] = jong;
+               }
            } else {
                /* have nothing */
                buf[n] = 0;
@@ -744,6 +832,23 @@ hangul_ic_save_commit_string(HangulInputContext *hic)
     hangul_buffer_clear(&hic->buffer);
 }
 
+static ucschar
+hangul_ic_choseong_to_jongseong(HangulInputContext* hic, ucschar cho)
+{
+    ucschar jong = hangul_choseong_to_jongseong(cho);
+    if (hangul_is_jongseong_conjoinable(jong)) {
+       return jong;
+    } else {
+       /* 옛글 조합 규칙을 사용하는 자판의 경우에는 종성이 conjoinable
+        * 하지 않아도 상관없다 */
+       if (hic->keyboard->combination == &hangul_combination_full) {
+           return jong;
+       }
+    }
+
+    return 0;
+}
+
 static bool
 hangul_ic_process_jamo(HangulInputContext *hic, ucschar ch)
 {
@@ -758,8 +863,8 @@ hangul_ic_process_jamo(HangulInputContext *hic, ucschar ch)
 
     if (hic->buffer.jongseong) {
        if (hangul_is_choseong(ch)) {
-           jong = hangul_choseong_to_jongseong(ch);
-           combined = hangul_combination_combine(hic->combination,
+           jong = hangul_ic_choseong_to_jongseong(hic, ch);
+           combined = hangul_combination_combine(hic->keyboard->combination,
                                              hic->buffer.jongseong, jong);
            if (hangul_is_jongseong(combined)) {
                if (!hangul_ic_push(hic, combined)) {
@@ -778,20 +883,26 @@ hangul_ic_process_jamo(HangulInputContext *hic, ucschar ch)
            pop = hangul_ic_pop(hic);
            peek = hangul_ic_peek(hic);
 
-           if (hangul_is_jungseong(peek)) {
-               hic->buffer.jongseong = 0;
-               hangul_ic_save_commit_string(hic);
-               hangul_ic_push(hic, hangul_jongseong_to_choseong(pop));
-               if (!hangul_ic_push(hic, ch)) {
-                   return false;
+           if (hangul_is_jongseong(peek)) {
+               ucschar choseong = hangul_jongseong_get_diff(peek,
+                                                hic->buffer.jongseong);
+               if (choseong == 0) {
+                   hangul_ic_save_commit_string(hic);
+                   if (!hangul_ic_push(hic, ch)) {
+                       return false;
+                   }
+               } else {
+                   hic->buffer.jongseong = peek;
+                   hangul_ic_save_commit_string(hic);
+                   hangul_ic_push(hic, choseong);
+                   if (!hangul_ic_push(hic, ch)) {
+                       return false;
+                   }
                }
            } else {
-               ucschar choseong = 0, jongseong = 0; 
-               hangul_jongseong_dicompose(hic->buffer.jongseong,
-                                          &jongseong, &choseong);
-               hic->buffer.jongseong = jongseong;
+               hic->buffer.jongseong = 0;
                hangul_ic_save_commit_string(hic);
-               hangul_ic_push(hic, choseong);
+               hangul_ic_push(hic, hangul_jongseong_to_choseong(pop));
                if (!hangul_ic_push(hic, ch)) {
                    return false;
                }
@@ -802,7 +913,7 @@ hangul_ic_process_jamo(HangulInputContext *hic, ucschar ch)
     } else if (hic->buffer.jungseong) {
        if (hangul_is_choseong(ch)) {
            if (hic->buffer.choseong) {
-               jong = hangul_choseong_to_jongseong(ch);
+               jong = hangul_ic_choseong_to_jongseong(hic, ch);
                if (hangul_is_jongseong(jong)) {
                    if (!hangul_ic_push(hic, jong)) {
                        if (!hangul_ic_push(hic, ch)) {
@@ -823,7 +934,7 @@ hangul_ic_process_jamo(HangulInputContext *hic, ucschar ch)
                }
            }
        } else if (hangul_is_jungseong(ch)) {
-           combined = hangul_combination_combine(hic->combination,
+           combined = hangul_combination_combine(hic->keyboard->combination,
                                                  hic->buffer.jungseong, ch);
            if (hangul_is_jungseong(combined)) {
                if (!hangul_ic_push(hic, combined)) {
@@ -840,7 +951,7 @@ hangul_ic_process_jamo(HangulInputContext *hic, ucschar ch)
        }
     } else if (hic->buffer.choseong) {
        if (hangul_is_choseong(ch)) {
-           combined = hangul_combination_combine(hic->combination,
+           combined = hangul_combination_combine(hic->keyboard->combination,
                                                  hic->buffer.choseong, ch);
            if (!hangul_ic_push(hic, combined)) {
                if (!hangul_ic_push(hic, ch)) {
@@ -881,7 +992,7 @@ hangul_ic_process_jaso(HangulInputContext *hic, ucschar ch)
        } else {
            ucschar choseong = 0;
            if (hangul_is_choseong(hangul_ic_peek(hic))) {
-               choseong = hangul_combination_combine(hic->combination,
+               choseong = hangul_combination_combine(hic->keyboard->combination,
                                                  hic->buffer.choseong, ch);
            }
            if (choseong) {
@@ -907,7 +1018,7 @@ hangul_ic_process_jaso(HangulInputContext *hic, ucschar ch)
        } else {
            ucschar jungseong = 0;
            if (hangul_is_jungseong(hangul_ic_peek(hic))) {
-               jungseong = hangul_combination_combine(hic->combination,
+               jungseong = hangul_combination_combine(hic->keyboard->combination,
                                                 hic->buffer.jungseong, ch);
            }
            if (jungseong) {
@@ -935,7 +1046,7 @@ hangul_ic_process_jaso(HangulInputContext *hic, ucschar ch)
        } else {
            ucschar jongseong = 0;
            if (hangul_is_jongseong(hangul_ic_peek(hic))) {
-               jongseong = hangul_combination_combine(hic->combination,
+               jongseong = hangul_combination_combine(hic->keyboard->combination,
                                                   hic->buffer.jongseong, ch);
            }
            if (jongseong) {
@@ -992,8 +1103,8 @@ hangul_ic_process_romaja(HangulInputContext *hic, int ascii, ucschar ch)
            if (hangul_is_jongseong(ch))
                jong = ch;
            else
-               jong = hangul_choseong_to_jongseong(ch);
-           combined = hangul_combination_combine(hic->combination,
+               jong = hangul_ic_choseong_to_jongseong(hic, ch);
+           combined = hangul_combination_combine(hic->keyboard->combination,
                                              hic->buffer.jongseong, jong);
            if (hangul_is_jongseong(combined)) {
                if (!hangul_ic_push(hic, combined)) {
@@ -1020,6 +1131,7 @@ hangul_ic_process_romaja(HangulInputContext *hic, int ascii, ucschar ch)
                if (hangul_is_jungseong(peek)) {
                    if (pop == 0x11aa) {
                        hic->buffer.jongseong = 0x11a8;
+                       pop = 0x11ba;
                    } else {
                        hic->buffer.jongseong = 0;
                    }
@@ -1030,7 +1142,7 @@ hangul_ic_process_romaja(HangulInputContext *hic, int ascii, ucschar ch)
                    }
                } else {
                    ucschar choseong = 0, jongseong = 0; 
-                   hangul_jongseong_dicompose(hic->buffer.jongseong,
+                   hangul_jongseong_decompose(hic->buffer.jongseong,
                                               &jongseong, &choseong);
                    hic->buffer.jongseong = jongseong;
                    hangul_ic_save_commit_string(hic);
@@ -1046,7 +1158,7 @@ hangul_ic_process_romaja(HangulInputContext *hic, int ascii, ucschar ch)
     } else if (hic->buffer.jungseong) {
        if (hangul_is_choseong(ch)) {
            if (hic->buffer.choseong) {
-               jong = hangul_choseong_to_jongseong(ch);
+               jong = hangul_ic_choseong_to_jongseong(hic, ch);
                if (hangul_is_jongseong(jong)) {
                    if (!hangul_ic_push(hic, jong)) {
                        if (!hangul_ic_push(hic, ch)) {
@@ -1067,7 +1179,7 @@ hangul_ic_process_romaja(HangulInputContext *hic, int ascii, ucschar ch)
                }
            }
        } else if (hangul_is_jungseong(ch)) {
-           combined = hangul_combination_combine(hic->combination,
+           combined = hangul_combination_combine(hic->keyboard->combination,
                                                  hic->buffer.jungseong, ch);
            if (hangul_is_jungseong(combined)) {
                if (!hangul_ic_push(hic, combined)) {
@@ -1091,7 +1203,7 @@ hangul_ic_process_romaja(HangulInputContext *hic, int ascii, ucschar ch)
        }
     } else if (hic->buffer.choseong) {
        if (hangul_is_choseong(ch)) {
-           combined = hangul_combination_combine(hic->combination,
+           combined = hangul_combination_combine(hic->keyboard->combination,
                                                  hic->buffer.choseong, ch);
            if (combined == 0) {
                hic->buffer.jungseong = 0x1173;
@@ -1147,7 +1259,7 @@ flush:
  * @brief 키 입력을 처리하여 실제로 한글 조합을 하는 함수
  * @param hic @ref HangulInputContext 오브젝트
  * @param ascii 키 이벤트
- * @return @ref HangulInputContext가 이 키를 사용했으면 true,
+ * @return @ref HangulInputContext 가 이 키를 사용했으면 true,
  *          사용하지 않았으면 false
  *
  * ascii 값으로 주어진 키 이벤트를 받아서 내부의 한글 조합 상태를
@@ -1166,7 +1278,7 @@ flush:
  * 
  * 이 함수의 사용법에 대한 설명은 @ref hangulicusage 부분을 참조한다.
  *
- * @remarks 이 함수는 @ref HangulInputContext의 상태를 변화 시킨다.
+ * @remarks 이 함수는 @ref HangulInputContext 의 상태를 변화 시킨다.
  */
 bool
 hangul_ic_process(HangulInputContext *hic, int ascii)
@@ -1201,7 +1313,7 @@ hangul_ic_process(HangulInputContext *hic, int ascii)
  * 이 함수는  @a hic 내부의 현재 상태의 preedit string을 리턴한다.
  * 따라서 hic가 다른 키 이벤트를 처리하고 나면 그 내용이 바뀔 수 있다.
  * 
- * @remarks 이 함수는 @ref HangulInputContext의 상태를 변화 시키지 않는다.
+ * @remarks 이 함수는 @ref HangulInputContext 의 상태를 변화 시키지 않는다.
  */
 const ucschar*
 hangul_ic_get_preedit_string(HangulInputContext *hic)
@@ -1222,7 +1334,7 @@ hangul_ic_get_preedit_string(HangulInputContext *hic)
  * 이 함수는  @a hic 내부의 현재 상태의 commit string을 리턴한다.
  * 따라서 hic가 다른 키 이벤트를 처리하고 나면 그 내용이 바뀔 수 있다.
  *
- * @remarks 이 함수는 @ref HangulInputContext의 상태를 변화 시키지 않는다.
+ * @remarks 이 함수는 @ref HangulInputContext 의 상태를 변화 시키지 않는다.
  */
 const ucschar*
 hangul_ic_get_commit_string(HangulInputContext *hic)
@@ -1235,17 +1347,17 @@ hangul_ic_get_commit_string(HangulInputContext *hic)
 
 /**
  * @ingroup hangulic
- * @brief @ref HangulInputContext를 초기상태로 되돌리는 함수
- * @param hic @ref HangulInputContext를 가리키는 포인터
+ * @brief @ref HangulInputContext 를 초기상태로 되돌리는 함수
+ * @param hic @ref HangulInputContext 를 가리키는 포인터
  * 
- * 이 함수는 @a hic가 가리키는 @ref HangulInputContext의 상태를 
+ * 이 함수는 @a hic가 가리키는 @ref HangulInputContext 의 상태를 
  * 처음 상태로 되돌린다. preedit 스트링, commit 스트링, flush 스트링이
  * 없어지고, 입력되었던 키에 대한 기록이 없어진다.
  * 영어 상태로 바뀌는 것이 아니다.
  *
  * 비교: hangul_ic_flush()
  *
- * @remarks 이 함수는 @ref HangulInputContext의 상태를 변화 시킨다.
+ * @remarks 이 함수는 @ref HangulInputContext 의 상태를 변화 시킨다.
  */
 void
 hangul_ic_reset(HangulInputContext *hic)
@@ -1273,12 +1385,12 @@ hangul_ic_flush_internal(HangulInputContext *hic)
 
 /**
  * @ingroup hangulic
- * @brief @ref HangulInputContext의 입력 상태를 완료하는 함수
- * @param hic @ref HangulInputContext를 가리키는 포인터
+ * @brief @ref HangulInputContext 의 입력 상태를 완료하는 함수
+ * @param hic @ref HangulInputContext 를 가리키는 포인터
  * @return 조합 완료된 스트링, 스트링의 길이가 0이면 조합 완료된 스트링이 
  *       없는 것
  *
- * 이 함수는 @a hic가 가리키는 @ref HangulInputContext의 입력 상태를 완료한다.
+ * 이 함수는 @a hic가 가리키는 @ref HangulInputContext 의 입력 상태를 완료한다.
  * 조합중이던 스트링을 완성하여 리턴한다. 그리고 입력 상태가 초기 상태로 
  * 되돌아 간다. 조합중이던 글자를 강제로 commit하고 싶을때 사용하는 함수다.
  * 보통의 경우 입력 framework에서 focus가 나갈때 이 함수를 불러서 마지막 
@@ -1286,7 +1398,7 @@ hangul_ic_flush_internal(HangulInputContext *hic)
  *
  * 비교: hangul_ic_reset()
  *
- * @remarks 이 함수는 @ref HangulInputContext의 상태를 변화 시킨다.
+ * @remarks 이 함수는 @ref HangulInputContext 의 상태를 변화 시킨다.
  */
 const ucschar*
 hangul_ic_flush(HangulInputContext *hic)
@@ -1314,16 +1426,16 @@ hangul_ic_flush(HangulInputContext *hic)
 
 /**
  * @ingroup hangulic
- * @brief @ref HangulInputContext가 backspace 키를 처리하도록 하는 함수
- * @param hic @ref HangulInputContext를 가리키는 포인터
+ * @brief @ref HangulInputContext 가 backspace 키를 처리하도록 하는 함수
+ * @param hic @ref HangulInputContext 를 가리키는 포인터
  * @return @a hic가 키를 사용했으면 true, 사용하지 않았으면 false
  * 
- * 이 함수는 @a hic가 가리키는 @ref HangulInputContext의 조합중이던 글자를
+ * 이 함수는 @a hic가 가리키는 @ref HangulInputContext 의 조합중이던 글자를
  * 뒤에서부터 하나 지우는 기능을 한다. backspace 키를 눌렀을 때 발생하는 
  * 동작을 한다. 따라서 이 함수를 부르고 나면 preedit string이 바뀌므로
  * 반드시 업데이트를 해야 한다.
  *
- * @remarks 이 함수는 @ref HangulInputContext의 상태를 변화 시킨다.
+ * @remarks 이 함수는 @ref HangulInputContext 의 상태를 변화 시킨다.
  */
 bool
 hangul_ic_backspace(HangulInputContext *hic)
@@ -1342,120 +1454,14 @@ hangul_ic_backspace(HangulInputContext *hic)
     return ret;
 }
 
-int
-hangul_ic_dvorak_to_qwerty(int qwerty)
-{
-    static const int table[] = {
-       '!',    /* ! */
-       'Q',    /* " */
-       '#',    /* # */
-       '$',    /* $ */
-       '%',    /* % */
-       '&',    /* & */
-       'q',    /* ' */
-       '(',    /* ( */
-       ')',    /* ) */
-       '*',    /* * */
-       '}',    /* + */
-       'w',    /* , */
-       '\'',   /* - */
-       'e',    /* . */
-       '[',    /* / */
-       '0',    /* 0 */
-       '1',    /* 1 */
-       '2',    /* 2 */
-       '3',    /* 3 */
-       '4',    /* 4 */
-       '5',    /* 5 */
-       '6',    /* 6 */
-       '7',    /* 7 */
-       '8',    /* 8 */
-       '9',    /* 9 */
-       'Z',    /* : */
-       'z',    /* ; */
-       'W',    /* < */
-       ']',    /* = */
-       'E',    /* > */
-       '{',    /* ? */
-       '@',    /* @ */
-       'A',    /* A */
-       'N',    /* B */
-       'I',    /* C */
-       'H',    /* D */
-       'D',    /* E */
-       'Y',    /* F */
-       'U',    /* G */
-       'J',    /* H */
-       'G',    /* I */
-       'C',    /* J */
-       'V',    /* K */
-       'P',    /* L */
-       'M',    /* M */
-       'L',    /* N */
-       'S',    /* O */
-       'R',    /* P */
-       'X',    /* Q */
-       'O',    /* R */
-       ':',    /* S */
-       'K',    /* T */
-       'F',    /* U */
-       '>',    /* V */
-       '<',    /* W */
-       'B',    /* X */
-       'T',    /* Y */
-       '?',    /* Z */
-       '-',    /* [ */
-       '\\',   /* \ */
-       '=',    /* ] */
-       '^',    /* ^ */
-       '"',    /* _ */
-       '`',    /* ` */
-       'a',    /* a */
-       'n',    /* b */
-       'i',    /* c */
-       'h',    /* d */
-       'd',    /* e */
-       'y',    /* f */
-       'u',    /* g */
-       'j',    /* h */
-       'g',    /* i */
-       'c',    /* j */
-       'v',    /* k */
-       'p',    /* l */
-       'm',    /* m */
-       'l',    /* n */
-       's',    /* o */
-       'r',    /* p */
-       'x',    /* q */
-       'o',    /* r */
-       ';',    /* s */
-       'k',    /* t */
-       'f',    /* u */
-       '.',    /* v */
-       ',',    /* w */
-       'b',    /* x */
-       't',    /* y */
-       '/',    /* z */
-       '_',    /* { */
-       '|',    /* | */
-       '+',    /* } */
-       '~'     /* ~ */
-    };
-
-    if (qwerty >= '!' && qwerty <= '~')
-       return table[qwerty - '!'];
-
-    return qwerty;
-}
-
 /**
  * @ingroup hangulic
- * @brief @ref HangulInputContext가 조합중인 글자를 가지고 있는지 확인하는 함수
- * @param hic @ref HangulInputContext를 가리키는 포인터
+ * @brief @ref HangulInputContext 가 조합중인 글자를 가지고 있는지 확인하는 함수
+ * @param hic @ref HangulInputContext 를 가리키는 포인터
  *
- * @ref HangulInputContext가 조합중인 글자가 있으면 true를 리턴한다.
+ * @ref HangulInputContext 가 조합중인 글자가 있으면 true를 리턴한다.
  *
- * @remarks 이 함수는 @ref HangulInputContext의 상태를 변화 시키지 않는다.
+ * @remarks 이 함수는 @ref HangulInputContext 의 상태를 변화 시키지 않는다.
  */
 bool
 hangul_ic_is_empty(HangulInputContext *hic)
@@ -1465,12 +1471,12 @@ hangul_ic_is_empty(HangulInputContext *hic)
 
 /**
  * @ingroup hangulic
- * @brief @ref HangulInputContext가 조합중인 초성을 가지고 있는지 확인하는 함수
- * @param hic @ref HangulInputContext를 가리키는 포인터
+ * @brief @ref HangulInputContext 가 조합중인 초성을 가지고 있는지 확인하는 함수
+ * @param hic @ref HangulInputContext 를 가리키는 포인터
  *
- * @ref HangulInputContext가 조합중인 글자가 초성이 있으면 true를 리턴한다.
+ * @ref HangulInputContext 가 조합중인 글자가 초성이 있으면 true를 리턴한다.
  *
- * @remarks 이 함수는 @ref HangulInputContext의 상태를 변화 시키지 않는다.
+ * @remarks 이 함수는 @ref HangulInputContext 의 상태를 변화 시키지 않는다.
  */
 bool
 hangul_ic_has_choseong(HangulInputContext *hic)
@@ -1480,12 +1486,12 @@ hangul_ic_has_choseong(HangulInputContext *hic)
 
 /**
  * @ingroup hangulic
- * @brief @ref HangulInputContext가 조합중인 중성을 가지고 있는지 확인하는 함수
- * @param hic @ref HangulInputContext를 가리키는 포인터
+ * @brief @ref HangulInputContext 가 조합중인 중성을 가지고 있는지 확인하는 함수
+ * @param hic @ref HangulInputContext 를 가리키는 포인터
  *
- * @ref HangulInputContext가 조합중인 글자가 중성이 있으면 true를 리턴한다.
+ * @ref HangulInputContext 가 조합중인 글자가 중성이 있으면 true를 리턴한다.
  *
- * @remarks 이 함수는 @ref HangulInputContext의 상태를 변화 시키지 않는다.
+ * @remarks 이 함수는 @ref HangulInputContext 의 상태를 변화 시키지 않는다.
  */
 bool
 hangul_ic_has_jungseong(HangulInputContext *hic)
@@ -1495,12 +1501,12 @@ hangul_ic_has_jungseong(HangulInputContext *hic)
 
 /**
  * @ingroup hangulic
- * @brief @ref HangulInputContext가 조합중인 종성을 가지고 있는지 확인하는 함수
- * @param hic @ref HangulInputContext를 가리키는 포인터
+ * @brief @ref HangulInputContext 가 조합중인 종성을 가지고 있는지 확인하는 함수
+ * @param hic @ref HangulInputContext 를 가리키는 포인터
  *
- * @ref HangulInputContext가 조합중인 글자가 종성이 있으면 true를 리턴한다.
+ * @ref HangulInputContext 가 조합중인 글자가 종성이 있으면 true를 리턴한다.
  *
- * @remarks 이 함수는 @ref HangulInputContext의 상태를 변화 시키지 않는다.
+ * @remarks 이 함수는 @ref HangulInputContext 의 상태를 변화 시키지 않는다.
  */
 bool
 hangul_ic_has_jongseong(HangulInputContext *hic)
@@ -1555,12 +1561,6 @@ void hangul_ic_connect_callback(HangulInputContext* hic, const char* event,
     }
 }
 
-void hangul_ic_set_filter(HangulInputContext *hic,
-                         HangulICFilter func, void *user_data)
-{
-    return;
-}
-
 void
 hangul_ic_set_keyboard(HangulInputContext *hic, const HangulKeyboard* keyboard)
 {
@@ -1570,71 +1570,64 @@ hangul_ic_set_keyboard(HangulInputContext *hic, const HangulKeyboard* keyboard)
     hic->keyboard = keyboard;
 }
 
+static const HangulKeyboard*
+hangul_ic_get_keyboard_by_id(const char* id)
+{
+    unsigned i;
+    unsigned n;
+
+    /* hangul_keyboards 테이블은 id 순으로 정렬되어 있지 않으므로
+     * binary search를 할수 없고 linear search를 한다. */
+    n = hangul_ic_get_n_keyboards();
+    for (i = 0; i < n; ++i) {
+       const HangulKeyboard* keyboard = hangul_keyboards[i];
+       if (strcmp(id, keyboard->id) == 0) {
+           return keyboard;
+       }
+    }
+
+    return NULL;
+}
+
 /**
  * @ingroup hangulic
- * @brief @ref HangulInputContext의 자판 배열을 바꾸는 함수
+ * @brief @ref HangulInputContext 의 자판 배열을 바꾸는 함수
  * @param hic @ref HangulInputContext 오브젝트
  * @param id 선택하고자 하는 자판, 아래와 같은 값을 선택할 수 있다.
- *         @li "2"   두벌식 자판
- *         @li "32"  세벌식 자판으로 두벌식의 배열을 가진 자판.
- *                   두벌식 사용자가 쉽게 세벌식 테스트를 할 수 있다.
- *                   shift를 누르면 자음이 종성으로 동작한다.
- *         @li "3f"  세벌식 최종
- *         @li "39"  세벌식 390
- *         @li "3s"  세벌식 순아래
- *         @li "3y"  세벌식 옛글
- *         @li "ro"  로마자 방식 자판
+ *   @li "2"   @ref layout_2 자판
+ *   @li "2y"  @ref layout_2y 자판
+ *   @li "3f"  @ref layout_3f 자판
+ *   @li "39"  @ref layout_390 자판
+ *   @li "3s"  @ref layout_3s 자판
+ *   @li "3y"  @ref layout_3y 자판
+ *   @li "32"  @ref layout_32 자판
+ *   @li "ro"  @ref layout_ro 자판
+ *
+ *   libhangul이 지원하는 자판에 대한 정보는 @ref hangulkeyboards 페이지를
+ *   참조하라.
  * @return 없음
  * 
- * 이 함수는 @ref HangulInputContext의 자판을 @a id로 지정된 것으로 변경한다.
+ * 이 함수는 @ref HangulInputContext 의 자판을 @a id로 지정된 것으로 변경한다.
  * 
- * @remarks 이 함수는 @ref HangulInputContext의 내부 조합 상태에는 영향을
+ * @remarks 이 함수는 @ref HangulInputContext 의 내부 조합 상태에는 영향을
  * 미치지 않는다.  따라서 입력 중간에 자판을 변경하더라도 조합 상태는 유지된다.
  */
 void
 hangul_ic_select_keyboard(HangulInputContext *hic, const char* id)
 {
+    const HangulKeyboard* keyboard;
+
     if (hic == NULL)
        return;
 
     if (id == NULL)
        id = "2";
 
-    if (strcmp(id, "32") == 0) {
-       hic->keyboard = &hangul_keyboard_32;
-       hic->combination = &hangul_combination_default;
-       hic->output_mode = HANGUL_OUTPUT_SYLLABLE;
-       hic->use_jamo_mode_only = FALSE;
-    } else if (strcmp(id, "39") == 0) {
-       hic->keyboard = &hangul_keyboard_390;
-       hic->combination = &hangul_combination_default;
-       hic->output_mode = HANGUL_OUTPUT_SYLLABLE;
-       hic->use_jamo_mode_only = FALSE;
-    } else if (strcmp(id, "3f") == 0) {
-       hic->keyboard = &hangul_keyboard_3final;
-       hic->combination = &hangul_combination_default;
-       hic->output_mode = HANGUL_OUTPUT_SYLLABLE;
-       hic->use_jamo_mode_only = FALSE;
-    } else if (strcmp(id, "3s") == 0) {
-       hic->keyboard = &hangul_keyboard_3sun;
-       hic->combination = &hangul_combination_default;
-       hic->output_mode = HANGUL_OUTPUT_SYLLABLE;
-       hic->use_jamo_mode_only = FALSE;
-    } else if (strcmp(id, "3y") == 0) {
-       hic->keyboard = &hangul_keyboard_3yet;
-       hic->combination = &hangul_combination_full;
-       hic->output_mode = HANGUL_OUTPUT_JAMO;
-       hic->use_jamo_mode_only = TRUE;
-    } else if (strcmp(id, "ro") == 0) {
-       hic->keyboard = &hangul_keyboard_romaja;
-       hic->combination = &hangul_combination_romaja;
-       hic->output_mode = HANGUL_OUTPUT_SYLLABLE;
-       hic->use_jamo_mode_only = FALSE;
+    keyboard = hangul_ic_get_keyboard_by_id(id);
+    if (keyboard != NULL) {
+       hic->keyboard = keyboard;
     } else {
        hic->keyboard = &hangul_keyboard_2;
-       hic->combination = &hangul_combination_default;
-       hic->output_mode = HANGUL_OUTPUT_SYLLABLE;
-       hic->use_jamo_mode_only = FALSE;
     }
 }
 
@@ -1642,10 +1635,6 @@ void
 hangul_ic_set_combination(HangulInputContext *hic,
                          const HangulCombination* combination)
 {
-    if (hic == NULL || combination == NULL)
-       return;
-
-    hic->combination = combination;
 }
 
 /**
@@ -1653,7 +1642,7 @@ hangul_ic_set_combination(HangulInputContext *hic,
  * @brief @ref HangulInputContext 오브젝트를 생성한다.
  * @param keyboard 사용하고자 하는 키보드, 사용 가능한 값에 대해서는
  *     hangul_ic_select_keyboard() 함수 설명을 참조한다.
- * @return 새로 생성된 @ref HangulInputContext에 대한 포인터
+ * @return 새로 생성된 @ref HangulInputContext 에 대한 포인터
  * 
  * 이 함수는 한글 조합 기능을 제공하는 @ref HangulInputContext 오브젝트를 
  * 생성한다. 생성할때 지정한 자판은 나중에 hangul_ic_select_keyboard() 함수로
@@ -1691,7 +1680,7 @@ hangul_ic_new(const char* keyboard)
 
 /**
  * @ingroup hangulic
- * @brief @ref HangulInputContext를 삭제하는 함수
+ * @brief @ref HangulInputContext 를 삭제하는 함수
  * @param hic @ref HangulInputContext 오브젝트
  * 
  * @a hic가 가리키는 @ref HangulInputContext 오브젝트의 메모리를 해제한다.
@@ -1708,3 +1697,65 @@ hangul_ic_delete(HangulInputContext *hic)
 
     free(hic);
 }
+
+unsigned int
+hangul_ic_get_n_keyboards()
+{
+    return N_ELEMENTS(hangul_keyboards);
+}
+
+const char*
+hangul_ic_get_keyboard_id(unsigned index_)
+{
+    if (index_ < N_ELEMENTS(hangul_keyboards)) {
+       return hangul_keyboards[index_]->id;
+    }
+
+    return NULL;
+}
+
+const char*
+hangul_ic_get_keyboard_name(unsigned index_)
+{
+#ifdef ENABLE_NLS
+    static bool isGettextInitialized = false;
+    if (!isGettextInitialized) {
+       isGettextInitialized = true;
+       bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);
+       bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
+    }
+#endif
+
+    if (index_ < N_ELEMENTS(hangul_keyboards)) {
+       return _(hangul_keyboards[index_]->name);
+    }
+
+    return NULL;
+}
+
+/**
+ * @ingroup hangulic
+ * @brief 주어진 hic가 transliteration method인지 판별
+ * @param hic 상태를 알고자 하는 HangulInputContext 포인터
+ * @return hic가 transliteration method인 경우 true를 리턴, 아니면 false
+ *
+ * 이 함수는 @a hic 가 transliteration method인지 판별하는 함수다.
+ * 이 함수가 false를 리턴할 경우에는 process 함수에 keycode를 넘기기 전에
+ * 키보드 자판 배열에 독립적인 값으로 변환한 후 넘겨야 한다.
+ * 그렇지 않으면 유럽어 자판과 한국어 자판을 같이 쓸때 한글 입력이 제대로
+ * 되지 않는다.
+ */
+bool
+hangul_ic_is_transliteration(HangulInputContext *hic)
+{
+    int type;
+
+    if (hic == NULL)
+       return false;
+
+    type = hangul_keyboard_get_type(hic->keyboard);
+    if (type == HANGUL_KEYBOARD_TYPE_ROMAJA)
+       return true;
+
+    return false;
+}
old mode 100755 (executable)
new mode 100644 (file)
index cd243a4..70f8857
@@ -3,4 +3,10 @@
 
 #define N_ELEMENTS(array) (sizeof (array) / sizeof ((array)[0]))
 
+ucschar hangul_jongseong_get_diff(ucschar prevjong, ucschar jong);
+
+ucschar hangul_choseong_to_jongseong(ucschar ch);
+ucschar hangul_jongseong_to_choseong(ucschar ch);
+void    hangul_jongseong_decompose(ucschar ch, ucschar* jong, ucschar* cho);
+
 #endif /* libhangul_hangulinternals_h */
index e3cccd4..7bdc27a 100644 (file)
@@ -129,6 +129,137 @@ static const ucschar hangul_keyboard_table_2[] = {
     0x0000      /* 0x7F delete                                       */
 };
 
+static const ucschar hangul_keyboard_table_2y[] = {
+    0x0000,     /* 0x00 null                                         */
+    0x0000,     /* 0x01 start of heading                             */
+    0x0000,     /* 0x02 start of text                                */
+    0x0000,     /* 0x03 end of text                                  */
+    0x0000,     /* 0x04 end of transmission                          */
+    0x0000,     /* 0x05 enquiry                                      */
+    0x0000,     /* 0x06 acknowledge                                  */
+    0x0000,     /* 0x07 bell                                         */
+    0x0000,     /* 0x08 backspace                                    */
+    0x0000,     /* 0x09 character tabulation                         */
+    0x0000,     /* 0x0A line feed (lf)                               */
+    0x0000,     /* 0x0B line tabulation                              */
+    0x0000,     /* 0x0C form feed (ff)                               */
+    0x0000,     /* 0x0D carriage return (cr)                         */
+    0x0000,     /* 0x0E shift out                                    */
+    0x0000,     /* 0x0F shift in                                     */
+    0x0000,     /* 0x10 data link escape                             */
+    0x0000,     /* 0x11 device control one                           */
+    0x0000,     /* 0x12 device control two                           */
+    0x0000,     /* 0x13 device control three                         */
+    0x0000,     /* 0x14 device control four                          */
+    0x0000,     /* 0x15 negative acknowledge                         */
+    0x0000,     /* 0x16 synchronous idle                             */
+    0x0000,     /* 0x17 end of transmission block                    */
+    0x0000,     /* 0x18 cancel                                       */
+    0x0000,     /* 0x19 end of medium                                */
+    0x0000,     /* 0x1A substitute                                   */
+    0x0000,     /* 0x1B escape                                       */
+    0x0000,     /* 0x1C information separator four                   */
+    0x0000,     /* 0x1D information separator three                  */
+    0x0000,     /* 0x1E information separator two                    */
+    0x0000,     /* 0x1F information separator one                    */
+    0x0000,     /* 0x20 space                                        */
+    0x0021,     /* 0x21 exclam:       exclamation mark               */
+    0x0022,     /* 0x22 quotedbl:     quotation mark                 */
+    0x0023,     /* 0x23 numbersign:   number sign                    */
+    0x0024,     /* 0x24 dollar:       dollar sign                    */
+    0x0025,     /* 0x25 percent:      percent sign                   */
+    0x0026,     /* 0x26 ampersand:    ampersand                      */
+    0x0027,     /* 0x27 apostrophe:   apostrophe                     */
+    0x0028,     /* 0x28 parenleft:    left parenthesis               */
+    0x0029,     /* 0x29 parenright:   right parenthesis              */
+    0x002a,     /* 0x2A asterisk:     asterisk                       */
+    0x002b,     /* 0x2B plus:         plus sign                      */
+    0x002c,     /* 0x2C comma:        comma                          */
+    0x002d,     /* 0x2D minus:        minus sign                     */
+    0x002e,     /* 0x2E period:       period                         */
+    0x002f,     /* 0x2F slash:        slash                          */
+    0x0030,     /* 0x30 0:            0                              */
+    0x0031,     /* 0x31 1:            1                              */
+    0x0032,     /* 0x32 2:            2                              */
+    0x0033,     /* 0x33 3:            3                              */
+    0x0034,     /* 0x34 4:            4                              */
+    0x0035,     /* 0x35 5:            5                              */
+    0x0036,     /* 0x36 6:            6                              */
+    0x0037,     /* 0x37 7:            7                              */
+    0x0038,     /* 0x38 8:            8                              */
+    0x0039,     /* 0x39 9:            9                              */
+    0x003a,     /* 0x3A colon:        colon                          */
+    0x003b,     /* 0x3B semicolon:    semicolon                      */
+    0x003c,     /* 0x3C less:         less-than sign                 */
+    0x003d,     /* 0x3D equal:        equals sign                    */
+    0x003e,     /* 0x3E greater:      greater-than sign              */
+    0x003f,     /* 0x3F question:     question mark                  */
+    0x0040,     /* 0x40 at:           commercial at                  */
+    0x1140,     /* 0x41 A:            choseong pansios               */
+    0x1154,     /* 0x42 B:            choseong chitueumchieuch       */
+    0x114e,     /* 0x43 C:            choseong chitueumcieuc         */
+    0x114c,     /* 0x44 D:            choseong yesieung              */
+    0x1104,     /* 0x45 E:            choseong ssangtikeut           */
+    0x111a,     /* 0x46 F:            choseong rieul-hieuh           */
+    0x1159,     /* 0x47 G:            choseong yeorinhieuh           */
+    0x1183,     /* 0x48 H:            jungseong o-u                  */
+    0x1163,     /* 0x49 I:            jungseong ya                   */
+    0x1165,     /* 0x4A J:            jungseong eo                   */
+    0x119e,     /* 0x4B K:            jungseong araea                */
+    0x1194,     /* 0x4C L:            jungseong yu-i                 */
+    0x1173,     /* 0x4D M:            jungseong eu                   */
+    0x1155,     /* 0x4E N:            choseong ceongchieumchieuch    */
+    0x1164,     /* 0x4F O:            jungseong yae                  */
+    0x1168,     /* 0x50 P:            jungseong ye                   */
+    0x1108,     /* 0x51 Q:            choseong ssangpieup            */
+    0x1101,     /* 0x52 R:            choseong ssangkiyeok           */
+    0x115d,     /* 0x53 S:            choseong nieun-hieuh           */
+    0x110a,     /* 0x54 T:            choseong ssangsios             */
+    0x1167,     /* 0x55 U:            jungseong yeo                  */
+    0x1150,     /* 0x56 V:            choseong ceongchieumcieuc      */
+    0x110d,     /* 0x57 W:            choseong ssangcieuc            */
+    0x113e,     /* 0x58 X:            choseong ceongchieumsios       */
+    0x116d,     /* 0x59 Y:            jungseong yo                   */
+    0x113c,     /* 0x5A Z:            choseong chitueumsios          */
+    0x005b,     /* 0x5B bracketleft:  left bracket                   */
+    0x005c,     /* 0x5C backslash:    backslash                      */
+    0x005d,     /* 0x5D bracketright: right bracket                  */
+    0x005e,     /* 0x5E asciicircum:  circumflex accent              */
+    0x005f,     /* 0x5F underscore:   underscore                     */
+    0x0060,     /* 0x60 quoteleft:    grave accent                   */
+    0x1106,     /* 0x61 a:            choseong  mieum                */
+    0x1172,     /* 0x62 b:            jungseong yu                   */
+    0x110e,     /* 0x63 c:            choseong  chieuch              */
+    0x110b,     /* 0x64 d:            choseong  ieung                */
+    0x1103,     /* 0x65 e:            choseong  tikeut               */
+    0x1105,     /* 0x66 f:            choseong  rieul                */
+    0x1112,     /* 0x67 g:            choseong  hieuh                */
+    0x1169,     /* 0x68 h:            jungseong o                    */
+    0x1163,     /* 0x69 i:            jungseong ya                   */
+    0x1165,     /* 0x6A j:            jungseong eo                   */
+    0x1161,     /* 0x6B k:            jungseong a                    */
+    0x1175,     /* 0x6C l:            jungseong i                    */
+    0x1173,     /* 0x6D m:            jungseong eu                   */
+    0x116e,     /* 0x6E n:            jungseong u                    */
+    0x1162,     /* 0x6F o:            jungseong ae                   */
+    0x1166,     /* 0x70 p:            jungseong e                    */
+    0x1107,     /* 0x71 q:            choseong  pieup                */
+    0x1100,     /* 0x72 r:            choseong  kiyeok               */
+    0x1102,     /* 0x73 s:            choseong  nieun                */
+    0x1109,     /* 0x74 t:            choseong  sios                 */
+    0x1167,     /* 0x75 u:            jungseong yeo                  */
+    0x1111,     /* 0x76 v:            choseong  phieuph              */
+    0x110c,     /* 0x77 w:            choseong  cieuc                */
+    0x1110,     /* 0x78 x:            choseong  thieuth              */
+    0x116d,     /* 0x79 y:            jungseong yo                   */
+    0x110f,     /* 0x7A z:            choseong  khieukh              */
+    0x007b,     /* 0x7B braceleft:    left brace                     */
+    0x007c,     /* 0x7C bar:          vertical bar                   */
+    0x007d,     /* 0x7D braceright:   right brace                    */
+    0x007e,     /* 0x7E asciitilde:   tilde                          */
+    0x0000      /* 0x7F delete                                       */
+};
+
 static const ucschar hangul_keyboard_table_32[] = {
     0x0000,     /* 0x00 null                                         */
     0x0000,     /* 0x01 start of heading                             */
@@ -720,13 +851,13 @@ static const ucschar hangul_keyboard_table_3yet[] = {
     0x003f,     /* 0x3F question:       question mark                */
     0x11eb,     /* 0x40 at:             jongseong pansios            */
     0x11ae,     /* 0x41 A:              jongseong tikeut             */
-    0x116e,     /* 0x42 B:              jungseong u                  */
+    0x0021,     /* 0x42 B:              exclamation mark             */
     0x11b1,     /* 0x43 C:              jongseong rieul-mieum        */
     0x11b0,     /* 0x44 D:              jongseong rieul-kiyeok       */
     0x11bf,     /* 0x45 E:              jongseong khieukh            */
     0x11a9,     /* 0x46 F:              jongseong ssangkiyeok        */
     0x119e,     /* 0x47 G:              jungseong araea              */
-    0x1102,     /* 0x48 H:              choseong nieun               */
+    0x0027,     /* 0x48 H:              apostrophe                   */
     0x1154,     /* 0x49 I:              choseong chitueumchieuch     */
     0x114c,     /* 0x4A J:              choseong yesieung            */
     0x114e,     /* 0x4B K:              choseong chitueumcieuc       */
@@ -734,21 +865,21 @@ static const ucschar hangul_keyboard_table_3yet[] = {
     0x1159,     /* 0x4D M:              choseong yeorinhieuh         */
     0x1140,     /* 0x4E N:              choseong pansios             */
     0x1155,     /* 0x4F O:              choseong ceongchieumchieuch  */
-    0x1111,     /* 0x50 P:              choseong phieuph             */
+    0x003e,     /* 0x50 P:              greater-than sign            */
     0x11c1,     /* 0x51 Q:              jongseong phieuph            */
     0x1164,     /* 0x52 R:              jungseong yae                */
     0x11ad,     /* 0x53 S:              jongseong nieun-hieuh        */
-    0x1165,     /* 0x54 T:              jungseong eo                 */
-    0x302e,     /* 0x55 U:              single dot tone mark         */
+    0x003b,     /* 0x54 T:              semicolon                    */
+    0x00b7,     /* 0x55 U:              middle dot                   */
     0x11b6,     /* 0x56 V:              jongseong rieul-hieuh        */
     0x11c0,     /* 0x57 W:              jongseong thikeuth           */
     0x11b9,     /* 0x58 X:              jongseong pieup-sios         */
-    0x302f,     /* 0x59 Y:              double dot tone mark         */
+    0x003c,     /* 0x59 Y:              less-than sign               */
     0x11be,     /* 0x5A Z:              jongseong chieuch            */
     0x005b,     /* 0x5B bracketleft:    left bracket                 */
     0x005c,     /* 0x5C backslash:      backslash                    */
     0x005d,     /* 0x5D bracketright:   right bracket                */
-    0x005e,     /* 0x5E asciicircum:    circumflex accent            */
+    0x114c,     /* 0x5E asciicircum:    choseong yesieung            */
     0x005f,     /* 0x5F underscore:     underscore                   */
     0x11f9,     /* 0x60 quoteleft:      jongseong yeorinhieuh        */
     0x11bc,     /* 0x61 a:              jongseong ieung              */
@@ -915,6 +1046,137 @@ static const ucschar hangul_keyboard_table_romaja[] = {
     0x0000      /* 0x7F delete                                       */
 };
 
+static const ucschar hangul_keyboard_table_ahn[] = {
+    0x0000,     /* 0x00 null                                         */
+    0x0000,     /* 0x01 start of heading                             */
+    0x0000,     /* 0x02 start of text                                */
+    0x0000,     /* 0x03 end of text                                  */
+    0x0000,     /* 0x04 end of transmission                          */
+    0x0000,     /* 0x05 enquiry                                      */
+    0x0000,     /* 0x06 acknowledge                                  */
+    0x0000,     /* 0x07 bell                                         */
+    0x0000,     /* 0x08 backspace                                    */
+    0x0000,     /* 0x09 character tabulation                         */
+    0x0000,     /* 0x0A line feed (lf)                               */
+    0x0000,     /* 0x0B line tabulation                              */
+    0x0000,     /* 0x0C form feed (ff)                               */
+    0x0000,     /* 0x0D carriage return (cr)                         */
+    0x0000,     /* 0x0E shift out                                    */
+    0x0000,     /* 0x0F shift in                                     */
+    0x0000,     /* 0x10 data link escape                             */
+    0x0000,     /* 0x11 device control one                           */
+    0x0000,     /* 0x12 device control two                           */
+    0x0000,     /* 0x13 device control three                         */
+    0x0000,     /* 0x14 device control four                          */
+    0x0000,     /* 0x15 negative acknowledge                         */
+    0x0000,     /* 0x16 synchronous idle                             */
+    0x0000,     /* 0x17 end of transmission block                    */
+    0x0000,     /* 0x18 cancel                                       */
+    0x0000,     /* 0x19 end of medium                                */
+    0x0000,     /* 0x1A substitute                                   */
+    0x0000,     /* 0x1B escape                                       */
+    0x0000,     /* 0x1C information separator four                   */
+    0x0000,     /* 0x1D information separator three                  */
+    0x0000,     /* 0x1E information separator two                    */
+    0x0000,     /* 0x1F information separator one                    */
+    0x0000,     /* 0x20 space                                        */
+    0x0021,     /* 0x21 exclam:       exclamation mark               */
+    0x0022,     /* 0x22 quotedbl:     quotation mark                 */
+    0x0023,     /* 0x23 numbersign:   number sign                    */
+    0x0024,     /* 0x24 dollar:       dollar sign                    */
+    0x0025,     /* 0x25 percent:      percent sign                   */
+    0x0026,     /* 0x26 ampersand:    ampersand                      */
+    0x002e,     /* 0x27 apostrophe:   period                         */
+    0x0028,     /* 0x28 parenleft:    left parenthesis               */
+    0x0029,     /* 0x29 parenright:   right parenthesis              */
+    0x002a,     /* 0x2A asterisk:     asterisk                       */
+    0x002b,     /* 0x2B plus:         plus sign                      */
+    0x11b7,     /* 0x2C comma:        jongseong mieum                */
+    0x002d,     /* 0x2D minus:        minus sign                     */
+    0x11af,     /* 0x2E period:       jongseong rieul                */
+    0x11c2,     /* 0x2F slash:        jongseong hieuh                */
+    0x0030,     /* 0x30 0:            0                              */
+    0x0031,     /* 0x31 1:            1                              */
+    0x0032,     /* 0x32 2:            2                              */
+    0x0033,     /* 0x33 3:            3                              */
+    0x0034,     /* 0x34 4:            4                              */
+    0x0035,     /* 0x35 5:            5                              */
+    0x0036,     /* 0x36 6:            6                              */
+    0x0037,     /* 0x37 7:            7                              */
+    0x0038,     /* 0x38 8:            8                              */
+    0x0039,     /* 0x39 9:            9                              */
+    0x003a,     /* 0x3A colon:        colon                          */
+    0x116e,     /* 0x3B semicolon:    jungseong u                    */
+    0x003c,     /* 0x3C less:         less-than sign                 */
+    0x003d,     /* 0x3D equal:        equals sign                    */
+    0x003e,     /* 0x3E greater:      greater-than sign              */
+    0x11f9,     /* 0x3F question:     jongseong yeorinhieuh          */
+    0x0040,     /* 0x40 at:           commercial at                  */
+    0x1107,     /* 0x41 A:            choseong pieup                 */
+    0x11f0,     /* 0x42 B:            jongseong yesieung             */
+    0x11b8,     /* 0x43 C:            jongseong pieup                */
+    0x1103,     /* 0x44 D:            choseong tikeut                */
+    0x1102,     /* 0x45 E:            choseong nieun                 */
+    0x1100,     /* 0x46 F:            choseong kiyeok                */
+    0x114c,     /* 0x47 G:            choseong yesieung              */
+    0x1165,     /* 0x48 H:            jungseong eo                   */
+    0x002f,     /* 0x49 I:            slash                          */
+    0x119e,     /* 0x4A J:            jungseong araea                */
+    0x1175,     /* 0x4B K:            jungseong i                    */
+    0x1169,     /* 0x4C L:            jungseong o                    */
+    0x11ab,     /* 0x4D M:            jongseong nienu                */
+    0x11eb,     /* 0x4E N:            jongseung pansios              */
+    0x005b,     /* 0x4F O:            left bracket                   */
+    0x005d,     /* 0x50 P:            right bracket                  */
+    0x1106,     /* 0x51 Q:            choseong mieum                 */
+    0x1105,     /* 0x52 R:            choseong rieul                 */
+    0x110c,     /* 0x53 S:            choseong cieuc                 */
+    0x1159,     /* 0x54 T:            choseong yeorinhieuh           */
+    0x0027,     /* 0x55 U:            apostrophe                     */
+    0x11a8,     /* 0x56 V:            jongseong kiyeok               */
+    0x1140,     /* 0x57 W:            choseong pansios               */
+    0x11ae,     /* 0x58 X:            jongseong tikeut               */
+    0x003b,     /* 0x59 Y:            semicolon                      */
+    0x11bd,     /* 0x5A Z:            jongseong cieuc                */
+    0x002c,     /* 0x5B bracketleft:  comma                          */
+    0x005c,     /* 0x5C backslash:    backslash                      */
+    0x003f,     /* 0x5D bracketright: qustion mark                   */
+    0x005e,     /* 0x5E asciicircum:  circumflex accent              */
+    0x005f,     /* 0x5F underscore:   underscore                     */
+    0x0060,     /* 0x60 quoteleft:    grave accent                   */
+    0x1107,     /* 0x61 a:            choseong  pieup                */
+    0x11bc,     /* 0x62 b:            jongseong ieung                */
+    0x11b8,     /* 0x63 c:            jongseong pieup                */
+    0x1103,     /* 0x64 d:            choseong  tikeut               */
+    0x1102,     /* 0x65 e:            choseong nieun                 */
+    0x1100,     /* 0x66 f:            choseong kiyeok                */
+    0x110b,     /* 0x67 g:            choseong ieung                 */
+    0x1165,     /* 0x68 h:            jungseong eo                   */
+    0x1173,     /* 0x69 i:            jungseong eu                   */
+    0x1161,     /* 0x6A j:            jungseong a                    */
+    0x1175,     /* 0x6B k:            jungseong i                    */
+    0x1169,     /* 0x6C l:            jungseong o                    */
+    0x11ab,     /* 0x6D m:            jongseong nieun                */
+    0x11ba,     /* 0x6E n:            jongseong sios                 */
+    0x116d,     /* 0x6F o:            jungseong yo                   */
+    0x1172,     /* 0x70 p:            jungseong yu                   */
+    0x1106,     /* 0x71 q:            choseong mieum                 */
+    0x1105,     /* 0x72 r:            choseong rieul                 */
+    0x110c,     /* 0x73 s:            choseong cieuc                 */
+    0x1112,     /* 0x74 t:            choseong hieuh                 */
+    0x1163,     /* 0x75 u:            jungseong ya                   */
+    0x11a8,     /* 0x76 v:            jongseong kiyok                */
+    0x1109,     /* 0x77 w:            choseong sios                  */
+    0x11ae,     /* 0x78 x:            jongseong tikeut               */
+    0x1167,     /* 0x79 y:            jungseong yeo                  */
+    0x11bd,     /* 0x7A z:            jongseong cieuc                */
+    0x007b,     /* 0x7B braceleft:    left brace                     */
+    0x007c,     /* 0x7C bar:          vertical bar                   */
+    0x007d,     /* 0x7D braceright:   right brace                    */
+    0x007e,     /* 0x7E asciitilde:   tilde                          */
+    0x0000      /* 0x7F delete                                       */
+};
+
 static const HangulCombinationItem hangul_combination_table_default[] = {
   { 0x11001100, 0x1101 }, /* choseong  kiyeok + kiyeok  = ssangkiyeok   */
   { 0x11031103, 0x1104 }, /* choseong  tikeut + tikeut  = ssangtikeut   */
@@ -992,191 +1254,439 @@ static const HangulCombinationItem hangul_combination_table_romaja[] = {
 };
 
 static const HangulCombinationItem hangul_combination_table_full[] = {
-  { 0x11001100, 0x1101 }, /* choseong ssangkiyeok           = kiyeok + kiyeok */
-  { 0x11021100, 0x1113 }, /* choseong nieun-kiyeok          = nieun + kiyeok */
-  { 0x11021102, 0x1114 }, /* choseong ssangnieun            = nieun + nieun */
-  { 0x11021103, 0x1115 }, /* choseong nieun-tikeut          = nieun + tikeut */
-  { 0x11021107, 0x1116 }, /* choseong nieun-pieup           = nieun + pieup */
-  { 0x11031100, 0x1117 }, /* choseong tikeut-kiyeok         = tikeut + kiyeok */
-  { 0x11031103, 0x1104 }, /* choseong ssangtikeut           = tikeut + tikeut */
-  { 0x11051102, 0x1118 }, /* choseong rieul-nieun           = rieul + nieun */
-  { 0x11051105, 0x1119 }, /* choseong ssangrieul            = rieul + rieul */
-  { 0x1105110b, 0x111b }, /* choseong kapyeounrieul         = rieul + ieung */
-  { 0x11051112, 0x111a }, /* choseong rieul-hieuh           = rieul + hieuh */
-  { 0x11061107, 0x111c }, /* choseong mieum-pieup           = mieum + pieup */
-  { 0x1106110b, 0x111d }, /* choseong kapyeounmieum         = mieum + ieung */
-  { 0x11071100, 0x111e }, /* choseong pieup-kiyeok          = pieup + kiyeok */
-  { 0x11071102, 0x111f }, /* choseong pieup-nieun           = pieup + nieun */
-  { 0x11071103, 0x1120 }, /* choseong pieup-tikeut          = pieup + tikeut */
-  { 0x11071107, 0x1108 }, /* choseong ssangpieup            = pieup + pieup */
-  { 0x11071109, 0x1121 }, /* choseong pieup-sios            = pieup + sios */
-  { 0x1107110b, 0x112b }, /* choseong kapyeounpieup         = pieup + ieung */
-  { 0x1107110c, 0x1127 }, /* choseong pieup-cieuc           = pieup + cieuc */
-  { 0x1107110e, 0x1128 }, /* choseong pieup-chieuch         = pieup + chieuch */
-  { 0x11071110, 0x1129 }, /* choseong pieup-thieuth         = pieup + thieuth */
-  { 0x11071111, 0x112a }, /* choseong pieup-phieuph         = pieup + phieuph */
-  { 0x1108110b, 0x112c }, /* choseong kapyeounssangpieup    = ssangpieup + ieung */
-  { 0x11091100, 0x112d }, /* choseong sios-kiyeok           = sios + kiyeok */
-  { 0x11091102, 0x112e }, /* choseong sios-nieun            = sios + nieun */
-  { 0x11091103, 0x112f }, /* choseong sios-tikeut           = sios + tikeut */
-  { 0x11091105, 0x1130 }, /* choseong sios-rieul            = sios + rieul */
-  { 0x11091106, 0x1131 }, /* choseong sios-mieum            = sios + mieum */
-  { 0x11091107, 0x1132 }, /* choseong sios-pieup            = sios + pieup */
-  { 0x11091109, 0x110a }, /* choseong ssangsios             = sios + sios */
-  { 0x1109110b, 0x1135 }, /* choseong sios-ieung            = sios + ieung */
-  { 0x1109110c, 0x1136 }, /* choseong sios-cieuc            = sios + cieuc */
-  { 0x1109110e, 0x1137 }, /* choseong sios-chieuch          = sios + chieuch */
-  { 0x1109110f, 0x1138 }, /* choseong sios-khieukh          = sios + khieukh */
-  { 0x11091110, 0x1139 }, /* choseong sios-thieuth          = sios + thieuth */
-  { 0x11091111, 0x113a }, /* choseong sios-phieuph          = sios + phieuph */
-  { 0x11091112, 0x113b }, /* choseong sios-hieuh            = sios + hieuh */
-  { 0x110a1109, 0x1134 }, /* choseong sios-ssangsios        = ssangsios + sios */
-  { 0x110b1100, 0x1141 }, /* choseong ieung-kiyeok          = ieung + kiyeok */
-  { 0x110b1103, 0x1142 }, /* choseong ieung-tikeut          = ieung + tikeut */
-  { 0x110b1106, 0x1143 }, /* choseong ieung-mieum           = ieung + mieum */
-  { 0x110b1107, 0x1144 }, /* choseong ieung-pieup           = ieung + pieup */
-  { 0x110b1109, 0x1145 }, /* choseong ieung-sios            = ieung + sios */
-  { 0x110b110b, 0x1147 }, /* choseong ssangieung            = ieung + ieung */
-  { 0x110b110c, 0x1148 }, /* choseong ieung-cieuc           = ieung + cieuc */
-  { 0x110b110e, 0x1149 }, /* choseong ieung-chieuch         = ieung + chieuch */
-  { 0x110b1110, 0x114a }, /* choseong ieung-thieuth         = ieung + thieuth */
-  { 0x110b1111, 0x114b }, /* choseong ieung-phieuph         = ieung + phieuph */
-  { 0x110b1140, 0x1146 }, /* choseong ieung-pansios         = ieung + pansios */
-  { 0x110c110b, 0x114d }, /* choseong cieuc-ieung           = cieuc + ieung */
-  { 0x110c110c, 0x110d }, /* choseong ssangcieuc            = cieuc + cieuc */
-  { 0x110e110f, 0x1152 }, /* choseong chieuch-khieukh       = chieuch + khieukh */
-  { 0x110e1112, 0x1153 }, /* choseong chieuch-hieuh         = chieuch + hieuh */
-  { 0x11111107, 0x1156 }, /* choseong phieuph-pieup         = phieuph + pieup */
-  { 0x1111110b, 0x1157 }, /* choseong kapyeounphieuph       = phieuph + ieung */
-  { 0x11121112, 0x1158 }, /* choseong ssanghieuh            = hieuh + hieuh */
-  { 0x11211100, 0x1122 }, /* choseong pieup-sios-kiyeok     = pieup-sios + kiyeok */
-  { 0x11211103, 0x1123 }, /* choseong pieup-sios-tikeut     = pieup-sios + tikeut */
-  { 0x11211107, 0x1124 }, /* choseong pieup-sios-pieup      = pieup-sios + pieup */
-  { 0x11211109, 0x1125 }, /* choseong pieup-ssangsios       = pieup-sios + sios */
-  { 0x1121110c, 0x1126 }, /* choseong pieup-sios-cieuc      = pieup-sios + cieuc */
-  { 0x11321100, 0x1133 }, /* choseong sios-pieup-kiyeok     = sios-pieup + kiyeok */
-  { 0x113c113c, 0x113d }, /* choseong chitueumssangsios     = chitueumsios + chitueumsios */
-  { 0x113e113e, 0x113f }, /* choseong ceongchieumssangsios  = ceongchieumsios + ceongchieumsios */
-  { 0x114e114e, 0x114f }, /* choseong chitueumssangcieuc    = chitueumcieuc + chitueumcieuc */
-  { 0x11501150, 0x1151 }, /* choseong ceongchieumssangcieuc = ceongchieumcieuc + ceongchieumcieuc */
-  { 0x11611169, 0x1176 }, /* jungseong a-o                  = a + o */
-  { 0x1161116e, 0x1177 }, /* jungseong a-u                  = a + u */
-  { 0x11611175, 0x1162 }, /* jungseong ae                   = a */
-  { 0x11631169, 0x1178 }, /* jungseong ya-o                 = ya + o */
-  { 0x1163116d, 0x1179 }, /* jungseong ya-yo                = ya + yo */
-  { 0x11631175, 0x1164 }, /* jungseong yae                  = ya */
-  { 0x11651169, 0x117a }, /* jungseong eo-o                 = eo + o */
-  { 0x1165116e, 0x117b }, /* jungseong eo-u                 = eo + u */
-  { 0x11651173, 0x117c }, /* jungseong eo-eu                = eo + eu */
-  { 0x11651175, 0x1166 }, /* jungseong e                    = eo */
-  { 0x11671169, 0x117d }, /* jungseong yeo-o                = yeo + o */
-  { 0x1167116e, 0x117e }, /* jungseong yeo-u                = yeo + u */
-  { 0x11671175, 0x1168 }, /* jungseong ye                   = yeo */
-  { 0x11691161, 0x116a }, /* jungseong wa                   = o + a */
-  { 0x11691165, 0x117f }, /* jungseong o-eo                 = o + eo */
-  { 0x11691166, 0x1180 }, /* jungseong o-e                  = o + e */
-  { 0x11691168, 0x1181 }, /* jungseong o-ye                 = o + ye */
-  { 0x11691169, 0x1182 }, /* jungseong o-o                  = o + o */
-  { 0x1169116e, 0x1183 }, /* jungseong o-u                  = o + u */
-  { 0x11691175, 0x116c }, /* jungseong oe                   = o */
-  { 0x116a1175, 0x116b }, /* jungseong wae                  = wa */
-  { 0x116d1163, 0x1184 }, /* jungseong yo-ya                = yo + ya */
-  { 0x116d1164, 0x1185 }, /* jungseong yo-yae               = yo + yae */
-  { 0x116d1167, 0x1186 }, /* jungseong yo-yeo               = yo + yeo */
-  { 0x116d1169, 0x1187 }, /* jungseong yo-o                 = yo + o */
-  { 0x116d1175, 0x1188 }, /* jungseong yo-i                 = yo + i */
-  { 0x116e1161, 0x1189 }, /* jungseong u-a                  = u + a */
-  { 0x116e1162, 0x118a }, /* jungseong u-ae                 = u + ae */
-  { 0x116e1165, 0x116f }, /* jungseong weo                  = u + eo */
-  { 0x116e1168, 0x118c }, /* jungseong u-ye                 = u + ye */
-  { 0x116e116e, 0x118d }, /* jungseong u-u                  = u + u */
-  { 0x116e1175, 0x1171 }, /* jungseong wi                   = u */
-  { 0x116f1173, 0x118b }, /* jungseong u-eo-eu              = weo + eu */
-  { 0x116f1175, 0x1170 }, /* jungseong we                   = weo */
-  { 0x11721161, 0x118e }, /* jungseong yu-a                 = yu + a */
-  { 0x11721165, 0x118f }, /* jungseong yu-eo                = yu + eo */
-  { 0x11721166, 0x1190 }, /* jungseong yu-e                 = yu + e */
-  { 0x11721167, 0x1191 }, /* jungseong yu-yeo               = yu + yeo */
-  { 0x11721168, 0x1192 }, /* jungseong yu-ye                = yu + ye */
-  { 0x1172116e, 0x1193 }, /* jungseong yu-u                 = yu + u */
-  { 0x11721175, 0x1194 }, /* jungseong yu-i                 = yu + i */
-  { 0x1173116e, 0x1195 }, /* jungseong eu-u                 = eu + u */
-  { 0x11731173, 0x1196 }, /* jungseong eu-eu                = eu + eu */
-  { 0x11731175, 0x1174 }, /* jungseong yi                   = eu */
-  { 0x1174116e, 0x1197 }, /* jungseong yi-u                 = yi + u */
-  { 0x11751161, 0x1198 }, /* jungseong i-a                  = i + a */
-  { 0x11751163, 0x1199 }, /* jungseong i-ya                 = i + ya */
-  { 0x11751169, 0x119a }, /* jungseong i-o                  = i + o */
-  { 0x1175116e, 0x119b }, /* jungseong i-u                  = i + u */
-  { 0x11751173, 0x119c }, /* jungseong i-eu                 = i + eu */
-  { 0x1175119e, 0x119d }, /* jungseong i-araea              = i */
-  { 0x119e1165, 0x119f }, /* jungseong araea-eo             = araea + eo */
-  { 0x119e116e, 0x11a0 }, /* jungseong araea-u              = araea + u */
-  { 0x119e1175, 0x11a1 }, /* jungseong araea-i              = araea + i */
-  { 0x119e119e, 0x11a2 }, /* jungseong ssangaraea           = araea + araea */
-  { 0x11a811a8, 0x11a9 }, /* jongseong ssangkiyeok          = kiyeok + kiyeok */
-  { 0x11a811af, 0x11c3 }, /* jongseong kiyeok-rieul         = kiyeok + rieul */
-  { 0x11a811ba, 0x11aa }, /* jongseong kiyeok-sios          = kiyeok */
-  { 0x11aa11a8, 0x11c4 }, /* jongseong kiyeok-sios-kiyeok   = kiyeok-sios + kiyeok */
-  { 0x11ab11a8, 0x11c5 }, /* jongseong nieun-kiyeok         = nieun + kiyeok */
-  { 0x11ab11ae, 0x11c6 }, /* jongseong nieun-tikeut         = nieun + tikeut */
-  { 0x11ab11ba, 0x11c7 }, /* jongseong nieun-sios           = nieun + sios */
-  { 0x11ab11bd, 0x11ac }, /* jongseong nieun-cieuc          = nieun */
-  { 0x11ab11c0, 0x11c9 }, /* jongseong nieun-thieuth        = nieun + thieuth */
-  { 0x11ab11c2, 0x11ad }, /* jongseong nieun-hieuh          = nieun */
-  { 0x11ab11eb, 0x11c8 }, /* jongseong nieun-pansios        = nieun */
-  { 0x11ae11a8, 0x11ca }, /* jongseong tikeut-kiyeok        = tikeut + kiyeok */
-  { 0x11ae11af, 0x11cb }, /* jongseong tikeut-rieul         = tikeut + rieul */
-  { 0x11af11a8, 0x11b0 }, /* jongseong rieul-kiyeok         = rieul + kiyeok */
-  { 0x11af11ab, 0x11cd }, /* jongseong rieul-nieun          = rieul + nieun */
-  { 0x11af11ae, 0x11ce }, /* jongseong rieul-tikeut         = rieul + tikeut */
-  { 0x11af11af, 0x11d0 }, /* jongseong ssangrieul           = rieul + rieul */
-  { 0x11af11b7, 0x11b1 }, /* jongseong rieul-mieum          = rieul */
-  { 0x11af11b8, 0x11b2 }, /* jongseong rieul-pieup          = rieul */
-  { 0x11af11ba, 0x11b3 }, /* jongseong rieul-sios           = rieul */
-  { 0x11af11bf, 0x11d8 }, /* jongseong rieul-khieukh        = rieul + khieukh */
-  { 0x11af11c0, 0x11b4 }, /* jongseong rieul-thieuth        = rieul */
-  { 0x11af11c1, 0x11b5 }, /* jongseong rieul-phieuph        = rieul */
-  { 0x11af11c2, 0x11b6 }, /* jongseong rieul-hieuh          = rieul */
-  { 0x11af11eb, 0x11d7 }, /* jongseong rieul-pansios        = rieul */
-  { 0x11af11f9, 0x11d9 }, /* jongseong rieul-yeorinhieuh    = rieul */
-  { 0x11b011ba, 0x11cc }, /* jongseong rieul-kiyeok-sios    = rieul-kiyeok + sios */
-  { 0x11b111a8, 0x11d1 }, /* jongseong rieul-mieum-kiyeok   = rieul-mieum + kiyeok */
-  { 0x11b111ba, 0x11d2 }, /* jongseong rieul-mieum-sios     = rieul-mieum + sios */
-  { 0x11b211ba, 0x11d3 }, /* jongseong rieul-pieup-sios     = rieul-pieup + sios */
-  { 0x11b211bc, 0x11d5 }, /* jongseong rieul-kapyeounpieup  = rieul-pieup + ieung */
-  { 0x11b211c2, 0x11d4 }, /* jongseong rieul-pieup-hieuh    = rieul-pieup + hieuh */
-  { 0x11b311ba, 0x11d6 }, /* jongseong rieul-ssangsios      = rieul-sios + sios */
-  { 0x11b711a8, 0x11da }, /* jongseong mieum-kiyeok         = mieum + kiyeok */
-  { 0x11b711af, 0x11db }, /* jongseong mieum-rieul          = mieum + rieul */
-  { 0x11b711b8, 0x11dc }, /* jongseong mieum-pieup          = mieum + pieup */
-  { 0x11b711ba, 0x11dd }, /* jongseong mieum-sios           = mieum + sios */
-  { 0x11b711bc, 0x11e2 }, /* jongseong kapyeounmieum        = mieum + ieung */
-  { 0x11b711be, 0x11e0 }, /* jongseong mieum-chieuch        = mieum + chieuch */
-  { 0x11b711c2, 0x11e1 }, /* jongseong mieum-hieuh          = mieum + hieuh */
-  { 0x11b711eb, 0x11df }, /* jongseong mieum-pansios        = mieum */
-  { 0x11b811af, 0x11e3 }, /* jongseong pieup-rieul          = pieup + rieul */
-  { 0x11b811ba, 0x11b9 }, /* jongseong pieup-sios           = pieup */
-  { 0x11b811bc, 0x11e6 }, /* jongseong kapyeounpieup        = pieup + ieung */
-  { 0x11b811c1, 0x11e4 }, /* jongseong pieup-phieuph        = pieup + phieuph */
-  { 0x11b811c2, 0x11e5 }, /* jongseong pieup-hieuh          = pieup + hieuh */
-  { 0x11ba11a8, 0x11e7 }, /* jongseong sios-kiyeok          = sios + kiyeok */
-  { 0x11ba11ae, 0x11e8 }, /* jongseong sios-tikeut          = sios + tikeut */
-  { 0x11ba11af, 0x11e9 }, /* jongseong sios-rieul           = sios + rieul */
-  { 0x11ba11b8, 0x11ea }, /* jongseong sios-pieup           = sios + pieup */
-  { 0x11ba11ba, 0x11bb }, /* jongseong ssangsios            = sios + sios */
-  { 0x11bc11a8, 0x11ec }, /* jongseong ieung-kiyeok         = ieung + kiyeok */
-  { 0x11bc11bc, 0x11ee }, /* jongseong ssangieung           = ieung + ieung */
-  { 0x11bc11bf, 0x11ef }, /* jongseong ieung-khieukh        = ieung + khieukh */
-  { 0x11c111b8, 0x11f3 }, /* jongseong phieuph-pieup        = phieuph + pieup */
-  { 0x11c111bc, 0x11f4 }, /* jongseong kapyeounphieuph      = phieuph + ieung */
-  { 0x11c211ab, 0x11f5 }, /* jongseong hieuh-nieun          = hieuh + nieun */
-  { 0x11c211af, 0x11f6 }, /* jongseong hieuh-rieul          = hieuh + rieul */
-  { 0x11c211b7, 0x11f7 }, /* jongseong hieuh-mieum          = hieuh + mieum */
-  { 0x11c211b8, 0x11f8 }, /* jongseong hieuh-pieup          = hieuh + pieup */
-  { 0x11ce11c2, 0x11cf }, /* jongseong rieul-tikeut-hieuh   = rieul-tikeut + hieuh */
-  { 0x11dd11ba, 0x11de }, /* jongseong mieum-ssangsios      = mieum-sios + sios */
-  { 0x11ec11a8, 0x11ed }, /* jongseong ieung-ssangkiyeok    = ieung-kiyeok + kiyeok */
-  { 0x11f011ba, 0x11f1 }, /* jongseong yesieung-sios        = yesieung + sios */
-  { 0x11f011eb, 0x11f2 }, /* jongseong yesieung-pansios     = yesieung + pansios */
+  { 0x11001100, 0x1101 }, /* choseong kiyeok + kiyeok          = ssangkiyeok */
+  { 0x11001103, 0x115a }, /* choseong kiyeok + tikeut          = kiyeok-tikeut */
+  { 0x11021100, 0x1113 }, /* choseong nieun + kiyeok           = nieun-kiyeok */
+  { 0x11021102, 0x1114 }, /* choseong nieun + nieun            = ssangnieun */
+  { 0x11021103, 0x1115 }, /* choseong nieun + tikeut           = nieun-tikeut */
+  { 0x11021107, 0x1116 }, /* choseong nieun + pieup            = nieun-pieup */
+  { 0x11021109, 0x115b }, /* choseong nieun + sios             = nieun-sios */
+  { 0x1102110c, 0x115c }, /* choseong nieun + cieuc            = nieun-cieuc */
+  { 0x11021112, 0x115d }, /* choseong nieun + hieuh            = nieun-hieuh */
+  { 0x11031100, 0x1117 }, /* choseong tikeut + kiyeok          = tikeut-kiyeok */
+  { 0x11031103, 0x1104 }, /* choseong tikeut + tikeut          = ssangtikeut */
+  { 0x11031105, 0x115e }, /* choseong tikeut + rieul           = tikeut-rieul */
+  { 0x11031106, 0xa960 }, /* choseong tikeut + mieum           = tikeut-mieum */
+  { 0x11031107, 0xa961 }, /* choseong tikeut + pieup           = tikeut-pieup */
+  { 0x11031109, 0xa962 }, /* choseong tikeut + sios            = tikeut-sios */
+  { 0x1103110c, 0xa963 }, /* choseong tikeut + cieuc           = tikeut-cieuc */
+  { 0x11051100, 0xa964 }, /* choseong rieul + kiyeok           = rieul-kiyeok */
+  { 0x11051101, 0xa965 }, /* choseong rieul + ssangkiyeok      = rieul-ssangkiyeok */
+  { 0x11051102, 0x1118 }, /* choseong rieul + nieun            = rieul-nieun */
+  { 0x11051103, 0xa966 }, /* choseong rieul + tikeut           = rieul-tikeut */
+  { 0x11051104, 0xa967 }, /* choseong rieul + ssangtikeut      = rieul-ssangtikeut */
+  { 0x11051105, 0x1119 }, /* choseong rieul + rieul            = ssangrieul */
+  { 0x11051106, 0xa968 }, /* choseong rieul + mieum            = rieul-mieum */
+  { 0x11051107, 0xa969 }, /* choseong rieul + pieup            = rieul-pieup */
+  { 0x11051108, 0xa96a }, /* choseong rieul + ssangpieup       = rieul-ssangpieup */
+  { 0x11051109, 0xa96c }, /* choseong rieul + sios             = rieul-sios */
+  { 0x1105110b, 0x111b }, /* choseong rieul + ieung            = kapyeounrieul */
+  { 0x1105110c, 0xa96d }, /* choseong rieul + cieuc            = rieul-cieuc */
+  { 0x1105110f, 0xa96e }, /* choseong rieul + khieukh          = rieul-khieukh */
+  { 0x11051112, 0x111a }, /* choseong rieul + hieuh            = rieul-hieuh */
+  { 0x1105112b, 0xa96b }, /* choseong rieul + kapyeounpieup    = rieul-kapyeounpieup */
+  { 0x11061100, 0xa96f }, /* choseong mieum + kiyeok           = mieum-kiyeok */
+  { 0x11061103, 0xa970 }, /* choseong mieum + tikeut           = mieum-tikeut */
+  { 0x11061107, 0x111c }, /* choseong mieum + pieup            = mieum-pieup */
+  { 0x11061109, 0xa971 }, /* choseong mieum + sios             = mieum-sios */
+  { 0x1106110b, 0x111d }, /* choseong mieum + ieung            = kapyeounmieum */
+  { 0x11071100, 0x111e }, /* choseong pieup + kiyeok           = pieup-kiyeok */
+  { 0x11071102, 0x111f }, /* choseong pieup + nieun            = pieup-nieun */
+  { 0x11071103, 0x1120 }, /* choseong pieup + tikeut           = pieup-tikeut */
+  { 0x11071107, 0x1108 }, /* choseong pieup + pieup            = ssangpieup */
+  { 0x11071109, 0x1121 }, /* choseong pieup + sios             = pieup-sios */
+  { 0x1107110a, 0x1125 }, /* choseong pieup + ssangsios        = pieup-ssangsios */
+  { 0x1107110b, 0x112b }, /* choseong pieup + ieung            = kapyeounpieup */
+  { 0x1107110c, 0x1127 }, /* choseong pieup + cieuc            = pieup-cieuc */
+  { 0x1107110e, 0x1128 }, /* choseong pieup + chieuch          = pieup-chieuch */
+  { 0x1107110f, 0xa973 }, /* choseong pieup + khieukh          = pieup-khieukh */
+  { 0x11071110, 0x1129 }, /* choseong pieup + thieuth          = pieup-thieuth */
+  { 0x11071111, 0x112a }, /* choseong pieup + phieuph          = pieup-phieuph */
+  { 0x11071112, 0xa974 }, /* choseong pieup + hieuh            = pieup-hieuh */
+  { 0x1107112b, 0x112c }, /* choseong pieup + kapyeounpieup    = kapyeounssangpieup */
+  { 0x1107112d, 0x1122 }, /* choseong pieup + sios-kiyeok      = pieup-sios-kiyeok */
+  { 0x1107112f, 0x1123 }, /* choseong pieup + sios-tikeut      = pieup-sios-tikeut */
+  { 0x11071132, 0x1124 }, /* choseong pieup + sios-pieup       = pieup-sios-pieup */
+  { 0x11071136, 0x1126 }, /* choseong pieup + sios-cieuc       = pieup-sios-cieuc */
+  { 0x11071139, 0xa972 }, /* choseong pieup + sios-thieuth     = pieup-sios-thieuth */
+  { 0x1108110b, 0x112c }, /* choseong ssangpieup + ieung       = kapyeounssangpieup */
+  { 0x11091100, 0x112d }, /* choseong sios + kiyeok            = sios-kiyeok */
+  { 0x11091102, 0x112e }, /* choseong sios + nieun             = sios-nieun */
+  { 0x11091103, 0x112f }, /* choseong sios + tikeut            = sios-tikeut */
+  { 0x11091105, 0x1130 }, /* choseong sios + rieul             = sios-rieul */
+  { 0x11091106, 0x1131 }, /* choseong sios + mieum             = sios-mieum */
+  { 0x11091107, 0x1132 }, /* choseong sios + pieup             = sios-pieup */
+  { 0x11091109, 0x110a }, /* choseong sios + sios              = ssangsios */
+  { 0x1109110a, 0x1134 }, /* choseong sios + ssangsios         = sios-ssangsios */
+  { 0x1109110b, 0x1135 }, /* choseong sios + ieung             = sios-ieung */
+  { 0x1109110c, 0x1136 }, /* choseong sios + cieuc             = sios-cieuc */
+  { 0x1109110e, 0x1137 }, /* choseong sios + chieuch           = sios-chieuch */
+  { 0x1109110f, 0x1138 }, /* choseong sios + khieukh           = sios-khieukh */
+  { 0x11091110, 0x1139 }, /* choseong sios + thieuth           = sios-thieuth */
+  { 0x11091111, 0x113a }, /* choseong sios + phieuph           = sios-phieuph */
+  { 0x11091112, 0x113b }, /* choseong sios + hieuh             = sios-hieuh */
+  { 0x1109111e, 0x1133 }, /* choseong sios + pieup-kiyeok      = sios-pieup-kiyeok */
+  { 0x11091132, 0xa975 }, /* choseong sios + sios-pieup        = ssangsios-pieup */
+  { 0x110a1107, 0xa975 }, /* choseong ssangsios + pieup        = ssangsios-pieup */
+  { 0x110a1109, 0x1134 }, /* choseong ssangsios + sios         = sios-ssangsios */
+  { 0x110b1100, 0x1141 }, /* choseong ieung + kiyeok           = ieung-kiyeok */
+  { 0x110b1103, 0x1142 }, /* choseong ieung + tikeut           = ieung-tikeut */
+  { 0x110b1105, 0xa976 }, /* choseong ieung + rieul            = ieung-rieul */
+  { 0x110b1106, 0x1143 }, /* choseong ieung + mieum            = ieung-mieum */
+  { 0x110b1107, 0x1144 }, /* choseong ieung + pieup            = ieung-pieup */
+  { 0x110b1109, 0x1145 }, /* choseong ieung + sios             = ieung-sios */
+  { 0x110b110b, 0x1147 }, /* choseong ieung + ieung            = ssangieung */
+  { 0x110b110c, 0x1148 }, /* choseong ieung + cieuc            = ieung-cieuc */
+  { 0x110b110e, 0x1149 }, /* choseong ieung + chieuch          = ieung-chieuch */
+  { 0x110b1110, 0x114a }, /* choseong ieung + thieuth          = ieung-thieuth */
+  { 0x110b1111, 0x114b }, /* choseong ieung + phieuph          = ieung-phieuph */
+  { 0x110b1112, 0xa977 }, /* choseong ieung + hieuh            = ieung-hieuh */
+  { 0x110b1140, 0x1146 }, /* choseong ieung + pansios          = ieung-pansios */
+  { 0x110c110b, 0x114d }, /* choseong cieuc + ieung            = cieuc-ieung */
+  { 0x110c110c, 0x110d }, /* choseong cieuc + cieuc            = ssangcieuc */
+  { 0x110d1112, 0xa978 }, /* choseong ssangcieuc + hieuh       = ssangcieuc-hieuh */
+  { 0x110e110f, 0x1152 }, /* choseong chieuch + khieukh        = chieuch-khieukh */
+  { 0x110e1112, 0x1153 }, /* choseong chieuch + hieuh          = chieuch-hieuh */
+  { 0x11101110, 0xa979 }, /* choseong thieuth + thieuth        = ssangthieuth */
+  { 0x11111107, 0x1156 }, /* choseong phieuph + pieup          = phieuph-pieup */
+  { 0x1111110b, 0x1157 }, /* choseong phieuph + ieung          = kapyeounphieuph */
+  { 0x11111112, 0xa97a }, /* choseong phieuph + hieuh          = phieuph-hieuh */
+  { 0x11121109, 0xa97b }, /* choseong hieuh + sios             = hieuh-sios */
+  { 0x11121112, 0x1158 }, /* choseong hieuh + hieuh            = ssanghieuh */
+  { 0x11211100, 0x1122 }, /* choseong pieup-sios + kiyeok      = pieup-sios-kiyeok */
+  { 0x11211103, 0x1123 }, /* choseong pieup-sios + tikeut      = pieup-sios-tikeut */
+  { 0x11211107, 0x1124 }, /* choseong pieup-sios + pieup       = pieup-sios-pieup */
+  { 0x11211109, 0x1125 }, /* choseong pieup-sios + sios        = pieup-ssangsios */
+  { 0x1121110c, 0x1126 }, /* choseong pieup-sios + cieuc       = pieup-sios-cieuc */
+  { 0x11211110, 0xa972 }, /* choseong pieup-sios + thieuth     = pieup-sios-thieuth */
+  { 0x11321100, 0x1133 }, /* choseong sios-pieup + kiyeok      = sios-pieup-kiyeok */
+  { 0x113c113c, 0x113d }, /* choseong chitueumsios + chitueumsios = chitueumssangsios */
+  { 0x113e113e, 0x113f }, /* choseong ceongchieumsios + ceongchieumsios = ceongchieumssangsios */
+  { 0x114e114e, 0x114f }, /* choseong chitueumcieuc + chitueumcieuc = chitueumssangcieuc */
+  { 0x11501150, 0x1151 }, /* choseong ceongchieumcieuc + ceongchieumcieuc = ceongchieumssangcieuc */
+  { 0x11591159, 0xa97c }, /* choseong yeorinhieuh + yeorinhieuh = ssangyeorinhieuh */
+  { 0x11611161, 0x119e }, /* jungseong a + a                   = arae-a */
+  { 0x11611169, 0x1176 }, /* jungseong a + o                   = a-o */
+  { 0x1161116e, 0x1177 }, /* jungseong a + u                   = a-u */
+  { 0x11611173, 0x11a3 }, /* jungseong a + eu                  = a-eu */
+  { 0x11611175, 0x1162 }, /* jungseong a + i                   = ae */
+  { 0x11631169, 0x1178 }, /* jungseong ya + o                  = ya-o */
+  { 0x1163116d, 0x1179 }, /* jungseong ya + yo                 = ya-yo */
+  { 0x1163116e, 0x11a4 }, /* jungseong ya + u                  = ya-u */
+  { 0x11631175, 0x1164 }, /* jungseong ya + i                  = yae */
+  { 0x11651169, 0x117a }, /* jungseong eo + o                  = eo-o */
+  { 0x1165116e, 0x117b }, /* jungseong eo + u                  = eo-u */
+  { 0x11651173, 0x117c }, /* jungseong eo + eu                 = eo-eu */
+  { 0x11651175, 0x1166 }, /* jungseong eo + i                  = e */
+  { 0x11671163, 0x11a5 }, /* jungseong yeo + ya                = yeo-ya */
+  { 0x11671169, 0x117d }, /* jungseong yeo + o                 = yeo-o */
+  { 0x1167116e, 0x117e }, /* jungseong yeo + u                 = yeo-u */
+  { 0x11671175, 0x1168 }, /* jungseong yeo + i                 = ye */
+  { 0x11691161, 0x116a }, /* jungseong o + a                   = wa */
+  { 0x11691162, 0x116b }, /* jungseong o + ae                  = wae */
+  { 0x11691163, 0x11a6 }, /* jungseong o + ya                  = o-ya */
+  { 0x11691164, 0x11a7 }, /* jungseong o + yae                 = o-yae */
+  { 0x11691165, 0x117f }, /* jungseong o + eo                  = o-eo */
+  { 0x11691166, 0x1180 }, /* jungseong o + e                   = o-e */
+  { 0x11691167, 0xd7b0 }, /* jungseong o + yeo                 = o-yeo */
+  { 0x11691168, 0x1181 }, /* jungseong o + ye                  = o-ye */
+  { 0x11691169, 0x1182 }, /* jungseong o + o                   = o-o */
+  { 0x1169116e, 0x1183 }, /* jungseong o + u                   = o-u */
+  { 0x11691175, 0x116c }, /* jungseong o + i                   = oe */
+  { 0x116a1175, 0x116b }, /* jungseong wa + i                  = wae */
+  { 0x116d1161, 0xd7b2 }, /* jungseong yo + a                  = yo-a */
+  { 0x116d1162, 0xd7b3 }, /* jungseong yo + ae                 = yo-ae */
+  { 0x116d1163, 0x1184 }, /* jungseong yo + ya                 = yo-ya */
+  { 0x116d1164, 0x1185 }, /* jungseong yo + yae                = yo-yae */
+  { 0x116d1165, 0xd7b4 }, /* jungseong yo + eo                 = yo-eo */
+  { 0x116d1167, 0x1186 }, /* jungseong yo + yeo                = yo-yeo */
+  { 0x116d1169, 0x1187 }, /* jungseong yo + o                  = yo-o */
+  { 0x116d1175, 0x1188 }, /* jungseong yo + i                  = yo-i */
+  { 0x116e1161, 0x1189 }, /* jungseong u + a                   = u-a */
+  { 0x116e1162, 0x118a }, /* jungseong u + ae                  = u-ae */
+  { 0x116e1165, 0x116f }, /* jungseong u + eo                  = weo */
+  { 0x116e1166, 0x1170 }, /* jungseong u + e                   = we */
+  { 0x116e1167, 0xd7b5 }, /* jungseong u + yeo                 = u-yeo */
+  { 0x116e1168, 0x118c }, /* jungseong u + ye                  = u-ye */
+  { 0x116e116e, 0x118d }, /* jungseong u + u                   = u-u */
+  { 0x116e1175, 0x1171 }, /* jungseong u + i                   = wi */
+  { 0x116e117c, 0x118b }, /* jungseong u + eo-eu               = u-eo-eu */
+  { 0x116ed7c4, 0xd7b6 }, /* jungseong u + i-i                 = u-i-i */
+  { 0x116f1173, 0x118b }, /* jungseong weo + eu                = u-eo-eu */
+  { 0x116f1175, 0x1170 }, /* jungseong weo + i                 = we */
+  { 0x11711175, 0xd7b6 }, /* jungseong wi + i                  = u-i-i */
+  { 0x11721161, 0x118e }, /* jungseong yu + a                  = yu-a */
+  { 0x11721162, 0xd7b7 }, /* jungseong yu + ae                 = yu-ae */
+  { 0x11721165, 0x118f }, /* jungseong yu + eo                 = yu-eo */
+  { 0x11721166, 0x1190 }, /* jungseong yu + e                  = yu-e */
+  { 0x11721167, 0x1191 }, /* jungseong yu + yeo                = yu-yeo */
+  { 0x11721168, 0x1192 }, /* jungseong yu + ye                 = yu-ye */
+  { 0x11721169, 0xd7b8 }, /* jungseong yu + o                  = yu-o */
+  { 0x1172116e, 0x1193 }, /* jungseong yu + u                  = yu-u */
+  { 0x11721175, 0x1194 }, /* jungseong yu + i                  = yu-i */
+  { 0x11731161, 0xd7b9 }, /* jungseong eu + a                  = eu-a */
+  { 0x11731165, 0xd7ba }, /* jungseong eu + eo                 = eu-eo */
+  { 0x11731166, 0xd7bb }, /* jungseong eu + e                  = eu-e */
+  { 0x11731169, 0xd7bc }, /* jungseong eu + o                  = eu-o */
+  { 0x1173116e, 0x1195 }, /* jungseong eu + u                  = eu-u */
+  { 0x11731173, 0x1196 }, /* jungseong eu + eu                 = eu-eu */
+  { 0x11731175, 0x1174 }, /* jungseong eu + i                  = yi */
+  { 0x1174116e, 0x1197 }, /* jungseong yi + u                  = yi-u */
+  { 0x11751161, 0x1198 }, /* jungseong i + a                   = i-a */
+  { 0x11751163, 0x1199 }, /* jungseong i + ya                  = i-ya */
+  { 0x11751164, 0xd7be }, /* jungseong i + yae                 = i-yae */
+  { 0x11751167, 0xd7bf }, /* jungseong i + yeo                 = i-yeo */
+  { 0x11751168, 0xd7c0 }, /* jungseong i + ye                  = i-ye */
+  { 0x11751169, 0x119a }, /* jungseong i + o                   = i-o */
+  { 0x1175116d, 0xd7c2 }, /* jungseong i + yo                  = i-yo */
+  { 0x1175116e, 0x119b }, /* jungseong i + u                   = i-u */
+  { 0x11751172, 0xd7c3 }, /* jungseong i + yu                  = i-yu */
+  { 0x11751173, 0x119c }, /* jungseong i + eu                  = i-eu */
+  { 0x11751175, 0xd7c4 }, /* jungseong i + i                   = i-i */
+  { 0x11751178, 0xd7bd }, /* jungseong i + ya-o                = i-ya-o */
+  { 0x1175119e, 0x119d }, /* jungseong i + araea               = i-araea */
+  { 0x11821175, 0xd7b1 }, /* jungseong o-o + i                 = o-o-i */
+  { 0x11991169, 0xd7bd }, /* jungseong i-ya + o                = i-ya-o */
+  { 0x119a1175, 0xd7c1 }, /* jungseong i-o + i                 = i-o-i */
+  { 0x119e1161, 0xd7c5 }, /* jungseong araea + a               = araea-a */
+  { 0x119e1165, 0x119f }, /* jungseong araea + eo              = araea-eo */
+  { 0x119e1166, 0xd7c6 }, /* jungseong araea + e               = araea-e */
+  { 0x119e116e, 0x11a0 }, /* jungseong araea + u               = araea-u */
+  { 0x119e1175, 0x11a1 }, /* jungseong araea + i               = araea-i */
+  { 0x119e119e, 0x11a2 }, /* jungseong araea + araea           = ssangaraea */
+  { 0x11a811a8, 0x11a9 }, /* jongseong kiyeok + kiyeok         = ssangkiyeok */
+  { 0x11a811ab, 0x11fa }, /* jongseong kiyeok + nieun          = kiyeok-nieun */
+  { 0x11a811af, 0x11c3 }, /* jongseong kiyeok + rieul          = kiyeok-rieul */
+  { 0x11a811b8, 0x11fb }, /* jongseong kiyeok + pieup          = kiyeok-pieup */
+  { 0x11a811ba, 0x11aa }, /* jongseong kiyeok + sios           = kiyeok-sios */
+  { 0x11a811be, 0x11fc }, /* jongseong kiyeok + chieuch        = kiyeok-chieuch */
+  { 0x11a811bf, 0x11fd }, /* jongseong kiyeok + khieukh        = kiyeok-khieukh */
+  { 0x11a811c2, 0x11fe }, /* jongseong kiyeok + hieuh          = kiyeok-hieuh */
+  { 0x11a811e7, 0x11c4 }, /* jongseong kiyeok + sios-kiyeok    = kiyeok-sios-kiyeok */
+  { 0x11aa11a8, 0x11c4 }, /* jongseong kiyeok-sios + kiyeok    = kiyeok-sios-kiyeok */
+  { 0x11ab11a8, 0x11c5 }, /* jongseong nieun + kiyeok          = nieun-kiyeok */
+  { 0x11ab11ab, 0x11ff }, /* jongseong nieun + nieun           = ssangnieun */
+  { 0x11ab11ae, 0x11c6 }, /* jongseong nieun + tikeut          = nieun-tikeut */
+  { 0x11ab11af, 0xd7cb }, /* jongseong nieun + rieul           = nieun-rieul */
+  { 0x11ab11ba, 0x11c7 }, /* jongseong nieun + sios            = nieun-sios */
+  { 0x11ab11bd, 0x11ac }, /* jongseong nieun + cieuc           = nieun-cieuc */
+  { 0x11ab11be, 0xd7cc }, /* jongseong nieun + chieuch         = nieun-chieuch */
+  { 0x11ab11c0, 0x11c9 }, /* jongseong nieun + thieuth         = nieun-thieuth */
+  { 0x11ab11c2, 0x11ad }, /* jongseong nieun + hieuh           = nieun-hieuh */
+  { 0x11ab11eb, 0x11c8 }, /* jongseong nieun + pansios         = nieun-pansios */
+  { 0x11ae11a8, 0x11ca }, /* jongseong tikeut + kiyeok         = tikeut-kiyeok */
+  { 0x11ae11ae, 0xd7cd }, /* jongseong tikeut + tikeut         = ssangtikeut */
+  { 0x11ae11af, 0x11cb }, /* jongseong tikeut + rieul          = tikeut-rieul */
+  { 0x11ae11b8, 0xd7cf }, /* jongseong tikeut + pieup          = tikeut-pieup */
+  { 0x11ae11ba, 0xd7d0 }, /* jongseong tikeut + sios           = tikeut-sios */
+  { 0x11ae11bd, 0xd7d2 }, /* jongseong tikeut + cieuc          = tikeut-cieuc */
+  { 0x11ae11be, 0xd7d3 }, /* jongseong tikeut + chieuch        = tikeut-chieuch */
+  { 0x11ae11c0, 0xd7d4 }, /* jongseong tikeut + thieuth        = tikeut-thieuth */
+  { 0x11ae11e7, 0xd7d1 }, /* jongseong tikeut + sios-kiyeok    = tikeut-sios-kiyeok */
+  { 0x11aed7cf, 0xd7ce }, /* jongseong tikeut + tikeut-pieup   = ssangtikeut-pieup */
+  { 0x11af11a8, 0x11b0 }, /* jongseong rieul + kiyeok          = rieul-kiyeok */
+  { 0x11af11a9, 0xd7d5 }, /* jongseong rieul + ssangkiyeok     = rieul-ssangkiyeok */
+  { 0x11af11aa, 0x11cc }, /* jongseong rieul + kiyeok-sios     = rieul-kiyeok-sios */
+  { 0x11af11ab, 0x11cd }, /* jongseong rieul + nieun           = rieul-nieun */
+  { 0x11af11ae, 0x11ce }, /* jongseong rieul + tikeut          = rieul-tikeut */
+  { 0x11af11af, 0x11d0 }, /* jongseong rieul + rieul           = ssangrieul */
+  { 0x11af11b7, 0x11b1 }, /* jongseong rieul + mieum           = rieul-mieum */
+  { 0x11af11b8, 0x11b2 }, /* jongseong rieul + pieup           = rieul-pieup */
+  { 0x11af11b9, 0x11d3 }, /* jongseong rieul + pieup-sios      = rieul-pieup-sios */
+  { 0x11af11ba, 0x11b3 }, /* jongseong rieul + sios            = rieul-sios */
+  { 0x11af11bb, 0x11d6 }, /* jongseong rieul + ssangsios       = rieul-ssangsios */
+  { 0x11af11bc, 0xd7dd }, /* jongseong rieul + ieung           = kapyeounrieul */
+  { 0x11af11bf, 0x11d8 }, /* jongseong rieul + khieukh         = rieul-khieukh */
+  { 0x11af11c0, 0x11b4 }, /* jongseong rieul + thieuth         = rieul-thieuth */
+  { 0x11af11c1, 0x11b5 }, /* jongseong rieul + phieuph         = rieul-phieuph */
+  { 0x11af11c2, 0x11b6 }, /* jongseong rieul + hieuh           = rieul-hieuh */
+  { 0x11af11d8, 0xd7d7 }, /* jongseong rieul + rieul-khieukh   = ssangrieul-khieukh */
+  { 0x11af11da, 0x11d1 }, /* jongseong rieul + mieum-kiyeok    = rieul-mieum-kiyeok */
+  { 0x11af11dd, 0x11d2 }, /* jongseong rieul + mieum-sios      = rieul-mieum-sios */
+  { 0x11af11e1, 0xd7d8 }, /* jongseong rieul + mieum-hieuh     = rieul-mieum-hieuh */
+  { 0x11af11e4, 0xd7da }, /* jongseong rieul + pieup-phieuph   = rieul-pieup-phieuph */
+  { 0x11af11e5, 0x11d4 }, /* jongseong rieul + pieup-hieuh     = rieul-pieup-hieuh */
+  { 0x11af11e6, 0x11d5 }, /* jongseong rieul + kapyeounpieup   = rieul-kapyeounpieup */
+  { 0x11af11eb, 0x11d7 }, /* jongseong rieul + pansios         = rieul-pansios */
+  { 0x11af11f0, 0xd7db }, /* jongseong rieul + yesieung        = rieul-yesieung */
+  { 0x11af11f9, 0x11d9 }, /* jongseong rieul + yeorinhieuh     = rieul-yeorinhieuh */
+  { 0x11af11fe, 0xd7d6 }, /* jongseong rieul + kiyeok-hieuh    = rieul-kiyeok-hieuh */
+  { 0x11afd7e3, 0xd7d9 }, /* jongseong rieul + pieup-tikeut    = rieul-pieup-tikeut */
+  { 0x11b011a8, 0xd7d5 }, /* jongseong rieul-kiyeok + kiyeok   = rieul-ssangkiyeok */
+  { 0x11b011ba, 0x11cc }, /* jongseong rieul-kiyeok + sios     = rieul-kiyeok-sios */
+  { 0x11b011c2, 0xd7d6 }, /* jongseong rieul-kiyeok + hieuh    = rieul-kiyeok-hieuh */
+  { 0x11b111a8, 0x11d1 }, /* jongseong rieul-mieum + kiyeok    = rieul-mieum-kiyeok */
+  { 0x11b111ba, 0x11d2 }, /* jongseong rieul-mieum + sios      = rieul-mieum-sios */
+  { 0x11b111c2, 0xd7d8 }, /* jongseong rieul-mieum + hieuh     = rieul-mieum-hieuh */
+  { 0x11b211ae, 0xd7d9 }, /* jongseong rieul-pieup + tikeut    = rieul-pieup-tikeut */
+  { 0x11b211ba, 0x11d3 }, /* jongseong rieul-pieup + sios      = rieul-pieup-sios */
+  { 0x11b211bc, 0x11d5 }, /* jongseong rieul-pieup + ieung     = rieul-kapyeounpieup */
+  { 0x11b211c1, 0xd7da }, /* jongseong rieul-pieup + phieuph   = rieul-pieup-phieuph */
+  { 0x11b211c2, 0x11d4 }, /* jongseong rieul-pieup + hieuh     = rieul-pieup-hieuh */
+  { 0x11b311ba, 0x11d6 }, /* jongseong rieul-sios + sios       = rieul-ssangsios */
+  { 0x11b711a8, 0x11da }, /* jongseong mieum + kiyeok          = mieum-kiyeok */
+  { 0x11b711ab, 0xd7de }, /* jongseong mieum + nieun           = mieum-nieun */
+  { 0x11b711af, 0x11db }, /* jongseong mieum + rieul           = mieum-rieul */
+  { 0x11b711b7, 0xd7e0 }, /* jongseong mieum + mieum           = ssangmieum */
+  { 0x11b711b8, 0x11dc }, /* jongseong mieum + pieup           = mieum-pieup */
+  { 0x11b711b9, 0xd7e1 }, /* jongseong mieum + pieup-sios      = mieum-pieup-sios */
+  { 0x11b711ba, 0x11dd }, /* jongseong mieum + sios            = mieum-sios */
+  { 0x11b711bb, 0x11de }, /* jongseong mieum + ssangsios       = mieum-ssangsios */
+  { 0x11b711bc, 0x11e2 }, /* jongseong mieum + ieung           = kapyeounmieum */
+  { 0x11b711bd, 0xd7e2 }, /* jongseong mieum + cieuc           = mieum-cieuc */
+  { 0x11b711be, 0x11e0 }, /* jongseong mieum + chieuch         = mieum-chieuch */
+  { 0x11b711c2, 0x11e1 }, /* jongseong mieum + hieuh           = mieum-hieuh */
+  { 0x11b711eb, 0x11df }, /* jongseong mieum + pansios         = mieum-pansios */
+  { 0x11b711ff, 0xd7df }, /* jongseong mieum + ssangnieun      = mieum-ssangnieun */
+  { 0x11b811ae, 0xd7e3 }, /* jongseong pieup + tikeut          = pieup-tikeut */
+  { 0x11b811af, 0x11e3 }, /* jongseong pieup + rieul           = pieup-rieul */
+  { 0x11b811b5, 0xd7e4 }, /* jongseong pieup + rieul-phieuph   = pieup-rieul-phieuph */
+  { 0x11b811b7, 0xd7e5 }, /* jongseong pieup + mieum           = pieup-mieum */
+  { 0x11b811b8, 0xd7e6 }, /* jongseong pieup + pieup           = ssangpieup */
+  { 0x11b811ba, 0x11b9 }, /* jongseong pieup + sios            = pieup-sios */
+  { 0x11b811bc, 0x11e6 }, /* jongseong pieup + ieung           = kapyeounpieup */
+  { 0x11b811bd, 0xd7e8 }, /* jongseong pieup + cieuc           = pieup-cieuc */
+  { 0x11b811be, 0xd7e9 }, /* jongseong pieup + chieuch         = pieup-chieuch */
+  { 0x11b811c1, 0x11e4 }, /* jongseong pieup + phieuph         = pieup-phieuph */
+  { 0x11b811c2, 0x11e5 }, /* jongseong pieup + hieuh           = pieup-hieuh */
+  { 0x11b811e8, 0xd7e7 }, /* jongseong pieup + sios-tikeut     = pieup-sios-tikeut */
+  { 0x11b911ae, 0xd7e7 }, /* jongseong pieup-sios + tikeut     = pieup-sios-tikeut */
+  { 0x11ba11a8, 0x11e7 }, /* jongseong sios + kiyeok           = sios-kiyeok */
+  { 0x11ba11ae, 0x11e8 }, /* jongseong sios + tikeut           = sios-tikeut */
+  { 0x11ba11af, 0x11e9 }, /* jongseong sios + rieul            = sios-rieul */
+  { 0x11ba11b7, 0xd7ea }, /* jongseong sios + mieum            = sios-mieum */
+  { 0x11ba11b8, 0x11ea }, /* jongseong sios + pieup            = sios-pieup */
+  { 0x11ba11ba, 0x11bb }, /* jongseong sios + sios             = ssangsios */
+  { 0x11ba11bd, 0xd7ef }, /* jongseong sios + cieuc            = sios-cieuc */
+  { 0x11ba11be, 0xd7f0 }, /* jongseong sios + chieuch          = sios-chieuch */
+  { 0x11ba11c0, 0xd7f1 }, /* jongseong sios + thieuth          = sios-thieuth */
+  { 0x11ba11c2, 0xd7f2 }, /* jongseong sios + hieuh            = sios-hieuh */
+  { 0x11ba11e6, 0xd7eb }, /* jongseong sios + kapyeounpieup    = sios-kapyeounpieup */
+  { 0x11ba11e7, 0xd7ec }, /* jongseong sios + sios-kiyeok      = ssangsios-kiyeok */
+  { 0x11ba11e8, 0xd7ed }, /* jongseong sios + sios-tikeut      = ssangsios-tikeut */
+  { 0x11ba11eb, 0xd7ee }, /* jongseong sios + pansios          = sios-pansios */
+  { 0x11bb11a8, 0xd7ec }, /* jongseong ssangsios + kiyeok      = ssangsios-kiyeok */
+  { 0x11bb11ae, 0xd7ed }, /* jongseong ssangsios + tikeut      = ssangsios-tikeut */
+  { 0x11bd11b8, 0xd7f7 }, /* jongseong cieuc + pieup           = cieuc-pieup */
+  { 0x11bd11bd, 0xd7f9 }, /* jongseong cieuc + cieuc           = ssangcieuc */
+  { 0x11bdd7e6, 0xd7f8 }, /* jongseong cieuc + ssangpieup      = cieuc-ssangpieup */
+  { 0x11c111b8, 0x11f3 }, /* jongseong phieuph + pieup         = phieuph-pieup */
+  { 0x11c111ba, 0xd7fa }, /* jongseong phieuph + sios          = phieuph-sios */
+  { 0x11c111bc, 0x11f4 }, /* jongseong phieuph + ieung         = kapyeounphieuph */
+  { 0x11c111c0, 0xd7fb }, /* jongseong phieuph + thieuth       = phieuph-thieuth */
+  { 0x11c211ab, 0x11f5 }, /* jongseong hieuh + nieun           = hieuh-nieun */
+  { 0x11c211af, 0x11f6 }, /* jongseong hieuh + rieul           = hieuh-rieul */
+  { 0x11c211b7, 0x11f7 }, /* jongseong hieuh + mieum           = hieuh-mieum */
+  { 0x11c211b8, 0x11f8 }, /* jongseong hieuh + pieup           = hieuh-pieup */
+  { 0x11ce11c2, 0x11cf }, /* jongseong rieul-tikeut + hieuh    = rieul-tikeut-hieuh */
+  { 0x11d011bf, 0xd7d7 }, /* jongseong ssangrieul + khieukh    = ssangrieul-khieukh */
+  { 0x11d911c2, 0xd7dc }, /* jongseong rieul-yeorinhieuh + hieuh = rieul-yeorinhieuh-hieuh */
+  { 0x11dc11ba, 0xd7e1 }, /* jongseong mieum-pieup + sios      = mieum-pieup-sios */
+  { 0x11dd11ba, 0x11de }, /* jongseong mieum-sios + sios       = mieum-ssangsios */
+  { 0x11e311c1, 0xd7e4 }, /* jongseong pieup-rieul + phieuph   = pieup-rieul-phieuph */
+  { 0x11ea11bc, 0xd7eb }, /* jongseong sios-pieup + ieung      = sios-kapyeounpieup */
+  { 0x11eb11b8, 0xd7f3 }, /* jongseong pansios + pieup         = pansios-pieup */
+  { 0x11eb11e6, 0xd7f4 }, /* jongseong pansios + kapyeounpieup = pansios-kapyeounpieup */
+  { 0x11ec11a8, 0x11ed }, /* jongseong ieung-kiyeok + kiyeok   = ieung-ssangkiyeok */
+  { 0x11f011a8, 0x11ec }, /* jongseong yesieung + kiyeok       = yesieung-kiyeok */
+  { 0x11f011a9, 0x11ed }, /* jongseong yesieung + ssangkiyeok  = yesieung-ssangkiyeok */
+  { 0x11f011b7, 0xd7f5 }, /* jongseong yesieung + mieum        = yesieung-mieum */
+  { 0x11f011ba, 0x11f1 }, /* jongseong yesieung + sios         = yesieung-sios */
+  { 0x11f011bf, 0x11ef }, /* jongseong yesieung + khieukh      = yesieung-khieukh */
+  { 0x11f011c2, 0xd7f6 }, /* jongseong yesieung + hieuh        = yesieung-hieuh */
+  { 0x11f011eb, 0x11f2 }, /* jongseong yesieung + pansios      = yesieung-pansios */
+  { 0x11f011f0, 0x11ee }, /* jongseong yesieung + yesieung     = ssangyesieung */
+  { 0xa9641100, 0xa965 }, /* choseong rieul-kiyeok + kiyeok    = rieul-ssangkiyeok */
+  { 0xa9661103, 0xa967 }, /* choseong rieul-tikeut + tikeut    = rieul-ssangtikeut */
+  { 0xa9691107, 0xa96a }, /* choseong rieul-pieup + pieup      = rieul-ssangpieup */
+  { 0xa969110b, 0xa96b }, /* choseong rieul-pieup + ieung      = rieul-kapyeounpieup */
+  { 0xd7c51161, 0x11a2 }, /* jungseong araea-a + a             = ssangaraea */
+  { 0xd7cd11b8, 0xd7ce }, /* jongseong ssangtikeut + pieup     = ssangtikeut-pieup */
+  { 0xd7d011a8, 0xd7d1 }, /* jongseong tikeut-sios + kiyeok    = tikeut-sios-kiyeok */
+  { 0xd7de11ab, 0xd7df }, /* jongseong mieum-nieun + nieun     = mieum-ssangnieun */
+  { 0xd7f311bc, 0xd7f4 }, /* jongseong pansios-pieup + ieung   = pansios-kapyeounpieup */
+  { 0xd7f711b8, 0xd7f8 }, /* jongseong cieuc-pieup + pieup     = cieuc-ssangpieup */
+};
+
+static const HangulCombinationItem hangul_combination_table_ahn[] = {
+  { 0x11001103, 0x1104 }, /* choseong  kiyeok       + tikeut = ssangtikeut   */
+  { 0x1100110b, 0x1101 }, /* choseong  kiyeok       + ieung  = ssangkiyeok   */
+  { 0x11001112, 0x110f }, /* choseong  kiyeok       + hieuh  = khieukh       */
+  { 0x11021109, 0x110a }, /* choseong  nieun        + sios   = ssangsios     */
+  { 0x11031100, 0x1104 }, /* choseong  tikeut       + kiyeok = ssangtikeut   */
+  { 0x1103110c, 0x110d }, /* choseong  tikeut       + cieuc  = ssangcieuc    */
+  { 0x11031112, 0x1110 }, /* choseong  tikeut       + hieuh  = thieuth       */
+  { 0x1107110c, 0x1108 }, /* choseong  pieup        + cieuc  = ssangpieup    */
+  { 0x11071112, 0x1111 }, /* choseong  pieup        + hieuh  = phieuph       */
+  { 0x11091102, 0x110a }, /* choseong  sios         + nieun  = ssangsios     */
+  { 0x110b1100, 0x1101 }, /* choseong  ieung        + kiyeok = ssangkiyeok   */
+  { 0x110c1103, 0x110d }, /* choseong  cieuc        + tikeut = ssangcieuc    */
+  { 0x110c1107, 0x1108 }, /* choseong  cieuc        + pieup  = ssangpieup    */
+  { 0x110c1112, 0x110e }, /* choseong  cieuc        + hieuh  = chieuch       */
+  { 0x11121100, 0x110f }, /* choseong  hieuh        + kiyeok = khieukh       */
+  { 0x11121103, 0x1110 }, /* choseong  hieuh        + tikeut = thieuth       */
+  { 0x11121107, 0x1111 }, /* choseong  hieuh        + pieup  = phieuph       */
+  { 0x1112110c, 0x110e }, /* choseong  hieuh        + cieuc  = chieuch       */
+  { 0x11611169, 0x116a }, /* jungseong a            + o      = wa            */
+  { 0x11611175, 0x1162 }, /* jungseong a            + i      = ae            */
+  { 0x11621169, 0x116b }, /* jungseong ae           + o      = wae           */
+  { 0x11631175, 0x1164 }, /* jungseong ya           + i      = yae           */
+  { 0x1165116e, 0x116f }, /* jungseong eo           + u      = weo           */
+  { 0x11651175, 0x1166 }, /* jungseong eo           + i      = e             */
+  { 0x1166116e, 0x1170 }, /* jungseong e            + u      = we            */
+  { 0x11671175, 0x1168 }, /* jungseong yeo          + i      = ye            */
+  { 0x11691161, 0x116a }, /* jungseong o            + a      = wa            */
+  { 0x11691175, 0x116c }, /* jungseong o            + i      = oe            */
+  { 0x116a1175, 0x116b }, /* jungseong wa           + i      = wae           */
+  { 0x116c1161, 0x116b }, /* jungseong oe           + a      = wae           */
+  { 0x116e1165, 0x116f }, /* jungseong u            + eo     = weo           */
+  { 0x116e1175, 0x1171 }, /* jungseong u            + i      = wi            */
+  { 0x116f1175, 0x1170 }, /* jungseong weo          + i      = we            */
+  { 0x11711165, 0x1170 }, /* jungseong wi           + eo     = we            */
+  { 0x11731175, 0x1174 }, /* jungseong eu           + i      = yi            */
+  { 0x11751161, 0x1162 }, /* jungseong i            + a      = ae            */
+  { 0x11751163, 0x1164 }, /* jungseong i            + ya     = yae           */
+  { 0x11751165, 0x1166 }, /* jungseong i            + eo     = e             */
+  { 0x11751167, 0x1168 }, /* jungseong i            + yeo    = ye            */
+  { 0x11751169, 0x116c }, /* jungseong i            + o      = oe            */
+  { 0x1175116e, 0x1171 }, /* jungseong i            + u      = wi            */
+  { 0x11751173, 0x1174 }, /* jungseong i            + eu     = yi            */
+  { 0x11a811af, 0x11b0 }, /* jongseong kiyeok       + rieul  = rieul-kiyeok  */
+  { 0x11a811ba, 0x11aa }, /* jongseong kiyeok       + sios   = kiyeok-sios   */
+  { 0x11a811bc, 0x11a9 }, /* jongseong kiyeok       + ieung  = ssangkiyeok   */
+  { 0x11a811c2, 0x11bf }, /* jongseong kiyeok       + hieuh  = khieukh       */
+  { 0x11ab11ba, 0x11bb }, /* jongseong nieun        + sios   = ssangsios     */
+  { 0x11ab11bd, 0x11ac }, /* jongseong nieun        + cieuc  = nieun-cieuc   */
+  { 0x11ab11c2, 0x11ad }, /* jongseong nieun        + hieuh  = nieun-hieuh   */
+  { 0x11ae11af, 0x11ce }, /* jongseong tikeut       + rieul  = rieul-tikeut  */
+  { 0x11ae11c2, 0x11c0 }, /* jongseong tikeut       + hieuh  = thieuth       */
+  { 0x11af11a8, 0x11b0 }, /* jongseong rieul        + kiyeok = rieul-kiyeok  */
+  { 0x11af11ae, 0x11ce }, /* jongseong rieul        + tikeut = rieul-tikeut  */
+  { 0x11af11b7, 0x11b1 }, /* jongseong rieul        + mieum  = rieul-mieum   */
+  { 0x11af11b8, 0x11b2 }, /* jongseong rieul        + pieup  = rieul-pieup   */
+  { 0x11af11ba, 0x11b3 }, /* jongseong rieul        + sios   = rieul-sios    */
+  { 0x11af11c2, 0x11b6 }, /* jongseong rieul        + hieuh  = rieul-hieuh   */
+  { 0x11b211c2, 0x11b5 }, /* jongseong rieul-pieup  + hieuh  = rieul-phieuph */
+  { 0x11b611ae, 0x11b4 }, /* jongseong rieul-hieuh  + tikeut = rieul-thieuth */
+  { 0x11b611b8, 0x11b5 }, /* jongseong rieul-hieuh  + pieup  = rieul-phieuph */
+  { 0x11b711af, 0x11b1 }, /* jongseong mieum        + rieul  = rieul-mieum   */
+  { 0x11b811af, 0x11b2 }, /* jongseong pieup        + rieul  = rieul-pieup   */
+  { 0x11b811ba, 0x11b9 }, /* jongseong pieup        + sios   = pieup-sios    */
+  { 0x11b811c2, 0x11c1 }, /* jongseong pieup        + hieuh  = phieuph       */
+  { 0x11ba11a8, 0x11aa }, /* jongseong sios         + kiyeok = kiyeok-sios   */
+  { 0x11ba11ab, 0x11bb }, /* jongseong sios         + nieun  = ssangsios     */
+  { 0x11ba11af, 0x11b3 }, /* jongseong sios         + rieul  = rieul-sios    */
+  { 0x11ba11b8, 0x11b9 }, /* jongseong sios         + pieup  = pieup-sios    */
+  { 0x11bc11a8, 0x11a9 }, /* jongseong ieung        + kiyeok = ssangkiyeok   */
+  { 0x11bd11ab, 0x11ac }, /* jongseong cieuc        + nieun  = nieun-cieuc   */
+  { 0x11bd11c2, 0x11be }, /* jongseong cieuc        + hieuh  = chieuch       */
+  { 0x11c011af, 0x11b4 }, /* jongseong thieuth      + rieul  = rieul-thieuth */
+  { 0x11c111af, 0x11b5 }, /* jongseong phieuph      + rieul  = rieul-phieuph */
+  { 0x11c211a8, 0x11bf }, /* jongseong hieuh        + kiyeok = khieukh       */
+  { 0x11c211ab, 0x11ad }, /* jongseong hieuh        + nieun  = nieun-hieuh   */
+  { 0x11c211ae, 0x11c0 }, /* jongseong hieuh        + tikeut = thieuth       */
+  { 0x11c211af, 0x11b6 }, /* jongseong hieuh        + rieul  = rieul-hieuh   */
+  { 0x11c211b8, 0x11c1 }, /* jongseong hieuh        + pieup  = phieuph       */
+  { 0x11c211bd, 0x11be }, /* jongseong hieuh        + cieuc  = chieuch       */
+  { 0x11ce11c2, 0x11b4 }, /* jongseong rieul-tikeut + hieuh  = rieul-thieuth */
 };
index 6d2de65..84c57b0 100644 (file)
@@ -93,8 +93,8 @@
  * 한자 사전 포맷은 @ref HanjaTable 부분을 참조한다.
  *
  * 한자 사전을 검색하면 결과는 Hanja 오브젝트의 리스트 형태로 전달된다.
- * @ref HanjaList에서 각 엔트리의 내용을 하나씩 확인할 수 있다.
- * Hanja의 멤버는 직접 참조할 수 없고, hanja_get_key(), hanja_get_value(),
+ * @ref HanjaList 에서 각 엔트리의 내용을 하나씩 확인할 수 있다.
+ * @ref Hanja 의 멤버는 직접 참조할 수 없고, hanja_get_key(), hanja_get_value(),
  * hanja_get_comment() 함수로 찾아볼 수 있다.
  * char 스트링으로 전달되는 내용은 모두 UTF-8 인코딩으로 되어 있다.
  */
  * 한자 사전의 검색 함수를 사용하면 이 타입으로 결과를 리턴한다. 
  * 이 오브젝트에서 hanja_list_get_nth()함수를 이용하여 검색 결과를
  * 이터레이션할 수 있다.  내부 구현 내용은 외부로 노출되어 있지 않다.
- * @ref HanjaList가 가지고 있는 아이템들은 accessor 함수들을 이용해서 참조한다.
+ * @ref HanjaList 가 가지고 있는 아이템들은 accessor 함수들을 이용해서 참조한다.
  *
  * 참조: hanja_list_get_nth(), hanja_list_get_nth_key(),
  * hanja_list_get_nth_value(), hanja_list_get_nth_comment()
  *
  * 각 필드는 @b @c : 으로 구분하고, 첫번째 필드는 각 한자를 찾을 키값이고 
  * 두번째 필드는 그 키값에 해당하는 한자 스트링, 세번째 필드는 이 키와
- * 값에 대한 설명이다. #으로 시작하는 라인은 주석으로 무시된다.
+ * 값에 대한 설명이다. @# 으로 시작하는 라인은 주석으로 무시된다.
  *
  * 실제 예를 들면 다음과 같은 식이다.
  *
@@ -276,7 +276,7 @@ hanja_delete(Hanja* hanja)
 
 /**
  * @ingroup hanjadictionary
- * @brief @ref Hanja의 키를 찾아본다.
+ * @brief @ref Hanja 의 키를 찾아본다.
  * @return @a hanja 오브젝트의 키, UTF-8
  *
  * 일반적으로 @ref Hanja 아이템의 키는 한글이다.
@@ -295,7 +295,7 @@ hanja_get_key(const Hanja* hanja)
 
 /**
  * @ingroup hanjadictionary
- * @brief @ref Hanja의 값을 찾아본다.
+ * @brief @ref Hanja 의 값을 찾아본다.
  * @return @a hanja 오브젝트의 값, UTF-8
  *
  * 일반적으로 @ref Hanja 아이템의 값은 key에 대응되는 한자다.
@@ -314,7 +314,7 @@ hanja_get_value(const Hanja* hanja)
 
 /**
  * @ingroup hanjadictionary
- * @brief @ref Hanja의 설명을 찾아본다.
+ * @brief @ref Hanja 의 설명을 찾아본다.
  * @return @a hanja 오브젝트의 comment 필드, UTF-8
  *
  * 일반적으로 @ref Hanja 아이템의 설명은 한글과 그 한자에 대한 설명이다.
@@ -660,7 +660,7 @@ hanja_table_match_suffix(const HanjaTable* table, const char *key)
 
 /**
  * @ingroup hanjadictionary
- * @brief @ref HanjaList가 가지고 있는 아이템의 갯수를 구하는 함수
+ * @brief @ref HanjaList 가 가지고 있는 아이템의 갯수를 구하는 함수
  */
 int
 hanja_list_get_size(const HanjaList *list)
@@ -672,18 +672,18 @@ hanja_list_get_size(const HanjaList *list)
 
 /**
  * @ingroup hanjadictionary
- * @brief @ref HanjaList가 생성될때 검색함수에서 사용한 키를 구하는 함수
- * @return @ref HanjaList의 key 스트링
+ * @brief @ref HanjaList 가 생성될때 검색함수에서 사용한 키를 구하는 함수
+ * @return @ref HanjaList 의 key 스트링
  *
- * 한자 사전 검색 함수로 HanjaList를 생성하면 HanjaList는 그 검색할때 사용한
- * 키를 기억하고 있다. 이 값을 확인할때 사용한다.
+ * 한자 사전 검색 함수로 @ref HanjaList 를 생성하면 @ref HanjaList 는
+ * 그 검색할때 사용한 키를 기억하고 있다. 이 값을 확인할때 사용한다.
  * 주의할 점은, 각 Hanja 아이템들은 각각의 키를 가지고 있지만, 이것이
- * 반드시 @ref HanjaList와 일치하지는 않는다는 것이다.
+ * 반드시 @ref HanjaList 와 일치하지는 않는다는 것이다.
  * 검색할 당시에 사용한 함수가 prefix나 suffix계열이면 더 짧은 키로도 
- * 검색하기 때문에 @ref HanjaList의 키와 검색 결과의 키와 다른 것들도 
+ * 검색하기 때문에 @ref HanjaList 의 키와 검색 결과의 키와 다른 것들도 
  * 가지고 있게 된다.
  *
- * 리턴된 스트링 포인터는 @ref HanjaList에서 관리하는 스트링으로
+ * 리턴된 스트링 포인터는 @ref HanjaList 에서 관리하는 스트링으로
  * 수정하거나 free해서는 안된다.
  */
 const char*
@@ -697,15 +697,15 @@ hanja_list_get_key(const HanjaList *list)
 /**
  * @ingroup hanjadictionary
  * @brief @ref HanjaList 의 n번째 @ref Hanja 아이템의 포인터를 구하는 함수
- * @param list @ref HanjaList를 가리키는 포인터
+ * @param list @ref HanjaList 를 가리키는 포인터
  * @param n 참조할 아이템의 인덱스
- * @return @ref Hanja를 가리키는 포인터
+ * @return @ref Hanja 를 가리키는 포인터
  * 
- * 이 함수는 @a list가 가리키는 @ref HanjaList의 n번째 @ref Hanja 오브젝트를
+ * 이 함수는 @a list가 가리키는 @ref HanjaList 의 n번째 @ref Hanja 오브젝트를
  * 가리키는 포인터를 리턴한다.
  * @ref HanjaList 의 각 아이템은 정수형 인덱스로 각각 참조할 수 있다.
  * @ref HanjaList 가 가진 엔트리 갯수를 넘어서는 인덱스를 주면 NULL을 리턴한다.
- * 리턴된 @ref Hanja 오브젝트는 @ref HanjaList가 관리하는 오브젝트로 free하거나
+ * 리턴된 @ref Hanja 오브젝트는 @ref HanjaList 가 관리하는 오브젝트로 free하거나
  * 수정해서는 안된다.
  *
  * 다음의 예제는 list로 주어진 @ref HanjaList 의 모든 값을 프린트 하는 
@@ -749,7 +749,7 @@ hanja_list_get_nth_key(const HanjaList *list, unsigned int n)
 
 /**
  * @ingroup hanjadictionary
- * @brief @ref HanjaList의 n번째 아이템의 값를 구하는 함수
+ * @brief @ref HanjaList 의 n번째 아이템의 값를 구하는 함수
  * @return n번째 아이템의 값(value), UTF-8
  *
  * HanjaList_get_nth()의 convenient 함수
@@ -763,7 +763,7 @@ hanja_list_get_nth_value(const HanjaList *list, unsigned int n)
 
 /**
  * @ingroup hanjadictionary
- * @brief @ref HanjaList의 n번째 아이템의 설명을 구하는 함수
+ * @brief @ref HanjaList 의 n번째 아이템의 설명을 구하는 함수
  * @return n번째 아이템의 설명(comment), UTF-8
  *
  * HanjaList_get_nth()의 convenient 함수
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
index 07382f5..1801eab
@@ -6,5 +6,5 @@ includedir=@includedir@/hangul-1.0
 Name: libhangul
 Description: Hangul hanja input support
 Version: @PACKAGE_VERSION@
-Libs: -L${libdir} -lhangul
+Libs: -L${libdir} -lhangul @LIBINTL@
 Cflags: -I${includedir}
index ee444cf..28082de 100644 (file)
@@ -1,74 +1,71 @@
-Name:       libhangul
-Summary:    Hangul keyboard input library
-Version:    0.0.10
-Release:    1
-Group:      System Environment/Libraries
-License:    LGPL
-Source0:    %{name}-%{version}.tar.bz2
-Requires(post):  /sbin/ldconfig
-Requires(postun):  /sbin/ldconfig
-
-BuildRoot:  %{_tmppath}/%{name}-%{version}-build
+Name:           libhangul
+Version:        0.1.0
+Release:        1
+License:        LGPLv2.1
+Group:          System/I18n/Korean
+AutoReqProv:    on
+Url:            http://code.google.com/p/libhangul
+Source0:        %{name}-%{version}.tar.gz
+Summary:        Hangul input library used by scim-hangul and ibus-hangul
+BuildRequires:  gettext-tools
+
 
 %description
-This library implements Hangul keyboard input with various types of Korean keyboards.  It is intended to be a base library of Korean input methods on multiple platforms.
-This package contains the shared library and the runtime data.
+Hangul input library used by scim-hangul and ibus-hangul
+
 
-%package data
-Summary:    Hangul keyboard input library - data
-Group:      System Environment/Libraries
-Requires:   %{name} = %{version}-%{release}
+Authors:
+--------
+    Choe Hwanjin <choe.hwanjin@gmail.com>
+    Joon-cheol Park <jooncheol@gmail.com>
 
-%description data
-This package contains the architecture independent data.
+Hangul input library used by scim-hangul and ibus-hangul
 
 
 %package devel
-Summary:    Hangul keyboard input library - development files
-Group:      Development/Libraries
-Requires:   %{name} = %{version}-%{release}
+Summary:        Include Files and Libraries mandatory for Development
+Group:          System/I18n/Korean
+Requires:       %{name} = %{version}-%{release}
 
 %description devel
-This package contains the header files and the static library.
+This package contains all necessary include files and libraries needed
+to develop applications that require these.
 
 
 %prep
-%setup -q -n %{name}-%{version}
-
+%setup -q
 
 %build
-%reconfigure --disable-static
-
-# Call make instruction with smp support
-make %{?jobs:-j%jobs}
-
+%autogen
+%configure --disable-static --with-pic
+%{__make} %{?jobs:-j%jobs}
 
 %install
-rm -rf %{buildroot}
-%make_install
-
+make DESTDIR=${RPM_BUILD_ROOT} install
+%{__rm} -f %{buildroot}%{_libdir}/*.la
 
 %clean
 rm -rf %{buildroot}
 
+%post
+/sbin/ldconfig
 
-%post -p /sbin/ldconfig
-
-%postun -p /sbin/ldconfig
-
+%postun
+/sbin/ldconfig
 
 %files
-%defattr(-,root,root,-)
-%{_libdir}/lib*.so*
-
-
-%files data
-%defattr(-,root,root,-)
-%{_datadir}/libhangul/*
-
+%defattr(-, root, root)
+%doc AUTHORS COPYING NEWS README ChangeLog
+%{_libdir}/lib*.so.*
+%dir %{_datadir}/libhangul/
+%dir %{_datadir}/libhangul/hanja/
+%{_datadir}/libhangul/hanja/hanja.txt
+%{_bindir}/hangul
+%{_datadir}/locale/ko/LC_MESSAGES/libhangul.mo
 
 %files devel
-%defattr(-,root,root,-)
-%{_includedir}/hangul-1.0/*.h
-%{_libdir}/pkgconfig/*.pc
-
+%defattr(-, root, root)
+%dir /usr/include/hangul-1.0/
+/usr/include/hangul-1.0/*
+%{_libdir}/lib*.so
+%{_libdir}/pkgconfig/libhangul.pc
diff --git a/po/LINGUAS b/po/LINGUAS
new file mode 100644 (file)
index 0000000..d031295
--- /dev/null
@@ -0,0 +1 @@
+ko
diff --git a/po/Makevars b/po/Makevars
new file mode 100644 (file)
index 0000000..f4b8e81
--- /dev/null
@@ -0,0 +1,41 @@
+# Makefile variables for PO directory in any package using GNU gettext.
+
+# Usually the message domain is the same as the package name.
+DOMAIN = $(PACKAGE)
+
+# These two variables depend on the location of this directory.
+subdir = po
+top_builddir = ..
+
+# These options get passed to xgettext.
+XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
+
+# This is the copyright holder that gets inserted into the header of the
+# $(DOMAIN).pot file.  Set this to the copyright holder of the surrounding
+# package.  (Note that the msgstr strings, extracted from the package's
+# sources, belong to the copyright holder of the package.)  Translators are
+# expected to transfer the copyright for their translations to this person
+# or entity, or to disclaim their copyright.  The empty string stands for
+# the public domain; in this case the translators are expected to disclaim
+# their copyright.
+COPYRIGHT_HOLDER = Free Software Foundation, Inc.
+
+# This is the email address or URL to which the translators shall report
+# bugs in the untranslated strings:
+# - Strings which are not entire sentences, see the maintainer guidelines
+#   in the GNU gettext documentation, section 'Preparing Strings'.
+# - Strings which use unclear terms or require additional context to be
+#   understood.
+# - Strings which make invalid assumptions about notation of date, time or
+#   money.
+# - Pluralisation problems.
+# - Incorrect English spelling.
+# - Incorrect formatting.
+# It can be your email address, or a mailing list address where translators
+# can write to without being subscribed, or the URL of a web page through
+# which the translators can contact you.
+MSGID_BUGS_ADDRESS = http://code.google.com/p/libhangul/
+
+# This is the list of locale categories, beyond LC_MESSAGES, for which the
+# message catalogs shall be used.  It is usually empty.
+EXTRA_LOCALE_CATEGORIES =
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100644 (file)
index 0000000..82fae4c
--- /dev/null
@@ -0,0 +1,5 @@
+# List of source files which contain translatable strings.
+
+hangul/hangulctype.c
+hangul/hangulinputcontext.c
+hangul/hanja.c
diff --git a/po/ko.po b/po/ko.po
new file mode 100644 (file)
index 0000000..bf80939
--- /dev/null
+++ b/po/ko.po
@@ -0,0 +1,53 @@
+# libhangul korean translation
+# Copyright (C) 2010 Free Software Foundation, Inc.
+# This file is distributed under the same license as the libhangul package.
+# Choe Hwanjin <choe.hwanjin@gmail.com>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libhangul 0.0.12\n"
+"Report-Msgid-Bugs-To: http://kldp.net/projects/hangul\n"
+"POT-Creation-Date: 2011-08-29 23:30+0900\n"
+"PO-Revision-Date: 2010-11-14 21:34+0900\n"
+"Last-Translator: Choe Hwanjin <choe.hwanjin@gmail.com>\n"
+"Language-Team: Korean <ko@li.org>\n"
+"Language: ko\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: hangul/hangulinputcontext.c:263
+msgid "Dubeolsik"
+msgstr "두벌식"
+
+#: hangul/hangulinputcontext.c:271
+msgid "Dubeolsik Yetgeul"
+msgstr "두벌식 옛글"
+
+#: hangul/hangulinputcontext.c:279
+msgid "Sebeolsik Dubeol Layout"
+msgstr "세벌식 두벌자판"
+
+#: hangul/hangulinputcontext.c:287
+msgid "Sebeolsik 390"
+msgstr "세벌식 390"
+
+#: hangul/hangulinputcontext.c:295
+msgid "Sebeolsik Final"
+msgstr "세벌식 최종"
+
+#: hangul/hangulinputcontext.c:303
+msgid "Sebeolsik Noshift"
+msgstr "세벌식 순아래"
+
+#: hangul/hangulinputcontext.c:311
+msgid "Sebeolsik Yetgeul"
+msgstr "세벌식 옛글"
+
+#: hangul/hangulinputcontext.c:319
+msgid "Romaja"
+msgstr "로마자"
+
+#: hangul/hangulinputcontext.c:327
+msgid "Ahnmatae"
+msgstr "안마태"
old mode 100755 (executable)
new mode 100644 (file)
index e53aa22..5889f49
@@ -3,14 +3,14 @@ noinst_PROGRAMS = hangul hanja
 
 hangul_CFLAGS =
 hangul_SOURCES = hangul.c
-hangul_LDADD = ../hangul/libhangul.la
+hangul_LDADD = ../hangul/libhangul.la $(LTLIBINTL) $(LTLIBICONV)
 
 hanja_CFLAGS =
 hanja_SOURCES = hanja.c
-hanja_LDADD = ../hangul/libhangul.la
+hanja_LDADD = ../hangul/libhangul.la $(LTLIBINTL)
 
 TESTS = test
 check_PROGRAMS = test
 test_SOURCES = test.c ../hangul/hangul.h
-test_CFLAGS = @CHECK_CFLAGS@
-test_LDADD = @CHECK_LIBS@ $(top_builddir)/hangul/libhangul.la
+test_CFLAGS = $(CHECK_CFLAGS)
+test_LDADD = $(CHECK_LIBS) $(top_builddir)/hangul/libhangul.la $(LTLIBINTL)
index 4023759..7f829a3 100644 (file)
 #define UCS4 "UCS-4LE"
 #endif
 
+#ifndef ICONV_CONST
+#define ICONV_CONST
+#endif
+
 void ucs4_to_utf8(char *buf, const ucschar *ucs4, size_t bufsize)
 {
     size_t n;
-    char*  inbuf;
+    ICONV_CONST char*  inbuf;
     size_t inbytesleft;
     char*  outbuf;
     size_t outbytesleft;
index 484a0c1..bb67fea 100644 (file)
+#include <stdarg.h>
 #include <stdlib.h>
+#include <wchar.h>
 #include <check.h>
 
 #include "../hangul/hangul.h"
 
 #define countof(x)  ((sizeof(x)) / (sizeof(x[0])))
 
+static bool
+check_preedit(const char* keyboard, const char* input, const wchar_t* output)
+{
+    HangulInputContext* ic;
+    const char* p;
+    const ucschar* preedit;
+    int res;
+
+    ic = hangul_ic_new(keyboard);
+
+    p = input;
+    while (*p != '\0') {
+       hangul_ic_process(ic, *p);
+       p++;
+    }
+
+    preedit = hangul_ic_get_preedit_string(ic);
+
+    res = wcscmp((const wchar_t*)preedit, output);
+
+    hangul_ic_delete(ic);
+
+    return res == 0;
+}
+
+static bool
+check_commit(const char* keyboard, const char* input, const wchar_t* output)
+{
+    HangulInputContext* ic;
+    const char* p;
+    const ucschar* commit;
+    int res;
+
+    ic = hangul_ic_new(keyboard);
+
+    p = input;
+    while (*p != '\0') {
+       hangul_ic_process(ic, *p);
+       p++;
+    }
+
+    commit = hangul_ic_get_commit_string(ic);
+
+    res = wcscmp((const wchar_t*)commit, output);
+
+    hangul_ic_delete(ic);
+
+    return res == 0;
+}
+
+START_TEST(test_hangul_ic_process_2)
+{
+    /* ㄱㅏㅉ */
+    fail_unless(check_commit("2", "rkW", L"가"));
+    fail_unless(check_preedit("2", "rkW", L"ㅉ"));
+    /* ㅂㅓㅅㅅㅡ */
+    fail_unless(check_commit("2", "qjttm", L"벗"));
+    fail_unless(check_preedit("2", "qjttm", L"스"));
+    /* ㅂㅓㅆㅡ */
+    fail_unless(check_commit("2", "qjTm", L"버"));
+    fail_unless(check_preedit("2", "qjTm", L"쓰"));
+    /* ㅁㅏㄹㄱㅗ */
+    fail_unless(check_preedit("2", "akfr", L"맑"));
+    fail_unless(check_commit("2", "akfrh", L"말"));
+    fail_unless(check_preedit("2", "akfrh", L"고"));
+}
+END_TEST
+
+START_TEST(test_hangul_ic_process_2y)
+{
+    /* ㅎ     */
+    fail_unless(check_preedit("2y", "g", L"ㅎ"));
+    /*   ㅗ   */
+    fail_unless(check_preedit("2y", "h", L"ㅗ"));
+    /*     ㅌ */
+    fail_unless(check_preedit("2y", "x", L"ㅌ"));
+    /* ㅂㅇ   */
+    fail_unless(check_preedit("2y", "qd", L"\x3178"));
+    /* ᄼ     */
+    fail_unless(check_preedit("2y", "Z", L"\x113c\x1160"));
+    /* ᅐ     */
+    fail_unless(check_preedit("2y", "V", L"\x1150\x1160"));
+    /* ᅝ     */
+    fail_unless(check_preedit("2y", "sg", L"\x115d\x1160"));
+
+    /* ㄱㅏㅇ */
+    fail_unless(check_preedit("2y", "rkd", L"강"));
+    /* ㄹㅐ   */
+    fail_unless(check_preedit("2y", "fo", L"래"));
+    /* ㅎ. ㄴ */
+    fail_unless(check_preedit("2y", "gKs", L"\x1112\x119e\x11ab"));
+    /* ㅂㅂㅇㅏㅁㅅㅅ */ 
+    fail_unless(check_preedit("2y", "qqdhatt", L"\x112c\x1169\x11de"));
+    /* ㅂㅂㅇㅏㅁㅅㅅㅛ */ 
+    fail_unless(check_commit("2y", "qqdhatty", L"\x112c\x1169\x11dd"));
+    fail_unless(check_preedit("2y", "qqdhatty", L"쇼"));
+    /* ㅂㅂㅇㅏㅁㅆㅛ */ 
+    fail_unless(check_commit("2y", "qqdhaTy", L"\x112c\x1169\x11b7"));
+    fail_unless(check_preedit("2y", "qqdhaTy", L"쑈"));
+    /* 옛이응 처리 */
+    /* ㅇㅇㅏㅇㅇㅏ */
+    fail_unless(check_commit("2y", "ddkdd", L"\x1147\x1161\x11bc"));
+    fail_unless(check_preedit("2y", "ddkdd", L"ㅇ"));
+    /* ㄱㅏㆁㆁ */
+    fail_unless(check_preedit("2y", "rkDD", L"\x1100\x1161\x11ee"));
+    /* ㄱㅏㆁㆁㅏ */
+    fail_unless(check_commit("2y", "rkDDk", L"\x1100\x1161\x11f0"));
+    fail_unless(check_preedit("2y", "rkDDk", L"\x114c\x1161"));
+    /* ㅏㅏㅏㅏ */
+    fail_unless(check_preedit("2y", "kkkk", L"\x115f\x11a2"));
+}
+END_TEST
+
+START_TEST(test_hangul_ic_process_3f)
+{
+    /* L V T  */
+    /* ㅎ     */
+    fail_unless(check_preedit("3f", "m", L"ㅎ"));
+    /*   ㅗ   */
+    fail_unless(check_preedit("3f", "v", L"ㅗ"));
+    /*     ㅌ */
+    fail_unless(check_preedit("3f", "W", L"ㅌ"));
+
+    /* ㄱㅏㅇ */
+    fail_unless(check_preedit("3f", "kfa", L"강"));
+    /* ㄹㅐ   */
+    fail_unless(check_preedit("3f", "yr", L"래"));
+    /* ㄴ  ㅁ */
+    fail_unless(check_preedit("3f", "hz", L"\x1102\x1160\x11b7"));
+    /*   ㅜㅅ */ 
+    fail_unless(check_preedit("3f", "tq", L"\x115f\x1165\x11ba"));
+}
+END_TEST
+
 START_TEST(test_hangul_ic_process_romaja)
 {
     HangulInputContext* ic;
@@ -21,7 +157,7 @@ START_TEST(test_hangul_ic_process_romaja)
 
     preedit = hangul_ic_get_preedit_string(ic);
     commit = hangul_ic_get_commit_string(ic);
-    fail_unless(preedit[0] == 0xd55c); // 한
+    fail_unless(preedit[0] == L'한');
     fail_unless(commit[0] == 0);
 
     hangul_ic_reset(ic);
@@ -31,7 +167,7 @@ START_TEST(test_hangul_ic_process_romaja)
 
     preedit = hangul_ic_get_preedit_string(ic);
     commit = hangul_ic_get_commit_string(ic);
-    fail_unless(preedit[0] == 0xc544); // 아
+    fail_unless(preedit[0] == L'아');
     fail_unless(commit[0] == 0);
 
     // remove correctly when automatically ㅇ was inserted
@@ -49,7 +185,7 @@ START_TEST(test_hangul_ic_process_romaja)
     preedit = hangul_ic_get_preedit_string(ic);
     commit = hangul_ic_get_commit_string(ic);
     fail_unless(preedit[0] == 0x314c); // ㅌ
-    fail_unless(commit[0] == 0xd2b8);  // 트
+    fail_unless(commit[0] == L'트');
 
     // ng makes trailing ㅇ
     hangul_ic_reset(ic);
@@ -60,7 +196,7 @@ START_TEST(test_hangul_ic_process_romaja)
 
     preedit = hangul_ic_get_preedit_string(ic);
     commit = hangul_ic_get_commit_string(ic);
-    fail_unless(preedit[0] == 0xac15); // 강
+    fail_unless(preedit[0] == L'강'); // 강
     fail_unless(commit[0] == 0);
 
     // gangi makes 강이
@@ -68,8 +204,8 @@ START_TEST(test_hangul_ic_process_romaja)
 
     preedit = hangul_ic_get_preedit_string(ic);
     commit = hangul_ic_get_commit_string(ic);
-    fail_unless(preedit[0] == 0xc774); // 이
-    fail_unless(commit[0] == 0xac15);  // 강
+    fail_unless(preedit[0] == L'이');
+    fail_unless(commit[0] == L'강');  // 강
 
     // nanG makes 난ㄱ
     // uppercase makes new syllable
@@ -81,7 +217,7 @@ START_TEST(test_hangul_ic_process_romaja)
     preedit = hangul_ic_get_preedit_string(ic);
     commit = hangul_ic_get_commit_string(ic);
     fail_unless(preedit[0] == 0x3131); // ㄱ
-    fail_unless(commit[0] == 0xb09c);  // 난
+    fail_unless(commit[0] == L'난');  // 난
 
     // special operation for x
     // x generate ㅈ for leading consonant
@@ -92,7 +228,7 @@ START_TEST(test_hangul_ic_process_romaja)
     preedit = hangul_ic_get_preedit_string(ic);
     commit = hangul_ic_get_commit_string(ic);
     fail_unless(preedit[0] == 0x3148); // 지
-    fail_unless(commit[0] == 0xc988);
+    fail_unless(commit[0] == L'즈');
 
     hangul_ic_reset(ic);
     hangul_ic_process(ic, 'x');
@@ -100,7 +236,7 @@ START_TEST(test_hangul_ic_process_romaja)
 
     preedit = hangul_ic_get_preedit_string(ic);
     commit = hangul_ic_get_commit_string(ic);
-    fail_unless(preedit[0] == 0xc9c0); // 지
+    fail_unless(preedit[0] == L'지'); // 지
     fail_unless(commit[0] == 0x0);
 
     // x generate ㄱㅅ for trailing consonant
@@ -114,8 +250,8 @@ START_TEST(test_hangul_ic_process_romaja)
 
     preedit = hangul_ic_get_preedit_string(ic);
     commit = hangul_ic_get_commit_string(ic);
-    fail_unless(preedit[0] == 0xc2dc); // 시
-    fail_unless(commit[0] == 0xc139);  // 섹
+    fail_unless(preedit[0] == L'시'); // 시
+    fail_unless(commit[0] == L'섹');  // 섹
     
     hangul_ic_delete(ic);
 }
@@ -234,13 +370,42 @@ START_TEST(test_syllable_iterator)
 }
 END_TEST
 
+START_TEST(test_hangul_keyboard)
+{
+    const char* id;
+    const char* name;
+    unsigned int n;
+    unsigned int i;
+
+    n = hangul_ic_get_n_keyboards();
+    fail_unless(n != 0,
+               "error: there is no builtin hangul keyboard");
+
+    for (i = 0; i < n; ++i) {
+       id = hangul_ic_get_keyboard_id(i);
+       fail_unless(id != NULL,
+                   "error: keyboard id == NULL");
+    }
+
+    for (i = 0; i < n; ++i) {
+       name = hangul_ic_get_keyboard_name(i);
+       fail_unless(name != NULL,
+                   "error: keyboard id == NULL");
+    }
+}
+END_TEST
+
 Suite* libhangul_suite()
 {
     Suite* s = suite_create("libhangul");
 
     TCase* hangul = tcase_create("hangul");
+    tcase_add_test(hangul, test_hangul_ic_process_2);
+    tcase_add_test(hangul, test_hangul_ic_process_2y);
+    tcase_add_test(hangul, test_hangul_ic_process_3f);
     tcase_add_test(hangul, test_hangul_ic_process_romaja);
     tcase_add_test(hangul, test_syllable_iterator);
+    tcase_add_test(hangul, test_hangul_keyboard);
     suite_add_tcase(s, hangul);
 
     return s;
@@ -252,6 +417,7 @@ int main()
     Suite* s = libhangul_suite();
     SRunner* sr = srunner_create(s);
 
+    srunner_set_fork_status(sr, CK_NOFORK);
     srunner_run_all(sr, CK_NORMAL);
 
     number_failed = srunner_ntests_failed(sr);
diff --git a/tools/Makefile.am b/tools/Makefile.am
new file mode 100644 (file)
index 0000000..cf27653
--- /dev/null
@@ -0,0 +1,6 @@
+
+bin_PROGRAMS = hangul
+
+hangul_SOURCES = hangul.c
+hangul_CFLAGS = -DLOCALEDIR=\"$(localedir)\"
+hangul_LDADD = ../hangul/libhangul.la $(LTLIBINTL) $(LTLIBICONV)
diff --git a/tools/Makefile.in b/tools/Makefile.in
new file mode 100644 (file)
index 0000000..b21e929
--- /dev/null
@@ -0,0 +1,558 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+bin_PROGRAMS = hangul$(EXEEXT)
+subdir = tools
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+       $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+       $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)"
+PROGRAMS = $(bin_PROGRAMS)
+am_hangul_OBJECTS = hangul-hangul.$(OBJEXT)
+hangul_OBJECTS = $(am_hangul_OBJECTS)
+am__DEPENDENCIES_1 =
+hangul_DEPENDENCIES = ../hangul/libhangul.la $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1)
+hangul_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=link $(CCLD) $(hangul_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+       $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+       $(LDFLAGS) -o $@
+SOURCES = $(hangul_SOURCES)
+DIST_SOURCES = $(hangul_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_CFLAGS = @CHECK_CFLAGS@
+CHECK_LIBS = @CHECK_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBHANGUL_AGE = @LIBHANGUL_AGE@
+LIBHANGUL_CURRENT = @LIBHANGUL_CURRENT@
+LIBHANGUL_REVISION = @LIBHANGUL_REVISION@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+hangul_SOURCES = hangul.c
+hangul_CFLAGS = -DLOCALEDIR=\"$(localedir)\"
+hangul_LDADD = ../hangul/libhangul.la $(LTLIBINTL) $(LTLIBICONV)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu tools/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-binPROGRAMS: $(bin_PROGRAMS)
+       @$(NORMAL_INSTALL)
+       test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+       @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+       for p in $$list; do echo "$$p $$p"; done | \
+       sed 's/$(EXEEXT)$$//' | \
+       while read p p1; do if test -f $$p || test -f $$p1; \
+         then echo "$$p"; echo "$$p"; else :; fi; \
+       done | \
+       sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+           -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+       sed 'N;N;N;s,\n, ,g' | \
+       $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+         { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+           if ($$2 == $$4) files[d] = files[d] " " $$1; \
+           else { print "f", $$3 "/" $$4, $$1; } } \
+         END { for (d in files) print "f", d, files[d] }' | \
+       while read type dir files; do \
+           if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+           test -z "$$files" || { \
+           echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+           $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+           } \
+       ; done
+
+uninstall-binPROGRAMS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+       files=`for p in $$list; do echo "$$p"; done | \
+         sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+             -e 's/$$/$(EXEEXT)/' `; \
+       test -n "$$list" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+       @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
+hangul$(EXEEXT): $(hangul_OBJECTS) $(hangul_DEPENDENCIES) 
+       @rm -f hangul$(EXEEXT)
+       $(hangul_LINK) $(hangul_OBJECTS) $(hangul_LDADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hangul-hangul.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
+
+hangul-hangul.o: hangul.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hangul_CFLAGS) $(CFLAGS) -MT hangul-hangul.o -MD -MP -MF $(DEPDIR)/hangul-hangul.Tpo -c -o hangul-hangul.o `test -f 'hangul.c' || echo '$(srcdir)/'`hangul.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/hangul-hangul.Tpo $(DEPDIR)/hangul-hangul.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='hangul.c' object='hangul-hangul.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hangul_CFLAGS) $(CFLAGS) -c -o hangul-hangul.o `test -f 'hangul.c' || echo '$(srcdir)/'`hangul.c
+
+hangul-hangul.obj: hangul.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hangul_CFLAGS) $(CFLAGS) -MT hangul-hangul.obj -MD -MP -MF $(DEPDIR)/hangul-hangul.Tpo -c -o hangul-hangul.obj `if test -f 'hangul.c'; then $(CYGPATH_W) 'hangul.c'; else $(CYGPATH_W) '$(srcdir)/hangul.c'; fi`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/hangul-hangul.Tpo $(DEPDIR)/hangul-hangul.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='hangul.c' object='hangul-hangul.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hangul_CFLAGS) $(CFLAGS) -c -o hangul-hangul.obj `if test -f 'hangul.c'; then $(CYGPATH_W) 'hangul.c'; else $(CYGPATH_W) '$(srcdir)/hangul.c'; fi`
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+       for dir in "$(DESTDIR)$(bindir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+       clean-generic clean-libtool ctags distclean distclean-compile \
+       distclean-generic distclean-libtool distclean-tags distdir dvi \
+       dvi-am html html-am info info-am install install-am \
+       install-binPROGRAMS install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip installcheck installcheck-am installdirs \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+       pdf pdf-am ps ps-am tags uninstall uninstall-am \
+       uninstall-binPROGRAMS
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tools/hangul.c b/tools/hangul.c
new file mode 100644 (file)
index 0000000..bc6bba6
--- /dev/null
@@ -0,0 +1,416 @@
+/* libhangul
+ * Copyright (C) 2011 Choe Hwanjin
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <locale.h>
+#include <getopt.h>
+#include <errno.h>
+
+#ifdef HAVE_LANGINFO_H
+#include <langinfo.h>
+#endif
+
+#include <iconv.h>
+
+#include "../hangul/hangul.h"
+#include "../hangul/hangul-gettext.h"
+
+#ifdef WORDS_BIGENDIAN
+#define UCS4  "UCS-4BE"
+#else
+#define UCS4  "UCS-4LE"
+#endif
+
+#ifndef ICONV_CONST
+#define ICONV_CONST
+#endif
+
+static const char* program_name = "hangul";
+static iconv_t cd_ucs4_to_utf8 = (iconv_t)-1;
+
+static void
+print_error(int status, int errnum, const char* format, ...)
+{
+    va_list ap;
+
+    printf("%s: %s: ", program_name, strerror(errnum));
+
+    va_start(ap, format);
+    vprintf(format, ap);
+    va_end(ap);
+
+    fputc('\n', stdout);
+}
+
+static void
+usage(int status)
+{
+    if (status == EXIT_SUCCESS) {
+       printf(_("\
+Usage: %s [OPTION]... [FILE]...\n\
+"), program_name);
+
+       fputs(_("\
+Convert string into korean characters according to korean keyboard layout.\n\
+\n\
+Mandatory arguments to long options are mandatory for short options too.\n\
+  -k, --keyboard=KEYBOARDID   select keyboard layout by KEYBOARDID\n\
+  -l, --list                  list available keyboard and exit\n\
+  -i, --input=STRING          use STRING as input instead of standard input\n\
+  -o, --output=FILE           write result to FILE instead of standard output\n\
+  -s, --strict-order          do not allow wrong input sequence\n\
+"), stdout);
+
+       fputs(_("\
+      --help                  display this help and exit\n\
+      --version               output version information and exit\n\
+"), stdout);
+
+       fputs(_("\
+\n\
+With no FILE, or when FILE is -, read standard input.\n\
+"), stdout);
+
+         printf(_("\
+\n\
+Examples:\n\
+  %s -i gksrmfdlqfur  Convert specified string into korean characters\n\
+                          and print them to standard output.\n\
+  %s                  Convert standard input into korean characters\n\
+                          and print them to standard output.\n\
+"),
+              program_name, program_name);
+    } else {
+       fprintf(stderr, _("Try `%s --help' for more information.\n"),
+                program_name);
+    }
+
+    exit(status);
+}
+
+static void
+version()
+{
+    printf("%s (%s) %s\n", program_name, PACKAGE_NAME, PACKAGE_VERSION);
+    exit(EXIT_SUCCESS);
+}
+
+static void
+list_keyboards()
+{
+    unsigned i;
+    unsigned n;
+
+    n = hangul_ic_get_n_keyboards();
+
+#if defined(ENABLE_NLS) && defined(HAVE_NL_LANGINFO)
+    if (n > 0) {
+       // hangul_ic_get_keyboard_name() 함수가 UTF-8 스트링으로 리턴하므로
+       // 여기서는 locale 인코딩으로 변환해야 한다.
+       // 그런데 iconv를 호출하여 변환하기가 번거로우므로
+       // bind_textdomain_codeset을 다시 호출하여 gettext가 리턴하는 스트링의
+       // 인코딩을 바꿔준다. 이렇게 하기 위해서는
+       // hangul_ic_get_keyboard_name()을 먼저 호출하여
+       // bind_textdomain_codeset() 함수가 불린후 다시 설정하도록 한다.
+       const char* codeset = nl_langinfo(CODESET);
+       if (codeset != NULL) {
+           hangul_ic_get_keyboard_name(0);
+           bind_textdomain_codeset(GETTEXT_PACKAGE, codeset);
+       }
+    }
+#endif
+
+    for (i = 0; i < n; ++i) {
+       const char* id;
+       const char* name;
+
+       id = hangul_ic_get_keyboard_id(i);
+       name = hangul_ic_get_keyboard_name(i);
+
+       printf("%-12s %s\n", id, name);
+    }
+
+    exit(EXIT_SUCCESS);
+}
+
+static bool
+on_hic_transition(HangulInputContext* ic,
+        ucschar c, const ucschar* preedit, void * data)
+{
+    if (hangul_is_choseong(c)) {
+       if (hangul_ic_has_jungseong(ic) || hangul_ic_has_jongseong(ic))
+           return false;
+    } else if (hangul_is_jungseong(c)) {
+       if (hangul_ic_has_jongseong(ic))
+           return false;
+    }
+
+    return true;
+}
+
+size_t ucschar_strlen(const ucschar* str)
+{
+    const ucschar* p = str;
+    while (p[0] != 0) {
+       p++;
+    }
+
+    return p - str;
+}
+
+static int
+fputs_ucschar(const ucschar* str, FILE* stream)
+{
+    char buf[512];
+    ICONV_CONST char* inbuf;
+    char* outbuf;
+    size_t inbytesleft;
+    size_t outbytesleft;
+    size_t len;
+    size_t res;
+
+    len = ucschar_strlen(str);
+
+    inbuf = (char*)str;
+    outbuf = buf;
+    inbytesleft = len * 4;
+    outbytesleft = sizeof(buf) - 1;
+
+    res = iconv(cd_ucs4_to_utf8, &inbuf, &inbytesleft, &outbuf, &outbytesleft);
+    if (res == -1) {
+       if (errno == E2BIG) {
+       } else if (errno == EILSEQ) {
+       } else if (errno == EINVAL) {
+       }
+    }
+    
+    *outbuf = '\0';
+
+    return fputs(buf, stream);
+}
+
+static void
+hangul_process_with_string(HangulInputContext* ic, const char* input, FILE* output)
+{
+    int r;
+    const ucschar* str;
+
+    while (*input != '\0') {
+       bool is_processed = hangul_ic_process(ic, *input);
+       str = hangul_ic_get_commit_string(ic);
+       if (str[0] != 0) {
+           r = fputs_ucschar(str, output);
+           if (r == EOF)
+               goto on_error;
+       }
+       if (!is_processed) {
+           r = fputc(*input, output);
+           if (r == EOF)
+               goto on_error;
+       }
+
+       input++;
+    }
+
+    str = hangul_ic_flush(ic);
+    if (str[0] != 0) {
+       r = fputs_ucschar(str, output);
+       if (r == EOF)
+           goto on_error;
+    }
+
+    r = fputs("\n", output);
+    if (r == EOF)
+       goto on_error;
+
+    return;
+
+on_error:
+    print_error(0, errno, _("standard output"));
+    exit(EXIT_FAILURE);
+}
+
+static void
+hangul_process(HangulInputContext* ic, FILE* input, FILE* output)
+{
+    int r;
+    int c;
+    const ucschar* str;
+
+    c = fgetc(input);
+    while (c != EOF) {
+       bool res = hangul_ic_process(ic, c);
+       str = hangul_ic_get_commit_string(ic);
+       if (str[0] != 0) {
+           r = fputs_ucschar(str, output);
+           if (r == EOF)
+               goto on_error;
+       }
+       if (!res) {
+           r = fputc(c, output);
+           if (r == EOF)
+               goto on_error;
+       }
+
+       c = fgetc(input);
+    }
+
+    str = hangul_ic_flush(ic);
+    if (str[0] != 0) {
+       r = fputs_ucschar(str, output);
+       if (r == EOF)
+           goto on_error;
+    }
+
+    return;
+
+on_error:
+    print_error(0, errno, _("standard output"));
+    exit(EXIT_FAILURE);
+}
+
+int
+main(int argc, char *argv[])
+{
+    int i;
+    int res;
+    const char* input_string;
+    const char* output_file;
+    const char* keyboard;
+    FILE* output;
+    HangulInputContext* ic;
+    bool strict_order = false;
+
+#ifdef ENABLE_NLS
+    bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);
+#endif
+
+    setlocale(LC_ALL, "");
+
+    res = EXIT_SUCCESS;
+    keyboard = "2";
+    input_string = NULL;
+    output_file = "-";
+    while (1) {
+       int c;
+       static struct option const long_options[] = {
+           { "keyboard",    required_argument,  NULL, 'k' },
+           { "list",        no_argument,        NULL, 'l' },
+           { "input",       required_argument,  NULL, 'i' },
+           { "output",      required_argument,  NULL, 'o' },
+           { "strict-order",no_argument,        NULL, 's' },
+           { "help",        no_argument,        NULL, 'h' },
+           { "version",     no_argument,        NULL, 'v' },
+           { NULL,          0,                  NULL, 0   }
+       };
+
+       c = getopt_long(argc, argv, "k:li:o:s", long_options, NULL);
+       if (c == -1)
+           break;
+
+       switch (c) {
+       case 'k':
+           keyboard = optarg;
+           break;
+       case 'l':
+           list_keyboards();
+           break;
+       case 'i':
+           input_string = optarg;
+           break;
+       case 'o':
+           output_file = optarg;
+           break;
+       case 's':
+           strict_order = true;
+           break;
+       case 'h':
+           usage(EXIT_SUCCESS);
+           break;
+       case 'v':
+           version();
+           break;
+       default:
+           usage(EXIT_FAILURE);
+       }
+    }
+
+    if (strcmp(output_file, "-") == 0) {
+       output = stdout;
+    } else {
+       output = fopen(output_file, "w");
+       if (output == NULL) {
+           print_error(EXIT_FAILURE, errno, "%s", output_file);
+           exit(EXIT_FAILURE);
+       }
+    }
+
+    cd_ucs4_to_utf8 = iconv_open("UTF-8", UCS4);
+    if (cd_ucs4_to_utf8 == (iconv_t)-1) {
+       print_error(EXIT_FAILURE, errno, _("conversion from %s to UTF-8"), UCS4);
+       exit(EXIT_FAILURE);
+    }
+
+    ic = hangul_ic_new(keyboard);
+
+    if (strict_order) {
+       hangul_ic_connect_callback(ic, "transition", on_hic_transition, NULL);
+    }
+
+    if (input_string != NULL) {
+       hangul_process_with_string(ic, input_string, output);
+    }
+
+    if (optind < argc) {
+       for (i = optind; i < argc; i++) {
+           FILE* input = NULL;
+           if (strcmp(argv[i], "-") == 0) {
+               input = stdin;
+               hangul_process(ic, input, output);
+           } else {
+               input = fopen(argv[i], "r");
+               if (input == NULL) {
+                   print_error(0, errno, "%s", argv[i]);
+               } else {
+                   hangul_process(ic, input, output);
+                   fclose(input);
+               }
+           }
+       }
+    } else if (input_string == NULL) {
+       hangul_process(ic, stdin, output);
+    }
+
+    hangul_ic_delete(ic);
+
+    iconv_close(cd_ucs4_to_utf8);
+
+    if (strcmp(output_file, "-") != 0) {
+       fclose(output);
+    }
+
+    return res;
+}