[온라인 한글 입력기] 두벌식 옛한글 자판
1. 간단히 살피는 '두벌식 옛한글 자판'의 변천사
오늘날에 가장 흔히 쓰이는 표준 두벌식 한글 자판은 한국의 산업 표준인 KS X 5002에 실린 한글 배열에 근거를 두고 있다. KS X 5002은 ㅒ·ㅖ를 뺀 낱자들의 자리를 정해 놓았지만, 옛한글을 넣기 위한 옛낱자 배열은 표준으로 정하지 않았다. 그래서 두벌식 옛한글 자판은 민간 업체가 주도하여 만들어 갔고, 지난날에 쓰이던 것과 요즈음에 쓰이던 것의 배열이 다르다.
두벌식 자판으로 옛한글을 넣는 기능을 주도하여 발전시켜 나간 제품은 한글과컴퓨터가 개발한 'ᄒᆞᆫ글'(아래아한글)이었다. 1990~1991년에 나온 ᄒᆞᆫ글 1.2~1.5×판의 두벌식 옛한글 자판은 요즈음에 쓰이는 두벌식 옛한글 자판과 꽤 달랐다. ㅄ · ㅸ · ㅺ · ㅽ 같은 겹닿소리들이 많이 들어갔고, 아래아(ㆍ)가 쿼티 자판의 M 자리(윗글쇠+ㅡ)에 있었다. 옛 홑낱자들의 자리도 요즈음과 많이 달랐다.
ᄒᆞᆫ글 1.×가 쓰이던 무렵까지는 아직 옛한글에 쓰이는 모든 홑낱자를 갖춘 옛한글 자판이 쓰이지 않아서, 중국어의 치두음과 정치음을 나타내는 옛닿소리 낱자들(ᄼᅠ, ᄾᅠ, ᅎᅠ, ᅐᅠ, ᅔᅠ, ᅕ)은 나타낼 수 없었다.
요즈음에 널리 쓰이는 두벌식 옛한글 자판은 1992년에 나온 ᄒᆞᆫ글(아래아한글) 2.0에서 기틀이 잡혔다.주1 ᄒᆞᆫ글 2.0의 두벌식 옛한글 자판은 홑낱자 ㅿ, ㆁ, ㆆ, ㆍ, ᄼᅠ, ᄾᅠ, ᅎᅠ, ᅐᅠ, ᅔᅠ, ᅕ, ㆍ의 자리가 요즈음에 쓰는 옛한글 배열과 같다. '윗글쇠+ㄹ'(shift+f)로 한글 조합을 끊을 수 있었다. 'ㅏ+ㅏ→ㆍ'로 아래아(ㆍ)를 넣는 예외 낱자 조합 규칙도 ᄒᆞᆫ글 2.0부터 들어갔다.
ᄒᆞᆫ글 2.0의 두벌식 옛한글 자판은 여러 한글 입력 프로그램들에서 쓰이는 두벌식 옛한글 자판의 바탕꼴이 되었고, 1996년에 나온 윈도판 ᄒᆞᆫ글 96까지 같은 배열이 그대로 이어졌다.
ᄒᆞᆫ글 97의 두벌식 옛한글 자판에는 다시 옛한글 겹낱자가 들어갔다. 그러나 ᄒᆞᆫ글 97이 처음 나왔을 때에는 겹낱자들이 어떤 뜻으로 들어갔는지 알 수 없을 만큼 마구 뒤섞인 모습이었다. 1998년 이후의 ᄒᆞᆫ글 97 갱신판에는 아래처럼 겹낱자 ㄶ · ㅀ · ᅟᆃ · ㆌ 자리가 정돈되어 들어갔다. 윗글쇠+ㅓ 자리는 나중에 유니코드 첫가끝 부호계의 한글 채움 문자가 들어갔지만, ᄒᆞᆫ글 97은 유니코드를 지원하지 않아서 '윗글쇠+ㅓ' 자리는 빈칸이 들어가는 것 말고는 별다른 구실을 하지 않았다.
1999년에 나온 마이크로소프트(MS)의 워드(Word) 2000주2과 삼성전자의 훈민정음 2000(훈민 워드 2000)에는 ᄒᆞᆫ글과 비슷한 두벌식 옛한글 자판을 쓰는 옛한글 입력 기능이 들어갔다. 두 프로그램은 두벌식 옛한글 자판에 옛한글 겹낱자를 넣지 않았고, 🄵 또는 Ⓕ로 나타내는 채움 문자를 '윗글쇠+ㅓ' 자리에 넣었다. 채움 문자는 한글 낱자를 제대로 갖추지 못한 이른바 '미완성 한글'에서 빈 낱자를 채우는 값으로 들어간다.주3
ᄒᆞᆫ글과 경쟁 관계에 있고 업계에서의 시장 점유율이 상위권에 있던 훈민정음과 MS 워드가 ᄒᆞᆫ글에 쓰이던 두벌식 옛한글 자판의 배열을 따라감에 따라, ᄒᆞᆫ글 2.0에서 선보인 두벌식 옛한글 배열은 업계 표준으로 자리잡았다. 1999년에 한글 문서 편집 프로그램들이 배열이 같은 두벌식 옛한글 자판을 지원한 것은 1997년부터 국책 사업으로 진행된 '21세기 세종계획'과 연관이 있어 보인다. '21세기 세종계획'에서 추진한 연구 사업들 가운데는 옛한글이 들어간 모든 옛 문헌들을 전산 정보로 옮기고 통계 조사에 활용할 수 있는 말뭉치 데이터베이스를 만드는 사업이 있었다. 이 사업에서의 수요 때문에라도 한글 문서 편집 프로그램을 만드는 주요 기업들은 두벌식 자판으로 옛한글을 넣는 기능을 마련해 둘 필요가 있었다.
널리 쓰이는 두벌식 옛한글 자판의 윤곽을 잡은 제품은 한글과컴퓨터의 ᄒᆞᆫ글이었지만, 한글과컴퓨터는 경쟁 제품들보다 늦은 2000년에야 요즈음에 널리 쓰이는 것과 같은 두벌식 옛한글 자판을 쓰는 제품을 내놓을 수 있었다. ᄒᆞᆫ글 97은 2바이트 조합형 부호계에 매인 채 첫가끝 부호계가 들어간 유니코드를 지원하지 않았고, 채움 문자를 써서 '미완성 한글'을 넣는 입력 기능도 갖추지 못했다.주4 거기다가 ᄒᆞᆫ글 97의 후속판인 ᄒᆞᆫ글 워디안은 내부 프로그램 코드를 새로 짜는 작업을 거치며 시장에 늦게 나왔다.주5 그래서 ᄒᆞᆫ글은 경쟁 제품보다 첫가끝 부호계가 들어간 유니코드 지원이 늦었고, 두벌식 옛한글 자판의 채움 문자의 자리와 기능은 경쟁 제품들을 따라간 모양새가 되었다.
▣ 그림 가져온 곳 : 위키미디어 (https://commons.wikimedia.org/wiki/File:KB_Dubeolsik_for_Old_Hangul_(NG3).svg)
이밖에 주목할 만 한 두벌식 옛한글 자판은 날개셋 한글 입력기에 들어간 배열이다. 날개셋의 두벌식 옛한글 자판에는 성조를 나타내는 방점 2개가 3-93 옛한글 자판과 같은 자리에 들어 있다. ᄒᆞᆫ글 2.0~96에 있던 조합 끊기 기능도 '윗글쇠+ㅡ'(shift+m) 자리(위 배열표에서 🄴로 나타낸 자리)에 들어가 있다. 두벌식으로 옛한글을 넣는 일에 필요한 배열 요소들을 가장 많이 갖추고 있다.주6
2. 온라인 한글 입력기의 두벌식 옛한글 자판
온라인 한글 입력기에 처음 넣은 옛한글 자판은 3-2012 옛한글 자판이다. (얽힌 글 : 자바스크립트로 돌리는 첫가끝 옛한글 입력기 (온라인 한글 입력기 + 3-2012 옛한글 자판, https://pat.im/1075) 3-2012 옛한글 자판은 쿼티 자판 기준으로 7, 8 자리를 전환 글쇠로 써서 옛한글 확장 배열을 덧붙인 공세벌식 옛한글 자판이다. 나중에 기능을 보태고 다듬어서 신세벌식처럼 첫가끝 갈마들이를 쓰는 세벌식 자판으로도 옛한글을 넣을 수 있는 틀을 갖추었다.
두벌식으로 옛한글 자판을 쓸 수 있게 처리하는 기능은 올해 들어서 새로 넣었다. 글쓴이가 온라인 한글 입력기에서 옛한글 넣는 기능을 세벌식 자판부터 붙인 것은 글쓴이가 두벌식 자판을 주로 쓰지 않아서 절실하지 않은 탓도 있었고, 두벌식 입력 처리를 잘 이해하지 못했기 때문이기도 하다.
두벌식 자판을 쓸 때에 홀소리 다음 들어온 닿소리는 끝소리인지 첫소리인지를 그 다음에 들어오는 기호나 한글 낱자를 더 살펴야 가릴 수 있다. 그래서 두벌식 자판을 쓸 때에는 세벌식 자판을 쓸 때보다 낱내자(음절자) 조합이 늦게 마무리된다. 낱내자 조합을 끝낼 수 있을 때에 앞 낱내자의 끝소리로 들어간 닿소리가 다음 낱내자의 첫소리로 바뀌는 이른바 '도깨비불'이라 불리는 모습을 볼 수 있다. 이 처리 때문에 두벌식 자판은 누른 글쇠값으로 첫닿소리와 끝닿소리를 바로 가릴 수 있는 세벌식 자판보다 한글 조합 절차가 더 복잡하다.
온라인 한글 입력기에서 두벌식 자판과 완성형 부호계로 요즘한글을 넣는 한글 처리는 ohiHangeul2 함수가 맡고 있다. 두벌식 자판과 첫가끝 부호계를 쓰는 옛한글 처리는 다른 함수들이 맡는다. NFD_hangeul2_preprocess에서 두벌식 자판에만 적용하는 선행 처리 과정을 먼저 거치고, 그 다음은 세벌식 옛한글 자판을 쓸 때와 마찬가지로 NFD_hangeul_input 함수가 한글 조합 처리를 매듭짓는다.
온라인 한글 입력기의 두벌식 옛한글 자판(http://ohi.pat.im/?ko=2-ksx5002-y)은 ᄒᆞᆫ글 2.0에 들어간 두벌식 옛한글 자판의 한글 배열을 바탕으로 했고, 조합 끊기 기능이 들어간 날개셋 한글 입력기에 들어간 배열을 참고하여 ᄒᆞᆫ글 2.0과 같은 글쇠 자리에 조합 끊기 기능을 넣었다. 옛한글 겹낱자가 따로 들어가지 않아서 마이크로소프트 제품이 지원하는 두벌식 옛한글 자판과 한글 배열이 같다.
(1) 한글 낱자 채움 문자 (🄵)
첫가끝 조합형에 쓰이는 채움 문자는 첫소리 채움 문자(U+1159)와 가운뎃소리 채움 문자(U+1160)가 있다. 이 부호들은 첫소리나 가운뎃소리를 빠뜨리고 한글을 조합할 때에도 조합형 한글 낱내자 유형을 '첫+가' 또는 '첫+가+끝' 꼴로 일관성 있게 맞추는 구실을 한다.
첫·가·끝 낱자를 갖춘 세벌식 옛한글 자판은 채움 문자를 모두 입력기가 알아서 채워 줄 수 있지만, 두벌식 옛한글 자판은 그렇지 않다. 첫닿소리와 끝닿소리를 가려 넣지 않는 두벌식 자판을 쓸 때에는 가운뎃소리 채움 문자를 따로 넣지 않고서는 넣을 수 없는 한글 유형이 있기 때문이다. 첫소리 채움 문자는 어느 한글 자판을 쓰든 따로 넣을 필요 없이 입력기가 때에 맞추어 알아서 넣어 줄 수 있다.
아래는 두벌식 자판을 쓸 때에 가운뎃소리 채움 문자를 따로 넣을 수 있어야 조합할 수 있는 한글 유형이다.
- 첫소리, 가운뎃소리 없이 넣는 끝소리(받침)
- 가운뎃소리(홀소리) 없이 넣는 첫소리+끝소리
이런 한글 낱내자 유형을 흔히 '미완성 한글'이라고 불린다. 2바이트 조합형에서는 5비트로 이루어진 3벌 낱자 부호값에 모두 채움값이 있어서 '미완성 한글 낱내'를 나타낼 수 있었다. 하지만 유니코드에는 미완성 한글 낱내자들을 넣지 않은 채로 완성형 부호계에 11172개 한글 낱내자가 들어갔기 때문에, 미완성 한글 낱내자는 조합형(첫가끝 조합형)으로 나타낼 수밖에 없다.
따로 넣는 받침(끝소리)은 우리말이나 한글 체계를 분석하는 글에 더러 쓰인다. '하나는'과 같은 뜻으로 쓴 '하난'을 '하나+ᅟᅠᆫ'으로 분석하여 나타내는 것이 그 본보기이다. 미완성 한글 낱내자는 옛 문헌에 나오는 옛글보다 요즘글을 다룰 때에 더 쓰일 수 있다. 그런 점에서 첫가끝 조합형은 옛 문헌에 실린 한글을 넣을 때에만 쓰이지 않고, 어학·전산학을 비롯한 분야에서 요즘 말글을 연구하는 사람에게도 옛한글 자판이 필요할 수 있다.
두벌식 옛한글 자판의 자리(Shift+ㅓ)에 따로 들어가는 가운뎃소리 채움 문자(U+1160)는 실제 낱자가 아니지만, 따로 넣는 때에는 마치 실제 홀소리가 들어온 것처럼 앞뒤에 붙는 닿소리들이 처리된다. 눈에는 보이지 않지만 독립된 낱자처럼 뒷걸음쇠(백스페이스)로 지울 수 있는 요소이다. 또한 ᄒᆞᆫ글 등에서는 채움 문자만 덩그러니 남았을 때에는 입력기가 채움 문자를 지워 준다. 만약 채움 문자가 찌꺼기로 남으면 다른 곳에 안 보이게 달라붙어 한글 조합을 방해하거나 뜻하지 않은 말썽을 일으킬 수 있으므로, 찌꺼기로 남은 채움 문자를 지워 주는 처리가 필요하다.
따로 넣는 가운뎃소리 채움 문자가 홀소리와 대등하게 처리되는 것은 두벌식 옛한글 자판에 대한 선행 처리(NFD_hangeul2_preprocess 함수)를 통해 이루어지고, 가운뎃소리 채움 문자가 뒷걸음쇠로 지울 수 있는 부호로 구실하게 하는 작업은 세벌식 옛한글 자판들과 같이 공통 처리를 맡은 NFD_hangeul_input 함수에서 처리된다. 가운뎃소리 채움 문자에 얽혀 더 헤아려야 하는 낱자 처리 조건을 NFD_hangeul_input 함수에 덧붙였다.
(2) 한글 조합 끊기 (🄴)
두벌식 옛한글 자판에서 조합 끊기 기능은 다음과 같은 말들에 든 겹닿소리들을 가려 넣을 때에 필요하다.
- 뫼ᄡᆞᆯ / 묍ᄉᆞᆯ (멥쌀)
- ᄎᆞᄡᆞᆯ / ᄎᆞᆸ살 (찹쌀)
요즘말 '쌀'은 말밑을 따지면 'ᄡᅡᆯ'이나 'ᄡᆞᆯ'로 적을 수 있다. '찹쌀'은 '차+ᄡᅡᆯ'(ᄎᆞ+ᄡᆞᆯ)로 이루어진 말로 분석할 수 있다. 두벌식 자판으로 한글 조합을 끊지 않고 치면, '뫼ᄡᆞᆯ'과 묍ᄉᆞᆯ'을 가려 넣을 수 없고 '차ᄡᅡᆯ'과 '찹살'을 가려 넣을 수 없다.
옛한글에 쓰이는 겹닿소리가 요즘한글보다 훨씬 다양하므로, 겹닿소리를 뜻하는 대로 넣으려면 글을 넣는 사람이 한글 조합을 손수 끊어 주어야 하는 때가 있다. 미리 마련된 조합 끊기 방안이 없으면 화살 글쇠(→), end, 사이띄개 등으로 한글 조합을 끊을 수 있다. 하지만 이 글쇠들은 문서 편집기에서 다른 기능으로 쓰일 수 있고, 뒷걸음쇠를 더 눌러야 할 수 있다. 자판 배열에 한글 조합을 끊는 기능이 따로 들어 있으면, 한글 조합을 끊은 뒤에 뒷걸음쇠를 누르지 않고 다음 작업을 바로 이어가기 좋다.
날개셋 한글 입력기는 두벌식 옛한글 자판에 '윗글쇠+ㅡ'(shit+m)로 한글 조합을 끊는 기능을 두었다. 온라인 한글 입력기도 두벌식 옛한글 자판에 조합 끊기 기능을 두되, ᄒᆞᆫ글 2.0처럼 '윗글쇠+ㄹ'(shift+f)로 한글 조합을 끊을 수 있게 하였다.
두벌식 옛한글 자판의 배열 정보에 0 또는 U+001B(escape)주7를 글쇠값으로 넣으면, 그 값이 들어간 글쇠 자리는 한글 조합을 끊는 구실을 한다. U+001B를 넣은 글쇠 자리는 배열표에 🄴로 나타낸다.
(3) 성조를 나타내는 방점
성조를 나타내는 방점 2개(〮, 〯)도 옛한글이 들어간 문헌에 나오는 요소이지만, ᄒᆞᆫ글 등의 두벌식 옛한글 자판에는 들어 있지 않다. 날개셋의 두벌식 옛한글 자판에만 3-93 옛한글 자판과 같은 자리에 방점 2개가 들어 있다.
쿼티 기준으로 Y,U 자리에 놓인 3-93 옛한글 자판의 방점 자리는 ᅔᅠ, ᅕᅠ등을 피한 것이고 Y 자리는 썩 편하지 않다. 온라인 한글 입력기의 두벌식 옛한글 자판은 날개셋의 배열처럼 방점 2개를 두되 Y,U 자리보다 편한 U,I 자리에 방점을 두었다.
거성을 나타내는 〮(U+302E), 상성을 나타내는 〯(U+302F)는 한글 낱내자를 친 다음에 넣으면 가변폭 글꼴 처리로 낱내자의 왼쪽에 달라 붙는다. 유니코드로 방점을 넣는 것은 이렇게 하는 것이 원칙이지만, 글꼴이나 프로그램이 지원하지 않아서 방점이 바른 자리에 찍히지 않기도 한다. 이 때문에 출판물과 웹 자료 등에 가운뎃점(·)과 그침표(:)로 방점을 나타낸 예가 꽤 있었다.
(4) 풀어쓰기
두벌식 옛한글 자판으로도 https://pat.im/1175에서 소개한 대로 풀어쓰기를 할 수 있고, https://pat.im/1176에서 소개한 첫가끝 낱자를 쓰는 풀어쓰기를 할 수도 있다. 두벌식 자판을 쓰는 것 때문에 한글 낱내자 조합을 끝내고 풀린 낱자를 넣는 시점은 세벌식 자판을 쓸 때보다 조금 늦다.
(5) 첫가끝 조합
온라인 한글 입력기에서는 옛한글 자판으로 넣는 한글을 처음에 첫가끝 방식으로 조합한다. 선택 항목인 '첫가끝 조합'을 고르기에 따라 조합을 마친 한글 낱내자를 첫가끝 방식 그대로 둘 수도 있고 되도록 완성형 낱내자로 바꿀 수도 있다.
'첫가끝 조합' 항목을 골랐을 때에는 조합을 끝낸 낱내자의 첫가끝 낱자들이 바뀌지 않고 그대로 한글 조합이 마무리된다. '첫가끝 조합' 항목을 고르지 않은 때에는 완성형으로 나타낼 수 있는 낱내가 조합이 끝난 뒤에 완성형으로 바뀌고, 완성형으로 나타낼 수 없는 낱내자는 바뀌지 않는다.
※ 이 글에는 아래아가 들어간 'ᄒᆞᆫ'처럼 첫가끝 부호계로 나타내는 한글 낱내자가 있고, '🄵'처럼 유니코드(unicode)에서 U+10000 이상의 부호값이 매겨진 다국어 보충 평면(Supplementary Multilingual Plane, SMP)에 들어간 문자가 있습니다. 이들을 제대로 지원하지 못하는 운영체제 또는 응용 프로그램 환경에서는 한글 낱자가 풀린 채로 보이거나 다른 기호(?, □ 따위)로 보일 수 있습니다. 옛 운영체제 환경에서 이 문자들을 제대로 보려면 최근의 유니코드를 제대로 지원하는 응용 프로그램과 글꼴을 따로 깔아야 할 수 있습니다.
※ 파일을 빠뜨려서 보이지 않던 위키미디어에서 따온 날개셋의 두벌식 옛한글 자판 배열표 그림을 넣었고, 한글 조합을 끊는 부호값(U+001B)에 대한 설명을 더하여 넣었습니다. (2018.6.19.)
※ 'ㅏ+ㅏ→ㆍ' 조합에 관한 이야기를 더하여 넣었습니다. (2018.6.22.)
덧글을 달아 주세요