· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Make Bitmap Font-Mini-HOWTO

트루타입 글꼴의 비트맵 만들기 Mini-HOWTO

김정수 pibonazi (at) gmail.com

2005-11-11 ver 0.0.1

이 문서는 GPL(General Public License) 을 따릅니다.


1. 서문

나는 HLaTeX을 자주 쓴다. 익숙해진 탓인지 HLaTeX의 기본 글꼴과 같은 "은바탕" 글꼴을 매우 좋아하게 되었다. 작은 글꼴의 가독성 문제에도 불구하고 Firefox 의 기본 글꼴을 은바탕으로 할 정도로 좋아한다. "부드럽게 하기" 옵션과 가장 강한 힌팅을 주면 그럭저럭 읽을만 하지만, 장시간 웹서핑을 하면 눈이 아픈것을 피할 수 없다. 특히 주로 쓰는 글꼴인 11-13 pixel 글꼴은 그 정도가 심하여 참지 못하고 직접 비트맵을 만들어보기로 하였다. 그래서 약 이틀간 fontforge를 익히고 20일 남짓 작업을 하여, 12pixel 비트맵을 대강 만드는데 성공하였다. (링크참조)

이 Mini-HOWTO는 UnBatang-B.ttf ver.0.7 (12pixel 비트맵)을 만든 노하우를 담은 것이다. (편의상 필자를 "나"로 지칭하고 경어를 생략할 것이니 독자분들께서는 이점 양해해 주세요.)

2. FontForge와 Gimp 설치하기

필자는 Debian-unstable 을 사용한다. Debian 에서는
apt-get update; apt-get install fontforge gimp
정도면 충분하다. (다른 플랫폼은 http://fontforge.sourceforge.net/ , http://www.gimp.org/ 을 참고.)

3. 어떤 기준으로 비트맵을 만들 것인가

글꼴의 크기에 관계없이 글꼴이 렌더링되는 방법을 서술한 트루타입 글꼴과는 달리, 비트맵 글꼴은 일정하게 주어진 픽셀(pixel)들을 조합하여 글꼴을 만드는 것이다. 따라서 비트맵 글꼴을 원래 트루타입 글꼴의 자소와 똑같이 만드는 것은 애초에 불가능하며 제작자의 미적 기준과 가독성에 의하여 자의적으로 만들 수 밖에 없다.

나는 글자 디자인에 대하여 무지한지라 어떤 식으로 자소를 그리고 배치할지에 대하여 일정한 기준이 없었다. 그래서 Xorg가 트루타입 글꼴을 그려내는 결과물을 기준으로 삼기로 했다.

4. Unicode 순서대로 글자 추출하는 스크립트 만들기

다음은 Ga.txt 라는 파일에 ㄱ으로 시작하는 모든 글자를 unicode 순서대로 출력하는 python 스크립트이다. 다른 자소의 글자도 이 스크립트를 이용해서 출력하면 된다.

import codecs
f=codecs.open('Ga.txt', encoding='utf-8', mode='w+')
for i in range(588):
	f.write(unichr(44032+i))
f.close()
1행utf-8 출력을 위하여 codecs 모듈을 import 한다.
2행Ga.txt 라는 파일에 utf-8 인코딩으로 쓸 준비를 한다.
3-4행"ㄱ"의 모든 글자를 unicode 순서대로 파일에 출력한다. 'ㄱ'으로 시작하는 글자는 588개가 있다. '가'의 번호가 44032번이다.
5행파일 출력을 끝낸다

"ㄱ" 이외의 다른 자음으로 시작하는 글자도 출력하고 싶다면 2행의 파일명과 4행의 44032 를 바꾸어주면 되겠다. 예를들어 '까'는 44032 + 588 번째, '나' 는 44032 + 588 * 2 번째 글자일 것이다.

5. 가장 선명한 표본 얻기

우선 앞절에서 출력한 파일을 적당한 편집기로 보자. 12pixel 비트맵을 만들 것인데, 75 dpi에서는 11.5 pt, 100 dpi에서는 8.6 pt 크기이므로 정수로 환산하면 각각 12pt, 9pt 가 된다. kwrite 로 열어 글꼴을 "UnBatang"으로 설정한후 스크린샷을 찍어보았다. (서브픽셀 힌팅을 RGB, 힌팅을 최대로 주었다.)

ga-work1.jpg
[JPG image (65.28 KB)]


확대해보면 많은 글자는 흐릿하여 자소가 확실히 보이지 않는 것을 알 수 있다. 어중간한 회색이 많다.
11.jpg
[JPG image (52.43 KB)]


GIMP의 필터 -> 강화 -> Sharpen 을 이용하여 또렷하게 해보자. 70정도 수치를 준다.

ga-work2.jpg
[JPG image (80.78 KB)]


확대해보면 확실히 자소가 잘 보임을 알 수 있다. 검정색 픽셀이 확실히 많아졌다. 경험상 이것보다 더 좋은 이미지를 얻기는 힘들었다. 수치를 너무 높이면 글자가 뭉쳐 보여서 곤란하다.

12.jpg
[JPG image (67.23 KB)]


6. 비트맵 제작하기의 실제 과정


fontforge 를 실행하고, UnBatang.ttf 를 열자. 은글꼴은 기본적으로 비트맵을 내장하고 있지 않으므로 비트맵을 생성할 필요가 있다.

메뉴의 "Element" -> "Bitmaps Available" 을 실행시키자. (Ctl-Shift-B) 다음고 같은 화면이 나온다.

aaa.jpg
[JPG image (39.47 KB)]


"Pixel Sizes" 에 "12" 를 채우고 "OK" 버튼을 누른다. 컴퓨터가 열심히 비트맵을 만들 것이다.

메뉴의 "View -> 12 pixel bitmap" 을 실행하여 만들어진 12 pixel 비트맵을 보자.

aaa4_1.jpg
[JPG image (198.72 KB)]


만들어진 비트맵은 기본적으로 엉망이다. 그도 그럴것이, 자소의 윤곽선에 걸치게 단순히 점을 채우는 것과 보기좋게 점을 배열하는 것은 다른 문제이기 때문이다.


ID
Password
Join
How sharper than a hound's tooth it is to have a thankless serpent.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2005-11-16 06:47:20
Processing time 0.0060 sec