render: a natural-size image placement rescales when the cell size changes #19
Labels
No labels
Area/ci
Area/cli
Area/client
Area/client-core
Area/daemon
Area/deps
Area/docs
Area/grid
Area/manual
Area/nix
Area/protocol
Area/pty
Area/render
Area/shaping
Area/skills
Area/transport
Area/vt
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Performance
Kind/Security
Kind/Testing
perf-regression-accepted
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Blocked
Status
Need More Info
Status
Upstream
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
felis-terminal/felis#19
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
For a placement without
c=/r=, the daemon resolves the natural cell extent once, with the cell size at placement time (resolve_natural_cells,crates/felis-daemon/src/graphics.rs~1296), and sends thosecols/rowsto the client. When the cell size later changes,quad_for_placement(crates/felis-render-wgpu/src/lib.rs~1883) no longer findscols == ceil(px / cell)and scales the image intocols × cwbyrows × ch. With no mipmaps, a downscale aliases visibly. kitty recomputes the extent of such placements against the new cell size (grman_rescale), so they stay at native pixels.Every cell-size change triggers it: the
font_sizezoom chords, a config font change, a scale-factor change, or windows with different cell sizes viewing one session.Repro: with 7×18 cells,
timg -pk image.png(806×426 drawn at native size), thenctrl+shift+-: the cell becomes 7×17 and the image is squashed to 408 px tall with jagged text.ctrl+shift+=(8×19) stretches it to ~928 px wide.The same applies to Unicode-placeholder virtual placements whose extent is resolved naturally (
placeholder_grid_extent).