TTF-DOOM: TrueType 폰트 힌팅에서 실행되는 레이캐스터
TrueType 폰트 바이트코드 내에 3D 레이캐스팅 엔진을 완전히 구현했습니다. 커스텀 DSL과 컴파일러를 사용하여 1991년 Apple 힌팅 VM의 난해한 제약 사항을 우회합니다.
운영 중TTF-DOOM
TTF-DOOM은 기술적 마조히즘의 정수를 보여주는 작업입니다. 대부분의 '폰트 내 코드' 프로젝트가 현대적인 셰이퍼 취약점이나 WASM 브릿지에 의존하는 반면, 이 프로젝트는 원래 글리프의 그리드 피팅을 위해 설계된 스택 기반 VM인 오리지널 TrueType 힌팅 가상 머신을 타겟으로 합니다. 그 결과, 저해상도 모니터에서 세리프를 선명하게 만들기 위해 설계된 명령어들을 사용하여 원근법과 벽 높이를 계산하는 6.5 KB 크기의 .ttf 파일이 탄생했습니다.
여기서의 엔지니어링 노력은 주로 툴체인에 집중되어 있습니다. 저자는 F26Dot6 고정 소수점 연산의 고충과 표준 루프 구조의 부재를 처리하기 위해 커스텀 DSL과 컴파일러를 구축했습니다. TrueType 바이트코드에는 'WHILE' 명령어가 없기 때문에, 엔진은 재귀 함수 호출(FDEFs)을 통해 루프를 구현하며 FreeType의 콜 스택 제한과 위험한 줄타기를 합니다. 기술적 독창성은 레이캐스트 결과에 따라 수직 바 윤곽선을 3D 위치로 물리적으로 이동시키는 Scale-Coordinate-Font-Size (SCFS) 명령어의 활용에서 정점에 달합니다.
제품 관점에서 보면 이는 게임이라기보다 개념 증명(PoC)에 가깝습니다. JS 레이어가 게임 로직, 입력, HUD 렌더링과 같은 무거운 작업을 처리하며, 폰트를 사실상 매우 특수한 GPU처럼 취급합니다. 주요 약점은 성능과 안정성입니다. 브라우저의 글리프 캐싱과 font-variation-settings에 의존하기 때문에 지터(jitter)와 렌더링 불일치가 발생하며, 이를 해결하기 위해 '프레임당 지터' 해킹 방식이 필요합니다.
이 프로젝트는 난해한 VM, 컴파일러 설계에 관심이 있거나 레거시 사양이 한계점까지 밀어붙여지는 과정을 즐기는 개발자라면 반드시 읽어봐야 할 사례입니다. 정적인 타이포그래피 형식을 동적인 렌더링 엔진으로 변모시킴으로써, 튜링 완전한 시스템이라면 무엇이든 게임 엔진이 될 수 있음을 다시 한번 증명했습니다.