나무모에 미러 (일반/어두운 화면)
최근 수정 시각 : 2024-12-01 20:57:33

도깨비불 현상


한글 전산화
<colbgcolor=#dddddd,#212121> 한글 인코딩 조합형 · 완성형(한글 목록 · 중복 한자 · CP949) · 조합형 완성형 논쟁 · 남북한 한글 코드의 충돌 문제 · 한컴 2바이트 코드 · 한글 채움 문자() · 유니코드 · 옛한글
타자기 키보드 두벌식 · 세벌식(일반 자판 · 속기 자판) · 휴대전화 입력기 · 한영 키

1. 개요2. 상세3. 옛한글 입력에 관한 문제4. 여담5. 같이 보기

1. 개요

두벌식 자판에서 곧 초성이 될 자음이 종성에 먼저 붙는 현상. '종성우선 현상'이라고도 한다. 자음과 모음으로 배치한 두벌식 자판에서는 초성과 종성을 따로 구현하지 않기 때문에 일어나는 현상이다.

2. 상세

도깨비불 현상은 한글 입출력에서 문제를 일으킨다. 언제 한 글자 입력이 완료되는지를 판단하는 논리가 복잡해지며 입력에 즉각적으로 반응해야 하는 기능 처리에서 사용자가 의도한 입력과 다른 출력을 반드시 거쳐가기 때문에 프로그램의 성능이 뒤떨어지게 된다. 후술하는 증분 검색 문제가 이 문제가 그대로 드러난 결과지만, 컴퓨터가 없을 때는 물론이요 컴퓨터의 성능이 어느 정도 높아지기 전까지 초창기 한글 기계화에서는 증분 검색 문제는 애교로 보일 만큼 큰 장애물이었다. 두벌식 자판이 한글 자모음을 그대로 로마자 알파벳처럼 보는 비교적 생각해내기 쉬운 방법이고 역사가 꽤 오래 되었음에도 온전한 구현이 상당히 늦은 게 이 도깨비불 현상을 해결하기가 까다로워서였다. 풀어쓰기가 잠깐이나마 인기를 끌 수 있던 것도 도깨비불 현상을 해결할 필요조차 없는 회피의 길을 제공하기 때문이었다. 풀어쓰기의 몰락 역시 세벌식 타자기가 완성되어서 모아쓰기와 한글 기계화를 동시에 효율적으로 달성할 수 있다는 점이 크게 작용했다.



나ㅁ
나무
나무ㅇ
나무우
나무위
나무위ㅋ
나무위키
세벌식에서는 초성·중성·종성이 배정되어 있기 때문에(즉, 자음이 초성과 종성으로 따로 배정되어 있기 때문에) 이런 현상을 방지할 수 있다. 적어도 받침 없는 문자만 입력하는데 받침 있는 문자가 중간에 나오지는 않는다. 그런데 이것도 자세히 파고들면 '사용자가 의도한 입력과 다른 출력'에 관한 미묘한 문제가 있다.

한글을 쓰는 사람은 별로 체감하지 못하지만 글꼴에 대해 배운 사람들은 어느 정도 아는 문제가 있다. 한글은 풀어쓰기를 채택하지 않고 네모반듯한 글꼴을 쓰는데, 그러다 보니 자모의 모양이 글자마다 조금씩 다르다. 가, 고, 국, 넋에 있는 네 개의 ㄱ 은 다 다른 모양이다. 따라서 출력할 때에는 저 다른 모양의 ㄱ 을 다 다르게 만들어주고 문자마다 다르게 출력해줘야 한다. 눈에 보이는 글자꼴의 전환을 도깨비불 현상이라고 하면 '불'에서 이런 문제가 생기는 것을 볼 수 있다. 즉 '부'와 '불'에서 받침 ㄹ 이 빠진 문자는 다르게 출력해야 하며 '부'에서 '불'로 전환되는 과정에서 글자가 전환되는 과정을 볼 수 있다.

세벌식의 초창기 개발자인 공병우는 이 문제조차도 해결하기 위해서 일명 '빨랫줄 글꼴' 또는 '빨래꼴'이라 불리는 세벌글꼴을 창안했다. 여기에서는 한글 한 글자가 네모반듯한 동일한 자리를 차지해야 한다는 제약을 깨고 자음이나 모음이나 위치에 관계없이 일정한 자리를 차지하게 하며 받침이 없으면 아예 받침 자리를 비워버렸다. 그러나 이 글꼴은 널리 쓰이지 않았고, 출력단계에서의 도깨비불 현상은 한글 글꼴 디자이너의 피할 수 없는 숙명이 되었다. 그 때문에 이쪽 분야에서는 풀어쓰기에 대한 지지도 간간히 나온다. 더 넓게 본다면 이런 건 어두형, 어중형, 어말형이 다른 아랍 글자 타자에서도 나타나는 현상이다. 그러나 아랍 문자는 어두형, 어중형, 어말형, 단독형만 지정해 주면 개별 자소가 다른 자소의 영향을 받지 않는 반면, 모아쓰기를 하는 한글은 같은 위치에 있더라도 주변 자소에 의해 자형에 미묘한 영향을 주기 때문에 더 까다롭다.

