Object › Plug-ins › Image Tools gains Color Mask… (`addon.image.colorMask`),
Remove Color Mask and Apply Color Mask. Color Mask hides colors of the
selected images without changing their pixels. It matches colors as Remove
Background does: the edge color, the corner color or picked colors, with
Contiguous, Match, Tolerance and Softness. The mask is kept with the image
object and saved with the document: its settings, and a PNG of the image's
pixels with the hidden colors made clear, at the source's depth with its
color profile and resolution. It is a VectorCraft addition.
- The canvas (clip groups and white-shape opacity masks included),
printing and separations, PDF (soft masks of CMYK images included), SVG,
EPS, the raster formats, the legacy .ai and .ai editing data, EMF/WMF,
DXF and the flattener draw the masked pixels. A linked image stays
linked, and an output that would refer to its file writes the masked
pixels instead.
- Copy and paste, placing a document and placed documents carry the masked
pixels with the image, under the names they are given there.
- The dialog opens on the selected image's mask settings, with a Preview.
Without settings, the command returns them and changes nothing.
- Setting, removing and applying a mask are each one undo step, and no
step is added when nothing changes. Apply makes the masked pixels the
image's own and embeds a linked image. A mask that hides nothing is only
taken off, and the image keeps its pixels and its link.
- When an image's own pixels are replaced (Update Link, Relink, Crop
Image, a recolor, a linked file read again on open), its mask is made
again for the new pixels, in every art tree and in opacity-mask art.
Crop Image cuts the image's own pixels. When the new pixels can't be
masked, the mask keeps its settings and hides nothing.
- Objects in `ids` that are not images, CMYK images, linked images that
show their preview, images past the decode allowance, masks that would
hide every pixel, and grayscale images colorized with a process color
are refused. The Eyedropper, Object Mosaic, Create Gradient Mesh, Crop
Image's trim and Image Trace read the image's own pixels.
- An image is selected by a click anywhere in its frame, as before.
Remove Background now also refuses a grayscale image colorized with a
process color. Its result has an alpha channel, and a process color is
refused on a grayscale image with transparency.
Docs: docs/mcp.md (Image Tools add-on › Color Mask),
docs/target-app-parity.md.
The Window menu checked a panel whenever it was in front in the layout,
even while Tab, Shift+Tab or Presentation Mode hid every panel, so
choosing it, or pressing its function key, closed the panel it was
meant to show.
- A new panel_docking::visible adds the dock and Presentation Mode to
showing. The Window menu's check marks and the toggle use it, and
window.panel puts a flyout or floating panel away only while it can
be seen. With the dock hidden, the dock shows again with the panel in
its earlier place; the toolbar and the Control bar stay as they are.
- In Presentation Mode window.panel fails with "panels can't be shown
in Presentation Mode" and changes nothing.
- reveal_panel, the Gradient and Magic Wand tool double-click, the
Character field shortcuts and the Corner and Shared Edge Merge tool
items show a panel the dock hid instead of reporting it open or
closing a floating Anchor Inspector.
Docs: window.panel params text, docs/mcp.md, docs/target-app-parity.md.
Rewrap the prose in docs/plugins.md whose lines broke well short of
the file's 120-column width or ran past it, including the Safe Mode
sentence, the permission-name and install-confirmation sentences, and
the grants.json paragraph. Each rewrapped line is at most 120 columns.
No words, punctuation, code blocks or tables change.
A linked opacity mask moves with the art it masks, and an unlinked one
stays in place. Geometry effects on a group or layer reshaped its
members but left their linked masks where they were, Free Distort left
a linked mask behind, and an envelope bent unlinked masks too.
- Geometry effects on a group or layer run over the art of the linked
masks of the paths, compound paths and groups inside it, nested and
inverted masks included. Each Transform copy of a masked path carries
its own mask, and an image or symbol instance moved by a Transform
effect carries its linked mask. The effects on an object do not move
that object's own mask.
- When a mask can't take an effect as the art it masks does (a path in
either would pass the geometry budget, or the mask would get fewer
Transform copies), the art and its masks keep their shape under that
effect. Mask art counts toward the budget.
- Free Distort (`object.distort`) warps a linked mask with its object;
the params text says so.
- An envelope bends only a linked mask.
Docs: a line in docs/target-app-parity.md.
Effects apply in the order they are listed, so a Drop Shadow, glow, blur,
Feather or pixel filter listed before a Transform effect paints art that
the Transform effect then transforms. VectorCraft drew such an
effect at its own distances around the transformed art: a square scaled
to 200% kept a 10 pt shadow offset. Now the effect follows the Transform
effects after it, with Scale Strokes & Effects on or off: its sizes scale
by the mean scale, and a Drop Shadow's offset turns, reflects and scales
with the art. Effects listed after the Transform effect keep their values,
and Transform Objects off changes nothing.
- raster_effects reads each raster effect through the Transform effects
after it, so the canvas, export and the redraw region use the followed
values.
- Where the geometry effects are applied and removed (Expand Appearance,
baking for export, evaluated groups), the raster effects that remain
carry the same transformation, hidden ones included.
- A Transform effect that makes copies or moves at random leaves the
raster effects before it as they are. Rasterize and SVG filters keep
their options.
Docs: the Transform effect's params text, docs/target-app-parity.md.
A grayscale or 1-bit image colorized with a spot color now counts as a
Spot Color Object. A gradient whose stops are all at an opacity of 0
draws nothing, so its spot stops no longer list the object.
- A custom arrowhead path allows at most 4,096 subpaths; stroke.set
refuses a longer one and reading drops it.
- A symbol whose shapes cannot be united or clipped is listed in
skipped instead of becoming a head that misses part of its art.
- The arrowheads file is refused when its document unpacks to more
than 64 MB.
- Edit Arrowheads creates the starter file only when none exists and
otherwise opens the file unchanged.
- After a save to the arrowheads file, the heads are read back from
the written file.
- The plug-in argument check accepts path under startArrow.Custom and
endArrow.Custom in stroke.set.
- A custom head's menu preview is scaled to fit its box, and rows
outside the visible part of the menu do not render previews.
An image's own fill or stroke with Outline Object now follows the outline of
the image's pixels that are at least 50% opaque, traced from the alpha and
fitted with curves, instead of the image's frame. An image without
transparency, one whose pixels can't be read, one of more than 64 megapixels
or whose decoded pixels take more than 256 MB, and one whose outline would
need more than 100,000 anchor points keep the frame. An image with no pixel
at least half opaque gives nothing to paint. Images of more than 4 megapixels
are traced from their alpha averaged down to 4 megapixels, and an averaged
pixel that covers a pixel at least half opaque stays at least half opaque, so
thin opaque lines stay in the outline. Each outline is traced once for its
pixels, kept for the next redraw while those pixels are loaded, and dropped
after them; a second thread that needs the same outline waits for the trace.
- vectorcraft-trace: `decode_alpha` reads an image's alpha, and
`opaque_outline` traces it as Black and White mode at threshold 128.
- vectorcraft-effects: the reshaped image art uses it for rows whose first
effect is Outline Object; Convert to Shape rows keep the frame.
- Docs: docs/mcp.md, the Outline Object params text and an evidence line in
docs/target-app-parity.md. docs/mcp.md also says that Use Preview Bounds
takes in the shapes an image's fills and strokes paint.
In the text document of a .ai's editing copy, a character's fill (key
53) or stroke (key 54) is a paint with a colour under key 0 and, under
key 5, the name of an art style of the editing data. For a pattern
swatch, key 0 is black and the pattern is only in that style: a style
of one paint (/SimpleStyle) that paints with `(name) ... [matrix] p`.
The reader took key 0 alone, so type painted with a pattern came in
black.
The art style reader now keeps the pattern of a style that is one
paint, and the import places it as a path's pattern fill would be (its
matrix in art space; the files' own pages tile such type with it), by
the style's name. A run whose fill or stroke is on and names such a
style takes the pattern, in the type's text space, so its tiles stay
where the document has them. A pattern the file doesn't define or can't
place, a key 5 that isn't a string, and a style of any other paint keep
the colour as before.
A style that also has filters gives no pattern for type, and a pattern that
can't be placed in the type's text space keeps the colour. A .ai saved
again writes such type as outlines with a warning, as it already does for
any type with pattern paint (#5965).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A selected image offers Remove Background in the Contextual Task Bar, Properties'
Quick Actions and the Control bar, as the reference app does. A click runs it at
once with its defaults, as one undo step; Object > Plug-ins > Image Tools keeps
the dialog with Preview.