한국어 input에 대한 자모음 분리 현상

오래된 문제와 비슷한 질문 / 답변이 있을 것 같은데,

요약: 분명 한번쯤 겪을만한 ‘가나다’ 입력시 ‘ㄱㅏ나다’ 느낌의 현상에 대해 좀 자세히 알고 싶습니다. 브라우저 문제이려나요? 개발자가 만든 버그인가요?

아래 사진과 같은 현상들이 정확히 어느 현상인가요? 원인에 대한 추적을 하고 싶어서요.
해결하려는 시도도 많았을 것 같은데, 왜 널리 해결되지 못할까요??

image

“처음 스페이스로 한칸 띄우면 됩니다” 같은 답변이 있네요, 왜, 이런 해결책이 대안으로 존재할지요?

미리 감사합니다!

이 블로그 글을 참고하시면 좋을 것 같고, 제 개인적인 추측도 따로 적어봅니다.

우리가 쓰는 한글 입력은 조합을 이용한 입력이죠. 그런데 여기서 문제가 있습니다.
한글 낱자를 조합해서 쓰다 보면 'ㅇ, ㅏ, ㄱ, ㅏ’를 '아가’로 봐야 할지, '악ㅏ’로 봐야 할지 컴퓨터는 모른다는 말이죠.
그래서 웬만한 시스템 입력기는 '아가’처럼 최대한 한글 기본 구조를 깨지 않는 선으로 변환하죠.

저렇게 자모가 분리되는 현상은 첫글자에 받침이 있다면 거의 안 생기는데, 그 이유는 '(자-모-자), (자-)'의 형태는 첫번째 글자는 뒷글자의 영향을 받지 않는다는 걸 보장하기 때문이죠. 이미 한글의 기본 구성에서 넣을 수 있는 건 다 넣었기 때문입니다(다만 겹받침의 경우는 자주 보지 않아서 모르겠네요). 반면 (자-모-자), (모-)'의 형태라면 다시 입력기에서 앞의 글자를 분해해야 하는데, 이때, 다시 앞의 글자를 한글 합자로 결합하는 과정이 누락돼서 저렇게 깨지는 것이라고 저는 추측하고 있습니다.

대안책으로 제시된 '공백으로 시작하기’는 그런 시스템을 어떻게 보면 비껴가는 방법이라고 볼 수 있습니다. 대부분의 문자열 처리기는 특정 길이만큼 묶어서 처리할 텐데 제 기억으론 거의 다 유니코드 세 글자로 하는 걸 많이 봤습니다. 그러니 첫 시작부터 한글 자모라면 (자-모-자)의 조합을 받아들이려고 하겠지만, 맨 처음에 공백 한두 개로 시작하면, 한글 자모가 공백문자랑 조합되는 경우는 없고, 맞아떨이지지 않으므로 (자-모-자)의 형태는 거의 (자-모), (자-)의 형태로 인식되어 처리되는 것이라고 추측하고 있습니다. (모-자)의 형태도 없고, 자음만 있는 형태의 한글은 없으니까요(처리기 구조상 짝이 맞는 조합을 최대한 찾아낼 겁니다).

뭐 추측을 남발하는 글이 됐지만, javascript에선 stringnormalize([form]) 메소드도 있으니 늘 그렇듯 방법을 찾아나가야죠.

좋아요 1

좋은 힌트를 남겨주셔서 실마리가 생겼네요-!

여러 내용을 자세히 들여다보고, 유의미한 결론이나 추측해주신 원인을 증명해내면 공유드릴게요! 감사합니다.