전자식 타자기가 쓰이던 과거에는 타자기 전자 회로의 처리 속도가 저해되는 원인으로, 컴퓨터가 처음 보급되기 시작했을 때에는 사람들이 어색하게 느꼈기 때문에 세벌식 옹호론자의 명분 중 하나였다. 실제로 1970년대에 전신 타자기를 두벌식으로 하려고 하다가 모아쓰기를 처리하는 회로의 신뢰성이 너무 떨어져서 결국 세벌식으로 회귀한 일도 있었다. 하지만 시간이 지나면서 컴퓨터의 처리 속도가 좀 많이빨라진 오늘날에는 도깨비불 현상 때문에 컴퓨터가 느려지지도 않고, 단순히 컴퓨터 입력의 특징 정도로만 인식하게 되면서 일반 사용자들에게 그다지 문제되지 않는 현상이다. 따라서 도깨비불 현상이 보기 헷갈려서 나쁘다는 의견은 많이 사라졌다. 실질적인 문제는 아래에 있는 기술적인 오류들에 있다.

2000년대에 들어서는 증분 검색(incremental search)이라는 기능을 지원하는 웹사이트 입장에서 트래픽 부담이 늘어난다는 점으로 다시 문제가 되고 있다. 증분 검색은 검색 엔진에서 검색할 단어를 입력하다 보면 그 단어로 시작하는 검색어들을 서버 측에서 자동으로 찾아서 보여 주는 기능으로 자동 완성, 검색 서제스트, 검색어 제안 등으로 불린다. 과학의 발전으로 해결된 줄 알았던 문제가 엉뚱한 곳에서 다시 나타난 모양새.

예를 들어, "나무" 라는 단어를 검색하려고 한다. "나" 까지는 아무 문제 없이 입력이 될 것이며, "나무"이라는 검색어의 빈도수가 높은 편이라면 추천 검색어 결과에도 나타날 것이다. 그러나 다음 순간 ㅁ 을 입력하면서 도깨비불 현상이 발생하여 "남"이 될 것이며, 화면에 나타나는 추천 검색어들은 "남"으로 시작하는 단어들로 바뀔 것이다(여기서 '남'은 '나'보다 사전식 순서로 뒤에 온다는 것에 주목하자). 이렇게 도깨비불 현상은 증분 검색의 결과물의 정확도를 떨어뜨릴 뿐 아니라 서버 측으로 하여금 그만큼 더 많은 연산을 처리하게 하기 때문에 그만큼 리소스 낭비를 일으키게 된다. 다시 다음 순간 ㅜ 를 입력하면 '나무'로 바뀌면서 다시 '나'로 시작하는 단어들이 나타나게 된다. 추천 검색어 창이 정말 도깨비불처럼 깜빡거리는 것을 볼 수 있다. 한편 세벌식으로 같은 단어를 입력하면 '나' 다음에 '나ㅁ' 으로 바로 넘어가므로 이런 문제가 전혀 발생하지 않을 것 같지만, 두벌식 사용자가 세벌식 사용자보다 압도적으로 많은 탓에 세벌식으로 '나ㅁ'이라 입력했는데도 검색 엔진이 '나ㅁ'을 '남'의 오타로 인식하고 '남'의 연관검색어를 찾는 경우가 많다.

하지만 현대 웹기술에서 증분검색을 구현할 때는, 최종 키 입력 이후 일정시간 지연한 뒤 검색을 하는 debounce 로직이[1] 적용하기 때문에 이게 심각한 문제라고 볼 수는 없다. 한글뿐만 아니라 알파벳을 쓰는 다른 언어에서도 똑같이 이 로직을 적용시킨다. 단어가 다 완성되지 않았는데, 검색을 하는 것은 한글이든 영어든 비효율적인 것은 똑같다.

