유니코드 한글 음절
uAC00부터 uD7A3까지 구역은 10000여자가 넘는 방대한 현대 한글 문자가 완성형의 형태로 차지하고 있다. 아래 항목에서 언급하게 될 첫소리, 가운데소리, 끝소리 문자들이 순서대로 조합되어 나열되어 있으므로 음절 문자를 자모 문자로 변환 하거나, 반대로 자소문자를 이용해서 음절 문자로 변환하는 작업은 비교적 간단하다.
음절 문자 배열의 규칙성
위 항목의 문자 코드 배열 순서는 끝 소리 글자 28자, 가운데 소리 글자 21자, 첫소리 글자 19자를 순서대로 조합해서 만들어져 있다. 이 때 첫/가/끝 소리 문자의 나열 순서는 아래 항목의 한글 자모 문자의 순서와 동일하다. 단, 끝 소리 문자에 받침이 없는 경우가 추가되어 28개의 조합이 사용된다.
가, 각, 갂, 갃, 간, ..., 개, 객, 갞, ..., 까, 깍, 깎, ..., 힣
|
첫 소리 |
가운데 소리 |
끝 소리 |
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 |
|
|
ㅎ |
이러한 규칙을 바탕으로 한글 음절을 자소 단위로 분해하는 코드는 다음과 같이 작성할 수 있다. 전체 소스 코드는 이곳에서!
protected static char getChoSeong(char character) {
int val = (int)character;
val -= HANGEUL_SYLLABLE_BEGIN;
val = val / 28 / 21;
val += HANGEUL_JAMO_CHOSEONG_BEGIN;
return (char) val;
}
protected static char getJungSeong(char character) {
int val = (int)character;
val -= HANGEUL_SYLLABLE_BEGIN;
val = val / 28 % 21;
val += HANGEUL_JAMO_JUNGSEONG_BEGIN;
return (char) val;
}
protected static char getJongSeong(char character) {
int val = (int)character;
val -= HANGEUL_SYLLABLE_BEGIN;
val = val % 28 - 1;
if (val == -1) return FILLER; //종성없음
val += HANGEUL_JAMO_JONGSEONG_BEGIN;
return (char) val;
}
유니코드 한글 자모
u1100에서부터 u11FF 까지는 한글의 자음 및 모음이 할당되어 있다. 순서대로 현대 한글 첫소리 글자 19자, 옛 한글 첫소리 글자 76자, 첫소리 채움문자, 가운데소리 채움문자, 현대 한글 가운데 소리 문자 21자, 옛 한글 가운데 소리 글자 50자, 현대 한글 끝소리 글자 27자, 옛 한글 끝소리 글자 61자가 나열되어 있다.
유니코드 한글 호환 자모
u3131부터 u318E까지의 영역에도 한글 자음 및 모음이 할당되어 있다. (시스템에 따라 다르겠지만,) 한글의 자음 또는 모음을 낱자로 사용하는 경우(예를들어, 'ㄱ' 등)에는 위의 '한글 자모' 문자 코드 대신 '한글 호환 자모' 문자 코드가 사용된다. 위 항목의 자음/모음 배열은 초/중/종성으로 구분되어 있는 반면, 한글 호환 자모 영역은 자음과 모음으로 구분되어 있는데, 순서대로 현대 한글 자음, 현대 한글 모음, 옛 한글 자음, 옛 한글 모음 순으로 나열되어 있다.
'프로그래밍' 카테고리의 다른 글
빅엔디안, 리틀엔디안 (0) | 2014.03.07 |
---|---|
서보 Servo (0) | 2012.03.07 |
CMYK <-> RGB (0) | 2011.10.09 |
HTML에 관한 레퍼런스 사이트를 오픈하였습니다. (0) | 2010.12.29 |
MVC in Rails (0) | 2010.05.26 |