Repository navigation
Conversation
behdad
force-pushed
the
skera-color-bounds
branch
from
October 10, 2026 18:08
9a8f7b2 to
74e4fba
Compare
behdad
force-pushed
the
skera-color-bounds
branch
from
October 12, 2026 03:19
74e4fba to
cd9fb39
Compare
behdad
force-pushed
the
skera-color-bounds
branch
2 times, most recently
from
October 12, 2026 20:53
3d3171a to
e344763
Compare
behdad
force-pushed
the
skera-color-bounds
branch
from
October 12, 2026 22:04
e344763 to
07eb108
Compare
behdad
force-pushed
the
skera-color-bounds
branch
from
October 14, 2026 23:11
07eb108 to
afdb403
Compare
Propagate reviewed fixes and repaired ancestry through #2283. Assisted-by: OpenAI Codex
This tree is unchanged; the replacement evaluator already handles missing variation rows. Preserve the repaired parent ancestry. Assisted-by: OpenAI Codex
Preserve reviewed parent ancestry and each PR's existing feature changes. Assisted-by: OpenAI Codex
Preserve the independently validated TrueType changes and all feature code. Assisted-by: OpenAI Codex
Keep empty record counts and allocation bounds at each PR boundary. Assisted-by: OpenAI Codex
Move the existing #2338 correction into the width-reduction PR. Assisted-by: OpenAI Codex
Reject unsupported versions and oversized arrays before ownership. Keep current HarfBuzz references with complete feature parameters. Assisted-by: OpenAI Codex
Preserve zero float32 products and reject subnormal condition pinning. Assisted-by: OpenAI Codex
Bound pairwise work after deduplication, avoid temporary pair vectors, and keep the corrected HarfBuzz column order at introduction. Assisted-by: OpenAI Codex
Contributor
Author
|
Self-review in progress: full-instance alpha clamping and preserving an out-of-range but representable partial base are appropriate; rotation/skew wrapping by 720 degrees preserves their periodic effect within F2Dot14. The new angle helper still adds 0.5 in float32 before flooring. It needs the same widened rounding boundary now moved into #2282. I will add a condition-independent scalar-product case that produces 0.5's immediate float32 predecessor, then use the shared helper. I am also checking partial alpha values beyond F2Dot14's storage range; keeping a base such as 1.5 does not by itself establish that larger intermediate values survive serialization. |
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.
Full COLRv1 instances must clamp alpha to [0, 1], while rotation and skew angles must preserve their periodic effect when variation takes them outside the stored F2Dot14 range. Skera previously used the same signed-width clamp for all of these fields, changing rotations above 360 degrees.
Clamp solid and gradient alpha only after full instancing. Preserve the unclamped base in partial instances because retained axes can bring it back into range. Normalize rotation and skew angles modulo 720 degrees before narrowing to F2Dot14, matching HarfBuzz's periodic representation.
Validation: focused color instancing tests, clippy, rustfmt, and typos pass. A synthetic two-axis font checks positive and negative alpha, gradient stops, and partial-then-full recovery of a base alpha of 1.5. A fresh HarfBuzz reference checks rotations above the stored angle range. The new angle test fails before this change.
The synthetic font was generated with fontTools FontBuilder; its weight and width rows respectively increase and decrease the first alpha. It is also used for a HarfBuzz regression fix.
Stacked on #2282.
Readers use read-fonts directly. write-fonts handles font assembly and owned table rebuilding; Skera retains its direct serializers and repacker. There is no separate generated Skera table tree.