← Back to Product Feed

Hacker News Show HN: TTF-DOOM – A raycaster running inside TrueType font hinting

A demonstration of TrueType font hinting VM's Turing-completeness by implementing a DOOM-style raycaster within its bytecode, effectively using the font as a 'weird GPU.'

51
Traction Score
12
Discussions
Apr 7, 2026
Launch Date
View Origin Link

Product Positioning & Context

AI Executive Synthesis
A demonstration of TrueType font hinting VM's Turing-completeness by implementing a DOOM-style raycaster within its bytecode, effectively using the font as a 'weird GPU.'
TTF-DOOM is a technical curiosity demonstrating the unexpected computational capabilities of TrueType font hinting VMs. While impressive as a proof-of-concept for Turing-completeness in an unconventional environment, it holds no direct B2B SaaS market implications. This project highlights extreme ingenuity in low-level programming and virtual machine exploitation but does not address commercial pain points, market trends, or offer a scalable product. Its value is purely academic and recreational, showcasing the hidden power within ubiquitous technologies rather than creating a viable business offering.
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.
TrueType font hinting VM raycaster Turing-complete hinting bytecode glyph vertical bar contours GETVARIATION DDA ray marching

Related Ecosystem & Alternatives

Discover adjacent products, open-source repositories, and developer tools sharing similar technical architecture.

Deep-Dive FAQs

What is TTF-DOOM – A raycaster running inside TrueType font hinting?
TTF-DOOM – A raycaster running inside TrueType font hinting is analyzed by our AI as: A demonstration of TrueType font hinting VM's Turing-completeness by implementing a DOOM-style raycaster within its bytecode, effectively using the font as a 'weird GPU.'. It focuses on TTF-DOOM is a technical curiosity demonstrating the unexpected computational capabilities of TrueType font hinting VMs. While impressive as a proof...
Where did TTF-DOOM – A raycaster running inside TrueType font hinting originate?
Data for TTF-DOOM – A raycaster running inside TrueType font hinting was aggregated directly from the Hacker News community ecosystem, representing raw developer and early-adopter sentiment.
When was TTF-DOOM – A raycaster running inside TrueType font hinting publicly launched?
The initial public indexing or launch date for TTF-DOOM – A raycaster running inside TrueType font hinting within our tracked developer communities was recorded on April 7, 2026.
How popular is TTF-DOOM – A raycaster running inside TrueType font hinting?
TTF-DOOM – A raycaster running inside TrueType font hinting has achieved measurable traction, logging over 51 traction score and facilitating 12 recorded discussions or engagements.
Which technical categories define TTF-DOOM – A raycaster running inside TrueType font hinting?
Based on metadata extraction, TTF-DOOM – A raycaster running inside TrueType font hinting is categorized under topics such as: TrueType font hinting VM, raycaster, Turing-complete, hinting bytecode.
What are some commercial alternatives to TTF-DOOM – A raycaster running inside TrueType font hinting?
Our semantic intelligence engine identifies potential commercial alternatives in the SaaS space, such as Bluedot 2.1, which offers overlapping value propositions.
How does the creator describe TTF-DOOM – A raycaster running inside TrueType font hinting?
The original author or development team describes the product as follows: "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 hint..."

Community Voice & Feedback

kevin_thibedeau • Apr 7, 2026
> TrueType MUL does (ab)/64, not abThis is how fixed-point arithmetic works. For multiplication of Q26.6 numbers you clear the squared scaling factors (2^6) by dividing/shifting one of them away.
tadfisher • Apr 6, 2026
You are (or I suspect your LLM is) not correct about Doom using a raycasting engine. Wolfenstein fits that description, yes. Doom rather famously introduced BSP for level data and it draws sorted polygons front-to-back without ray-marching.
tombert • Apr 6, 2026
I tried playing the demo, and it was just green bars for me. The walls didn't scale up or shrink, it was just a bunch of solid static green bars.The enemies did scale up and shrink as I got closer, and the minimap worked.Tried with Brave on Linux, and Google Chrome on macOS.
emanuele-em • Apr 6, 2026
Ok the MUL workaround got me. MUL does (ab)/64 so you have to DIV first to get a64, then MUL finally gives you a*b. And recursive FDEFs because there's no WHILE? All in 6.5KB? What kind of frame rate do you actually get out of this?

Discovery Source

Hacker News Hacker News

Aggregated via automated community intelligence tracking.

Tech Stack Dependencies

No direct open-source NPM package mentions detected in the product documentation.

Media Tractions & Mentions

No mainstream media stories specifically mentioning this product name have been intercepted yet.

Deep Research & Science

No direct peer-reviewed scientific literature matched with this product's architecture.