<날개셋> 한글 입력기가 기본 제공하는 텍스트 필터도 벌써 10 종류를 넘어섰군요.

매뉴얼에 나와 있는 대로, 텍스트 필터란, 일정한 텍스트 A가 있을 때 이것을 적당한 규칙대로 변형해서 B라는 텍스트를 만들어 주는 기능의 총칭입니다.
기본 제공되는 필터들은 기능의 성격에 따라 다음과 같은 다섯 그룹으로 분류됩니다.

※ 한글 입력과 관련된 것: 동작 방식이, 현재 사용 중인 한글 입력기 설정에 따라 달라집니다. 사실 텍스트 필터라는 개념 자체가 처음에 한글 입력기 기능의 자동화를 위해 도입된 것이기도 합니다.

  - 문자열을 글자판 입력으로: '한글'을 mfskgw(세벌식) 또는 gksrmf(두벌식)으로 바꿔 줍니다. 한글을 입력하는 데 필요한 영타를 재현하는 기능을 이렇게 필터라는 자동화 기능에다가 접목시켰습니다. 한글을 암호화(?)를 비롯해 다양한 형태로 가공하는 데 이 필터를 활용할 수 있습니다.
한글 로마자 입력 방식을 쓰고 있다면 이 기능은 한글을 얼추 로마자 표기법 형태로 바꿔 줄 수도 있습니다. 두벌식의 경우, 모호성이 발생하여 연속 입력이 안 되는 지점을 찾아내는 기능도 갖추고 있습니다.

  - 글자판 입력을 문자열로: 위 기능의 역변환입니다.
  - 한글 낱자 재결합: 한글을 현 입력기의 오토마타 설정대로 재결합하는 기능으로, 현재 오토마타 설정에 따라 한글을 모아쓰기와 풀어쓰기(또는 반풀어쓰기) 등 다양한 형태로 변환할 수 있습니다. 또한 한글에서 초성, 중성 같은 특정 성분만 남길 수도 있지요. 한글 입력 오토마타 알고리즘을 키보드를 일일이 두들길 때뿐만 아니라 자동화, 일괄 처리 용도로도 활용할 수 있습니다.

※ 한글 형태 변환과 관련된 것: 컴퓨터에서 한글은 여러 가지 형태로 표현될 수 있습니다. 호환용 낱자도 있고, 글자마디도 있고, 소위 첫가끝 영역도 있습니다. 이것은 어떤 점에서는 번거롭지만 어떤 점에서는 마치 memory hierarchy처럼 각 계층별로 장단점이 있으며 어쩔 수 없이 필요한 귀결이기도 합니다. 한글의 표현 형태를 변환하는 것도 텍스트 필터가 해야 하는 중요한 임무 중 하나입니다.

  - 한글 낱자 종류 바꾸기: <날개셋> 한글 입력기가 사용하는 첫가끝 낱자와(초-종성 구분도 되는), 일반적으로 운영체제에서 통용되는 호환용 낱자 사이를 변환합니다.
  - 한글 형태 정규화: 한글을 표현 가능한 가장 상위 계층으로 최적화하거나, 무조건 다 첫가끝 낱자로 풀어 써 줍니다. U+AC00 하나로 표현 가능한 '가'도 U+1100, U+1161로 풀어 주는 식이죠. 풀어 쓴 형태는 모든 한글에서 ㅏ를 ㅓ로 바꾸는 식으로 낱자 단위의 정밀한 일괄 처리를 할 때 필요할 것입니다.

※ 한국어 관련: 한글뿐만 아니라 한국어의 특성까지 가미하여 간단한 자동화 처리가 가능한 기능을 필터로 엮었습니다.

  - 한글을 소리나는 대로: "국밥"을 "국빱"으로, "국력"을 "궁녁"으로 바꿔 주는 매우 흥미로운 기능입니다. 한글 표기에는 반영되어 있지 않은 음운 현상을 표현하기 위해 별도의 hint 부호도 4종류 도입했습니다.
  - 숫자를 한글로: 300을 "삼백"으로, 45를 "사십오"로 바꿔 줍니다.
  - 한자를 한글로: 한자를 한글 독음으로 일괄 치환합니다. 아래아한글에도 있는 기능이죠.
  - 정렬: 한글의 모든 표현 계층을 감안하여 sorting 기능을 제공합니다. 아래아한글처럼 초-중-종 순이 아닌 역순 비교도 가능하며, 중복 항목을 제거하는 기능도 있어서 유용할 것입니다.

