그동안 잘 사용하고 있던 페블 타임의 방수 씰이 망가져서 그 대용으로 샤오미의 어메이즈핏 빕을 질렀습니다.

어메이즈핏 빕을 받고 나서, 처음 셋업하려고 하니, 기본 내장 폰트에 문제가 있었습니다. 바로 유니코드의 많은 영역이 (일본어와 한국어 포함해서) 비어 있다는 것이죠. 이는 순정 펌웨어 상태로는 이 스마트워치의 알림 기능을 사용하지 못함을 의미합니다.

다행히도, 스마트워치 폰트롬과 리소스 파일 포멧을 리버싱한 결과와 이를 분해 재조립하는 스크립트가 존재하였고, 이를 이용하여 TTF 파일을 이용, 폰트롬을 빌드하는 프로젝트 또한 존재하였습니다. 하지만, TTF 파일을 16×16 비트맵 폰트로 변환하는 과정은 썩 좋지 않은 결과물을 낳았고, 이를 개선하기 위해 MS-DOS 시절의 다양한 비트맵 폰트를 사용하여 한중일 글꼴을 지원하는 폰트롬을 빌드하는 프로젝트를 시작하게 되었습니다.

라틴 폰트

라틴 폰트의 경우, 역사가 깊고 문자 자체의 단순함 덕분에 여러 자유 폰트 콜렉션들이 있었습니다. 그리고 이러한 폰트 대부분은 라틴 문자셋을 사용하고 있기 때문에 0x00 – 0x7F 범위를 가져다 쓰는 것 만으로 아스키 알파벳 전부를 손쉽게 지원할 수 있게 됩니다.

한글 폰트

한글의 경우에는, 유서 깊은 도깨비 한글이라는 한글 출력 소프트웨어의 존재와, 이 소프트웨어가 사용하던 한글 조합 방식인 844 조합형 폰트의 조합 알고리즘의 문서가 소실되지 않고 남아 있던 것이 큰 도움이 되었습니다.

해당 문서에 조합법과 예제 코드가 설명되어 있었고, 이에 더불어 도깨비 한글을 제작한 한도컴퓨터의 HFED.EXE를 이용해 폰트 바이너리를 시각화해 보며 조합형 비트맵 폰트를 이용해서 한글을 렌더링하는 파이썬 코드를 작성할 수 있었습니다.

일본어 폰트

일본어 또한 비슷한 방식으로 접근했습니다. 일본의 IBM PC/AT 환경에서는 DOS/V 를 가동했었기에, DOS/V 폰트 파일 관련 자료를 검색하는것으로 출발했습니다.

조사를 통해, DOS/V 가 사용하는 폰트의 이름이 FONTX 라는 것을 알게 되었고, 이 포멧에 대한 명세가 무려 영문으로(!!!) 작성되어 있는 것을 찾을 수 있었습니다. 해당 포멧은 Shift-JIS 코드포인트 매핑 테이블과 1비트 비트맵 폰트로 이루어져 있는 단순한 포멧이었고, 남은 것은 자유 라이센스 하에 있는 폰트 파일을 구해서 렌더러를 작성하고 테스트하는 것이었습니다.

여기서 일어의 장벽에 부딪혔지만, 현재까지 조사로 알아낸 DOS/V, FONTX 키워드를 가지고 일어를 그래도 할 줄 아는 애인님과, 구글 검색, 구글 번역의 도움으로 FreeDOS/V 프로젝트가 있다는 것을 알게 되었고, 이 프로젝트 안에 FONTX 파일이 포함되어있다는 것을 알게 되었습니다.

이 폰트 파일을 가지고, 유니코드를 Shift-JIS 로 변환한 뒤, 일어 폰트를 렌더링하는 파이썬 스크립트를 작성할 수 있었고, 이를 통해 Shift-JIS 가 지원하는 한자와 히라가나, 가타카나에 대한 지원을 폰트롬에 추가할 수 있게 되었습니다.

중국어 폰트

아쉽게도, Shift-JIS 코드 블럭은 CJK 통합 트롤한자 영역에 있는 모든 한자에 대한 폰트를 제공하지 못합니다. 현재는 아직까지 이에 대한 해결책을 찾지 못 했으나 다음과 같은 방법이 있을 것으로 생각됩니다

  • 자유 라이센스 하에 있는 중문 비트맵 글꼴을 찾는다
  • Windows 3.x 시절의 비트맵 폰트를 사용자가 직접 공급하도록 스크립트만 제공한다
  • 샤오미 원본 폰트의 중국어 블럭을 사용한다

가장 좋은 것은 첫 번째이겠지만, 여의치 않으면 두번째와 세번째 또한 고려해야 할 것으로 보입니다.

끝맺으며

디지털 고고학자가 되어 고전 폰트에 대한 정보를 파 내어낸 결과로 어메이즈핏 빕 위에서 꽤 만족스러운 폰트 렌더 결과를 얻을 수 있었습니다.

추가로, 이 프로젝트에 사용된 파이썬 스크립트들을 Client-side JS 스크립트로 포팅하고, 웹 앱 화 시키는 것도 고려해볼 수 있을 것 같습니다.