Mitchell Hashimoto
4a3e2b35b9
terminal: parse table needs to have room for all chars
2022-12-14 21:10:22 -08:00
Mitchell Hashimoto
36c6e95dfc
terminal: ignore invalid C0 escape codes
2022-12-14 20:57:31 -08:00
Mitchell Hashimoto
c01a9f583f
zero-width chars are ignored if they're at col 0
...
This can cause a crash, and is impossible since zero-width chars are
always attached to a prior character. Word-wrapping doesn't come into
play here because this check happens prior to the wrapping.
2022-12-14 19:20:05 -08:00
Mitchell Hashimoto
05a5cfddb5
font: web canvas sprite trapezoid
2022-12-13 22:22:00 -08:00
Mitchell Hashimoto
c391d0f3de
font: web canvas sprite font can composite
2022-12-13 22:17:27 -08:00
Mitchell Hashimoto
bf054e5b44
font: web canvas sprite font can write to atlas
2022-12-13 22:01:13 -08:00
Mitchell Hashimoto
b48a0db040
font: web canvas rect sprite func
2022-12-13 21:46:33 -08:00
Mitchell Hashimoto
c9755f5fd1
font: mostly empty web canvas sprite renderer, but compiles
2022-12-13 21:19:40 -08:00
Mitchell Hashimoto
68e697dcbe
font: remove getData from canvas
2022-12-13 21:09:09 -08:00
Mitchell Hashimoto
ead8610604
font: Box font uses canvas abstraction
2022-12-13 21:08:45 -08:00
Mitchell Hashimoto
b21e18a9e6
font: start converting Box font to our abstract canvas interface
2022-12-13 16:16:56 -08:00
Mitchell Hashimoto
a87b21dbee
font: mac should use freetype rasterizer by default
2022-12-12 22:12:11 -08:00
Mitchell Hashimoto
c8252133a3
update zig version
2022-12-12 22:10:52 -08:00
Mitchell Hashimoto
bc74033ad6
face: web canvas can render grapheme clusters
2022-12-12 21:40:54 -08:00
Mitchell Hashimoto
a1dda2c37f
font: faceFromIndex returns a pointer to the face
2022-12-12 21:34:34 -08:00
Mitchell Hashimoto
c06ca04a1a
font: web canvas tracks glyph indexes for grapheme clusters
2022-12-12 11:31:30 -08:00
Mitchell Hashimoto
2b3478ce3d
font: start web canvas shaping, we perform grapheme clustering
2022-12-11 22:12:12 -08:00
Mitchell Hashimoto
35000bced1
font: shaper test should decode unicode codepoints
2022-12-08 12:42:09 -08:00
Mitchell Hashimoto
0c9a9b1f91
font: web canvas face has to render to check presentation for cp
...
Since we have no way to detect our presentation (text/emoji), we need to
actually render the glyph that is being requested to double-check that
the glyph matches our supported presentation.
We do this because the browser will render fallback fonts for a glyph if
it can't find one in the named font.
2022-12-07 19:20:04 -08:00
Mitchell Hashimoto
f53d9fb704
font: web canvas shaper yields runs
2022-12-07 18:29:49 -08:00
Mitchell Hashimoto
dd71456f35
font: shapers init with allocator since web canvas needs to init buffer
2022-12-06 13:44:55 -08:00
Mitchell Hashimoto
760f0c057c
renderer: use new shaper structs
2022-12-06 13:25:52 -08:00
Mitchell Hashimoto
f0b7fbecee
font: extract common shaper elements out
2022-12-06 13:23:53 -08:00
Mitchell Hashimoto
e3c18f3f51
font: move shaper into comptime interface
2022-12-06 11:20:37 -08:00
Mitchell Hashimoto
6aa212707e
font: web canvas can render emoji
2022-12-06 10:55:42 -08:00
Mitchell Hashimoto
41cbc1a323
wasm: show color atlas in example web app
2022-12-05 21:33:54 -08:00
Mitchell Hashimoto
10f708ee65
wasm: export terminal core API
2022-12-05 21:27:20 -08:00
Mitchell Hashimoto
5993528f33
font: GroupCache is wasm compatible
2022-12-05 21:01:56 -08:00
Mitchell Hashimoto
62990bb33e
font: Group is now wasm-compatible
2022-12-05 20:52:03 -08:00
Mitchell Hashimoto
aaa0d46b5d
font: web canvas doesn't support discovery
2022-12-05 20:37:17 -08:00
Mitchell Hashimoto
5291501251
font: DeferredFace is wasm-compatible
2022-12-05 20:28:50 -08:00
Mitchell Hashimoto
2a74330911
font: begin making Group work with wasm
2022-12-05 16:08:20 -08:00
Mitchell Hashimoto
d2afddb7e2
font: fix some JS memory leaks
2022-12-05 15:45:31 -08:00
Mitchell Hashimoto
ed4e8c36b0
font: add 1 to the canvas glyph to avoid clipping
2022-12-05 15:37:55 -08:00
Mitchell Hashimoto
25f2f1a652
font: fix glyph offset calculations for render
2022-12-05 15:25:09 -08:00
Mitchell Hashimoto
5e9dd02eab
font: add method for drawing atlas to canvas
2022-12-05 15:01:34 -08:00
Mitchell Hashimoto
84f6f37450
face: web canvas glyph rendering appears to work!
2022-12-05 14:28:10 -08:00
Mitchell Hashimoto
19e326dab6
font: working on rendering glyphs in canvas
2022-12-05 10:54:40 -08:00
Mitchell Hashimoto
df302fc2b6
calculate font metrics via canvas
2022-12-04 22:01:58 -08:00
Mitchell Hashimoto
37f00ac725
don't export coretext/freetype
2022-12-04 13:19:29 -08:00
Mitchell Hashimoto
c48d8cd151
hook up logging to wasm, example uses new zig-js package
2022-12-04 13:16:54 -08:00
Mitchell Hashimoto
437f1772f1
logging works for wasm
2022-12-04 12:29:11 -08:00
Mitchell Hashimoto
940828ed97
font: web canvas creates a canvas element
2022-12-03 22:11:01 -08:00
Mitchell Hashimoto
c32219554a
blank out web canvas impl
2022-12-01 13:02:17 -08:00
Mitchell Hashimoto
b858aea124
Start scaffolding web_canvas backend
2022-12-01 13:02:17 -08:00
Mitchell Hashimoto
3a4d881444
wasm allocator, consider "host-owned" pointers
2022-12-01 13:02:17 -08:00
Mitchell Hashimoto
24cc01e055
move wasm main to src/, export an Atlas API
...
We don't need the Atlas API for wasm at all, but its a good way to test
things work incrementally and its a pretty cool thing to have as a wasm
library really.
2022-12-01 13:02:17 -08:00
Mitchell Hashimoto
f871630fa4
move Atlas to font
2022-11-28 10:35:46 -08:00
Mitchell Hashimoto
2796a0b964
font: when resizing a glyph, scale metrics by same ratio
...
We rely on the top/left offset to position the glyph properly. When we
were resizing, we weren't properly recalculating this offset which led
to some glyphs slightly (or majorly) off depending on how much they
resized.
2022-11-27 22:06:25 -08:00
Mitchell Hashimoto
29cc8312d5
revert
2022-11-27 21:45:10 -08:00