[fonttools/fonttools] d83ecf: [instancer] Update avar2 design doc for moved-defa...

0 views
Skip to first unread message

Behdad Esfahbod

unread,
Jul 1, 2026, 3:00:26 PMJul 1
to fontto...@googlegroups.com
Branch: refs/heads/avar2-instancing
Home: https://github.com/fonttools/fonttools
Commit: d83ecfb8991704be252d52b1e8b41862064ffbde
https://github.com/fonttools/fonttools/commit/d83ecfb8991704be252d52b1e8b41862064ffbde
Author: Behdad Esfahbod <beh...@behdad.org>
Date: 2026-07-01 (Wed, 01 Jul 2026)

Changed paths:
M partial-instancing-avar2-design.md

Log Message:
-----------
[instancer] Update avar2 design doc for moved-default kink and shared rows

The design doc still described the pre-fix offset-compensation model
(a single kink at z=0, encoded as a fixed empty-bias + two tents) and
claimed the inverse renormalization is "always two-piece linear". Two
fixes since made that stale:

- Moved-default kink (commit 3382ab8): when a partial instance moves an
axis default, inv_renorm gains a second kink at z_old (the new-space
image of the old default). The code now collects breakpoints
{-1, 0, +1, z_old} and synthesizes tents with a 1-D VariationModel,
reducing to the classic two tents when the default is fixed.

- Shared-row privatization (commit 0c0efb8): VarIdxMap may map several
axes to one IVS delta row; offset compensation must privatize such
rows before writing, or offsets leak into co-resident axes.

Update sections 4.3, 4.4, 5.4.3, and 9.2 accordingly, add section 5.4.5
on privatization, and state the exactness condition honestly: the
{-1,0,+1,z_old} breakpoint set is exact only when avar v1 is linear
across the retained sub-range (no interior segment breakpoint). Collecting
in-range avar v1 breakpoints for full generality remains a known,
unimplemented limitation.

Assisted-by: Claude Opus 4.8 (1M context) <nor...@anthropic.com>



To unsubscribe from these emails, change your notification settings at https://github.com/fonttools/fonttools/settings/notifications
Reply all
Reply to author
Forward
0 new messages