Unicode의 조합방법은 확실하게 완성형이나 옛 조합방법보다는 쉽고 많은 조합을 제공하기 때문에 정리할 가치가 매우 크다고 생각됨.
1.1 왜 조합형을 지원해야 하는가? ¶
- 한글의 효율적인 오토마타개발이나 폰트의 최소화를 위해서 노력하는것이 당연하다고 생각하신다면 맞을겁니다.
- 완성형 코드는 입력기의 개발에 많은 테이블을 소요하지만 조합형은 테이블의 크기가 작은 상태에서 개발이 가능합니다.
- 옛 조합형은 Unicode 로 대체가 가능하고 Unicode가 훨씬 다양한 조합력을 나타낼수 있기 때문에 이제는 거의 사라져 가는 추세입니다.
1.2 옛 조합형 코드표 (조합형: 삼보, 대우, 현대, 쌍용, 큐닉스) ¶
- 일부 조합형을 독자적으로 개발하거나 개선된 코드변환을 위해서 미정의상태를 채움으로 처리해야 하는 경우가 있습니다.
- 오래된 구어표시영역이 있으나 필자의 자료는 그 부분에 대해서는 충분히 열거할수 없기에 표시하지 않겠습니다.
비트조합 (bit) 10진 코드 16진 코드 초성(순번) 중성(순번) 종성(순번) 0 0 0 0 0 0 00 미정의 미정의 미정의 0 0 0 0 1 1 01 채움 미정의 채움 0 0 0 1 0 2 02 ㄱ (0x00) 채움 ㄱ (0x00) 0 0 0 1 1 3 03 ㄲ (0x01) ㅏ (0x00) ㄲ (0x01) 0 0 1 0 0 4 04 ㄴ (0x02) ㅐ (0x01) ㄳ (0x02) 0 0 1 0 1 5 05 ㄷ (0x03) ㅑ (0x02) ㄴ (0x03) 0 0 1 1 0 6 06 ㄸ (0x04) ㅒ (0x03) ㄵ (0x04) 0 0 1 1 1 7 07 ㄹ (0x05) ㅓ (0x04) ㄶ (0x05) 0 1 0 0 0 8 08 ㅁ (0x06) 미정의 ㄷ (0x06) 0 1 0 0 1 9 09 ㅂ (0x07) 미정의 ㄹ (0x07) 0 1 0 1 0 10 0A ㅃ (0x08) ㅔ (0x05) ㄺ (0x08) 0 1 0 1 1 11 0B ㅅ (0x09) ㅕ (0x06) ㄻ (0x09) 0 1 1 0 0 12 0C ㅆ (0x0a) ㅖ (0x07) ㄼ (0x0a) 0 1 1 0 1 13 0D ㅇ (0x0b) ㅗ (0x08) ㄽ (0x0b) 0 1 1 1 0 14 0E ㅈ (0x0c) ㅘ (0x09) ㄾ (0x0c) 0 1 1 1 1 15 0F ㅉ (0x0d) ㅙ (0x0a) ㄿ (0x0d) 1 0 0 0 0 16 10 ㅊ (0x0e) 미정의 ㅀ (0x0e) 1 0 0 0 1 17 11 ㅋ (0x0f) 미정의 ㅁ (0x0f) 1 0 0 1 0 18 12 ㅌ (0x10) ㅚ (0x0b) 미정의 1 0 0 1 1 19 13 ㅍ (0x11) ㅛ (0x0c) ㅂ (0x10) 1 0 1 0 0 20 14 ㅎ (0x12) ㅜ (0x0d) ㅄ (0x11) 1 0 1 0 1 21 15 미정의 ㅝ (0x0e) ㅅ (0x12) 1 0 1 1 0 22 16 미정의 ㅞ (0x0f) ㅆ (0x13) 1 0 1 1 1 23 17 미정의 ㅟ (0x10) ㅇ (0x14) 1 1 0 0 0 24 18 미정의 미정의 ㅈ (0x15) 1 1 0 0 1 25 19 미정의 미정의 ㅊ (0x16) 1 1 0 1 0 26 1A 미정의 ㅠ (0x11) ㅋ (0x17) 1 1 0 1 1 27 1B 미정의 ㅡ (0x12) ㅌ (0x18) 1 1 1 0 0 28 1C 미정의 ㅢ (0x13) ㅍ (0x19) 1 1 1 0 1 29 1D 미정의 ㅣ (0x14) ㅎ (0x1a) 1 1 1 1 0 30 1E 미정의 미정의 미정의 1 1 1 1 1 31 1F 미정의 미정의 미정의
2.1 Unicode 에서의 조합방식 ¶
- Unicode에 대한 훌륭함을 보강해서 정리하고자 간단히 Unicode 조합방식에 대해서 ISO/IEC 10646:2003 문서를 참고하여 적어봅니다.
- 첫가끝 코드는 Jamo(U01100 ~ U011FF)에 정의되며 초성(U01100~), 중성(U01161~), 종성(U011AB~) 로 구성됩니다.
- 이미 조합되어 그 자체가 하나의 글자로 취급되는 코드는 Precomposed hangul syllable(U0AC00~D7A3)에 정의됩니다.
- 이미 조합되어 있는 코드는 특정 규칙에 의거하여 각각 초성, 중성, 종성으로 분리해낼수가 있습니다. 대략 다음과 같은 공식을 이용합니다.
- 우선 초성 index 갯수가 모두 18개, 중성 index 갯수는 21개, 종성 index 갯수는 28개만을 사용합니다.
이미조합된글자(U0AC00~) = 0xAC00 + ((초성 * (21 * 28)) + (중성 * 28) + 종성);
- 우선 초성 index 갯수가 모두 18개, 중성 index 갯수는 21개, 종성 index 갯수는 28개만을 사용합니다.
- 조합형 Unicode값 과 실제 사용하게 되는 index 값은 다음과 같습니다. (none이 뜻하는것은 없는것으로 간주한다는 의미로 사용됩니다.)
| 첫가끝 코드 | Precomposed hangul syllable 에 사용되는 index | |||||
| 값 | 초성 | 중성 | 종성 | 초성 | 중성 | 종성 |
| 0 | ᄀ | ᅡ | none | ᄀ | ᅡ | none |
| 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 | ᄟ | ᆀ | ᇆ | |||
| 32 | ᄠ | ᆁ | ᇇ | |||
| 33 | ᄡ | ᆂ | ᇈ | |||
| 34 | ᄢ | ᆃ | ᇉ | |||
| 35 | ᄣ | ᆄ | ᇊ | |||
| 36 | ᄤ | ᆅ | ᇋ | |||
| 37 | ᄥ | ᆆ | ᇌ | |||
| 38 | ᄦ | ᆇ | ᇍ | |||
| 39 | ᄧ | ᆈ | ᇎ | |||
| 40 | ᄨ | ᆉ | ᇏ | |||
| 41 | ᄩ | ᆊ | ᇐ | |||
| 42 | ᄪ | ᆋ | ᇑ | |||
| 43 | ᄫ | ᆌ | ᇒ | |||
| 44 | ᄬ | ᆍ | ᇓ | |||
| 45 | ᄭ | ᆎ | ᇔ | |||
| 46 | ᄮ | ᆏ | ᇕ | |||
| 47 | ᄯ | ᆐ | ᇖ | |||
| 48 | ᄰ | ᆑ | ᇗ | |||
| 49 | ᄱ | ᆒ | ᇘ | |||
| 50 | ᄲ | ᇙ | ||||
| 51 | ᄳ | ᇚ | ||||
| 52 | ᄴ | ᇛ | ||||
| 53 | ᄵ | ᇜ | ||||
| 54 | ᄶ | ᇝ | ||||
| 55 | ᄷ | ᇞ | ||||
| 56 | ᄸ | ᇟ | ||||
| 57 | ᄹ | ᇠ | ||||
| 58 | ᄺ | ᇡ | ||||
| 59 | ᄻ | ᇢ | ||||
| 60 | ᄼ | ᇣ | ||||
| 61 | ᄽ | ᇤ | ||||
| 62 | ᄾ | ᇥ | ||||
| 63 | ᄿ | ᇦ | ||||
| 64 | ᅀ | ᇧ | ||||
| 65 | ᅁ | ᇨ | ||||
| 66 | ᅂ | ᇩ | ||||
| 67 | ᅃ | ᇪ | ||||
| 68 | ᅄ | ᇫ | ||||
| 69 | ᅅ | ᇬ | ||||
| 70 | ᅆ | ᇭ | ||||
| 71 | ᅇ | ᇮ | ||||
| 72 | ᅈ | ᇯ | ||||
| 73 | ᅉ | ᇰ | ||||
| 74 | ᅊ | ᇱ | ||||
| 75 | ᅋ | ᇲ | ||||
| 76 | ᅌ | ᇳ | ||||
| 77 | ᅍ | ᇴ | ||||
| 78 | ᅎ | ᇵ | ||||
| 79 | ᅏ | ᇶ | ||||
| 80 | ᅐ | ᇷ | ||||
| 81 | ᅑ | ᇸ | ||||
| 82 | ᅒ | ᇹ | ||||
| 83 | ᅓ | |||||
| 84 | ᅔ | |||||
| 85 | ᅕ | |||||
| 86 | ᅖ | |||||
| 87 | ᅗ | |||||
| 88 | ᅘ | |||||
| 89 | ᅙ | |||||



글