날개셋 한글 입력기 10.65

0. 들어가는 말

날개셋 한글 입력기가 거의 7개월 만에 새 버전이 나왔다.
생각 같아서는 10.5 다음으로 꼭 10.7을 만들고 싶었지만, 변화량이 0.2를 올리기에는 충분하지 못해서 0.15만 올렸다. 그렇다고 0.1밖에 안 되는 건 또 아니기 때문에.. =_=;;
x.65라는 버전은 옛날에 3.65 (2006), 그리고 5.65 (2010) 이후로 세 번째이고 무려 14년 만의 일이다.

현재로서는 더 분발해서 오는 4월 말쯤에 10.9를 내놓고, 올해 말 11~12월쯤에 11.0으로 가는 게 목표이다. Windows나 맥이나 다 10 버전을 졸업하는 분위기인데. 내 입력기도 그렇게 될 듯하다. 2020년 이후로 10.x를 졸업하는 데는 4년 반이나 걸리게 됐다.
2020년대 들어서 슬럼프에 빠졌는지 프로그램 개발 속도가 너무 느려진 듯.. 슬럼프를 벗어야겠다.

개인적으로 이제 좀 오랜 마음의 짐을 벗은...은 개뿔, 또 다음 버전 만들어야지. 프로그램 큰 틀을 바꾸는 변화는 아니지만 이미 제공되고 있는 기능들의 완성도를 올리고 UI를 강화할 만한 작업들이 많이 남아 있다.

이번 새 버전에서 달라진 사항들에 대해서는 가장 먼저 지난 여름에 올렸던 개발 근황글부터 참고하시기 바란다. 그거 이후로 또 달라진 것은 다음과 같다.

1. 한글을 소리 나는 대로 필터의 기능 강화

날개셋 한글 입력기에는 '국밥 국력'을 '국빱 궁녁'으로 바꿔 주는 텍스트 필터가 있다. 이건 무려 20년 전 3.0 버전에서 처음으로 추가된 물건이다. 그리고 4.4 (2007)에서 "짙이 → 지티 - 지디, 지시, 진니, 지치"로 요약되는 4종류의 힌트가 도입되고는 큰 변화 없이 현재까지 15년 가까이 이어지고 있다.

먼저, 사용자에게는 아무 티가 안 나는 변화이겠지만.. 내부적으로 코드를 처음부터 다시 짜고 알고리즘을 재설계했다.
한글 낱자들이 난무하는 알고리즘들이 일체의 명칭 없이 숫자들이 하드코딩돼 있고, 음운 변화를 나타내는 테이블들도 중구난방이어서 보는 내가 화딱지가 날 것 같았다.
20년 전 대학 시절엔 내가 코딩 스타일이 이 정도로 개판이었나.. 그래도 명색이 컴공 전공이고 왕년에 올림피아드 입상도 했던 사람인데. =_=;;

본인은 장기적으로는 내 홈페이지에서 소스를 공개하고 있는 옛날 골동품 프로그램과 혼자 깨작거렸던 코드들을 github에다가 공개할 생각을 하고 있다.
하지만 공개하려고 옛날 코드를 다시 살펴보니.. 이건 뭐 대외 공개 가능한 퀄리티가 아니었다. 지금으로서는 상상도 못 하게 ugly한 코딩 컨벤션들을 어찌해야 하나 좀 고민된다.

아무튼, 저 필터 동작을 지금 내 눈높이를 만족하는 코딩으로 다시 구현했고, 이를 토대로 다음과 같은 동작도 더 추가했다.

(1) 4번 힌트에 비표준 자음 역행 동화를 추가했다. '신발'을 '심발'로, '벗기다'를 '벅기다'라고 발음하는 음운 변화 말이다. 한국어의 표준 발음으로 인정되지는 않지만 현실에서 많이 발생하고 있으며, 한국어 외의 타 언어에서도 많이 발생한다.
4번 힌트는 구개음화 등 기존 1~3번 힌트가 담당하지 않는 여러 자잘한 음운 변화를 담당하고 있는데, 여기에다가 저 동작을 넣어도 논리적으로 충돌이 나지 않는다.

