<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: 4RH1T3CT0R</title><link>https://news.ycombinator.com/user?id=4RH1T3CT0R</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 09 Apr 2026 09:44:00 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=4RH1T3CT0R" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by 4RH1T3CT0R in "Show HN: TTF-DOOM – A raycaster running inside TrueType font hinting"]]></title><description><![CDATA[
<p>Thanks!</p>
]]></description><pubDate>Tue, 07 Apr 2026 07:55:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=47672017</link><dc:creator>4RH1T3CT0R</dc:creator><comments>https://news.ycombinator.com/item?id=47672017</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47672017</guid></item><item><title><![CDATA[New comment by 4RH1T3CT0R in "Show HN: TTF-DOOM – A raycaster running inside TrueType font hinting"]]></title><description><![CDATA[
<p>Then only windows :(</p>
]]></description><pubDate>Tue, 07 Apr 2026 07:51:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=47671981</link><dc:creator>4RH1T3CT0R</dc:creator><comments>https://news.ycombinator.com/item?id=47671981</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47671981</guid></item><item><title><![CDATA[New comment by 4RH1T3CT0R in "Show HN: TTF-DOOM – A raycaster running inside TrueType font hinting"]]></title><description><![CDATA[
<p>technically yes, most constrained-platform ports (as I remember) do the same though (DOOMQL, the TI-84 version, the Excel one) since BSP is hard to fit into a limited VM. "DOOM-style" here is more about the genre than the rendering technique</p>
]]></description><pubDate>Tue, 07 Apr 2026 04:14:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=47670678</link><dc:creator>4RH1T3CT0R</dc:creator><comments>https://news.ycombinator.com/item?id=47670678</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47670678</guid></item><item><title><![CDATA[New comment by 4RH1T3CT0R in "Show HN: TTF-DOOM – A raycaster running inside TrueType font hinting"]]></title><description><![CDATA[
<p>This is a FreeType issue - it uses auto-hinter by default on Linux and doesn't run the TT bytecode. No fix from CSS side unfortunately. Works on Windows/macOS where DirectWrite/CoreText run the bytecode</p>
]]></description><pubDate>Tue, 07 Apr 2026 04:06:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=47670643</link><dc:creator>4RH1T3CT0R</dc:creator><comments>https://news.ycombinator.com/item?id=47670643</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47670643</guid></item><item><title><![CDATA[New comment by 4RH1T3CT0R in "Show HN: TTF-DOOM – A raycaster running inside TrueType font hinting"]]></title><description><![CDATA[
<p>Frame rate depends on the browser - Chrome gives around 30-60fps on my machine, but the bottleneck is actually Chrome deciding whether to re-run hinting at all (had to add axis jitter to force it). The TT bytecode itself executes fast, it's maybe a few thousand instructions per frame<p><pre><code>  The recursive FDEF thing is the worst part honestly. Every while loop is a function that calls itself, and FreeType kills you at ~64 deep. So you're constantly juggling how many columns vs how many ray steps you can afford</code></pre></p>
]]></description><pubDate>Mon, 06 Apr 2026 21:26:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=47667378</link><dc:creator>4RH1T3CT0R</dc:creator><comments>https://news.ycombinator.com/item?id=47667378</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47667378</guid></item><item><title><![CDATA[Show HN: TTF-DOOM – A raycaster running inside TrueType font hinting]]></title><description><![CDATA[
<p>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.<p>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.<p>Small visuzlization: <a href="https://github.com/4RH1T3CT0R7/ttf-doom/blob/main/docs/media/transform.gif" rel="nofollow">https://github.com/4RH1T3CT0R7/ttf-doom/blob/main/docs/media...</a><p>About 6.5 KB of bytecode total - 13 functions, 795 storage slots, sin/cos lookup tables.<p>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.<p>The weirdest parts:
- TrueType MUL does (a<i>b)/64, not a</i>b. 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.<p>There's a small compiler behind this - lexer, parser, codegen - that turns a C-like DSL into TT assembly.<p>Demo GIF: <a href="https://github.com/4RH1T3CT0R7/ttf-doom/blob/main/docs/media/demo.gif" rel="nofollow">https://github.com/4RH1T3CT0R7/ttf-doom/blob/main/docs/media...</a><p>Live demo: <a href="https://4rh1t3ct0r7.github.io/ttf-doom/" rel="nofollow">https://4rh1t3ct0r7.github.io/ttf-doom/</a> (Chrome/Edge, WASD+arrows, Space to shoot, Tab for debug overlay)<p>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.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47665685">https://news.ycombinator.com/item?id=47665685</a></p>
<p>Points: 66</p>
<p># Comments: 12</p>
]]></description><pubDate>Mon, 06 Apr 2026 19:25:39 +0000</pubDate><link>https://github.com/4RH1T3CT0R7/ttf-doom</link><dc:creator>4RH1T3CT0R</dc:creator><comments>https://news.ycombinator.com/item?id=47665685</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47665685</guid></item></channel></rss>