표준이 된 세벌식? - (12) 공병우식이 아닌 매킨토시 3벌식 한글 부호계 '한 코드'
1) 매킨토시 3벌식 한글 부호계 '한 코드'
앞에서 살핀 한글 부호계 변환 프로그램 '똑딱 1.1'(https://pat.im/1221)에서는 '공 코드(Kong Code)'로 들어간 '제2 공병우 직결식 부호계'와 함께 '한 코드(Han Code)'라는 한글 부호계도 나란히 다루었다.
아래는 앞에서 살핀 똑딱 1.1의 도움말에서 한 코드와 한글 부호계에 얽힌 곳들을 뽑은 내용이다.
똑딱 도움말
똑딱이란?
-------------
…(줄임)…
똑딱은 현재 완성, 조합, 공, 한 코드 등 네가지 한글 코드를 지원합니다.
각각의 코드에 대한 간략한 설명은 이 파일의 한글 코드 부분을 참조하십시요.
…(줄임)…
한글 코드
-------------
컴퓨터에서 한글의 구현은 여러가지 방법이 있습니다. 매킨토시와 같은 그래픽에 바탕을 둔 컴퓨터는 아이비엠 피시보다 한글 환경 구현에 한결 유리한 위치에 있습니다. 한글 환경이 어떠하든지 간에 이 소프트웨어에서 지원하는 완성, 조합, 공, 한 코드 등의 코드가 있습니다. …(줄임)…
완성형 코드는 KSC5601로 제정된 것으로 KS 코드라고 알려져 있습니다. 완성형은 전체 11,172자의 한글 음절중에서 단지 2,350자만 코드로 정한 것이며 코드로 정해지지 않은 음절의 표현은 채움 코드 방식으로 표현하도록 되어 있습니다. …(줄임)… 조합형 코드에서는 2 바이트가 한/영 구별자, 초성, 중성, 종성의 네 가지로 나뉘어지는 데 한/영 구별자는 1 비트로 한글과 영문을 구분하여 주며 나머지 초중종성 부분은 각각 5 비트씩으로 따라서 조합형 코드도 세벌식 코드라고 할 수 있습니다.
완성형과 조합형 코드와 같은 2 바이트 한글 코드와 비교하여 1 바이트 코드가 공병우 박사에 의해 선을 보였는 데 그것은 자소를 코드화 하는 방식으로 매킨토시 컴퓨터에서 구현되는 게 보통입니다. 이것은 아스키 코드 128번 이상의 외국어 영역에 한글 자소를 배당한 것으로 외국 소프트웨어에서 한글을 쉽게 구현할 수 있다는 것이 장점입니다. 공 코드는 매킨토시에서 영문 폰트 리소스를 바로 이용할 수 있어서 누구나 쉽게 자신의 폰트를 만들고 변화를 줄 수 있습니다. 그러나 공 코드의 심각한 단점은 영문의 특수문자 영역을 한글 자소가 차지한다는 점이었습니다. 이러한 문제를 타개하기 위하여 필자와 권오훈님에 의해 한 코드가 만들어졌습니다. 권 선생님은 오래전부터 이러한 생각을 가지고 있었고 실제로 자신의 용도로 몇 가지 폰트를 만들기도 하였으며 본 소프트웨어와 함께 제공되는 시카고한과 지니바한 폰트를 만들어 주셨습니다. 한 코드 폰트는 권 선생님이나 다른 분들에 의해 계속 만들어 질 것으로 보는 데 다른 코드와 구별하기 위해 끝에 Han이라고 붙이는 것이 좋을 것입니다. '한'이란 '한강', '한글' 등의 용례에서 볼 수 있듯이 크다, 바르다, 등의 뜻을 가지고 있습니다. 한 코드는 영어의 특수 문자영역을 피해 작성되었으며 따라서 외국 소프트웨어에서 한글을 더욱 잘 구현할 수 있을 것입니다.
조합형이나 공, 한 코드 등의 세벌식 한글 코드화, 좀더 적확하게 이야기하자면 자소 코드화방식은 다음과 같은 이유로 유용하다고 할 수 있습니다.
(1) 모든 한글의 표현.
(2) 모든 가능한 옛한글의 표현 용이.
(3) 정렬이 용이.
(4) 편집과 찾기가 두벌식에 비해 용이.
자소 코드화 방식의 단점은 다음과 같습니다.
(1) 한글 한 자를 표현하기 위한 코드가 더 많이 소요됨.
(2) 하나의 자소가 하나의 자형을 가져 탈네모꼴이 되는 데 오히려 이러한 점이 한글모양의 다양성에 기여하는 점도 있음.
…(줄임)…
감사의 말씀
----------------
권오훈님께 많은 감사를 드리고 특별히 공공을 위해 자신의 한 폰트를 공개하여 주신 것에 고마움을 표합니다. 이 소프트웨어 패키지에 함께 제공되는 두 가지 폰트는 권 선생님에 의해 만들어졌습니다. 또한 공 코드표와 함께 한글 관련 자료를 제공하여 준 한글 문화원에 감사를 드립니다.
…(줄임)…
만든이
----------
이 소프트웨어에 대한 제안이나 의문사항, 버그, 불만사항 등은 다음의 주소로 보내주시기 바랍니다.
노성우
서울시 강남구 논현동 …(줄임)…
'한 코드'(표 21-1)는 '노성우'와 '권오훈'이 개발한 3벌식 한글 부호계이다. 공병우 직결식 부호계와 마찬가지로 1바이트 부호계가 쓰이던 옛 매킨토시 환경에서 쓰였다.
이 '한 코드'를 이용하는 '한 코드 방식'주1은 '제2 공병우 직결식'처럼 나름의 문자 부호계(한 코드)와 글꼴(ChicagoHan, GenevaHan 등)을 갖추고 1바이트 부호계로 운용된 한글 표현 방안이다. 똑딱 1.1에는 'Han'이라는 이름으로 들어간 KCHR 자원이 함께 들어 있었는데, 이 KCHR 자원을 매킨토시 시스템에 넣어서 3-91 자판(공병우 최종 자판)으로 '한 코드'를 쓸 수 있었다.주2
8 7 6 5 |
0 0 0 0 |
0 0 0 1 |
0 0 1 0 |
0 0 1 1 |
0 1 0 0 |
0 1 0 1 |
0 1 1 0 |
0 1 1 1 |
1 0 0 0 |
1 0 0 1 |
1 0 1 0 |
1 0 1 1 |
1 1 0 0 |
1 1 0 1 |
1 1 1 0 |
1 1 1 1 |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
4321 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
0000 | 0 | 0 | @ | P | ` | p | Ä | ê | † | ∞ | ¿ | – | ‡ | 🍎 | |||
0001 | 1 | ! | 1 | A | Q | a | q | Å | ë | ° | ± | ¡ | — | · | Ò | ||
0010 | 2 | " | 2 | B | R | b | r | Ç | í | ¢ | ≤ | ¬ | “ | ‚ | Ú | ||
0011 | 3 | # | 3 | C | S | c | s | É | ì | £ | ≥ | ✓ | ” | „ | Û | ||
0100 | 4 | $ | 4 | D | T | d | t | Ñ | î | § | ¥ | ƒ | ‘ | ‰ | Ù | ||
0101 | 5 | % | 5 | E | U | e | u | Ö | ï | • | µ | ≈ | ’ | Â | ˡ | ||
0110 | 6 | & | 6 | F | V | f | v | Ü | ñ | ¶ | ∂ | ∆ | ÷ | Ê | ̂ | ||
0111 | 7 | ' | 7 | G | W | g | w | á | ó | ß | ∑ | « | ⋄ | Á | ̃ | ||
1000 | 8 | ( | 8 | H | X | h | x | à | ò | ® | ∏ | » | ÿ | Ë | ̄ | ||
1001 | 9 | ) | 9 | I | Y | i | y | â | ô | © | π | … | Ÿ | È | ̆ | ||
1010 | A | * | : | J | Z | j | z | ä | ö | ™ | ∫ | / | Í | ̍ | |||
1011 | B | + | ; | K | [ | k | { | ã | õ | ´ | ª | À | ¤ | Î | ̐ | ||
1100 | C | , | < | L | \ | l | | | å | ú | ¨ | º | Ã | ˂ | Ï | ¸ | ||
1101 | D | - | = | M | ] | m | } | ç | ù | ≠ | Ω | Õ | ˃ | Ì | ̋ | ||
1110 | E | . | > | N | ^ | n | ~ | é | û | Æ | æ | Œ | fi | Ó | ̢ | ||
1111 | F | / | ? | O | _ | o | è | ü | Ø | ø | œ | fl | Ô | ̌ |
8 7 6 5 |
0 0 0 0 |
0 0 0 1 |
0 0 1 0 |
0 0 1 1 |
0 1 0 0 |
0 1 0 1 |
0 1 1 0 |
0 1 1 1 |
1 0 0 0 |
1 0 0 1 |
1 0 1 0 |
1 0 1 1 |
1 1 0 0 |
1 1 0 1 |
1 1 1 0 |
1 1 1 1 |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
4321 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
0000 | 0 | 0 | @ | P | ` | p | ᄀᅠ | ᄐᅠ | † | ∞ | ᅟᅰ | ‒ | ‡ | 🍎 | |||
0001 | 1 | ! | 1 | A | Q | a | q | ᄁᅠ | ᄑᅠ | ° | ± | ᅟᅱ | ― | · | ᅟᅠᆶ | ||
0010 | 2 | " | 2 | B | R | b | r | ᄂᅠ | ᄒᅠ | ¢ | ≤ | ¬ | “ | ‚ | ᅟᅠᆷ | ||
0011 | 3 | # | 3 | C | S | c | s | ᄃᅠ | ᅟᅡ | £ | ≥ | ✓ | ” | „ | ᅟᅠᆸ | ||
0100 | 4 | $ | 4 | D | T | d | t | ᄄᅠ | ᅟᅢ | § | ¥ | ƒ | ‘ | ‰ | ᅟᅠᆹ | ||
0101 | 5 | % | 5 | E | U | e | u | ᄅᅠ | ᅟᅣ | • | µ | ≈ | ’ | ᅟᅠᆫ | ᅟᅠᆺ | ||
0110 | 6 | & | 6 | F | V | f | v | ᄆᅠ | ᅟᅤ | ¶ | ∂ | ∆ | ÷ | ᅟᅠᆬ | ᅟᅠᆻ | ||
0111 | 7 | ' | 7 | G | W | g | w | ᄇᅠ | ᅟᅥ | ß | ∑ | « | ◇ | ᅟᅠᆭ | ᅟᅠᆼ | ||
1000 | 8 | ( | 8 | H | X | h | x | ᄈᅠ | ᅟᅦ | ® | ∏ | » | ᅟᅠᆩ | ᅟᅠᆮ | ᅟᅠᆽ | ||
1001 | 9 | ) | 9 | I | Y | i | y | ᄉᅠ | ᅟᅧ | © | π | ... | ᅟᅠᆪ | ᅟᅠᆯ | ᅟᅠᆾ | ||
1010 | A | * | : | J | Z | j | z | ᄊᅠ | ᅟᅨ | ™ | ∫ | / | ᅟᅠᆰ | ᅟᅠᆿ | |||
1011 | B | + | ; | K | [ | k | { | ᄋᅠ | ᅟᅩ | ´ | ᅟᅩ | ᅟᅲ | ¤ | ᅟᅠᆱ | ᅟᅠᇀ | ||
1100 | C | , | < | L | \ | l | | | ᄌᅠ | ᅟᅟᅪ | ¨ | ᅟᅮ | ᅟᅳ | ˂ | ᅟᅠᆲ | ᅟᅠᇁ | ||
1101 | D | - | = | M | ] | m | } | ᄍᅠ | ᅟᅫᅟ | ≠ | Ω | ᅟᅴ | ˃ | ᅟᅠᆳ | ᅟᅠᇂ | ||
1110 | E | SO | . | > | N | ^ | n | ~ | ᄎᅠ | ᅟᅬ | ᅮ | æ | ᅟᅵ | fi | ᅟᅠᆴ | ₩ | |
1111 | F | SI | / | ? | O | _ | o | ᄏᅠ | ᅟᅭ | ᅟᅯ | ᅟø | ᅟᅠᆨ | fl | ᅟᅠᆵ | ※ |
'한 코드 방식'의 작동 원리는 제2 공병우 직결식과 비슷하지만, 부호계 구성과 부호계를 운용하는 방법을 잘 들여다보면 다른 면이 있었다.
한글 낱자들이 가나다 차례로 들어간 것은 '한 코드'와 '제2 공병우 직결식 부호계'가 같다. 하지만 한 코드에는 매킨토시에서 쓰인 아스키 확장 영역에서 ®, ©, ™, ÷ 같은 특수 문자들의 자리를 피하여 한글 낱자들이 띄엄띄엄 나뉘어 들어갔다. 제2 공병우 직결식 부호계에 한글 낱자들이 0x80부터 0xBE까지 한 덩어리로 들어간 것과 다른 모습이다.
8 7 6 5 |
0 0 0 0 |
0 0 0 1 |
0 0 1 0 |
0 0 1 1 |
0 1 0 0 |
0 1 0 1 |
0 1 1 0 |
0 1 1 1 |
1 0 0 0 |
1 0 0 1 |
1 0 1 0 |
1 0 1 1 |
1 1 0 0 |
1 1 0 1 |
1 1 1 0 |
1 1 1 1 |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
4321 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
0000 | 0 | 0 | @ | P | ` | p | ᄀᅠ | ᄐᅠ | ᅟᅲ | ᅟᅠᆴ | ㎜ | ‒ | ↘ | ∷ | |||
0001 | 1 | ! | 1 | A | Q | a | q | ᄁᅠ | ᄑᅠ | ᅟᅳ | ᅟᅠᆵ | ® | ― | ↗ | ∴ | ||
0010 | 2 | " | 2 | B | R | b | r | ᄂᅠ | ᄒᅠ | ᅟᅴ | ᅟᅠᆶ | © | “ | ↙ | ≤ | ||
0011 | 3 | # | 3 | C | S | c | s | ᄃᅠ | ᅟᅡ | ᅟᅵ | ᅟᅠᆷ | 「 | ” | □ | ≥ | ||
0100 | 4 | $ | 4 | D | T | d | t | ᄄᅠ | ᅟᅢ | ᅟᅠᆨ | ᅟᅠᆸ | 」 | ‘ | ▣ | |||
0101 | 5 | % | 5 | E | U | e | u | ᄅᅠ | ᅟᅣ | ᅟᅠᆩ | ᅟᅠᆹ | · | ’ | ■ | |||
0110 | 6 | & | 6 | F | V | f | v | ᄆᅠ | ᅟᅤ | ᅟᅠᆪ | ᅟᅠᆺ | ° | ÷ | △ | |||
0111 | 7 | ' | 7 | G | W | g | w | ᄇᅠ | ᅟᅥ | ᅟᅠᆫ | ᅟᅠᆻ | « | ◇ | ▲ | |||
1000 | 8 | ( | 8 | H | X | h | x | ᄈᅠ | ᅟᅦ | ᅟᅠᆬ | ᅟᅠᆼ | » | ※ | ○ | |||
1001 | 9 | ) | 9 | I | Y | i | y | ᄉᅠ | ᅟᅧ | ᅟᅠᆭ | ᅟᅠᆽ | ... | ◉ | ||||
1010 | A | * | : | J | Z | j | z | ᄊᅠ | ᅟᅨ | ᅟᅠᆮ | ᅟᅠᆾ | ● | |||||
1011 | B | + | ; | K | [ | k | { | ᄋᅠ | ᅟᅩ | ᅟᅠᆯ | ᅟᅠᆿ | ㎖ | → | … | |||
1100 | C | , | < | L | \ | l | | | ᄌᅠ | ᅟᅩ | ᅟᅠᆰ | ᅟᅠᇀ | ₩ | ← | 우# | |||
1101 | D | - | = | M | ] | m | } | ᄍᅠ | ᅟᅭ | ᅟᅠᆱ | ᅟᅠᇁ | ¥ | ↑ | 계속 | |||
1110 | E | . | > | N | ^ | n | ~ | ᄎᅠ | ᅟᅮ | ᅟᅠᆲ | ᅟᅠᇂ | ℃ | ↓ | ≠ | |||
1111 | F | / | ? | O | _ | o | ᄏᅠ | ᅟᅮ | ᅟᅠᆳ | ᅟ㎝ | ± | ↖ | ™ |
[표 16-4] : 표준이 된 세벌식? - (7) 초기 공병우 직결식에 쓰인 한글 부호계 ① - 3-87 자판 (https://pat.im/1187)
[표 19-6] : 표준이 된 세벌식? - (10) 첫가끝 조합형을 닮아 간 '제2 공병우 직결식' (https://pat.im/1190)
'한 코드'는 한글 문서에 들어갈 수도 있는 특수 문자들을 살려 쓰려고 8비트 아스키 확장 영역에 한글 낱자들을 우선하여 놓는 것을 조금 포기한 부호계였다.
이 무렵에 IBM PC 호환 기종에서 한글을 다루던 프로그램들에서는 7비트 아스키 부호계보다 적어도 수천 개 문자를 더 담은 2바이트 부호계들이 쓰이고 있었다. 한글판 매킨토시 운영체제(한글 시스템)도 글꼴을 따로 쓰는 방법으로 2바이트 방식 가운데 하나인 KS 완성형 부호계를 다루는 기능을 갖추고 있었다. (그림 21-5 ~ 21-6)
하지만 제2 공병우 직결식과 한 코드 방식은 초기 영문 매킨토시 환경에서 쓰이던 1바이트 부호계로 운용되었다. 한글 낱자들이 차지하는 자리를 빼면 8비트 아스키 확장 영역에서 쓸 수 있는 부호값은 60개 남짓밖에 되지 않았다. 넉넉하지 않은 1바이트 부호값들로 여러 문자들을 알차게 나타내려면 부호값 1개가 아쉬운 형편이었다.
제2 공병우 직결식 부호계에서는 매킨토시의 8비트 확장 부호계 영역에 들어간 특수 문자들의 자리와 종류를 임의로 바꾸어 놓았다 그래서 영문 매킨토시에서 넣을 수 있는 ®, ©, ™, ÷, ¢, ¥, ∞ 등을 제2 공병우 직결식에서는 다른 부호값으로 넣어야 하거나 아예 넣지 못하는 것이 있었다. 하지만 한 코드에는 한글 낱자들이 이 특수 문자들의 자리를 피하여 들어갔으므로, 한 코드를 쓰는 때에는 이 특수 문자들을 영문 매킨토시에서 쓰이던 본래 부호값으로 넣을 수 있었다.
한글 낱자들이 여러 덩어리로 나뉘어 들어간 것 때문에 부호값 차례로 정렬하면 한글 이름이 몇몇 특수 문자들과 차례가 엉킬 가능성은 있었다. 하지만 '한 코드'로 글을 넣는다면 국제 공용으로 쓰일 수도 있는 8비트 아스키 확장 영역의 특수 문자들을 많이 살려 쓸 수 있었다.
▣ 1바이트 부호계를 쓰던 한글판 매킨토시의 KS 완성형 한글 처리
1990년대에 쓰인 한글판 매킨토시 운영체제에서도 IBM PC 호환 기종에서 쓰인 도스(DOS)와 윈도우(Windows)의 응용 프로그램들처럼 KS 완성형 부호계로 들어간 한글 정보를 다룰 수 있었다.
두 기종에 쓰인 프로그램들이 한글 부호계를 다루는 모습은 다른 점이 있었다.
IBM PC 호환 기종에 쓰인 프로그램들은 문서 하나에 한 가지 한글 부호계를 쓰는 것을 원칙으로 하여 움직였다. 문서 하나에 여러 한글 부호계를 섞어 쓸 길은 터 놓지 않았다. 문서를 파일로 기록할 때에나 그 프로그램이 다룰 수 있는 한글 부호계 하나를 고르게 하는 모습을 볼 수 있었다.
옛 매킨토시 환경에서는 문서 편집 프로그램에서 다루고 있는 문서 하나에 글꼴을 군데군데 달리 지정할 수 있었다. 문서 편집 프로그램은 문서 안에 어떤 문자 부호계가 쓰이는지에 관여하지 않았다. 이를 이용하여 문서 하나에 여러 한글 부호계를 섞어 쓸 수도 있었다. KS 완성형 부호계로 기록한 문서를 다루려면, KS 완성형 부호계에 맞춘 한글 글꼴을 골라 써야 했다.
KS 완성형 부호계에서 '똑'의 부호값은 0xB6C8이다. 2바이트 부호값인 0xB6C8을 1바이트씩 끊으면 0xB6과 0xC8으로 나뉜다. 옛 매킨토시에서 쓰인 1바이트 부호계에서 0xB6은 ∂를 나타냈고 0xC8은 »를 나타냈다. 그래서 '똑'을 Chicago나 Geneva 같은 영문 글꼴로 보면 '∂»'로 나왔다.
(현재 쓰이는 유니코드에는 ∂가 U+2022에 'Patial Differential'이라는 이름으로 들어 있고, »는 'Right-Pointing Double Angle Quotation Mark'라는 이름으로 U+00BB에 들어 있다.)
1바이트 부호계를 쓰던 옛 매킨토시 환경에서 글꼴을 잘못 고르면 넣은 글을 바른 모습으로 볼 수 없었던 것은 공병우 직결식이나 한 코드 방식만의 문제가 아니었다. KS 완성형 방식으로 넣은 글도 바른 꼴로 보려면 애플명조, 애플고딕, 서울체를 비롯한 KS 완성형 부호계에 맞추어 만든 글꼴을 써야 했다. 이 글꼴들로 볼 때에는 커서가 한글 낱내자 경계를 잘 가려서 움직였다.
그림 21-6에 보이는 것처럼 옛 매킨토시에서 KS 완성형으로 넣는 글은 조합하고 있는 한글도 낱자 단위로 지울 수 없었다. 모아쓰기를 한 한글은 뒷걸음쇠(backspace)를 누르면 어느 때나 낱내자 단위로 지워졌다.
2) '한 코드 방식'에 쓰인 겹홀소리 조합 기능
한 코드를 쓰는 입력 방식들에서는 'ㅗ+ㅏ→ㅘ'처럼 홑낱자 2개를 받아 겹낱자 부호값 1개로 바꾸는 낱자 조합 기능이 들어갔다. 먼저 들어간 부호값을 지우고 다시 넣는 낱자 조합 처리는 공병우 직결식에서 볼 수 없던 모습이었다.
3-91 자판(공병우 최종 자판)으로 쓰는 KCHR 자원 'Han'은 겹홀소리 ㅘ를 2타에 넣지만, 첫째 타에는 ㅘ의 모습이 나타나지 않다가 2째 타에 한꺼번에 나타난다. 쿼티 배열을 기준으로 이야기하면, 멈춤 글쇠(데드 키, dead key)로서 조합용 ㅗ가 들어간 / 글쇠만 눌렸을 때에는 글씨가 나오는 화면에 ㅗ가 나타나지 않다가, 그 다음에 ㅏ가 들어간 f 글쇠를 누르면 'ㅘ'(0x9C)가 한꺼번에 나타난다.
공병우 직결식 부호계에는 ㅘ · ㅙ · ㅚ · ㅝ · ㅞ · ㅟ는 따로 매긴 부호값이 없었다. 조합용 ㅗ · ㅜ 부호값에 ㅏ · ㅐ · ㅓ · ㅔ · ㅣ의 부호값을 이어 놓으면 글꼴 처리로 ㅘ · ㅙ · ㅚ · ㅝ · ㅞ · ㅟ가 나타났다. 공병우 직결식에서는 겹홀소리 조합에 제한을 두지는 않았으므로, ᅟᅿ · ᅟᆀ · ᅟᆉ · ᅟᆊ · ᅟힵ처럼 요즘한글에 쓰이지 않는 겹홀소리도 어색하지 않게 나타낼 수 있었다.주3
한 코드에는 겹홀소리 ㅘ · ㅙ · ㅚ · ㅝ · ㅞ · ㅟ의 부호값이 따로 매겨져 있었다. 한 코드를 쓰는 한글 입력 방식에서는 조합용 ㅗ · ㅜ가 들어간 글쇠를 멈춤 글쇠로 하는 조합 처리로 ㅘ · ㅙ · ㅚ · ㅝ · ㅞ · ㅟ를 부호값 하나로 나타내었다. 멈춤 글쇠에 들어간 조합용 ㅗ · ㅜ의 부호값은 겹홀소리 조합이 시작됨을 알리는 구실을 했다. 한글 모아쓰기를 제대로 한 글에는 조합용 ㅗ · ㅜ의 부호값이 남지 않았고, 오타 등으로 겹홀소리 조합이 올바르지 않게 끊긴 때에 조합용 ㅗ · ㅜ의 부호값이 글에 남을 수 있었다.
한 코드 방식에서 ㅘ · ㅙ · ㅚ · ㅝ · ㅞ · ㅟ를 조합하는 것은 표준이 된 세벌식? - (10) 첫가끝 조합형을 닮아 간 '제2 공병우 직결식(https://pat.im/1190)의 그림 19-21에서 본 유럽어 자판으로 발음 구별 기호와 로마 문자를 조합하는 방법과 원리가 같다. 그런데 매킨토시 환경에서 유럽어에 쓰이는 발음 구별 기호는 멈춤 글쇠로 들어간 때에도 화면에 바로 나타났지만, 멈춤 글쇠로 들어간 조합용 ㅗ · ㅜ는 화면에 곧바로 보이지 않는 문제가 있었다.
이 문제 때문에 멈춤 글쇠를 조합 기능의 쓰임새를 첫소리 겹낱자까지 조합하는 데까지 넓히기는 어려웠다. 이를테면 첫소리 ᄀᅠ 자리 글쇠를 멈춤 글쇠로 하여 'ᄀᅠ+ᄀᅠ→ᄁᅠ'으로 첫소리 겹낱자 ᄁᅠ을 조합하게 할 수는 있지만, 그렇게 하면 첫소리 ᄀᅠ은 글쇠를 누르자마자 화면에 나타나지 않고 다음 낱자가 들어온 뒤에야 화면에 나타난다. 공세벌식 자판을 보급하려는 쪽에서 두벌식 자판에서 한글 닿소리 낱자가 잠시 다른 자리에 달라붙었다가 제자리를 찾는 '도깨비불'을 꼬집으며 두벌식 자판을 비판하기도 했는데, 한글 낱자가 잠시라도 아예 안 보이는 것은 도깨비불보다 더 혼란스러울 수 있는 일이었다. 더구나 한글을 넣는 첫 타부터 화면에 아무것도 나오지 않으면 거북함이 더욱 크기 마련이었다.
이 때문에 옛 매킨토시 환경에서 멈춤 글쇠(데드 키)를 쓰는 한글 조합 기능은 가운뎃소리(홀소리)나 끝소리(받침) 낱자를 조합하는 때에는 쓰였지만, 첫소리 겹낱자를 조합하는 때에는 쓰이지 않았다.
▣ 공병우 직결식과 견준 한 코드 방식의 겹홀소리 조합 처리
한 코드(표 21-1)는 ㅘ · ㅙ · ㅚ · ㅝ · ㅞ · ㅟ에 부호값을 따로 매긴 것이 공병우 직결식 부호계(표 19-6)와 달랐다. 그밖의 낱자들은 부호값 자리는 다른 데가 있어도 들어간 낱자들의 종류와 차례는 같았다.
공병우 직결식에서는 ㅘ · ㅙ · ㅚ · ㅝ · ㅞ · ㅟ를 나타내는 원리로 ᅟᅿ · ᅟᆀ · ᅟᆉ · ᅟᆊ · ᅟힵ 같은 옛한글 겹홀소리 조합도 나타낼 수 있었다. 오늘날의 한글 처리 표준인 KS X 1026-1(정보교환용 한글 처리지침)를 따를 때에는 '왜'를 요즘한글로서 완성형 부호값 하나로 나타내고 'ᄋᆀ'는 옛한글로서 첫가끝 조합형 부호계의 부호값 2개로 나타낸다. 하지만 공병우 직결식에서 '왜'와 'ᄋᆀ'는 부호값 3개 가운데 마지막 하나만 다르게 붙이는 차이만 있었다.
한 코드 방식이 거치는 부호값 대응 원리와 글꼴 처리는 공병우 직결식과 같았다. 공병우 직결식에 쓰인 '음수 자간' 같은 글꼴 기능들이 한 코드 방식에도 그대로 쓰였다. 그래서 공병우 직결식 글꼴로 볼 수 있는 겹홀소리 조합 특성을 한 코드 방식에 쓰인 글꼴로도 그대로 볼 수 있는 경우가 있었다. 그 예로 한 코드 방식에 쓰인 글꼴인 GenevaHan은 ㅘ · ㅙ · ㅚ · ㅝ · ㅞ · ㅟ를 부호값 1개로 나타내는 때와 부호값 2개로 나타내는 때의 모습이 얼핏 보면 같아 보일 만큼 비슷했다. (그림 22-14 위)
하지만 한 코드에 쓰인 다른 글꼴인 ChicagoHan은 ㅘ · ㅙ · ㅚ · ㅝ · ㅞ · ㅟ을 공병우 직결식처럼 조합용 ㅗ · ㅜ가 낀 부호값 2개로 넣으면 낱자 사이가 벌어져 어색하게 나타났다. (그림 22-14 아래)
겹낱자 하나를 부호값으로 나타내는 방법이 여러 가지가 함께 쓰이면 여러운 일들이 생길 수 있다. 같은 겹낱자가 글꼴에 따라 다른 꼴로 나타날 수 있고, 같은 겹낱자를 프로그램이 달리 처리하는 때가 생길 수 있다. 부호값 표현 방법에 예외를 많이 둘수록 한글 부호계를 다루는 프로그램을 만들기가 까다로워진다.
한글 자판으로 글을 넣을 때에 기대에 어긋나지 않게 글이 잘 나올 때에는 많은 사람들이 깊이 따지지 않고 잘 되었거니 넘어가곤 한다. 하지만 글을 넣었더니 이상한 데가 눈에 뜨인다면, 사람들이 무엇이 잘못되었는지를 생각해 보는 계기가 될 수 있다.
한 코드 방식을 따르는 ChcagoHan은 'ㅘ'를 넣을 때에 공세벌식 자판의 오른손 쪽에 있는 조합용 ㅗ를 먼저 넣어서 부호값 1개로 조합해야 바른 꼴로 나타났고, 왼손 쪽에 있는 ㅗ를 먼저 넣으면 'ㅗㅏ' 꼴로 사이가 벌어지게 나타났다. 그렇게 한 속사정은 글꼴을 만든 이의 설명을 들어야 정확히 알 수 있겠지만, ㅗ · ㅜ가 들어가는 겹홀소리들을 부호값 1개로 조합하도록 이끌려는 뜻으로 ChcagoHan 글꼴을 일부러 그렇게 만들지 않았을까 하고 짐작해 볼 수는 있다.
3) 다른 한글 부호계 운용 방안들과 견준 '한 코드 방식'
제1 공병우 직결식 |
제2 공병우 직결식 |
한 코드 방식 |
첫가끝 조합형 (1988~1990 김경석 제안) |
3바이트 조합형 |
2바이트 조합형 |
|
---|---|---|---|---|---|---|
영문 로마자 부호값 영역 |
주로 8비트 아스키 확장 영역주4 |
7비트 아스키 영역주5 | ||||
한글 부호값 영역 |
7비트 아스키 영역 |
8비트 아스키 확장 영역 | 2바이트 확장 영역 |
|||
한글 낱자 부호값 차례 |
같은 글쇠 자리의 쿼티 자판 문자 부호값을 따름 |
가나다 차례 | ||||
부호값 대응 단위 |
낱자 | 낱내자 | ||||
한글 낱자 기억 공간 |
부호값 단위 (1바이트) |
5비트 | ||||
한글 낱자 벌 수 |
3벌 | 2벌주6 | 3벌 | |||
요즘한글 낱자 수 |
63개주7 | 69개주8 | 67개 | 33개, 51개 주9 |
67개 | |
조합용 ㅗ · ㅜ |
있음 | 없음 | ||||
낱내자 단위 커서 처리 |
못함 | 함주10 주11 | 함 | |||
한글 부호값 조합 처리 |
하지 않음주12 | 함 (첫소리 안함) |
함 | |||
요즘한글 낱내자 구성 |
2~5개 낱자 | 2~4개 낱자 | 2~3개 낱자 | 3개 낱자 | 3개 낱자 (5+5+5비트) |
|
첫+가 첫+첫+가 첫+가+가 첫+첫+가+가 첫+가+끝 첫+첫+가+끝 첫+가+가+끝 첫+첫+가+가+끝 |
첫+가 첫+첫+가 첫+가+끝 첫+첫+가+끝 |
첫+가 첫+가+끝 |
닿+홀+닿 | 첫+가+끝 |
김경석의 '첫가끝 부호계'와 노성우 · 권오훈의 '한 코드'는 공병우 직결식을 본보기로 삼아 응용하여 나온 1바이트 한글 부호계였다. 첫가끝 조합형과 '한 코드 방식'은 공병우 직결식에 뿌리를 둔 한글 표현 방식이다. 하지만 '공병우식'의 뜻을 좁게 본다면 첫가끝 조합형과 한 코드 방식은 '정통 공병우식'은 아니었고 '공병우식'을 응용하고 보완하여 바꾼 꼴이었다.
제1 / 제2 공병우 직결식과 한 코드 방식은 지난날의 매킨토시 환경에서 실제로 쓰인 적이 있었던 것에 뜻을 둘 수 있었다. 공병우 직결식과 한 코드 방식은 일반에 공개된 자판 배열 정보(KCHR 자원)나 글꼴이 공개되어서, 매킨토시 환경에서 이 자료들을 다룰 수 있는 사람들이 쓸 수 있었다. 초기에 제안된 첫가끝 조합형은 쓸 수 있는 수단이 배포되지 않아서 '나랏말씀'이 공개될 때까지 이론에 머물렀다.
'한 코드 방식'은 ㅘ · ㅙ · ㅚ · ㅝ · ㅞ · ㅟ를 조합 처리를 거쳐 부호값 하나로 나타낸 것에서 볼 수 있듯이, 글꼴 처리만 거치는 오롯한 '직결식'으로 운용되지는 않았다. 그렇지만 한 코드 방식과 공병우 직결식은 큰 줄기를 살피면 운용 원리가 같았고, '한 코드'는 직결식으로 한글을 나타내는 방안에 쓰일 수도 있는 한글 부호계였다. 한 코드를 직결식으로 쓸지 직결식에서 벗어난 방법으로 쓸지는 한글 표현 방안을 꾸리는 사람의 뜻에 달린 일이었다.
'한 코드 방식'은 모든 홀소리 낱자를 부호값 하나로 나타낸 것에도 특징이 있었다. 공병우 직결식 부호계에는 ㅘ · ㅙ · ㅚ · ㅝ · ㅞ · ㅟ가 따로 들어가지 않았는데, 한 코드와 첫가끝 부호계에는 따로 들어갔다. IBM PC 호환 기종에서 쓰이던 2바이트 조합형 부호계들도 이 6개 겹홀소리들을 5비트 부호값으로 따로 매겼다. 옛 매킨토시의 1바이트 부호계를 쓰는 조건에서 한글 조합 처리 기술이 다양하게 쓰이지는 않았지만, 6개 겹홀소리가 따로 들어간 한 코드와 첫가끝 부호계는 낱자 구성이 IBM PC 호환 기종에서 흔히 쓰이던 한글 조합 처리 기술을 끌어들이기 꼴이었다.
5비트 낱자값 |
1987 KS 조합형 |
상용 조합형 (KSSM) |
삼성 조합형 | 금성 조합형 | 도깨비Ⅱ 조합형 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
첫 | 가 | 끝 | 첫 | 가 | 끝 | 첫 | 가 | 끝 | 첫 | 가 | 끝 | 첫 | 가 | 끝 | ||
0 | 00000 | (채움) | (채움) | (채움) | (채움) | (채움) | (채움) | |||||||||
1 | 00001 | (채움) | (채움) | (채움) | (채움) | ᄀᅠ | ᅟᅠᆨ | ᄀᅠ | ᅟᅠᆨ | ᄀᅠ | ᅟᅠᆨ | |||||
2 | 00010 | ᅟᅡ | ᅟᅠᆨ | ᄀᅠ | (채움) | ᅟᅠᆨ | ᄁᅠ | (채움) | ᅟᅠᆩ | ᄁᅠ | ᅟᅡ | ᅟᅠᆩ | ᄁᅠ | (채움) | ᅟᅠᆩ | |
3 | 00011 | ᅟᅢ | ᅟᅠᆩ | ᄁᅠ | ᅟᅡ | ᅟᅠᆩ | ᄂᅠ | ᅟᅡ | ᅟᅠᆪ | ᅟᅢ | ᅟᅠᆪ | ᄂᅠ | ᅟᅡ | ᅟᅠᆪ | ||
4 | 00100 | ᅟᅠᆪ | ᄂᅠ | ᅟᅢ | ᅟᅠᆪ | ᄃᅠ | ᅟᅢ | ᅟᅠᆫ | ᄂᅠ | ᅟᅣ | ᅟᅠᆫ | ᄃᅠ | ᅟᅢ | ᅟᅠᆫ | ||
5 | 00101 | ᅟᅣ | ᅟᅠᆫ | ᄃᅠ | ᅟᅣ | ᅟᅠᆫ | ᄄᅠ | ᅟᅣ | ᅟᅠᆬ | ᅟᅤ | ᅟᅠᆬ | ᄄᅠ | ᅟᅣ | ᅟᅠᆬ | ||
6 | 00110 | ᅟᅤ | ᅟᅠᆬ | ᄄᅠ | ᅟᅤ | ᅟᅠᆬ | ᄅᅠ | ᅟᅤ | ᅟᅠᆭ | ᅟᅥ | ᅟᅠᆭ | ᄅᅠ | ᅟᅤ | ᅟᅠᆭ | ||
7 | 00111 | ᅟᅥ | ᅟᅠᆭ | ᄅᅠ | ᅟᅥ | ᅟᅠᆭ | ᄆᅠ | ᅟᅥ | ᅟᅠᆮ | ᄃᅠ | ᅟᅦ | ᅟᅠᆮ | ᄆᅠ | ᅟᅥ | ᅟᅠᆮ | |
8 | 01000 | ᅟᅠᆮ | ᄆᅠ | ᅟᅠᆮ | ᄇᅠ | ᅟᅠᆯ | ᄄᅠ | ᄇᅠ | ᅟᅠᆯ | |||||||
9 | 01001 | (채움) | ᅟᅦ | ᅟᅠᆯ | ᄇᅠ | ᅟᅠᆯ | ᄈᅠ | ᅟᅠᆰ | ᄅᅠ | ᅟᅠᆯ | ᄈᅠ | ᅟᅠᆰ | ||||
10 | 01010 | ᄀᅠ | ᅟᅧ | ᅟᅠᆰ | ᄈᅠ | ᅟᅦ | ᅟᅠᆰ | ᄉᅠ | ᅟᅦ | ᅟᅠᆱ | ᅟᅧ | ᅟᅠᆰ | ᄉᅠ | ᅟᅦ | ᅟᅠᆱ | |
11 | 01011 | ᄁᅠ | ᅟᅨ | ᅟᅠᆱ | ᄉᅠ | ᅟᅧ | ᅟᅠᆱ | ᄊᅠ | ᅟᅧ | ᅟᅠᆲ | ᅟᅨ | ᅟᅠᆱ | ᄊᅠ | ᅟᅧ | ᅟᅠᆲ | |
12 | 01100 | ᄂᅠ | ᅟᅠᆲ | ᄊᅠ | ᅟᅨ | ᅟᅠᆲ | ᄋᅠ | ᅟᅨ | ᅟᅠᆳ | ᅟᅩ | ᅟᅠᆲ | ᅟᅨ | ᅟᅠᆳ | |||
13 | 01101 | ᄃᅠ | ᅟᅩ | ᅟᅠᆳ | ᄋᅠ | ᅟᅩ | ᅟᅠᆳ | ᄌᅠ | ᅟᅩ | ᅟᅠᆴ | ᅟᅪ | ᅟᅠᆳ | ᅟᅩ | ᅟᅠᆴ | ||
14 | 01110 | ᄄᅠ | ᅟᅪ | ᅟᅠᆴ | ᄌᅠ | ᅟᅪ | ᅟᅠᆴ | ᄍᅠ | ᅟᅪ | ᅟᅠᆵ | ᅟᅫ | ᅟᅠᆴ | ᅟᅪ | ᅟᅠᆵ | ||
15 | 01111 | ᄅᅠ | ᅟᅫ | ᅟᅠᆵ | ᄍᅠ | ᅟᅫ | ᅟᅠᆵ | ᄎᅠ | ᅟᅫ | ᅟᅠᆶ | ᅟᅬ | ᅟᅠᆵ | ᅟᅫ | ᅟᅠᆶ | ||
16 | 10000 | ᄆᅠ | ᅟᅠᆶ | ᄎᅠ | ᅟᅠᆶ | ᄏᅠ | ᅟᅠᆷ | ᅟᅠᆶ | ᅟᅠᆷ | |||||||
17 | 10001 | ᄇᅠ | ᅟᅬ | ᅟᅠᆷ | ᄏᅠ | ᅟᅠᆷ | ᄐᅠ | ᅟᅠᆸ | ᄆᅠ | ᅟᅠᆷ | ᅟᅠᆸ | |||||
18 | 10010 | ᄈᅠ | ᅟᅭ | ᅟᅠᆸ | ᄐᅠ | ᅟᅬ | ᄑᅠ | ᅟᅬ | ᅟᅠᆹ | ᄇᅠ | ᅟᅭ | ᅟᅠᆸ | ᅟᅬ | ᅟᅠᆹ | ||
19 | 10011 | ᄉᅠ | ᅟᅮ | ᅟᅠᆹ | ᄑᅠ | ᅟᅭ | ᅟᅠᆸ | ᄒᅠ | ᅟᅭ | ᅟᅠᆺ | ᄈᅠ | ᅟᅮ | ᅟᅭ | ᅟᅠᆺ | ||
20 | 10100 | ᄊᅠ | ᅟᅠᆺ | ᄒᅠ | ᅟᅮ | ᅟᅠᆹ | ᅟᅮ | ᅟᅠᆻ | ᅟᅯ | ᅟᅠᆹ | ᅟᅮ | ᅟᅠᆻ | ||||
21 | 10101 | ᄋᅠ | ᅟᅯ | ᅟᅠᆻ | ᅟᅯ | ᅟᅠᆺ | ᅟᅯ | ᅟᅠᆼ | ᄉᅠ | ᅟᅰ | ᅟᅠᆺ | ᅟᅯ | ᅟᅠᆼ | |||
22 | 10110 | ᄌᅠ | ᅟᅰ | ᅟᅠᆼ | ᅟᅰ | ᅟᅠᆻ | ᅟᅰ | ᅟᅠᆽ | ᄊᅠ | ᅟᅱ | ᅟᅠᆻ | ᅟᅰ | ᅟᅠᆽ | |||
23 | 10111 | ᄍᅠ | ᅟᅱ | ᅟᅠᆽ | ᅟᅱ | ᅟᅠᆼ | ᅟᅱ | ᅟᅠᆾ | ᄋᅠ | ᅟᅲ | ᅟᅠᆼ | ᄋᅠ | ᅟᅱ | ᅟᅠᆾ | ||
24 | 11000 | ᄎᅠ | ᅟᅠᆾ | ᅟᅠᆽ | ᅟᅠᆿ | ᄌᅠ | ᅟᅠᆽ | ᄌᅠ | ᅟᅠᆿ | |||||||
25 | 11001 | ᄏᅠ | ᅟᅲ | ᅟᅠᆿ | ᅟᅠᆾ | ᅟᅠᇀ | ᄍᅠ | ᄍᅠ | ᅟᅠᇀ | |||||||
26 | 11010 | ᄐᅠ | ᅟᅳ | ᅟᅠᇀ | ᅟᅲ | ᅟᅠᆿ | ᅟᅲ | ᅟᅠᇁ | ᄎᅠ | ᅟᅳ | ᅟᅠᆾ | ᄎᅠ | ᅟᅲ | ᅟᅠᇁ | ||
27 | 11011 | ᄑᅠ | ᅟᅴ | ᅟᅠᇁ | ᅟᅳ | ᅟᅠᇀ | ᅟᅳ | ᅟᅠᇂ | ᄏᅠ | ᅟᅴ | ᅟᅠᆿ | ᄏᅠ | ᅟᅳ | ᅟᅠᇂ | ||
28 | 11100 | ᄒᅠ | ᅟᅠᇂ | ᅟᅴ | ᅟᅠᇁ | ᅟᅴ | ᄐᅠ | ᅟᅵ | ᅟᅠᇀ | ᄐᅠ | ᅟᅴ | |||||
29 | 11101 | ᅟᅵ | ᅟᅵ | ᅟᅠᇂ | ᅟᅵ | ᄑᅠ | ᅟᅠᇁ | ᄑᅠ | ᅟᅵ | |||||||
30 | 11110 | ᄒᅠ | ᅟᅠᇂ | ᄒᅠ | ||||||||||||
31 | 11111 | (채움) |
【표 10-8 : 표준이 된 세벌식? - (1) 1980년대에 쓰인 여러 가지 한글 표현 방식 (https://pat.im/1150)】
【그림 13-6 : 표준이 된 세벌식? - (4) 옛한글을 나타내는 표준 방안이 된 첫가끝 조합형 (https://pat.im/1184)
1990년대의 유니코드 1.1에 처음 들어간 첫가끝 부호계(그림 13-6의 하얀색 칸)는 거의 한 덩어리였지만,주13 2000년대에 나온 유니코드 5.2에 더하여 들어간 한글 옛낱자들(그림 13-6의 노란색 칸)이 먼저 들어간 한글 낱자들과 떨어진 자리에도 들어가서 세 덩어리로 나뉘었다. 2바이트 조합형 부호계들도 제어 부호나 메타 문자를 피하고 한자를 비롯한 문자들을 담는 문제로 5비트 단위로 매기는 한글 낱자들이 한 덩어리로 뭉치지 못하고 띄엄띄엄 들어갔다. 그래야 했던 목적이나 원인은 달랐지만, 한 코드와 유니코드와 2바이트 조합형 부호계들은 한글 낱자들이 벌이 같은 것들끼리도 한 덩어리로 뭉치지 못하고 띄엄띄엄 나뉘어 들어간 것에서 비슷한 면이 있다.
똑딱 1.1와 함께 배포된 KCHR 자원 'Han'은 제2 공병우 직결식을 구현한 KCHR 자원들(Kong, KongHangul 등)처럼 3-91 자판(공병우 최종 자판)을 지원했다. 하지만 '한 코드 방식'은 3-91 자판이 아닌 공세벌식 자판을 쓰는 데에도 활용되었다. 이에 얽힌 이야기는 다음 글에서 다루려고 한다.
덧글을 달아 주세요