기존 힌트들은 뒷글자가 초성이 없을 때(ㅇ)의 변화와 관련이 있다. 그러나 이 자음 역행 동화는 뒷글자에 nontrivial한 초성이 있어서 그거 영향을 받아서 앞글자의 종성 발음이 바뀌는 현상이다. 그렇기 때문에 그 자리에다가 새로운 동작을 넣어도 된다.
사실, 이 동작은 1~2번 힌트에다가 추가해도 된다. 하지만 이건 비표준 발음인 걸 감안해서 약간 보조, 잉여에 가까운 4번에다가 넣었다. 어쨌든, 굳이 새로운 힌트 부호를 추가하지 않고 새로운 음운 변화를 빈 공간에다 넣었다는 게 핵심이다.

(2) 지금까지 힌트는 하나만 선택 가능하다. 그러나 새 버전에서는 사이소리를 나타내는 3번 힌트는 예외적으로 타 힌트와 같이 사용할 수 있게 했다.
일례로 '싫증'. 아무 힌트가 없으면 '싫지'와 동급인 '실층'이 되어 버린다. 1번을 적용해서 '싫'을 '실'로 완전히 굳혀야 '실증'이 되고.. 여기에다 3번 힌트를 추가로 넣어야 '실쯩'으로 바뀐다.
'안기다'도 마찬가지다. 3번 힌트를 넣어야 '안끼다'가 되는데, 이 힌트는 이번에 추가된 4번 힌트와 동시 적용도 가능해야 한다. 그래야 '앙끼다'를 만들 수 있다.

2. 저장할 파일의 확장자 지정과 관련된 모호성을 해소

Windows에서 제공하는 파일명 지정 대화상자에는 기본 확장자라는 개념이 있다. 그래서 사용자가 일일이 확장자를 붙이지 않고 "내 문서"라고만 입력했다면 "내 문서.txt"라고 인식되게 되어 있다.

그런데 문제는 기본 확장자가 사용자가 의도하지 않는 방식으로 적용될 수도 있다는 것이다. "듣보잡확장자.xxq" 이런 이름을 주면 "듣보잡확장자.xxq.txt" 이렇게 인식되어 버린다. 지금은 도스 시절과 달리, 파일 이름에 점이 2개 이상 마음대로 들어갈 수 있기 때문이다.

그리고 기본 확장자를 무시하고 확장자가 아예 없는 파일을 만들고 싶을 때는 그냥 "확장자없음."이라고 파일 이름 뒤에 점만 찍는 게 도스 시절 이래로 여러 프로그램에서 관행이었다.
그런데 Windows에서는 이렇게 하면 "확장자없음..txt"라고 알아듣는다. -_-;; 그렇다고 기본 확장자 자체를 없애거나 옵션으로 처리하는 건 아닌 것 같고..

이 문제를 이번에 드디어 손 봤다. 해결한 방식은 간단하다.
접수된 파일명에 . 이 2개 이상 존재하는 경우, 마지막 확장자가 추가된 것이 진짜 맞는지를 묻게 했다. 이게 제일 깔끔한 해결책인 것 같다.

사용자 삽입 이미지

이제 날개셋 편집기에서는 운영체제에서 인식하지 못하는 임의의 듣보잡 확장자 파일도 번거로운 오동작 없이 바로 만들 수 있다. 운영체제 파일 대화상자의 동작이 고쳐질 수는 없으니, 그걸 사용하는 응용 프로그램에다가 보정 로직을 넣는 것밖에 선택의 여지가 없어 보인다.

3. 그 외

(1) 일상적으로 자주 겪을 일은 없겠지만.. 파일 저장이 100% 완전히 성공한 뒤에야 다음 작업이 진행되도록 했다.
창을 닫기 전에 저장 확인 질문이 떠서 '예'를 눌렀다면, 그 저장이 완전히 성공한 다음에 그 문서창이 닫히고 프로그램이 종료된다.
저장을 처음 하거나 '다른 이름으로 저장'을 눌렀다면, 그 저장이 완전히 성공한 다음에 그 파일 이름이 정식으로 반영된다.

지금까지는 중간에 오류가 발생해서 저장이 제대로 되지 않았더라도 일단 그 이름으로 파일이 생성되기만 했다면.. 무조건 성공으로 간주되었다. 저장 중에 딴 오류가 발생했더라도 다음 단계로 넘어갔기 때문에 사용자의 정보를 날려먹을 가능성이 있었다.