※ 문자 단순 기계 치환 관련: 여기부터는 이제 한글, 한국어하고는 그다지 관련이 없는 단순 편의 기능입니다.

  - 대소문자 바꾸기, 전각/반각 바꾸기: 에디터가 제공하는 제일 고전적인 필터 기능이고 self-explanatory하므로 더 이상의 자세한 설명은 생략.
  - 빈 줄 제거: 공란밖에 없는 빈 줄을 제거하고 줄 끝의 공란도 제거해 줍니다. 개인적으로 무척 빈번하게 유용하게 쓰는 필터.
  - 일괄 치환: 주어진 텍스트 블록 내에서 여러 "바꾸기" 작업을 일괄 수행합니다. 에디터의 기존 "찾기-바꾸기" 기능으로는 수행하기 힘든 A <-> B 맞바꾸기도 한번에 할 수 있으며, 특히 줄바꿈 문자도 찾거나 바꾸는 문자열의 일부로 지정할 수 있기 때문에 줄 앞뒤로 문자를 추가하거나 줄 삭제, 탭을 줄바꿈으로 바꾸는 기능도 수행할 수 있게 됩니다.

※ 시스템 인코딩 관련: 운영체제가 제공하는 다국어 쪽 API를 사용해서 문자 종류나 인코딩 관련 변환을 수행합니다.

  - 인코딩 변환: 인코딩이 잘못 지정되어 깨진 문자를 변환합니다. 컴컴컴컴 -> ────────, ´eCN¹I±¹ -> 대한민국 등.
  - 시스템 언어별 변환: 히라가나 <-> 카타카나 변환, 번체 <-> 간체 한자 변환 등을 수행할 수 있습니다. 대소문자 변환도 A~Z뿐만 아니라 유럽어 추가 알파벳에 대해서도 수행 가능하며, 알파벳의 쓰임이 다른 터키어 같은 언어에 맞는 변환을 할 수도 있습니다.
  - 코드 번호로 변환: 글자를 가 -> ACO0 같은 유니코드 번호 또는 B0A1 같은 특정 인코딩의 코드 번호로 풀어 주거나 역변환을 합니다. C언어 내지 HTML과 호환되는 접두사를 붙일 수 있으며, 이 기능을 이용하여 %AC%BD 같은 URL의 의미를 해독할 수도 있게 됩니다.

Posted by 사무엘

2010/01/11 09:51 2010/01/11 09:51
Response
A trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/72

날개셋 모듈 설명

※ ngs3.dll (since 1.0, 2000)

<날개셋> 한글 입력기 커널이다. 문자열 처리, 옛한글 코드 변환, 한글 입력 오토마타 같은 본연의 임무부터 시작해서 자체 한글 비트맵 폰트 출력, 에디트 컨트롤, 심지어 제어판 UI도 들어있고 3.0부터 추가된 수식 해석과 XML 해석까지 다 담당하고 있다. <날개셋> 전체 소스 코드의 절반이 약간 넘는 분량을 이 모듈이 차지한다. 이제 UI 엔진까지 얹으면 커널의 덩치는 더욱 커질 것으로 보인다.

※ ngsedit.exe (편집기. since 1.0, 2000)

<날개셋> 한글 입력기는 처음엔 이런 자체 한글 MDI 에디터로 출발했다. <날개셋>이라는 커널의 기능을 가장 이상적으로 활용할 수 있는 전용 환경이자 가장 기초적인 프런트 엔드가 이 프로그램인 셈이다.

※ ngsx.nip (기본 플러그 인. since 2.x, 2002)

플러그 인이라는 개념은 본인이 거의 2.0을 개발하던 시절부터 생각하고 있었다. ngs3이라는 호스트가 기능을 확장할 수 있는 여러 프로토타입을 제시하면 플러그 인은 그 프로토타입대로 다양한 기능을 구현하여 호스트가 이를 끌어다 쓰는 것이다. 처음엔 텍스트 필터 정도만 액세서리 정도로 플러그 인이 담당하다가 이제는 빠른설정 도우미, 동시입력 스키마 등 다양한 분야에서 이 기본 플러그 인이 기능을 제공하고 있다.

※ ngsime.ime (외부 모듈. since 3.0x, 2004)

그저 편집기에만 머물러 있던 <날개셋> 한글 입력기는 3.0 버전대에서 외부 모듈이 개발되면서부터 진짜 활로를 텄다고 해도 과언이 아니다. 완전 생소한 분야이다 보니 초창기에는 온갖 불안정 문제, 버그에 시달렸으나 경험과 노하우가 쌓이면서 그런 문제들은 차츰 해결돼 갔다. 이 모듈은 단일 바이너리로 윈도우 95의 IME부터 비스타의 TSF 프로토콜까지 가장 세밀하고 탄탄하게 잘 지원하고 있다.

