Replace stb_truetype with FreeType for proper text outline rendering

- Add -sUSE_FREETYPE=1 to Emscripten build flags
- Extend Font class with FT_Library, FT_Face, and FT_Stroker handles
- Rewrite FontAtlas to use FreeType with on-demand stroked glyph loading
- Text outlines now use FT_Stroker for vector-based stroking before
  rasterization, eliminating gaps at corners with thick outlines
- Use glTexSubImage2D for incremental atlas updates (major perf fix)
- Disable canvas border in shell.html per Emscripten docs (alignment fix)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
John McCardle 2026-01-31 16:45:10 -05:00
commit 67aa413a78
5 changed files with 538 additions and 128 deletions

View file

@ -43,7 +43,7 @@
min-width: 300px;
}
#canvas {
border: 2px solid #e94560;
/* border: 2px solid #e94560; -- disabled per Emscripten docs, causes alignment issues */
background: #000;
display: block;
max-width: 100%;
@ -56,7 +56,6 @@
outline: none;
}
#canvas:focus {
border-color: #4ecca3;
box-shadow: 0 0 10px rgba(78, 204, 163, 0.5);
}
.repl-panel {