(2) 파일 전체 저장이 아니라 일부만 따로 저장하는 '블록 내용 저장'을 했는데 원래 편집 중인 파일의 날짜· 크기 스냅샷이 업데이트되던 버그를 수정했다. 이 때문에 지금까지는 원래 파일이 외부에 의해 건드려졌다고 오판 오동작이 발생했었다.

※ 과거 떡밥: 골동품 9x 계열에서의 안정성

요즘 세상에 가상 머신 만들어서 Windows 9x를 띄워 보는 레트로 레거시 덕후가 나만 있는 게 아니구나. ㄷㄷㄷㄷㄷ
지난달 말쯤엔 나무위키에 등재된 내 입력기의 소개에.. "Windows 95에서 IE 4~5 + Active desktop을 켠 환경에서 날개셋을 기본 IME로 지정해 놓으면 부팅 과정에서 운영체제가 뻗어 버린다" 이런 문구가 추가되었다. 무려 Word 97을 띄운 화면과 함께.

글쎄, IE 4와 Active desktop을 기본 내장 중인 Windows 98에서는 Active desktop을 켠 채로 내 입력기를 기본 IME로 지정하더라도 부팅에 아무 지장이 없다. 본인이 보유 중인 가상 머신에서 테스트를 해 보니 그렇다.
그러니 나무위키에 등재된 저 이슈는 일단 재연이 안 되고 지원도 어려울 듯하다. ^^

사실, Windows 95와 98은 똑같이 불안정한 9x 계열 커널이고, 한때는 95 + IE4 = 98일 뿐이라는 비아냥까지 많이 나돌았다. 하지만 기술적으로 보면 98은 바뀌고 향상되고 안정화된 게 생각보다 많았으며, 특히 IME 쪽은 더욱 그러했다.
일례로, 95의 경우 16비트 프로그램에서 날개셋은 사실상 못 쓴다고 보면 된다. 그나마 98/ME는 제어판 여는 것만 불안정하고 입력 기능은 사용 가능하다.

Windows installer 2.0 runtime을 받을 수 있는 곳 링크도 올려 놓을까 싶다.. =_=;; ㅋㅋㅋㅋ
암튼, 개발자와 사용자 간에 메일보다 더 개방된 방법으로 피드백을 주고받는 통로가 있긴 해야 할 것 같다.

※ 미래 떡밥: Windows 11 UI 적용

Windows 진영에서는 10여 년 전, Windows 8 시절부터 IME들의 아이콘 디자인 표준이 바뀌었다. 검은 테두리의 흰 사각형 배경에 단색으로 일종의 글자나 기호 모양으로 자기 IME를 표현하라는 게 골자이다. 그래서 마소의 한글 IME는 '한' 모양이고 일본어 IME는 원 안의 J 모양이다. 내 입력기 역시 10여 년 전의 6.8 버전부터 그 디자인을 적용했다.

이게 Windows 10까지도 그대로 이어져 왔는데.. 11에서는 조금 난감한 변화가 생겼다.
win+space를 눌러 보시라. 예전에는 스펙대로 흰 사각형 배경의 아이콘들이 쭉 떴는데 11부터는 흰 배경과 검은 테두리가 사라졌다. 어찌 된 일일까?

사용자 삽입 이미지

이건 기존 아이콘을 가공하거나(배경 제거-_-) 변조해서 만들어 낸 이미지가 아니다.
Windows 10과 11의 한국어/일본어 IME 프로그램을 바이너리 차원에서 비교도 해 보고 스펙을 검색도 해 봤지만.. 어떡해야 이렇게 11 스타일로 배경을 제거한 아이콘을 만들 수 있는지에 대한 정보는 도무지 나오지 않았다.

내가 지금까지 알아낸 바로는 이건 IME 프로그램에서 조치를 취한 게 아니다. 그리고 저렇게 배경 없는 아이콘은 png나 ico가 아니라 폰트-_- 기반이다.
Windows 11에서는 간결한 fluent한 디자인을 표방하면서 각종 아이콘 내지 픽토그램들의 상당수가 폰트로 바뀌었다. 가령, 전원 버튼이라든가 앱/웹사이트의 종합 메뉴를 호출하는 햄버거 버튼, 배터리 용량 아이콘 따위 말이다. 오죽했으면 Segoe Fluent Icons라는 폰트도 생겨 있다.

