Draw a keycap emoji as one keycap glyph #32
No reviewers
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!32
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/keycap-vs16"
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?
Closes #30.
A keycap emoji (
#️⃣,1️⃣) drew as a tiny#beside an empty keycap. swash 0.2.10 drops VS15/VS16 only after an emoji base; after#it shapes the VS16 as a.notdefwith a full advance, which sits between#and U+20E3 during GSUB and splits the font's keycap ligature into three glyphs. The cluster fit then shrank all three into two cells.Shaper::shape_clusternow shapes the cluster without the variation selectors (U+FE00..FE0F, U+E0100..E01EF) that the chosen face does not map; the base is always kept, and a selector the face maps directly stays.text-shaping.mdname the revisit trigger (swash gaining variant mapping).Tests: the keycap shapes to the same single glyph as
#⃣on the emoji face (three glyphs[4, 0, 21]without the fix); a keycap cell needs no fit (fit_px5 without the fix, 0 with it); a unit test covers the filter (IVS, FE00, mapped selector, lone selector).Before (top) / after (bottom), offscreen render with Moralerspace Neon HW: the keycaps reach full size; ❤️ ⭐︎ 👍🏻 and 葛󠄀 ≩︀ are unchanged.