Skip to content

Finish VARC through Face: nested reset, self-reference, a shared work budget, short delta sets #296

Closed

Description

@albedosehen

Follow-up to #291 and #293. These need src/face/outlines.rs, which #289 (shaping cache) is changing, so they wait for #289 to land.

  • A VARC component with RESET_UNSPECIFIED_AXES one composite down inherits its parent's coords when drawn through Face::glyph_outline_at_coords, instead of starting from the font's. Pass the top-level coords through glyph_outline_at_coords_inner and call Varc::composite_with_font_coords (added in Fix the known JPEG, COLRv1, VARC and morx bugs #293).
  • A VARC component that names its own glyph recurses until the depth cap and fails; HarfBuzz draws the plain outline. Skip VARC when a component's glyph equals its parent's.
  • The VARC work budget added in Fix the known JPEG, COLRv1, VARC and morx bugs #293 is per composite_with_font_coords call, and one Face glyph draw can make up to 2,049 such calls. Share one budget across the whole Face call.
  • A VARC delta set that ends before it fills its values adds nothing, where HarfBuzz adds what it finds (up to 2.19 units off on a crafted font). Update the sigilbuzz-subset test that encodes the current behavior.

Activity

  1. added this to the 0.24.0 milestone on Oct 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions