요새는 뭐 워낙 빠른 프로세서들이 많이 나와서 벡터폰트가 외각선까지 다듬어져 화면에 눈부시게 뿌려져도 신기할게 없는 세상이 되어버렸으니.. 벡터폰트가 뭐 대수냐 할 수도 있겠네.
하지만.. 개발을 하다보면 항상 이렇게 강력한 프로세서들만 쓸 수 있는게 아니잖아? -_-;; 트루타입 폰트의 용량 자체도 제법 될 뿐더러, 베지어 커브니 뭐니 연산량이 엄청나지. 게다가 그래픽 가속 하드웨어가 없는 프로세서라면 점을 하나하나씩 연산해서 찍어야 하니..
얼마전 이런저런 프로젝트를 하면서 작업용으로 TMS320C33이 올라간 하드웨어를 하나 받게 되었는데, 여기에 480x272짜리 컬러 LCD가 들어갔지. C33의 하드웨어로는 이 컬러 LCD를 제대로 구동하기 난감해서 FPGA 쪽의 도움도 받고.. 아무튼 메모리에 적절히 데이터를 넣고 FPGA쪽으로 전송하면 FPGA가 알아서 LCD의 리프레쉬를 하도록 개발이 되었지.
128x64짜리에 (몇년간-_-) 사용하던 비트맵 폰트를 그대로 썼는데.. 폰트가 정말 연필심만 하더구만. 조금 과장이 있었지만-_- 가장 즐겨사용하던 폰트는 너무 작아서 안되겠더라고, 그래서 그나마 큰 것으로 되어 있던 폰트를 일단 활용을 해서 작업을 진행했는데.. 여튼 이런 이유로 벡터폰트에 대한 필요성이 대두되어서.. 트루타입폰트나 오픈타입도 알아봤는데 이거 뭐 도저히 c33으로는 폰트 그리다가 날 새겠더구만. 디스플레이보다 더욱 중요한 것들을 돌려야 하는데 말이지.
그래서 알아보게 된 것이 Hershey Font. 포맷도 간단하고, 원리도 간단하고, 만들기도 쉬워보이고...
이걸 이래저래 손을 봐서 3가지 크기로 디스플레이 한 것들.

대충 손을 본 내역들은..
1. Hershey폰트는 폰트 데이터가 텍스트 형태로 되어 있는데, c33의 특성에 맞게 32bit로 데이터를 패킹함 (메모리 용량 절약)
2. 선 긋는 함수에 글자의 두께를 표현할 수 있도록 변경 (벡터 수가 적은 폰트라서, 그냥 그리면 얇은 글씨가 되어버림)
3. 글자 그리는 알고리즘 최소화 (프로세서의 속도가 문제가 됨)
이거 비트맵 폰트 쓸 때 보다 조금 느리긴 한데.. 그래도 저 정도는 20ms 내외로 그려내니 나쁘지는 않은 셈. (이 하드웨어에서 사용하는 메모리가 느린 것을 감안하면 다른 하드웨어에서는 더 빨라질 여지가 있으니..)
여튼 용량과 성능이 제법 후달리는 마이크로프로세서에서도 벡터폰트를 사용할 수 있는 라이브러리 확보-_-