Exports RGB, CMYK and grey JPGs at qualities 100, 80 and 50, at 1x and 2x,
and decodes each one. It also checks that only the CMYK files leave out the
JFIF segment (#3140). Covers #2096 too.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The existing entity tests are unit tests that place the references in
attributes. This adds an import-level test with the references inside
<desc>, which the import refuses, and checks that the namespace entities
drawing apps write (&ns_svg;) still import.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Direct Selection showed and dragged the anchors of type on a path's path
(#3980) but not their direction handles: handle_anchors read only a
path's own data, and the canvas draws only a path's handles.
- text.setPathHandle moves a handle of type on a path's path, in
document space, as path.setHandle moves a path's; the brackets keep
their fractions and the text reflows. One undo step.
- Direct Selection draws the handles of selected type on a path and
drags them with it (Alt: one side, Shift: 45 degree steps).
The custom dictionary's words in a list, with an Entry field and Add, Delete
and Change, applied on Done, as the public Check and correct spelling page
describes it. The menu item moves from the Spelling submenu to the Edit menu,
where the page puts it.
A clipping path nested past the depth limit, and a group at the limit
that holds further groups, are refused before they are walked, instead
of being followed to any depth. The clipping path's check follows the
members its outline is built from: the first member of a nested
clipping group and the shown members of other groups. The group check
skips hidden members and treats a compound path as one shape, as the
solid builder does.
An image in a clipping group whose bounds lie wholly outside the clipping
path's bounds draws nothing, so a 3D effect leaves it out instead of
refusing it. An image with effects, fills or strokes of its own, or one in
a group with effects inside the clipping group, is still refused, since
those can draw it inside the clip.
- When a group's geometry effects reshape its members inside a clipping
group, each member's piece goes back into groups with the opacity and
blending mode of the groups it was in.
- A clipped shape's pieces (its fills and each stroke) are counted against
the 4,096-object and work limits before they are cut.
- Resolving the symbol instances, blends and clipping groups a 3D effect
builds from counts every object it visits or makes and stops past
262,144 with an error. Nested symbol instances that end in hidden art
are refused instead of being expanded at every level. Each object is
visited once; a group is no longer walked again for each level above it.
- A symbol instance, blend or clipping group inside a 3D group keeps its
appearance, so its geometry effects reshape the art it shows. A nested
group's geometry effects now reshape its members inside a 3D group too,
and inside a clipping group they apply before the clip cuts the art.
- Hidden members and guides of a group inside a clipping group build no
solid.
- Tests cover an empty clipping group, a blend set to no steps, an
instance of an empty symbol, a symbol holding a clipping group, the
paint-copy budget across resolved art, and art past the limits drawing
as it does without the effect.
The check that keeps a live envelope or warped type only where it draws
as the art saved with it renders each on its own, over nothing, and
compared the pixels as seen on white. White art over nothing looks like
nothing on white, so white contents that drew somewhere else passed and
opened live in the wrong place.
Pixels now also differ when they look different seen on black, so such
art keeps its saved art, as colored art does. Opaque colored art is
compared as before.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With the Linear mode, two problems kept a click on an anchor from
taking it:
- A press on an anchor that moved more than 3 pixels before the release
dragged out the dimension of the segment under the pointer and
committed it almost on top of the art. A press on an anchor now picks
it unless the pointer moves past the anchor's 8-pixel reach; a longer
drag still dimensions the segment.
- A pick linked only an anchor of the segment nearest the pointer. An
anchor of another path near that segment, for example one inside a
group lying just inside another object's edge, was taken at most as a
Smart Guides point with no link, so the dimension did not follow it
when the art changed. A pick now links the nearest anchor of any
visible, unlocked path within reach, in groups and compound paths too.
In Outline the canvas kept the Preview pasteboard color and filled each
artboard with white paper. Paths and type draw as black hairlines, so
art on the pasteboard was close to invisible in the dark interface
brightnesses.
In Outline the whole canvas is now white in every interface brightness
and Canvas Color, pasteboard included. The artboards draw no paper and
show as their edges, so Simulate Colored Paper, an artboard's background
color and the paper of View > Hide Artboards no longer show in Outline.
The artboard names and the ruler origin's crosshair draw in dark gray
there. In split views and floating windows the artboard names follow
that window's own Outline setting, as the canvas already did.