지난 번에 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 도 사용가능하다. 



 이렇게 해서 파이썬 개발 환경 까지 완료 했다. 






 요즘, 폰트에 꽂혔다. 


처음 시작은 이랬다. 난 크롬 확장을 하나 만들고 싶었다. 물론 언제나 그렇듯이 플랫폼 독립적으로 만들고 싶었다. 그러다가 웹 폰트를 생각하게 되었다. (OSX와 윈도우즈만 비교해보도 한글의 경우 공통의 폰트가 없다보니 내가 생각했던 대로 사이트가 구현되지 않는 문제가 있다. 이에 대한 해결책으로 웹폰트를 생각했다. ) .  그러다 언제나 처럼 딴 짓을 하게 되었고, 폰트에 대해 파고들다보니 fontforge 까지 설치하게 되었다. 




Fontforge 는 Font 편집 프로그램이다. 이 프로그램이 가진 장점은 이 툴이 무료라는 것이다. 그리고 윈도우, 맥, 리눅스를 다 지원한다. 이 기준은 내가 어떤 프로그램을 사용하거나 개발환경을 구축할 때의 기준이다. 


FontForge(2004년 3월까지는 PfaEdit)[1][2]는 모든 일반 글꼴 형식을 지원할 수 있는 완전한 형식을 갖춘 폰트 편집기이다. 조지 윌리엄이 주도하여 개발된 FontForge는 자유 소프트웨어이며, BSD 라이센스 3조항에 따라 배포된다.[3] 이 프로그램은 LinuxWindows[4] 그리고 Mac OS X[5]등의 여러가지 운영체제로 사용이 가능하며, 12개의 언어로 번역이 되어 있다.

http://ko.wikipedia.org/wiki/FontForge )


 윈도우즈와 우분트에서 설치해 테스트해 보았다. 




(스크린 샷에 나눔글꼴이다. Open Font License 이기 때문에 이 폰트를 선택했다. )


윈도우즈에서 설치는 

http://www.mpetroff.net/software/fontforge-windows/

FontForge Windows Binaries with Python Support (Git dd73d0a354) (unofficial):

버전을 이용했다. 이 이유는 Python 을 이용해면 뭔가 재미있는 것을 알 수 있을 거라는 생각이 들었다. 


우분투에서는 간단히 apt-get install 을 이용해 fontporge 와 python-fontforge 를 설치했다. 우분투에서는 따로 설정없이 파이썬 파일에서 import fontforge 가 가능해서 참 편리했다. 그리고 

Fontforge 실행후 Execute Python 메뉴를 통해서도 파이썬을 실행할 수 있다. 


윈도우에서는 Fontforge 이용없이 사용하기가 좀 가다롭다.  우분투와 동일하게 Fontforge 실행후 Execute Python 메뉴를 통해서 하거나 bin\fontforge.exe -script test.py    

같은 방식으로 사용할 수 있다. 이 상태로 이클립스의 Pydev 와 연동하기는 좀 그럴 것 같다. 그래도 이 상대로도 속도가 괜찮기 때문에 이정도면 어느 정도 개발환경은 세팅 된 것 같다. 


 Fontforge 를 제대로 이용하기 위해서는 글꼴 디자인에 대해 좀 많이 공부할 필요가 있고 TTF 폰트에 대해서도 좀 제대로 이해 해야 할 것 같다. 내가 해보고 싶은 것은 가독성은 낮지만 용량은 적은 한글 폰트를 만들어보고 싶다. 내가 폰트 디자인 할 실력은 조금도 안되니 Open Font License 사용하는 나눔글꼴을 이용해 보려고 한다. 이 폰트를 조합형으로 변경해서 폰트 용량을 줄이고 싶은데 이 조합형 자체가 TTF 에서 지원하는 것인지 부터 연구해 봐야 한다. 그리고 불필요한 글자(이를테면 한자, 일본어)를 제거하고 아스키영역, 한글 영역, 일부 문장부호 영역만 지원하면 사이즈가 많이 줄지 않을까 하는 생각을 한다.  그럼 모바일에서도 부담없는 webfont 가 되지 않을까 하는 생각이든다. 근데 이거만 하려해도 너무 공부할 게 많은 것 같다. 




 


 오래전 부터 한글에 이탤릭(HTML 에서 i 엘레멘트) 이 어울리지 않고 가독성이 나쁘다고 생각했다. 이탤릭 한글을 쓰면 확실히 가독성이 이렇게 떨어진다. 

 위 글자를 보면 정말 눈에 한번에 안들어 올 것이다. (나만 그렇나..)


 그런데 이 이유를 얼마전에 알게 되었다. 


이탤릭체는 타이포그래피에서 손글씨를 기반으로 흘려 쓰는 자형을 일컫는다. 필사술로부터 영향을 받아, 조금 오른쪽으로 기운 것을 알 수 있다. 이탤릭체는 알두스 마누티우스와 앨다인 프레스가 1501년에 처음 만들어 낸 것이다.[1] 컴퓨터 분야에서는 기울임 글꼴과 이탤릭체를 동일시하기도 하지만, 고전적인 영문 이탤릭체의 경우 기울임 이외의 차이를 보인다.

http://ko.wikipedia.org/wiki/%EC%9D%B4%ED%83%A4%EB%A6%AD%EC%B2%B4 


위키피디아 글을 읽고 이해했다. 이탤릭체는 원래 손글씨로 흘려 쓰는 자형인 것이다. 컴퓨터에서는 이탤릭 폰트를 따로 만들기에는 부담스러웠을 것이다. 그래서 기울림 글꼴로 표시 했던 것이다. 

 원래 기울림꼴(http://en.wikipedia.org/wiki/Oblique_type) 과 이탤릭은 다른 것이다. 기울림꼴은 단순히 font 을 기울려 놓은 것에 불과하다. 물론 이렇게 하면 따로 이탤릭 폰트를 디자인 할 필요가 없다는 장점이 있다.


 원칙적으로 보자면  따지고 보면 Oblique 를 적용 하면 영어도 좀 이상해 진다.

the quick brown fox jumps over the lazy dog


그렇다면 우리가 자주 사용하는 한글 폰트에 이탤릭이 예쁘게 있어서 이탤릭을 사용해야 하는 상황에 적당한 손글씨 폰트를 보여주는게 가독성을 올리는 것 같다.



그리고 여기에 대한 연구도 있었다. 

라틴알파벳의 이탤릭체와 한글의 흘림체 비교연구