다음 버전 개발 근황

2020년은 2~40년 전쯤에 만들어졌던 각종 소설과 SF물에서나 다루던 까마득한 미래 시점이다. 그게 현실로 찾아왔다니 감회가 새롭다.
하지만 현실의 2020년은 코로나19라는 웬 신종 바이러스 때문에 교회 예배가 중단되고 학교 개학과 심지어 올림픽까지 연기되는 초유의 사태와 함께 시작되었다. 세상의 그 어떤 소설과 SF물도 이런 걸 예측하지는 못했을 것이다.

2020년은 날개셋 한글 입력기도 개발 20주년에 진입한 시점이다. 그리고 무려 10.0 버전이 현재 개발 중이며, 이게 9.x 시절부터 지금까지 수 년째 미뤄지고 또 미뤄졌던 파이널이다.
원래 9.5를 파이널로 삼으려고 했다. 9.5 이후로도 1년 반 동안 9.6, 9.7, 9.8x 등 새 버전이 도대체 몇 개가 더 나왔던가?? =_=;; 그러던 게 이제야 드디어 제동이 완전히 걸렸다.

이 글에서는 개발 중인 10.0에서 이미 작업이 완료된 것, 더해지고 고쳐지는 것들이 어떤 것이 있는지 잠시 소식을 전하도록 하겠다.

1. '기본 글자판 설정' 빠른설정에 no-shift 두벌식 세팅

10.0 버전에서 본인이 가장 먼저 알리고 싶은 소식은.. 날개셋 한글 입력기의 제어판에서 사용자가 가장 자주 접하게 될 UI인 '기본 글자판 설정' 빠른설정에 no-shift 두벌식을 간편하게 세팅하는 기능이 추가됐다는 것이다. 바로 여기에 말이다.

사용자 삽입 이미지

지금까지 사용자들로부터 받은 피드백을 종합해 보면.. 두벌식에서 shift 없이 쌍자음을 언제나 연타로 입력하는 것에 대한 수요가 제법 많다는 걸 알 수 있었다. 하지만 별 생각 없이 낱자 결합 규칙만 추가해 놓으면 '이끼, 바삐, 앗싸, 홀씨' 같은 단어에서 뒷글자에 등장하는 쌍자음을 연타로 입력할 수 없다. 음절 경계 모호성에 걸려서 '익기, 밥비, 았사, 홄시' 따위와 구분이 안 되기 때문이다.

이런 모호성을 해소하려면 그런 쌍자음은 어쩔 수 없이 shift를 동원해서 입력하거나.. 아니면 capslock 같은 글쇠를 눌러서 앞 글자의 조합을 수동으로 끊는 수밖에 없다. 옛한글 글쇠배열이야 모호성이 훨씬 더 많이 발생하기 때문에 대놓고 조합 중단 글쇠가 배당돼 있기도 하다.

하지만 그런 고전적인 방법 말고 타자 시간 간격을(타이머) 이용해서 음절 경계 구분을 할 수도 있다.
이건 구버전에서도 진작부터 지원돼 왔으니 기술적으로 새로운 기능은 전혀 아니다. 하지만 사용자가 일일이 설정을 하는 게 마냥 간단하고 쉽지 않다. 수요가 많은 상징적인 설정을 곧장 세팅해 주는 기능을 빠른설정에다가 도입한 것은 그 자체만으로도 버전업의 명분이 될 수 있다.

더구나 타이머를 적용하는 방식도 두 가지 중 하나를 선택할 수 있다.

  • 통상적인 방법(가-까 타이머): 뒷글자가 쌍자음이면 앞글자를 다 입력한 뒤 한 박자 쉰다(이-끼 → 이끼). 쉬지 않으면 예전처럼 ‘익기’가 된다.
  • 다른 방법(각-가 타이머): 위와 반대로, 쌍자음을 지연 없이 빠르게 치고, 자음이 앞뒤 글자에 분산돼 있을 때 한 박자 쉰다(익-기 → 익기). Google 단모음이 이런 방식을 사용한다.

각 방식이 어떻게 구현됐는지를 살펴보면.. 전자는 중성까지만 입력됐을 때도 타이머가 발동돼야 하며 오토마타도 상태가 두 개 더 필요하다.
후자는 오토마타 상태가 하나만 있으면 되지만 특수 도깨비불 규칙과 다단계 입력 분리(65531) 낱자 결합이 추가로 필요하다. ‘밝’까지 쳤다가 도로 ‘발ㄲ’을 만드는 것은 명백하게 더 과격한 동작이기 때문이다.

