nowfound

Life & fun · April 6, 2026

TD

TTF-DOOM – A raycaster running inside TrueType font hinting

TrueType fonts have a hinting VM that grid-fits glyphs. It has a stack, storage area, conditionals, function calls, and it turns out it's Turing-complete. So I built a raycasting engine in the hinting bytecode. The glyph "A" in the font has 16 vertical bar contours. The hinting program reads player coordinates from font variation axes via GETVARIATION, does DDA ray marching against a tile map in the storage area, and repositions bar heights with SCFS. It ends up looking like a crude Wolfenstein-style view. Small visuzlization:…

In plain words

TTF-DOOM is a raycasting engine built entirely within TrueType font hinting bytecode, a Turing-complete virtual machine designed to adjust glyph shapes. The glyph "A" contains 16 vertical bars that are repositioned to render a Wolfenstein-style first-person view by ray marching against a tile map stored in the font's memory. Player coordinates are passed through CSS font-variation-settings while JavaScript handles movement and game logic, using the font as an unconventional rendering layer. The implementation totals approximately 6.5 KB of bytecode.

written from the facts on this page · September 2026

From the sources

In the maker’s words, at launch

TrueType fonts have a hinting VM that grid-fits glyphs. It has a stack, storage area, conditionals, function calls, and it turns out it's Turing-complete. So I built a raycasting engine in the hinting bytecode. The glyph "A" in the font has 16 vertical bar contours. The hinting program reads player coordinates from font variation axes via GETVARIATION, does DDA ray marching against a tile map in the storage area, and repositions bar heights with SCFS. It ends up looking like a crude Wolfenstein-style view. Small visuzlization: https://github.com/4RH1T3CT0R7/ttf-doom/blob/main/docs/media... About 6.5 KB of bytecode total - 13 functions, 795 storage slots, sin/cos lookup tables. JS handles movement, enemies, and shooting, then passes the coordinates to the font through CSS font-variation-settings. The font is basically a weird GPU. The weirdest parts: - TrueType MUL does (ab)/64, not ab. So 1*4=0. The DIV instruction is equally cursed. - No WHILE loops. Everything compiles to recursive FDEFs. FreeType limits call depth to ~64 frames. - SVTCA[0] is Y, SVTCA[1] is X. Of course. There's a small compiler behind this - lexer, parser, codegen - that turns a C-like DSL into TT assembly. Demo GIF: https://github.com/4RH1T3CT0R7/ttf-doom/blob/main/docs/media... Live demo: https://4rh1t3ct0r7.github.io/ttf-doom/ (Chrome/Edge, WASD+arrows, Space to shoot, Tab for debug overlay) This is a DOOM-style raycaster, not a port of the original engine - similar to DOOMQL and the Excel DOOM. The wall rendering does happen in the font's hinting VM though. Press Tab in the demo to watch the font variation axes change as you move.

More life & fun this month

the category →
  • TL

    Life & fun · 10d ago · louisabraham.github.io

  • Photosynthesis fires two of your iPhone

    Life & fun · 28d ago · photosynthesis.camera

  • SoloUno310

    Take control of hair pulling, nail biting & skin picking

    Life & fun · 28d ago · solouno.io

  • Scroll through all 43,252,003,274,489,856,000 reachable Rubik's Cube permutations.

    Life & fun · 26d ago · everycube.alen.is

  • The Interactive 3D Encyclopedia

    Life & fun · 21d ago · expeditione.fun

  • Hi HN, I built Eigendrum, a web tool that solves the 2D wave equation for arbitrary shapes so you can hear what they sound like as drums. How it works: * Solves -∇²u = λu using finite element analysis (Kφ = λMφ) on a triangle mesh. * Validated to <0.1% error against closed-form solutions for circles (Bessel zeros) and rectangles. * Sound model factors in strike location, Rayleigh damping, and mallet width. * Includes Kac drums I & II to demonstrate identical sound spectra from different geometries. * No frameworks, build steps, or dependencies. Repo and tests:…

    Life & fun · 27d ago · baselashraf81.github.io

Launched alongside, April 2026

the whole month →
  • Brila1,367

    One-page websites from real Google Maps reviews

    AI · Apr 2026 · brila.ai

  • AG

    Thought the resources for GPU arch were lacking, so here we are

    Life & fun · Apr 2026 · jaso1024.com

  • IB

    Built a ~9M param LLM from scratch to understand how they actually work. Vanilla transformer, 60K synthetic conversations, ~130 lines of PyTorch. Trains in 5 min on a free Colab T4. The fish thinks the meaning of life is food. Fork it and swap the personality for your own character.

    AI · Apr 2026 · github.com

  • AI meeting notes: now bot-free, in ChatGPT & Claude + more

    AI · Apr 2026 · fathom.ai

  • BC

    Life & fun · Apr 2026 · sam-burns.com

  • IB

    With social media and now AI, its important to keep the indie web alive. There are many people who write frequently. Blogosphere tries to highlight them by fetching the recent posts from personal blogs across many categories. There are two versions: Minimal (HN-inspired, fast, static): https:&#x2F;&#x2F;text.blogosphere.app&#x2F; Non-minimal: https:&#x2F;&#x2F;blogosphere.app&#x2F; If you don't find your blog (or your favorite ones), please add them. I will review and approve it.

    AI · Apr 2026 · text.blogosphere.app