Commit Graph

16 Commits

Author SHA1 Message Date
Qwerasd
4f9d7c565a font/sprite: add explicit underline cursor
Resolves #7651 - uses cursor thickness rather than underline thickness.
2025-06-30 11:16:47 -06:00
Qwerasd
1377e6d225 font/sprite: rework sprite font drawing
This is a fairly large rework of how we handle the sprite font drawing.
Drawing routines are now context-less, provided only a canvas and some
metrics. There is now a separate file per unicode block / PUA area.
Sprites are now drawn on canvases with an extra quarter-cell of padding
on each edge, and automatically cropped when sent to the atlas, this
allows sprites to extend past cell boundaries which makes it possible to
have, for example, diagonal box drawing characters that connect across
cell diagonals instead of being pinched in.

Most of the sprites the code is just directly ported from the old code,
but I've rewritten a handful. Moving forward, I'd like to rewrite more
of these since the way they're currently written isn't ideal.

This rework, in addition to improving the packing efficiency of sprites
on the atlas, and allowing for out-of-cell drawing, will make it a lot
easier to add new sprites in the future, since all it takes now is to
add a single function and an import (if it's a new file).

I reworked the regression/change testing to be more robust as well, it
now covers all sprite glyphs (except non-codepoint ones) and does so at
4 different sizes. Addition/removal of glyphs will no longer create diff
noise in the generated diff image, since the position in the image of
each glyph is now fixed.
2025-06-30 11:16:47 -06:00
Marijn Besseling
4496e7d314 implement overline decoration (SGR 53/55) 2024-10-21 08:36:08 -04:00
Qwerasd
d38d0f30c4 font/sprite: replace pixman with z2d, extend Box coverage
More complete coverage of the Symbols For Legacy Computing block,
including characters from Unicode 16.0.

Pixman and the web canvas impl for Canvas have been removed in favor of
z2d for drawing, since it has a nicer API with more powerful methods,
and is in Zig with no specific platform optimizations so should compile
to wasm no problem.
2024-10-14 17:50:49 -04:00
Mitchell Hashimoto
14e3f43db2 font: yeet usingns 2024-08-16 10:47:15 -07:00
Mitchell Hashimoto
0f348e809e font: strikethrough uses sprite rendering 2024-04-22 10:25:33 -07:00
Mitchell Hashimoto
56f8e39e5b Update zig, mach, fmt 2023-06-25 11:08:20 -07:00
Mitchell Hashimoto
cf519bcd75 Use procedurally generated sprites for cursors rather than shaders 2023-03-04 15:14:10 -08:00
Mitchell Hashimoto
25cf4eac43 don't need to set all sprite values in enum 2023-03-04 14:45:34 -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
bfc657395a curly underlines 2022-11-27 16:11:15 -08:00
Mitchell Hashimoto
fee681ac78 dashed underlines 2022-11-27 15:44:12 -08:00
Mitchell Hashimoto
6a32a30a16 font: render dotted underlines 2022-11-27 15:39:18 -08:00
Mitchell Hashimoto
278668c953 font: draw single and double underlines as sprites 2022-11-27 15:14:49 -08:00
Mitchell Hashimoto
28d386967d font: introduce Canvas, start converting Box 2022-11-27 13:54:43 -08:00
Mitchell Hashimoto
b34e336c5c rearrange box rendering to prepare for more sprite drawing 2022-11-27 10:17:12 -08:00