더불어 포토샵 등 그래픽 툴에서 글을 입력할 경우 이 도깨비불 현상 때문에 불편한 점이 있다. 시스템 기본 폰트같이 한글의 모든 문자 형태를 표현하도록 만든 일부 폰트를 제외하고 대부분의 한글 폰트는 제한된 완성형의 글자만 가지고 있어서 타이핑을 하는 폰트가 변경되는 오류가 있다. (사실 이건 두벌식의 문제라기 보다는 글자를 왕창 빼먹고 만든 완성형 코드의 문제다.) 이럴 경우 이 글자를 표현은 해야 하니 툴은 이 글자를 가지고 있는 기본 폰트로 이 문자를 표시하게 되고[2], 이후에 타이핑을 했을 때 바로 앞 글자의 폰트 모양을 기억해 적용하므로 이후의 내용이 원래 의도한 폰트가 아닌 굴림체로 나타나는 오류가 있는 것.
파일:attachment/uploadfile/19.png
포토샵에서 두벌식으로 '메밀국수'를 타이핑할 때의 모습. 이 그림을 보면 완성형에 '멤'이 있어서 '메밀'까지는 잘 나오다가 '밁'이 없기 때문에 글씨체가 '밁'에서 바뀌고 그 폰트 모양이 계속 적용되어버려서 '메'와 '밀국수'의 폰트가 서로 다르게 되어 있다.

포토샵, 일러스트레이터 등에서 이 문제를 해결하려면 현대 한글 11,172자를 모두 지원하는 폰트를 사용하거나, "환경 설정 → 문자"에서 "누락된 글리프 보호 사용" 체크를 해제하면 된다.[3]

3. 옛한글 입력에 관한 문제

도깨비불 현상은 현대 한국어에서 쓰이는 한글에서는 거의 모호성이 생기지 않기 때문에 문제가 없을지도 모르나, 옛한글을 입력할 때는 이것이 입력 오류의 원인으로 작용하기도 한다. 옛한글 자판은 ㅦ, ㅸ, ㅴ 등의 수많은 낱자들을 모두 늘어놓을 수 없어 ㄴ+ㄷ, ㅂ+ㅇ, ㅂ+ㅅ+ㄱ와 같이 나눠서 입력하도록 하고 있는데, 이로 인해서 입력에 모호성이 존재하기 때문이다.

예를 들어서 두벌식 옛한글 자판으로 '가ᄣᅩ'를 입력한다고 하면, 반드시 ㄱㅏㅂㅅㄷㅗ 순서대로 누르게 된다. 저것을 화면을 보지 않고 키보드만 보면서 입력하고, 출력되는 문자열을 보자. 그 문자열이 정말로 '가ᄣᅩ'인가? 입력기가 출력한 문자열은 '값도'일 것이다. 입력기는 저 ㅂ과 ㅅ이 초성에 가는지 종성에 가는지 알지를 못하고 그냥 종성으로 처리해 버린다. 그래서 '가ᄣᅩ'를 입력하려면 ㄱㅏ(조합 중단)ㅂㅅㄷㅗ와 같이 중간에 조합을 중단해야 한다. '갑ᄯᅩ'를 입력할 때도 마찬가지 문제가 생긴다.

이와 같이 두벌식 옛한글 자판은 입력 오류를 유발할 가능성이 높으며, 따라서 두벌식 옛한글 자판으로 옛한글을 입력할 경우 무슨 글자가 입력되는지를 계속 주시해야만 한다. 이 문제는 고전 전산화와 같이 원문을 토씨 하나 틀리지 않고 그대로 써야 하는 경우에 마이너스 요소로 작용하며, 주의하지 않을 경우 원문을 훼손할 수도 있다. 당장 훈민정음 언해 서문에 나오는 'ᄒᆡᅇᅧ' 나 '수ᄫᅵ'도 두벌식 옛한글 자판으로는 'ᄒᆡᆼ여'나 '숩이'가 되기 십상이다.

세벌식 옛한글 자판은 초성 키와 종성 키가 다르므로 저런 문제가 생기지 않는다. 값도/갑ᄯᅩ/가ᄣᅩ, ᄒᆡᅇᅧ/ᄒᆡᆼ여, 수ᄫᅵ/숩이 등을 모두 조합 중단할 필요 없이 자연스럽게 구분해 칠 수 있으며, 이러한 입력 오류가 생길 일도 없다.

4. 여담

도깨비불 현상에 의한 짤방으로 김연아 섹이 있다.

5. 같이 보기


[1] 쉽게 말하면 사용자가 검색창에 무언가 입력하다 입력을 멈추고 일정 시간이 지났을 때 그때까지 입력된 것을 검색하는 것이다. 예를 들어 지연 시간이 0.5초고 '나무위키'를 검색한다 가정하면, '나무우'까지 입력하다 멈추고 0.5초가 지나면 그 시점에 '나무우'가 검색되는 것이다.[2] 윈도우 환경일 경우 보통 시스템 폰트 중 하나인 굴림으로 표현하게 된다. 전용 폰트가 있는 아래아 한글에서는 조합형을 지원하는 글꼴로 대체 표현된다.[3] 다만 이 경우 폰트가 2,350(KS X 1001)자만 지원하는 경우 ㅁ>메>멤>메미>메밀>메�>메밀구>메밀국>메밀�>메밀국수 처럼, 정상 입력은 가능하나 중간중간 네모박스나 �등 없는 글자가 나온다.