shaping: build swash without overflow checks in dev #228

Closed
natsukium wants to merge 1 commit from shaping/swash-dev-overflow into main
Owner

A debug client panicked in swash 0.2.10 (still the latest release) when it shaped a non-flag regional-indicator pair such as 🇦🇦. A GSUB multiple substitution in Noto Color Emoji maps a glyph to an empty sequence, and swash computes seqlen - 1; its extend only adds count to usize fields, so the release-build wrap is the intended decrement.

  • Cargo.toml: overflow-checks = false for swash in the dev profile (test and mutants inherit it), so dev and test builds match what ships.
  • felis-shaping: a test that shapes U+1F1E6 U+1F1E6 against the pinned test fonts; it panicked before this change.

Closes #22

A debug client panicked in swash 0.2.10 (still the latest release) when it shaped a non-flag regional-indicator pair such as 🇦🇦. A GSUB multiple substitution in Noto Color Emoji maps a glyph to an empty sequence, and swash computes `seqlen - 1`; its `extend` only adds `count` to `usize` fields, so the release-build wrap is the intended decrement. - `Cargo.toml`: `overflow-checks = false` for swash in the dev profile (test and mutants inherit it), so dev and test builds match what ships. - `felis-shaping`: a test that shapes U+1F1E6 U+1F1E6 against the pinned test fonts; it panicked before this change. Closes #22
shaping: build swash without overflow checks in dev
Some checks failed
fuzz / cargo fuzz nightly long-run (pull_request) Has been skipped
darwin / detect relevant changes (pull_request) Successful in 9s
darwin / darwin docs-only no-op (pull_request) Has been skipped
windows / detect relevant changes (pull_request) Successful in 24s
windows / windows docs-only no-op (pull_request) Has been skipped
bench / instruction-count regression gate (pull_request) Successful in 1m18s
darwin / build felis (aarch64-darwin) (pull_request) Successful in 2m40s
fuzz / cargo fuzz smoke (per target) (pull_request) Successful in 2m2s
windows / cargo nextest (Windows) (pull_request) Successful in 3m40s
windows / frontend smoke (Windows) (pull_request) Successful in 1m2s
pr / nix flake check (pull_request) Successful in 2m7s
pr / cargo build / clippy / test / deny (pull_request) Failing after 2m31s
pr / wire schema is compatible with the base (pull_request) Successful in 3s
pr / frontend smoke (x86_64-linux) (pull_request) Successful in 45s
windows / cargo clippy (Windows cross) (pull_request) Successful in 17s
3785e846d9
swash 0.2.10, still the latest release, computes `seqlen - 1` when a
GSUB multiple substitution maps a glyph to an empty sequence. Noto Color
Emoji has such a rule, so a debug client panicked on a non-flag
regional-indicator pair such as U+1F1E6 U+1F1E6. Release builds wrap the
value into the intended decrement, so turning overflow checks off for
swash alone makes dev and test builds match what ships.

Closes #22

Assisted-by: Claude Code
natsukium closed this pull request 2026-10-22 11:00:10 +09:00
Some checks failed
fuzz / cargo fuzz nightly long-run (pull_request) Has been skipped
darwin / detect relevant changes (pull_request) Successful in 9s
Required
Details
darwin / darwin docs-only no-op (pull_request) Has been skipped
Required
Details
windows / detect relevant changes (pull_request) Successful in 24s
Required
Details
windows / windows docs-only no-op (pull_request) Has been skipped
Required
Details
bench / instruction-count regression gate (pull_request) Successful in 1m18s
darwin / build felis (aarch64-darwin) (pull_request) Successful in 2m40s
Required
Details
fuzz / cargo fuzz smoke (per target) (pull_request) Successful in 2m2s
windows / cargo nextest (Windows) (pull_request) Successful in 3m40s
Required
Details
windows / frontend smoke (Windows) (pull_request) Successful in 1m2s
Required
Details
pr / nix flake check (pull_request) Successful in 2m7s
Required
Details
pr / cargo build / clippy / test / deny (pull_request) Failing after 2m31s
Required
Details
pr / wire schema is compatible with the base (pull_request) Successful in 3s
Required
Details
pr / frontend smoke (x86_64-linux) (pull_request) Successful in 45s
Required
Details
windows / cargo clippy (Windows cross) (pull_request) Successful in 17s
Required
Details

Pull request closed

Sign in to join this conversation.
No reviewers
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
felis-terminal/felis!228
No description provided.