Skip to content

Part of #758: .ai import doesn't weigh text objects when the layers can't be used - #869

Merged
bflatastic merged 5 commits into
mainfrom
fix/758-skip-hopeless-prune
Oct 10, 2026
Merged

bflatastic merged 5 commits into
mainfrom
fix/758-skip-hopeless-prune

Conversation

@bflatastic

Copy link
Copy Markdown
Member

Part of #758.

Before deciding whether to use the layers of an Illustrator file, the import drew them again for each text object made from the file's text document, to see whether the page draws it. When the layers differ from the page by more than the check allows even with every such object taken out, they aren't used whatever is taken out. Taking one out only changes what is drawn in its box, so that case is now found first (the boxes' share of the page against the margin) and the weighing is skipped.

This only skips work whose answer is already known: what a file opens as doesn't change.

Tested:

  • cargo xtask ci (all 7 steps) on the stack of this batch's PRs, rebased on main.
  • The .ai/EPS import tests (tests_native, tests_aiimport) and import_fuzz pass unchanged.

🤖 Generated with Claude Code

@bflatastic
bflatastic force-pushed the fix/758-skip-hopeless-prune branch from 4e86c54 to 56a45a5 Compare October 10, 2026 03:14
bflatastic and others added 5 commits October 10, 2026 10:27
…xt document

Illustrator EPS and .ai type is made whole from the file's text
document, shown or hidden: point type, area type (a story in several
frames as threaded type that flows when the file opens) and type on a
path, with its fonts, size, leading, tracking, scaling, baseline shift,
fill and stroke colours (grey, RGB or CMYK), alignment, indents and
paragraph spacing. The page's drawing of that type, often in pieces, is
left out; where the text document can't say, type that shows still
comes from the page.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The effect versions of Offset Path, Zig Zag and Roughen showed Joins and
Points as free text fields. They now pick Miter, Round or Bevel and
Smooth or Corner, as Object > Path > Offset Path does. A size's
Relative / Absolute (Roughen, Zig Zag, Tweak) is a pair of radio
buttons, and the effect dialogs' other on/off options are checkboxes
that show when they are off too (they were invisible unchecked).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Raw app.quit closed the window and answered null at once, so a client
couldn't tell that a save prompt was waiting. It now runs the menu's
Quit: {"pending": "saveChanges"} while a modified document is asked
about, as file.close and file.closeAll answer and the protocol
documentation says; otherwise null, and the window closes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Gaussian Blur and Feather drew through a filter layer whose blur works on
a coarser grid tied to the canvas: the blurred art moved by up to about
a pixel, and its steps showed, as the view moved by parts of a pixel
(scrolling, zooming about the pointer). They now blur the content's own
pixels on the CPU, as the Photoshop-style effects already do: the same
look wherever the view is, cached while only the view moves.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…an't be used

Before deciding to use the layers of an Illustrator file, the import
drew them again for each text object made from the file's text
document, to see whether the page draws it. When the layers differ from
the page by more than the check allows even with every such object
gone (taking one out only changes what is drawn in its box), the
layers aren't used whatever is taken out: that weighing is now
skipped.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@bflatastic
bflatastic force-pushed the fix/758-skip-hopeless-prune branch from 56a45a5 to 495694e Compare October 10, 2026 03:29
@bflatastic
bflatastic merged commit 0b249c5 into main Oct 10, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant