최근 수정 시각 : 2019-08-10 01:22:05

도깨비불 현상

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

1. 개요2. 옛한글 입력에 관한 문제3. 같이 보기

1. 개요

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

말로써 설명하기가 어렵기 때문에 예를 들어보자면 다음과 같다.

나무위키두벌식에서 입력하면 다음과 같은 과정을 거치게 된다.



나무

나무우
나무위
나무
나무위키

또다른 예로 이 항목의 이름인 '도깨비불'을 입력할 때도 다음과 같은 과정이 된다



도깨

도깨비
도깨
도깨비부
도깨비불

'마포구청'을 입력할때도 똑같다.



마포

마포구
마포
마포구처
마포구청
여기서 굵게 처리한 부분이 도깨비불 현상이 일어나는 부분이다.

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


나ㅁ
나무
나무ㅇ
나무우
나무위
나무위ㅋ
나무위키

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

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

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

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

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

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

이렇게 억울한 경우를 만들기도 한다. 김연아 섹ㅖ신기록(...) [1] 카더라로 마무리가 무난합니다 알면서...

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

포토샵, 일러스트레이터 등에서 이 문제를 해결하려면 "환경 설정 → 문자"에서 "누락된 글리프 보호 사용" 체크를 해제하면 된다. 자세한 내용 참고.아니면 메밀에서 스페이스바 누르고 다시 공백 지운후 국수를 쓰면 된다

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

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

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

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

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

3. 같이 보기


[1] 실제로 막 청소년기로 가는 학생들이 컴퓨터 학원에서 옆에 강사가 오면 살짝 당황하기도 한다카더라....[2] 윈도우 환경일 경우 보통 시스템 폰트 중 하나인 굴림으로 표현하게 된다.