Repository navigation
Order the corners of a COLR face's box before it bounds a paint - #739
Merged
Merged
Conversation
A paint that no outline or clip box bounds covers the face's box, which Colr::read took from `head` as read. A damaged face whose `head` gives an axis's minimum above its maximum therefore inked a box with its corners swapped, which the `colr` fuzz target's invariant caught. Closes #738 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #738
A COLR v1 paint that no outline or clip box bounds covers the face's box,
which
Colr::readtook from theheadtable as read. A damaged face whoseheadgives an axis's minimum above its maximum therefore inked, and set asthe glyph's ink, a box with its corners swapped. The
colrfuzz target'sinvariant
ink[0] <= ink[2] && ink[1] <= ink[3]caught it in a 30-minutelocal run on
main(fb4aba35). The face box now orders its corners whenit is read.
The test face generator gains the
colr-unclippedkind, whose four colourglyphs paint a bare
PaintSolidwith nothing around it. Only that face wasgenerated; the other test faces are unchanged.
Acceptance
headbox is inverted,and the ink of each glyph that paints orders its corners:
a_paint_that_nothing_bounds_inks_the_face_box_corners_in_order, oncolour-colr-unclipped.ttf, whoseheadreads (900, 800, 100, 0). Onmainit fails with the ink[900, 800, 100, 0].colrfuzz input that failed no longer fails:cargo +nightly fuzz run colr crash-025d4d96…executes it in 8 ms.Checks
python3 tools/check.py: all passed.🤖 Generated with Claude Code