※ uniapi9x.dll (since 3.41, 2005)

윈도우 9x에서 윈도우 유니코드 API 호출을 받아 주는 자그마한 호환성 레이어로, 21세기 초에 MS에서 개발한 unicows (MSLU) 라이브러리와 동일한 역할을 하는 모듈이다. <날개셋> 3.0 개발 당시에 그 MS 솔루션의 사용을 검토했다가 뭔가 문제에 부딪쳐 도입을 포기하고, 대신 잠시 NT 계열 에디션과 9x 계열 에디션을 따로 배포했던 적이 있다. (배포 패키지 만들기가 무지하게 번거롭고 불편했음.-_-)

그러다가 3.41에서는 해당 기능을 자체 구현에 성공함으로써 <날개셋> 한글 입력기, 특히 외부 모듈은 플랫폼 계열을 완전 정복한 무지막지한 프로그램으로 거듭날 수 있었다. 이 모듈은 32비트 PE 포맷에 특화된 루틴이 들어있으며(x86 어셈블리까지는 아니지만-_-), 64비트 에디션에는 당연히 들어가지 않는다.

※ ngsconv.exe (since 5.0, 2008)

뭔가 변환과 관련된 모든 뒷바라지를 담당할 유틸리티로서, 5.0에서 첫 도입되었다. <날개셋> 3, 4 방식으로 저장된 입력 설정(유형, 글쇠배열 등 포함)을 새로운 5.0 방식으로 변환하는 것이 가장 기본적인 용도이며, 이 외에도 <날개셋> 3, 4 방식으로 저장된 변종 옛한글, 한양 PUA, 유니코드 1.x 방식 옛한글과 5.2 방식 옛한글 사이의 변환도 파일과 클립보드 모두 지원한다. 유니코드 상에서 현존하는 모든 옛한글 표현 방식을 중재하는 역할을 한다는 뜻이다.
시간이 흐르고 앞으로 한글 코드, <날개셋> 프로그램 체계가 또 바뀐다면 이 변환 유틸리티의 역할도 더욱 커질 것이다.

※ ngspad.exe / padspyxx.dll (since 5.3, 2009)

실행은 편집기 실행하듯이 EXE로 하지만, 기능은 외부 모듈처럼 여타 환경에서의 한글 입력 역할을 하는 제 3의 중간 계층에 속하는 프런트 엔드이다. 이 역시 거의 3, 4.x 버전 시절부터 상상을 하고 있었으나 여건이 안 되어 추진하지 못했다가 5.0에서 드디어 한글 코드 체계까지 정립에 성공한 뒤 추진하기 시작했다. 문자 입력 솔루션으로서 <날개셋> 한글 입력기의 위상을 완전히 새롭게 자리매김할 아이템으로 기대 중이다.

훅킹 기반으로 IME/TSF 동작 방식을 흉내내어 응용 프로그램에다 한글 조합을 전달하거나 키 입력을 속인다. 가령, 단축키까지 드보락 같은 다른 영문 글자판으로 완전히 바꾸는 것 역시 이 새로운 프로그램으로 가능한 것 중 일부가 될 것이다. 또한 <날개셋> 한글 입력기의 UI 엔진으로 구현한 각종 포인팅 장비 입력이나 화상 키보드, 문자표 등을 일반 프로그램에서 꺼내서 사용할 수도 있게 된다.

윈도우 95 이래 모든 운영체제에서 실행 가능한 다른 모듈과는 달리, 이 새로운 모듈은 동작 방식의 특성상 윈도우 2000 이상 전용으로 설계될 예정이다. 물론 이것도 사실상 아무 제약도 아니다.

※ padui.nip (since 5.3, 2009)

ngsX에 이어 드디어 두 번째로 개발되는 플러그 인이다.
현재 ngsime.ime의 내부에 들어있는 “후보 선택 UI”와 “화상 키보드” UI가 여기로 옮겨져서 외부 모듈과 ngsPad(가칭)가 공유하게 될 것이다. 그리고 한자 부수 입력, 문자표 같은 다른 액세서리가 추후 개발된다면 이 역시 이 모듈에 들어가서 편집기, 외부 모듈, ngsPad가 모두 공유하게 될 것이다.

