폰트를 분류하는 방법은 여러가지가 있겠지만 가장 기본적인 방법은 Serif 와 San-Serif 로 분류한다. 

Serif(세리프) : 세리프(serif)는 타이포그래피에서 글자와 기호를 이루는 획의 일부 끝이 돌출된 형태를 가리킨다.  (http://ko.wikipedia.org/wiki/%EC%84%B8%EB%A6%AC%ED%94%84)

Sans-serif(산세리프) : 세리프가 없는 글꼴이다.  (http://ko.wikipedia.org/wiki/%EC%82%B0%EC%84%B8%EB%A6%AC%ED%94%84)



(출처 : http://en.wikipedia.org/wiki/File:Serif_and_sans-serif_03.png )


Serif 와 Sans-serif 의 차이는 붉은색 부분이다. Serif 는 붉은 쌕의 돌출된 형태가 있다.


Serif 계열의 폰트 중 유명한 폰트를 꼽자면Arial,  Times New Roman, Droid Serif (안드로이드 단말에서 볼 수 있다. ), Impact 가 있다. 

Sans-serif 계열의 폰트는  Droid Sans(안드로이드 단말에서 볼 수 있다) Helvetica

http://en.wikipedia.org/wiki/List_of_typefaces#Sans_serif )


 영문 폰트라서 이 내용이 그다지 와 닿지 않을 것이다. 한글 폰트 중 Serif 인 글꼴은 궁서, 명조가 계열에 속한다. ( http://ko.wikipedia.org/wiki/%EB%B6%84%EB%A5%98:%EC%84%B8%EB%A6%AC%ED%94%84_%EA%B8%80%EA%BC%B4,  http://ko.wikipedia.org/wiki/%EB%AA%85%EC%A1%B0%EC%B2%B4  ) 


Sans-serif 계열의 한글 폰트는 고딕(그 유명한 맑은 고딕도 Sans-serif 계열이다.), 돋음, 굴림, 바탕체가 있다. ( http://ko.wikipedia.org/wiki/%EB%8F%8B%EC%9B%80%EC%B2%B4,  http://ko.wikipedia.org/wiki/%EB%B0%94%ED%83%95%EC%B2%B4 )





 다른 방법으로는 고정폭과 가변폭으로 구별하기도 한다. 여기서 폭은 글자의 width 로  영문자 i 와 L 은 가로폭이 다를 수 있다. 가변폭 글꼴에서는 i 은 좁고 L 은 i 보다 넓은 폭을 가진다. 

 일반적으로 가변폭글꼴을 많이 사용하고 좀 특수한 경우 고정폭 글꼴을 사용한다. 특히 개발시 이런 글꼴을 많이 사용하게 되는데 이 글꼴을 사용하면 cording 시 탭과 글자의 간격이 일정하게 유지 할 수 있다

  고정폭 글꼴로 많이 사용하는 것은 Courier, Fixed 폰트가 이 계열이다. 한글 폰트의 경우, 끝에 ~체  로 끝나는 글꼴이 고정폭 글꼴이다. 굴림과 굴림체의 차이는 가변폭 글꼴인가, 고정폭인가의 차이이다. 


 



 아무래도 타이포그래프가 영문자를 사용하는 쪽에서 시작했기 때문에 많은 용어들이 영문자를 기준으로 되어있다. 아래부터는 내 마음대로의 번역이다. 





http://en.wikipedia.org/wiki/File:Typography_Line_Terms.svg )



* baseline( http://en.wikipedia.org/wiki/Baseline_(typography) )

  - 위 그림을 보면 알겠지만 대문자가 적어지는 라인이라고 보면된다. 경우에 따라서는 숫자의 경우도 이 라인 아래도 적어질 수 있다고 한다. 


* ascent(ascender height, http://en.wikipedia.org/wiki/Ascender_(typography) )

  - baseline 에서 문자의 가장 높은 부분 까지이다. 글자 마다 따를 수 있다. 


* descent(descender height, http://en.wikipedia.org/wiki/Descender )

  - baseline 에서 문자의 가장 낮은 부분 까지이다


* cap height( http://en.wikipedia.org/wiki/Cap_height )

  - 몇 몇 글자를 제외하고 base line 에서부터 일반적인 대문자의 높이까지

  - H, I, O, A 같은 글자는 이 높이를 넘어 설 수 있다고 한다.


* x-height ( http://en.wikipedia.org/wiki/X-height )

  - base line 에서부터 일반적인 소문자의 높이까지

  - 특히 base line 에서 소문자 x의 높이 까지

  - 일부 소문자는 이 높이보다 높을 수도 있고, 낮을 수도 있다. 


* Overshoot( http://en.wikipedia.org/wiki/Overshoot_(typography) )

  - 위의 cap height(또는 x-height)  를 넘게 되는 것


* mean line (or midline)  (  http://en.wikipedia.org/wiki/Mean_line )

  - base line 와 cap height 의 중간

  - x-height 와 꼭 동일한 것은 아니다. 


추가 참고 출처

http://www.freetype.org/freetype2/docs/tutorial/step2.html 

 - 유명한 폰트 랜더링 라이브러리

http://fontforge.org/glossary.html


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



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