그래도 사용자의 타자 행동 관점에서 두 방식에 절대적인 우열은 없으니 그냥 자기에게 편한 방식을 골라서 쓰면 된다.
기본으로 설정되는 시간 threshold는 0.5초(500밀리초)이다. 타이머 설정에서 이 값을 더 늘리거나 줄일 수 있다.

2. “조합 안에 조합 생성” 입력 도구

얘는 여러 글자로 이뤄진 단어 같은 덩어리를 다른 형태의 문자로 변환하는 핵심 인터페이스이다. 한글 단어나 훈으로 한자 입력하기, 그리고 T9 방식으로 영단어 입력하기 기능이 제공되고 있는데..

  • 변환에 쓰이지 않는 문자는 애초에 조합창에 들어가지 않고 바로 본문으로 삽입되게 인터페이스를 개선했다.
  • Ctrl 내지 Shift 클릭을 좀 다르게 인식하게 했다. T9 영단어 입력의 경우 마침표 and/or 공백을 뒤에 같이 삽입하게 했고, 한글-한자 변환의 경우 지금 외부 모듈이 지원하는 것처럼 "한자(漢字)" 내지 "漢字(한자)" 형태의 삽입이 되게 했다.
  • 여러 독음 후보들이 존재하는데 이들이 길이가 길고 앞부분이 상당수 일치한다면 명령 프롬프트나 개발툴 에디터에서 하는 것처럼 앞부분의 ‘자동 완성’이 되게 했다. 타이핑 수고를 상당 부분 덜 수 있을 것이다. 자동 완성 단축키는 tab 또는 Ctrl+space 중에서 선택 가능하다.

3. 편집기: 자잘한 개선

날개셋 편집기에서 파일을 읽고 쓰는 아주 기본적인 동작과 관련하여 다음과 같은 강화· 개선 작업이 이뤄졌다.

(1) 파일을 제대로 불러오지 못한 상태에서 저장을 시도하거나, 아까 전에 제대로 저장하지 못한 상태에서 창을 닫으려 하면 확인 질문을 하게 했다.
여기서 ‘제대로’ 열기나 저장을 못 한 상황이란.. 인코딩이 잘못 지정되어서 깨진 문자가 발생했고, 현재 메모리에 존재하는 문서와 파일 형태로 존재하는 문서 내용이 서로 일치하지 않는 것을 말한다. 그 상태로 저장을 하면 문서를 변경하지 않았더라도 원래 있던 정보는 소실될 것이고, 창을 닫으면 마찬가지로 깨진 문자가 원래 무엇이었는지 알 수 없게 될 것이다.

(2) 저장 옵션을 통해서 파일의 인코딩을 변경했다면 문서 내용을 대놓고 변경하지 않았더라도 창을 닫을 때 파일을 다시 저장할지 묻게 했다.

(3) 아울러, 문서창의 시스템 메뉴에 ‘파일 이름 변경’이라는 기능을 추가했다. 이걸 실행하면 ‘다른 이름으로 저장’과 비슷한 대화상자가 나타나며, 여기서 파일 이름을 새로 지정하면 문서창을 열어 놓은 상태에서 프로그램 상의 이름과 디스크 상의 이름을 그걸로 간단히 바꿀 수 있다. 탐색기에서 따로 이름을 바꾼 뒤에 다시 불러온다거나 하는 번거로운 수고를 하지 않아도 된다.

4. 외부 모듈: Chrome 브라우저에서 추가적인 보정

크롬 브라우저는 과거에 자신이 데스크톱 앱인데도 돌아가는 IME에다가는 자신이 메트로 앱이라고 잘못 알려주는 문제가 있었다. 그 버그는 얼마 안 가서 수정됐지만, 그 다음으로 또 약간 알쏭달쏭 아리까리하게 동작하는 게 있다(2020년 3월의 80 버전 기준).

마소 Edge와 Firefox는 TSF를 온전히 지원하는 브라우저이다. 그러나 IE와 Chrome은 그렇지 않다.
TSF를 지원하지 않는 프로그램에서는 앞뒤 글자를 요청한다거나 caret 이동 같은 지시를 내리면 어차피 실패한다. 내 프로그램은 실패에 대한 대비는 물론 돼 있다. 그리고 처음부터 앱을 가려가며 동작하는 게 아니라, 이런 실제 기능의 성공 여부를 토대로 동작한다.

그런데 크롬의 경우, 앱의 종류를 식별해 보면 "TSF 미지원"이라고 나오지만, 앞뒤 글자 요청이나 caret 이동 등의 지시를 내리면 마치 TSF 지원 프로그램처럼 수행되고 성공했다는 리턴값이 돌아온다. 하지만 그게 제대로 올바르게 correctly 수행되어 있지는 않다.