그런데 정말 골때리는 건.. 저기서 '한', J 따위를 그리는 일명 '아이콘 폰트'는.. 해당 IME 프로그램에서 유래된 게 아니라는 것이다. IME가 아니라 운영체제 셸(QuickActions) 앱에 들어있다. 거기 내장된 폰트 하나에다 마소 한중일 IME들의 아이콘 글립이 모두 들어있다.

사용자 삽입 이미지

운영체제에서 무슨 근거로 마소 IME는 그런 폰트로 아이콘을 갈음하고, 타 3rd-party IME에 대해서는 원래대로 프로그램 리소스에 들어있는 아이콘을 출력하는지...?? 도저히 모르겠다. 최소한 IME가 사용하는 운영체제의 표준 API로 폰트 아이콘을 지정한 것 같지는 않다. 레지스트리? 설마 하드코딩으로 박았나? 3rd-party IME에서 저렇게 하는 방법은 내가 아는 한 전혀 공개돼 있지 않다.

아이콘뿐만 아니라 설정 페이지도 말이다. 데스크톱 UI 기반으로 원래부터 제공되던 기존 환경설정 기능 말고, '설정' 앱에서 UWP 기반으로 돌아가는 요 페이지...

사용자 삽입 이미지

이것도 내가 지금까지 열나게 검색하고 디버깅한 바로는.. 이걸 담당하는 부분이 IME 프로그램에 있지 않다~!! SettingsHandlers-nt라는 모듈에 있다.
IME의 UI와 관련된 코드 및 리소스가 IME 프로그램에 있지 않고 운영체제에 하드코딩으로 박혀 있다는 말인지..
현재로서는 마소 IME는 또 문서화되지 않은 API나 프로토콜을 사용해서 자기들만 외형이 새끈하게 바뀌고 있다고밖에 여겨지지 않는다. 이게 개인적인 고민거리이다.

※ 타자연습 계획

끝으로.. 타자연습도 지금은 아니지만.. 정말 오랜만에 일단 올해 중 업데이트 계획이 있다. 이제는 드디어 타자연습도 버전을 4.0으로 올릴 생각이다. =_=;;

  • 로그인 하지 않아도 기본적으로 편집기에서 지정된 글꼴을 바로 따라가기 (내장 글꼴은 너무 빈약하니.. -_-)
  • 최근에 사용했던 연습글과 타자 위치 등을 기억하기
  • 세벌식 최종 자판에만 존재하는 참고표나 가운뎃점을 편의상 딴 걸로 바꾸는 옵션..
  • 게임은 꼭 단계가 바뀌지 않아도 같은 단계의 후반부로 갈수록 글자 떨어지는 속도를 다음 레벨에 근접하게 서서히 올리기

요런 것들 전부나 일부를 생각 중이다. 다 반영된다면.. 4.0 충분히 되겠다. 지금이 3.93이니까.
이 참에 연습글로 추가해 넣을 만한 최신 인터넷 밈이나 개드립이 있는지 모르겠다. 오징어 게임 대사라든가.. ㄲㄲㄲㄲ 이것도 모집한다.
이런 거 연습글이 반응이 아주 좋은가 보다.. ^^ 한쪽에는 성경이나 우리나라 근현대사 얘기가 있는데 한쪽에서는 "어둠에다크에서.." 연습글이 있다니 분위기가 완전 깬다.

Posted by 사무엘

2024/01/13 08:35 2024/01/13 08:35
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/2252

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

Comments List

  1. lens 2024/01/13 10:30 # M/D Reply Permalink

    > github에다가 공개할 생각

    환영합니다 감사합니다!

    1. 사무엘 2024/01/13 16:27 # M/D Permalink

      요즘 세상에 소스가 공개된 프로그램 자료를 좀 보려 하는데 github 화면이 아니라 zip 통째로 다운로드 링크만 달랑 보이면.. 좀 많이 없어 보이지요~~ 그리고 업계에서는 자기 github 저장소가 이력서처럼 쓰이고 있기도 하니.. ^^

Leave a comment
« Previous : 1 : ... 102 : 103 : 104 : 105 : 106 : 107 : 108 : 109 : 110 : ... 2204 : Next »

블로그 이미지

그런즉 이제 애호박, 단호박, 늙은호박 이 셋은 항상 있으나, 그 중에 제일은 늙은호박이니라.

- 사무엘

Archives

Authors

  1. 사무엘

Calendar

«   2024/12   »
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 31        

Site Stats

Total hits:
3047866
Today:
1028
Yesterday:
2058