※ NgsType.exe (타자연습 프로그램. since 2001)

<날개셋> 한글 입력기 1.x 버전대부터 개발되어 온 이 프로그램은 세벌식 자판의 보급과 저변 확대에 지금까지 큰 기여를 했다. 특히 90년대 말~00년대 초에 개발되었다가 지금 더 버전업이 되지 않고 있는 많은 타자연습 프로그램과는 달리 <날개셋>은 기능상 큰 변화는 없을지언정 꾸준히 버그 수정과 유지 보수가 돼 왔다. (비록 개발 우선 순위는 입력기 개발보다 언제나 뒷전이지만)

이 프로그램은 <날개셋> 한글 입력기에 포함되어 있는 애플릿이 아니라 입력기를 사용하여 따로 개발된 정식 애플리케이션(응용 프로그램)이다. 입력기와는 달리 MFC를 사용해서 개발되었고 재컴파일 가능한 소스가 공개되어 있다.

여타 프로그램에 비해 특히 주목할 만한 점은 정확도가 융통성 있게 계산된다는 것, 자체적인 문단 정렬 기능 덕분에 다양한 형태로 연습글을 배치할 수 있다는 것, 세벌식에 특화되어 제작된 게임 정도가 되겠다. 개인적으로 게임 그래픽 개선과 네트워크 연동이라는 두 숙제가 남았다고 본다.
세벌식 외에 다른 글자판의 ‘익힘’ 기능을 추가할 계획은 없다.

Posted by 사무엘

2010/01/10 23:43 2010/01/10 23:43
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/39

내게 맞는 한글 입력기

1. 그냥 기종에 상관없이 세벌식 자판만 평범하게 쓰고 싶으면

이미 설치되어 있는 MS IME만으로 충분하고 거기에 제가 개발한 '세벌식 파워업'을 덧붙이면 더욱 편리합니다.
오피스 2007이나 윈도우 비스타와 함께 설치되는 IME는 세벌식 최종 글쇠배열 오류도 고쳐져 있습니다.

2. 거기에 좀더 강화해서 모아치기도 쓰고 싶고 Shift+Space로도 한영 전환하고 싶고 동시치기, 영문 드보락, 세벌식 순아래, 안 마태 같은 마이너 글쇠배열이나 타자 기법을 써 보고 싶으면

새나루가 딱 좋습니다. <날개셋>보다 훨씬 덩치도 작고 UI도 간단해서 내게 필요한 기능만 바로 지정해서 쓰면 됩니다.
특히 새나루는 IME 차원보다 더 낮은 키보드 드라이버 후킹 차원에서 드보락 자판도 제공해서 한글과 같이 쓸 수 있습니다.

3. 하지만, 다음 조건에 하나라도 해당되면 <날개셋> 한글 입력기가 필요합니다.

- 2를 윈도우 9x 옛날 기종이나 아니면 아예 64비트 환경에서 쓰고 싶은 경우
- 옛한글을 쓰고 싶은 경우 (특히 세벌식으로.)
- 운영체제나 아래아한글의 각종 글쇠배열 드라이버를 불러와서 특수문자/외국어와 한글을 같이 입력하고 싶은 경우
- 한글 글쇠배열부터 시작해서 오토마타와 글자 결합 조건을 완전히 마음대로 고치고 싶은 경우
- 글자판 전환이나 한자 글쇠를 완전히 다른 걸로 지정하고 싶은 경우 (특히 윈도우 키 조합)
- 입력기 커널을 완전히 공유하는 유니코드 기반 자체한글 전용 에디터도 필요한 경우
- 한글 로마자 입력, 복벌식, 세벌식 이중모음 정석 강요 같은 여러 특화된 입력 환경을 쓰고 싶은 경우
- Bksp 다 지우고 앞 글자에 자동 달라붙기, 무한 낱자 수정, 특정 낱자 바로 변형 특수 키 같은, 세벌식에 특화된 전문적인 입력 기능을 쓰고 싶은 경우

전문적이고 기능 많으면서도 초심을 잃지 않고 쓰기 쉽고 친숙한 프로그램을 만들고 싶습니다.
모든 개발자, UI 디자이너들의 고민거리겠지요?

Posted by 사무엘

2010/01/10 22:41 2010/01/10 22:41
,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/17

« Previous : 1 : ... 11 : 12 : 13 : 14 : 15 : Next »

블로그 이미지

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

- 사무엘

Archives

Authors

  1. 사무엘

Calendar

«   2026/07   »
      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:
3940626
Today:
1294
Yesterday:
2118