시리얼 EEPROM 을 이용한 한글 LCD 구현[4] – 폰트의 가공

폰트의 가공

우선 한글 폰트와 ASCII 폰트부터 구해와야 할 것이다. 이는 도스시절에 쓰인 한메한글이나 도깨비 한글 에뮬레이터나 한글문서를 편집할 수 있는 에디터, 이야기 등의 예전 도스용 프로그램만 구하면 쉽게 얻어낼 수 있다. 아래 그림은 “산” 이라는 한글 에디터 프로그램 안에 있던 한글 폰트들이다.

FontList

 

이를 LCD 에서 이용하려면 약간 가공을 해줘야 하는데 병렬 IO 를 갖는 그래픽 LCD 의 경우 대개 한 바이트를 쓰면 가로로 8개의 도트가 그려지는 것 (PC 상 폰트는 이런 식의 배열이다.) 이 아닌 세로로 그려지게 된다.
128*64 해상도의 LCD 라면 세로가 8인 한 단위(Byte)의 줄이 가로로 128 개 세로로 8 개로 맵핑된다.
그러므로 이를 우리의 타겟 보드에 저장시키려면 각 폰트를 오른쪽으로 90도 돌려서 저장시켜야 한다.
이 작업을 쉽게 하기 위해서 폰트를 편집할 수 있는 프로그램이 필요한데 땜쟁이 사이트(http://www.coy.pe.kr)의 폰트에디터 http://www.coy.pe.kr/job/coy-fed.htm) 를 이용했다.
아래는 위 한글폰트를 하나 읽어서 시계방향으로 90도 돌린 그림이다.

자형편집기(www.coy.pe.kr)

 

그리고 메뉴에서 폰트파일을 저장으로 가서 바이너리 형식으로 저장해 주면 된다.

ASCII 폰트 ( 확장자가 *.ENG ) 도 마찬가지로 1바이트*16Line으로 읽어 시계방향으로 90도 회전시켜 바이너리 저장해주면 된다.
산 에디터”폰트의 경우 위 그림에서 보시다시피 각 벌의 시작마다 공백폰트가 들어가 있기 때문에 한글 폰트의 크기가 위의 계산보다 512바이트가 더 늘어나게 된다.
(확인해본 결과 새롬 데이터맨의 한글폰트에선 이 공백이 없다. 512 바이트라는 이 공간을 아끼고 싶으면, 폰트 조합 소스를 조금 수정해 주면 된다.)
한글 폰트 조합 소스의 경우 윤덕용 교수님(http://control.cntc.ac.kr/cpu/) 책에 나와있는 소스를 사용했다.

이렇게 생긴 두 파일을 아래 그림처럼 “Copy /B <영문폰트파일> + <한글폰트파일> <새로운 파일>” 의 도스명령을 써서 하나의 바이너리로 합쳐준 후 롬 라이터를 사용하여 24C128 에 구워주면 된다.
롬 라이터기가 없는 분들은 자신의 CPU 에 시리얼 통신과 연계하여 24C128 에 기록시키는 루틴을 작성해 넣어 줌으로서 이를 처리해 주는 것도 가능할 것이다.

MergeFonts

 

이렇게 쓰여진 폰트 데이터는 폰트가 맘에 안 들면 24C128을 교체하거나 다시 내용을 갱신 해 줌으로서 언제든 바꿀 수 있다.

 

이 글을 공유하기:

Be the first to comment

Leave a Reply