지난 번에 fontforge 에 대해 소개했다. 나에 목적은 한글 폰트를 light 하게 만드는게 우선적인 목적이다. 그런데 글자(glyph) 하나하나 수정한다면 참 귀찮은 일이다. 이런일을 위해 fontforge 는 Python 을 지원한다.
이 파이썬을 하는 방법이 fontforge 파이썬 라이브러리를 설치하거 bin\fontforge.exe -script test.py 처럼 파이썬 파일을 옵션으로 fontforge 프로그램을 실행하거나 fontforge 가 실행된 상태에서 파이썬 스크립트를 입력해서 실행하는 방법이다. fontforge 파이썬 라이브러리를 설치하는 방법은 리눅스에서는 참 편한데, 윈도우즈에서는 시도해야 할 것이 너무 많다. 잘못하면 직접 라이브러리를 빌드해야 할지도 모른다. 윈도우즈에서는 라이브러리 빌드가 너무나 큰일이라서 패스 했다.
마지막 fontforge 가 실행한 상태에서 하는 방법은 파이썬 소스를 copy & paste 해야 해서 패스하고 bin\fontforge.exe -script test.py 처럼 실행하는 방법을 사용할 생각이다.
이를 좀더 편리하게 하기 위해 간단한 에디터 툴을 이용하는 방법을 사용했다.
우선 내가 좋아하는 아크로 에디터(이 프로그램은 공짜 프로그램이다. 회사에서 사용해도 되는 진짜 공짜 프로그램이다.) 의 사용자 도구 옵션을 이용해서 아래와 같이 설정했다.
중요한 부분 몇 가지 짚어 보자면, 명령어는 자신의 fontforge 실행 위치이고, 인자는 -script %FULLNAME% 로 한다. 정규 표현식은 ^ File \"(.*)\", line ([0-9]*).*$ 로 하면 에러 발생히 해당 부분을 클릭하면 커서로 해당 위치를 가르키기 때문에 편리하다.
이렇게 하면 간단하게 설정은 되지만 이 경우 디버깅이 break point 를 잡아 가면서 할 수 없다. 난 개인적으로 break point 를 잡지못하면 디버깅이 너무 불편해 한다. 로그를 남겨 가면서 확인해야 한다.
그래서 난 이클립스의 pydev 의 remote debugging 기능을 설정했다.
http://pydev.org/manual_adv_remote_debugger.html
이 방법은 pydev 에서 pydev 서버를 돌리고 있다가 파이썬 소스쪽에 이 서버를 접속하도록 코딩하도록 한 후, 이 파이썬 소스를 실행하면 알아서 실시간 디버깅을 지원하는 매우 혁신적인 방법이다. Fontforge 는 embedded python 기능을 이용하고 있는데 이 때에도 이런 remote debugging 이 가능하다.
우선 파이썬 소스는
import sys;
sys.path.append(r'D:\programs\eclipse_juno\plugins\org.python.pydev_3.4.1.201403181715\pysrc')
import pydevd # @UnresolvedImport
pydevd.settrace('localhost', port=5678, stdoutToServer=True, stderrToServer=True)
import fontforge # @UnresolvedImport
print "END"
같이 구현한다. sys.path.append 되는 위치는 자신의 이클립스안 플러그인, pydev 의 pydevd.py가 존재하는 Path 이다. 이 path를 추가해주었기 때문에 pydevd 를 import 할 수 있는 것이다.
그 후, 디버깅 서버 주소를 적어준다. 보통 port 는 5678 이고 이클립스내 pydev 를 설정하는 곳에서 변경할 수 있다. (당연히 환경설정에서 변경하면 이 port 주소도 변경해야 한다. )
이제 실제로 이 파이썬 소스를 실행하기위해 이클립스의 Run->Extern Tool 기능을 이용한다.
위와 같이 설정하면 된다. 중요한 부분은 Location 부분에 fontforge 실행파일 전체 위치, Arguments 위치에 -script ${selected_resource_name} 를 넣는다. 이 때상태 Run 하기 전에
우선 Debug Server 를 실행해야 한다.
Debug Perspective 를 보고 있을 때 Pydev -> Start Debug Server 를 눌러 Debug 서버를 실행한다. 그리고 나서 외부 Pydev Perspective 로 변경 후 Runs -> External Tools 메뉴 밑의 위 스크린 샷과 같이 설정한 외부 프로그램을 실행한다.
그러면
pydevd.settrace('localhost', port=5678, stdoutToServer=True, stderrToServer=True) 까지 실행된 상태를 유지하고 있는다. 이 상태로 Expressions 도 사용가능하다.
이렇게 해서 파이썬 개발 환경 까지 완료 했다.