Files
vectorcraft/docs
jmvergesandClaude Opus 5.5 5f0d310614 .ai import: type in an envelope is also tried mapped from the box of what it paints (#6824)
With Envelope Options > Distort Appearance on, the import tries type in an
envelope mapped from its glyphs, and from its glyphs grown by half its
strokes' weight (#6535), on its own warp and on its saved grid. In users'
files the drawn art of some stroked type maps from the box of what the type
paints instead, which differs from those where:

- the type has sharp corners at its edges (slanted stems, pointed feet) and
  miter joins: the miter tip pokes out past half the weight, as far as the
  miter limit lets it, though not as far as the bounds with strokes allow
  (a miter at every corner);
- a stroke carries a Transform effect that moves it (a drop shadow): the
  moved stroke paints past the glyphs on that side;
- a glyph holds a contour of zero length at its edge, which paints nothing:
  the glyphs' box counts it.

Such an envelope failed the drawn-art check and kept its drawn art.

After every way it was tried before, and before a grid moved onto its drawn
art, the envelope is now also tried mapped from what its type paints, where
that box is another: its glyph outlines with their fills and strokes baked
as the envelope bakes them under Distort Appearance (geometry effects
applied), each piece measured by its visual bounds. Those are exact for
miter joins (a tip counts where the limit keeps it) and round joins, and an
upper bound for bevel joins, miters the limit cuts, width profiles and
square-capped dashes. Effects on the type object itself are left out, as
VectorCraft applies them after the envelope bends the type. Groups round
type and other objects in the contents are measured as before. A side
within 1e-4 pt of another box's counts as that side, so a box measured two
ways isn't tried twice. The box is measured only when its try comes and a
check is left for it, and once for an envelope: on a synthetic file of 256
envelopes of 2,000 characters each the import takes 13.3 s, as before,
where measuring it up front took 14.7 s.

On 224 of our own files (used locally, never committed), envelopes of type
that open live go from 154 in 45 files to 161 in 50, none fewer in any
file; no file changes whether it opens from its layers or its PDF part.

Tests: ai::envelope::tests::
mitred_type_is_also_tried_mapped_from_what_its_stroke_paints_miter_tips_included,
type_with_a_mitred_character_stroke_is_also_tried_mapped_from_what_it_paints,
a_stroke_moved_by_a_transform_effect_counts_where_it_paints,
round_joined_type_is_not_tried_twice_for_the_same_box,
a_contour_of_zero_length_paints_nothing,
a_side_within_the_slack_of_the_geometric_box_is_that_side, and
tests_native::a_warp_of_mitred_type_maps_from_what_its_stroke_paints_where_its_drawn_art_does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 08:38:21 +00:00
..