[doc] Reference CFF2 partial-instancing work for the avar2 suppression The self-contained-pin suppression for CFF2 faces can be lifted once partial CFF2 instancing lands (harfbuzz/harfbuzz#4710); fontTools implements the design to port in fonttools/fonttools#3506 (instantiateCFF2). Point both the code comment and AVAR2-INSTANCING.md at them, and note that the underlying CFF2 limitation also silently flattens non-avar2 partial instancing. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
diff --git a/AVAR2-INSTANCING.md b/AVAR2-INSTANCING.md index 465d00c..3412718 100644 --- a/AVAR2-INSTANCING.md +++ b/AVAR2-INSTANCING.md
@@ -341,7 +341,13 @@ when the face has a CFF2 table -- CFF2 has no partial-pin instancing path; its `pinned` path flattens ALL blends and drops the CFF2 VariationStore -- or a VARC table, which passes through verbatim with explicit fvar axis -indices that axis removal would desynchronize. +indices that axis removal would desynchronize. The CFF2 limitation (which +also silently flattens non-avar2 partial instancing of CFF2 fonts) is +harfbuzz/harfbuzz#4710; fontTools implements proper partial CFF2 +instancing in fonttools/fonttools#3506 (`instantiateCFF2`: lift blend +deltas into the CFF2 VarStore, instantiate it, read back the rewritten +deltas), which is the design to port. Lifting the suppression then just +means deleting the CFF2 check here. ### Chunk 8: Variation Culling
diff --git a/src/hb-subset-plan-var.cc b/src/hb-subset-plan-var.cc index b7d5520..99cf268 100644 --- a/src/hb-subset-plan-var.cc +++ b/src/hb-subset-plan-var.cc
@@ -453,9 +453,13 @@ * axes: pinned axes whose final coordinate is constant. Those are * removed from fvar, so suppress the detection when the face has * tables that cannot follow: CFF2 has no partial-pin instancing path - * (its 'pinned' path flattens ALL blends), and VARC passes through - * verbatim with explicit fvar axis indices that renumbering would - * desynchronize. Such axes stay in fvar as ordinary hidden pins. */ + * (its 'pinned' path flattens ALL blends; lift this once + * https://github.com/harfbuzz/harfbuzz/pull/4710 lands, porting + * fontTools' instantiateCFF2 from + * https://github.com/fonttools/fonttools/pull/3506), and VARC passes + * through verbatim with explicit fvar axis indices that renumbering + * would desynchronize. Such axes stay in fvar as ordinary hidden + * pins. */ bool detect_self_contained = true; for (hb_tag_t table_tag : { HB_TAG ('C','F','F','2'), HB_TAG ('V','A','R','C') }) {