Show HN: TTF-DOOM – TrueType 폰트 힌팅 안에서 실행되는 레이캐스터

발행: (2026년 4월 7일 AM 04:25 GMT+9)
3 분 소요

Source: Hacker News

Overview

TrueType 폰트에는 글리프를 그리드에 맞추는 힌팅 가상 머신이 포함되어 있습니다. 이 VM은 스택, 저장 영역, 조건문, 함수 호출을 지원하며 튜링 완전합니다. 이를 이용해 레이캐스팅 엔진을 힌팅 바이트코드만으로 완전히 구현했습니다.

폰트에 포함된 글리프 **“A”**는 16개의 수직 바 컨투어를 가지고 있습니다. 힌팅 프로그램은 GETVARIATION을 통해 폰트 변형 축에서 플레이어 좌표를 읽어오고, VM의 저장 영역에 저장된 타일 맵에 대해 DDA 레이 마칭을 수행한 뒤 SCFS로 바 높이를 조정합니다. 그 결과 폰트 내부에 거친 Wolfenstein 스타일 뷰가 렌더링됩니다.

Technical Details

  • Bytecode size: 전체 약 6.5 KB, 13개의 함수와 795개의 저장 슬롯, 그리고 사인/코사인 조회 테이블로 구성됩니다.
  • JavaScript integration: 움직임, 적, 사격을 처리하고 좌표를 CSS font-variation-settings을 통해 폰트에 전달합니다. 폰트는 사실상 GPU 역할을 합니다.
  • TrueType VM의 특이점:
    • MUL(a × b) / 64를 계산하므로 1 * 4 = 0이 됩니다. DIV 명령도 유사한 제약이 있습니다.
    • 기본 WHILE 루프가 없으며, 모든 반복은 재귀 FDEF로 컴파일됩니다. FreeType은 호출 깊이를 대략 64 프레임으로 제한합니다.
    • SVTCA[0]은 Y 축을, SVTCA[1]은 X 축을 선택합니다.
  • Compiler: 작은 컴파일러(렉서, 파서, 코드 생성기)가 C‑유사 DSL을 TrueType 어셈블리로 변환합니다.

Demo

  • Visualization GIF:

  • Live demo:
    (Chrome/Edge, WASD + arrow keys, Space to shoot, Tab for debug overlay)

데모에서 Tab 키를 누르면 이동에 따라 폰트 변형 축이 변하는 것을 확인할 수 있습니다.

References

  • Hacker News discussion:
0 조회
Back to Blog

관련 글

더 보기 »

Vibe Coding 컬트가 미쳤다

배경: Claude는 소스 코드가 유출되었으며, 사람들은 그것이 얼마나 형편없는지 크게 웃으며 즐기고 있습니다 https://neuromatch.social/@jon...