크롬에서 '대한민국' 같은 단어를 입력하고 단어 단위 한자 변환을 시도해 보면 마소 한글 IME는 안 되지만 날개셋은 된다. 하지만 변환을 해 봤자 '大韓民國'이 아니라 '대한민국大韓民國' 이런 식으로.. 정확하게 동작하지 않는다.
더구나 낱자 단위로 달라붙기 옵션을 사용하면서 bksp를 눌러 보면 caret이 앞 글자로 제대로 가지 않고 계속 자기 자리에서 머무른다.

여러 정황상 인접 글자의 fetch는 되지만 텍스트 selection을 변경하는 건 안 되는 것 같다.
결정적으로 크롬이 대외적으로 자신을 "TSF 미지원"이라고 보고를 하므로 날개셋 역시 크롬에 대해서 "오동작을 하느니 아예 동작을 안 하도록" 조치를 취하는 게 바람직해 보인다.

요 보정을.. "데스크톱 앱으로 인식"이라는 보정 옵션에다가 추가했다. 이 옵션이 켜져 있고 앱이 자신을 "TSF 미지원"이라고 표시한 경우, 내 프로그램은 텍스트 고급 조작 지시를 시도조차 하지 않고 방어적으로 동작하게 된다. "TSF 지원"이라는 명시적인 정보가 있을 때만 고급 조작을 하게 된다.

5. 도깨비 한글 글꼴

옛날 도스 시절의 한글 바이오스 유틸인 '한글 도깨비'의 최종 버전  5.1에서 제공되었던 고유한 둥글동글한 글꼴, 일명 '둥근도깨비'체가 날개셋 한글 입력기의 다음 버전에서 제공될 예정이다.
"둥근모, 한솔바탕, 도깨비고딕, 한메굵은본문"을 한데 섞은 듯한 인상이지만 어느 것에 딱 떨어지지 않는 변별성과 독창성이 있고, 모양이 상당히 예쁘기도 한 편이다.

사용자 삽입 이미지

내부 구조를 살펴보니 얘는 놀랍게도 일종의 완조형이었다.
'가'부터 '히'까지 받침이 없는 글자는 완성형으로 각각의 글자들이 일일이 그려져 있고, 받침이 붙었을 때의 '가'~'히'도 마찬가지이다. 그 뒤 받침은 ㅗㅛㅜㅠㅡ용 아니면 나머지.. 이렇게 두 벌만 있다. 이런 형태의 글꼴은 난생 처음 봤다.

이 글자들로부터 초성과 중성을 일일이 decompose한 뒤, 뭔가 반복· 규칙과 패턴을 찾아내어 3차원 조합 테이블을 복원하고 날개셋 편집기에서 읽을 수 있는 11172자 조합형 한글 글꼴로 얼추 재구성했다. 어렵지만 흥미진진한 작업이었다.

ㅏㅑㅓㅕ 같은 모음은 거의 판에 박은 듯이 똑같지만, ㅘㅙ 같은 복합 중성 및 이와 결합한 초성들은 자형이 의외로 제각각 임의로 그려져 있었다. 그래서 규칙을 찾기 어려웠다.
요런 모양의 글꼴을 이런 복잡한 완조형 말고 8*4*4벌로 간소화(?)된 형태로도 옛날에 봤던 것 같기도 한데 정확하게 기억은 안 난다.

도깨비 말고도 1990년대까지 도스 시절에 텍스트 모드에서 쓰였던 유명한 한글 바이오스 유틸로는 태백한글, 한메한글이 있다. 태백과 한메는 제품 이름 겸 개발사의 이름이기도 하지만, 도깨비의 경우 개발사가 '한도 컴퓨터'여서 제품명과 일치하지 않는다.

한글 도깨비의 개발자인 최 철룡 씨는 정말 대단한 분이었다. 1980년대에 IBM 호환 PC의 내부 구조를 모두 마스터하여 한글 바이오스를 만들었을 뿐만 아니라.. 사실은 안 철수와 거의 비슷하게 브레인 바이러스 백신까지 자작했었다. 처음에는 마이크로소프트웨어 잡지의 기자로 재직하다가 나중에는 성이 안 차서 자기 회사를 차리게 된다.
날개셋 한글 입력기는 아래아한글과 마소 도스/Windows뿐만 아니라 태백, 한메, 도깨비에서 제공하던 글꼴들도 한 종류 이상씩은 courtesy 차원에서 제공하고 있다.

