한글 초성, 중성, 종성의 합성
Posted 04 19, 2013 09:56, Filed under: Language/Etc한글은 유니코드로 44032번부터라고 한다.
한글은 초성, 중성, 종성으로 이루어져있으며
초성은 19개 : 'ㄱ', 'ㄲ', 'ㄴ', 'ㄷ', 'ㄸ', 'ㄹ', 'ㅁ', 'ㅂ', 'ㅃ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅉ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ'
중성은 21개 : 'ㅏ', 'ㅐ', 'ㅑ', 'ㅒ', 'ㅓ', 'ㅔ', 'ㅕ', 'ㅖ', 'ㅗ', 'ㅘ', 'ㅙ', 'ㅚ', 'ㅛ', 'ㅜ', 'ㅝ', 'ㅞ', 'ㅟ', 'ㅠ', 'ㅡ', 'ㅢ', 'ㅣ'
종성은 28개 : ' ','ㄱ', 'ㄲ', 'ㄳ', 'ㄴ', 'ㄵ', 'ㄶ', 'ㄷ', 'ㄹ', 'ㄺ', 'ㄻ', 'ㄼ', 'ㄽ', 'ㄾ', 'ㄿ', 'ㅀ', 'ㅁ', 'ㅂ', 'ㅄ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ'
가 있다. -종성의 0번째는 공백이다.-
이것이 한글 조합의 핵심입니다.
각 자음과 모음에는 코드가 할당되는데 일정한 공식으로 조합된 글자의 코드값을 얻어낼 수 있습니다.
예를 들면 "각"은
초성 "ㄱ"
중성 "ㅏ"
종성 "ㄱ"
으로 이루어져 있습니다. 각각을 코드로 바꾸어보면
초성 "ㄱ" -> 0
중성 "ㅏ" -> 0
종성 "ㄱ" -> 1
이와 같이 됩니다.
이것을 다음 공식에 대입하면
한글 코드 = 44032 + (초성 * 588) + (중성 * 28) + 종성
"각"의 코드값이 나오는 것을 알 수 있습니다.
다음 예제를 실행시켜보세요.
-----------------------------------------------------------------
var 초성=0;
var 중성=0;
var 종성=1;
trace(String.fromCharCode( 44032 + (초성 * 588) + (중성 * 28) + 종성));
----------------------------------------------------------------
결과는 "각"이 됩니다.
첨부한 예제 파일인 "타이핑_예제"는 예전에 swf 파일만 올렸던 자료입니다.
원본도 같이 공개하는데 다듬을 시간이 없어서 지저분합니다.
이것을 개량하여 터치 스크린 키보드도 개발이 가능합니다.
키보드 입력을 구현하기 위해서는 다섯가지 종류의 합성에 대해 알아야합니다.
첫째, "ㄱ", "ㄴ", "ㅕ" 등과 같이 자음이나 모음 한 자만 입력된 경우의 코드값 구하기
둘째, "가", "러" 등과 같이 종성이 없는 경우
셋째, "각", "쀏" 과 같이 초성, 중성, 종성 모두가 조합된 경우
넷째, "ㅚ" 등과 같이 모음과 모음의 합성
다섯째, "ㄳ", "ㅄ" 등과 같은 자음과 자음의 합성입니다.
첫째, 자음의 코드는 다음 공식으로 구합니다.
한글 코드값 = 12593 + 초성코드
모음의 코드는 다음의 공식으로 구합니다.
한글 코드값 = 12623 + 중성코드
둘째, 종성없이 자음+모음 형태의 한글의 코드는 다음 공식으로 구합니다.
44032 + (초성 * 588) + (중성 * 28));
초성+중성+종성의 합성 공식에서 종성=0이라고 생각하면 됩니다.
셋째, 앞에서 밝혔듯 초성+중성+종성의 합성 공식은 다음과 같습니다.
한글 코드 = 44032 + (초성 * 588) + (중성 * 28) + 종성
넷째, 모음과 모음의 합성은 스위치문으로 각 경우마다 처리해야합니다.
가령 코드가 9인 "ㅘ"의 경우 코드가 8인 "ㅗ"와 0인 "ㅏ"의 합성입니다.
다섯째, 자음과 자음의 합성 역시 모음+모음의 경우와 같은 방법으로 합성해냅니다.
결론........................................................................................................
키보드 입력 인터페이스를 구현하는 경우 위와 같은 다섯가지 경우를 생각해야하며
자음일때 자음을 입력하면 다음 글자로 넘어가고, 자음에 모음을 입력하면 합성해주고
"ㄱ" "ㄴ" "ㄱㄴ" "ㄱ" "ㅓ" "거"
위와 같은 합성할 수 있으면 합성하고 합성할 수 없는 문자를 입력하면 다음으로 넘기는 등의
처리까지 깔끔하게 해주어야 비로소 한글 입력 인터페이스를 구현할 수 있습니다.
출처 : http://cafe.naver.com/flashdev/38144
※ 위 내용은, 여러 자료를 참고하거나 제가 주관적으로 정리한 것입니다.
잘못된 정보나 보완이 필요한 부분을, 댓글 또는 메일로 보내주시면 많은 도움이 되겠습니다.
잘못된 정보나 보완이 필요한 부분을, 댓글 또는 메일로 보내주시면 많은 도움이 되겠습니다.
"Language / Etc" 분류의 다른 글
R - 프로그램, 패키기 (0) | 2012/10/20 |
SNS - 페이스북, 트위터, 미투데이등.. SNS 붙이기 (4) | 2011/07/06 |
C 언어 (0) | 2010/04/02 |
bat 파일로 FTP 파일 업, 다운로드 (0) | 2009/10/16 |
프로그램 언어의 역사 이미지 (0) | 2009/06/19 |
Http 통신규약 문서 (0) | 2009/06/16 |
필드 갯수만큼 출력, 개행 (0) | 2009/04/01 |
선택 정렬(Selection Sort) (0) | 2009/03/20 |
Algorism - 최대값을 기준으로 여러개의 입력받은 값을 나눔. (0) | 2009/03/02 |
Response :
0 Trackback
,
2 Comments
Trackback URL : http://develop.sunshiny.co.kr/trackback/876
-
감사합니다 많은 도움 되었습니다!ㅎㅎ
-
네, 안녕하세요.
댓글 남겨 주셔서 감사합니다.
-