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()
"ㄱ" 이외의 다른 자음으로 시작하는 글자도 출력하고 싶다면 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, 힌팅을 최대로 주었다.)
![]() [JPG image (65.28 KB)] ![]() [JPG image (52.43 KB)] ![]() [JPG image (80.78 KB)] ![]() [JPG image (67.23 KB)] 6. 비트맵 제작하기의 실제 과정 ¶fontforge 를 실행하고, UnBatang.ttf 를 열자. 은글꼴은 기본적으로 비트맵을 내장하고 있지 않으므로 비트맵을 생성할 필요가 있다.
메뉴의 "Element" -> "Bitmaps Available" 을 실행시키자. (Ctl-Shift-B) 다음고 같은 화면이 나온다.
![]() [JPG image (39.47 KB)] 메뉴의 "View -> 12 pixel bitmap" 을 실행하여 만들어진 12 pixel 비트맵을 보자.
![]() [JPG image (198.72 KB)] |
How sharper than a hound's tooth it is to have a thankless serpent. |