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. 옛 조합형과 완성형(KSX1001, 변경 전 KSC5601)간의 코드변환 ¶
2.1. Unicode 에서의 조합방식 ¶
- Unicode에 대한 훌륭함을 보강해서 정리하고자 간단히 Unicode 조합방식에 대해서 ISO/IEC 10646:2003 문서를 참고하여 적어봅니다.
- 첫가끝 코드는 Jamo(U01100 ~ U011FF)에 정의되며 초성(U01100~), 중성(U01161~), 종성(U011AB~) 로 구성됩니다.
- 이미 조합되어 그 자체가 하나의 글자로 취급되는 코드는 Precomposed hangul syllable(U0AC00~D7A3)에 정의됩니다.
- 이미 조합되어 있는 코드는 특정 규칙에 의거하여 각각 초성, 중성, 종성으로 분리해낼수가 있습니다. 대략 다음과 같은 공식을 이용합니다.
- 조합형 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 | ᅙ | | | | | |
|
|