6. 그 밖에

  • 프로그램 UI를 여러 군데 찔끔찔끔 수정했다. 기억에 남는 것으로는.. 이모지 문자표에다가도 우클릭 메뉴에 '복사'를 추가하고 전용 도움말을 넣었다.
  • 지난 8.8부터 9.0대 기간 동안 심혈을 기울여서 구현했던 '복합 낱자 입력 로직 생성기' 빠른설정이 언제부턴가 제대로 동작하지 않고 적용 후에 프로그램이 뻗던 문제를 뒤늦게 발견하여 고쳤다. 직전인 9.9보다 전부터 존재했던 문제로 보인다. 처음에 구현이 잘못된 건 아니고, 나중에 소스 코드를 리팩터링을 잘못 했기 때문이다.
  • 24픽셀(화면 확대 배율 150% 이상) 환경에서 날개셋 제어판을 꺼내서 ‘낱자 처리’ 탭에서 ‘낱자 코드 번호 병기’ 옵션을 켰는데.. 자그마한 낱자 번호가 초-중-종성별로 세로 위치가 차이가 나지 않고 언제나 같은 위치에 찍히던 문제를 뒤늦게 발견해서 고쳤다.
  • 이 외에도 그 밖에 24픽셀 비트맵 글꼴을 표시하는 목록에서 줄 간격을 1픽셀에서 2픽셀로 늘렸으며, U+200?대에 있는 특수한 공백과 줄표에 대한 글립도 16픽셀일 때와 마찬가지로 추가했다. 또한 외부 모듈에 24픽셀용 아이콘을 추가했다. 고해상도 24픽셀 환경에 대한 지원을 여러 방면에서 강화한 셈이다.
  • 외부 모듈의 ‘프로그램 호환성’ 탭에 현재 화면에 보이지 않는 몇몇 Metro 앱이 불필요하게 목록에 표시되어 있던 것을 감췄다. 그리고 ‘모두 원래대로’ 버튼의 원래 의도는 프로그램의 기본 보정 방식으로 되돌리는 것인데 그러지 않고 설정을 몽땅 삭제만 해 버리던 것을 고쳤다.
  • 정말 사소한 것이지만.. 立의 한자 훈이 '설 립'(stand 서다)이 아니라 '설사 립'(??!!!)으로 잘못 등록돼 있던 것을 고쳤다. 2020년 현재 마소 한글 IME의 한자 데이터에도 동일한 오류가 있으며, 그게 날개셋에도 그대로 전해진 것 같다.

이상이다. 이 정도면 9.9에서 0.1이 더해진 10.0에 딱 어울리는 수준의 변화로 손색이 없다고 여겨진다.

대략 9.x 초기 시절에.. Windows 10의 특정 버전 내지 특정 게임에서 한글 입력이 안 될 때 내 프로그램을 쓰면 된다는 소문이 퍼졌으며, 날개셋 한글 입력기의 다운로드 트래픽이 폭증하여 내 홈페이지가 며칠 연속으로 셧다운 됐던 적이 있었다.
그래서 한동안 다운로드 링크를 내 홈페이지 서버가 아닌 Google Drive 링크로 제공했는데.. 요즘은 그런 시절도 지났는지 구글 드라이브를 안 써도 트래픽 초과가 뜨지는 않는다.

요즘은 프로그램 관련 문의를 메일로만 받고 있지만 그래도 여러 사용자에게서 문의와 버그 의심 신고 연락이 종종 오곤 한다. 정말 꿈에도 상상할 수 없던 곳에서 내 프로그램을 잘 쓰고 있다는 연락을 받은 적도 있었다. 덕분에 이번 버전도 자잘한 개선 중에는 메일을 통해 접수된 사용자 피드백이 반영된 게 무척 많았다.

내 프로그램을 사용하면서 개인 메일까지 보내서 질문이나 건의를 남겨 주는 분들이 계시니 고마운 일이 아닐 수 없다. 어서 새 버전이 완성되어서 새 기능들이 두벌식과 세벌식 사용자에게 모두 큰 도움이 되었으면 좋겠다.

Posted by 사무엘

2020/04/04 08:35 2020/04/04 08:35
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1736

Trackback URL : http://moogi.new21.org/tc/trackback/1736

Leave a comment
« Previous : 1 : ... 18 : 19 : 20 : 21 : 22 : 23 : 24 : 25 : 26 : ... 1629 : Next »

블로그 이미지

철도를 명절 때에나 떠오르는 4대 교통수단 중 하나로만 아는 것은, 예수님을 사대성인· 성인군자 중 하나로만 아는 것과 같다.

- 사무엘

Archives

Authors

  1. 사무엘

Calendar

«   2020/06   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        

Site Stats

Total hits:
1384903
Today:
65
Yesterday:
544