한글 초성, 중성, 종성의 합성

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

※ 위 내용은, 여러 자료를 참고하거나 제가 주관적으로 정리한 것입니다.
   잘못된 정보나 보완이 필요한 부분을, 댓글 또는 메일로 보내주시면 많은 도움이 되겠습니다.
04 19, 2013 09:56 04 19, 2013 09:56


Trackback URL : http://develop.sunshiny.co.kr/trackback/876

  1. # 프리시퀸스 2018年 04月 05日 16時 42分 Delete Reply

    감사합니다 많은 도움 되었습니다!ㅎㅎ

    1. Re: # sunshiny 2018年 04月 12日 21時 21分 Delete

      네, 안녕하세요.
      댓글 남겨 주셔서 감사합니다.

Leave a comment


Recent Posts

  1. HDFS - Python Encoding 오류 처리
  2. HP - Vertica ROS Container 관련 오류...
  3. HDFS - Hive 실행시 System Time 오류
  4. HP - Vertica 사용자 쿼리 이력 테이블...
  5. Client에서 HDFS 환경의 데이터 처리시...

Recent Comments

  1. 안녕하세요^^ 배그핵
  2. 안녕하세요^^ 도움이 되셨다니, 저... sunshiny
  3. 정말 큰 도움이 되었습니다.. 감사합... 사랑은
  4. 네, 안녕하세요. 댓글 남겨 주셔서... sunshiny
  5. 감사합니다 많은 도움 되었습니다!ㅎㅎ 프리시퀸스

Recent Trackbacks

  1. Mysql - mysql 설치후 Character set... 멀고 가까움이 다르기 때문 %M

Calendar

«   10 2019   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Bookmarks

  1. 위키피디아
  2. MysqlKorea
  3. 오라클 클럽
  4. API - Java
  5. Apache Hadoop API
  6. Apache Software Foundation
  7. HDFS 생태계 솔루션
  8. DNSBL - Spam Database Lookup
  9. Ready System
  10. Solaris Freeware
  11. Linux-Site
  12. 윈디하나의 솔라나라

Site Stats

TOTAL 2724083 HIT
TODAY 549 HIT
YESTERDAY 589 HIT