The double-click right of an RGB field was the only way to switch R, G and B
between percent and 0 to 255 from the UI. ui.colorRgbPercent (Toggle RGB
Percent) is listed in the command palette and in Keyboard Shortcuts without a
default key, and switches the same setting. A parameter answers an error and
changes nothing. The label has a row in every complete catalog.
With the Artboard tool chosen and Align to Selection, two selected artboards are the first and the last of the distribution, so the Align panel's and the Control bar's Distribute buttons are off until three are selected. With Align to Artboard the spacing places the second artboard from the active one, and two are enough.
The Distribute Spacing field takes negative values with the Artboard tool chosen, as artboard.distributeSpacing overlaps the artboards with a negative spacing. With other tools its lowest value stays 0.
Art inside two overlapping artboards now goes with the one first in artboard order when the artboard Align and Distribute commands move them, and stays when that artboard stays, as in the other artboard edits.
A command that needs a number, such as `x` of `shape.rectangle`, `intensity`
of `edit.colors.saturate` or `index` of `object.envelope.setMeshPoint`,
answered "missing number `x`" both when the key was left out and when it was
given as a value that is not a number, such as "40". A value that is given but
is not a number is now refused with "`x` must be a number, not "40"", the
message the optional number checks already use, showing the value as given.
A key left out or given as null is still a missing number. Neither error
changes the document or records an undo step.
Docs: docs/mcp.md, docs/target-app-parity.md.
A PDF of the art's bounds never carries Preserve Editing data, and the
export adds its warning only when Preserve Editing was on. docs/mcp.md
and the document.exportPdf params text now say so.
Find Font and Replace Missing Fonts looked only at the type on the layers
and in symbols, and the font list behind the export warning, Package and
the Missing Fonts dialog skipped opacity masks and pattern swatches.
- text.fonts lists the type in opacity masks (on objects and layers,
disabled masks and masks inside other art included) and in pattern
swatches, a swatch that nothing paints with included. A pattern's type
counts once however many objects it paints. With selectionOnly, the
masks of the selected objects and the symbols and patterns they show.
- select.font also selects the objects whose mask holds the font and the
objects painted with a pattern whose art uses it (visible fills and
strokes wider than 0). A layer's mask and an unused swatch select
nothing.
- text.replaceFont changes that type in one undo step. Type in the mask
of a hidden or locked object, and the type of a pattern that only
hidden or locked selected objects paint with, keeps its font and is
counted in skipped.
- addon.cleanup.replaceFonts replaces missing fonts in masks and
patterns, hidden or locked type included.
- text.missingFonts, File > Package and the export warning read masks
and patterns too.
- document.info's fonts for the whole document (the Fonts and Font
Details categories and the text report) include the same type. With
selectionOnly the list stays the selected type's fonts.
While a mask or pattern is edited, its type is taken from the editing
layer only.
The Color Theme Picker button beside the Assign and Edit tabs turns on
picking from the canvas. A click takes the color palette of the object a
Selection tool click takes there, a drag takes the palette of the art
inside its marquee, and Shift adds more picks. The rows that are not
excluded take the palette as their new colors and the art previews them;
OK keeps the recolor as one undo step.
- recolor.pickTheme {picks, colors?} returns the palette of the art
picked: visible fills and strokes, gradient stops, text, mesh points,
pattern tiles, symbol art, colorize colors and image pixels. Clip
groups, clipping opacity masks and isolation mode limit it to what
shows, and it changes nothing.
- Each object read weighs the same; similar colors merge (k-means in Lab)
into at most `colors`, most used first. Image reads are bounded (65,536
pixels a pick, 1,048,576 pixels and 64 images in all), and past 4,096
distinct colors, close colors merge before clustering.
- The dialog's themePicker and themePicks fields drive it from
ui.dialog.set. A new Colors count keeps the picks.
The Brushes rows name each type as the New Brush dialog does (Art Brush,
Scatter Brush) and say "missing from the Brushes panel" for a brush the
panel does not hold. The panel now shows these values through the
catalogs, so a localized interface no longer shows them in English.
document.info and the saved report keep them in English. Every catalog
gets a row for "missing from the Brushes panel"; the type names already
had rows.
Remove Background refused a grayscale image colorized with a process
color by looking at the pixels the image shows. With a color mask whose
masked pixels are not gray, as an opened file can hold, the check let
the image through, and the gray pixels it cleared took an alpha channel
under the process color. The check now reads the image's own pixels,
which are the ones cleared.
docs/mcp.md and the Color Mask line in docs/target-app-parity.md now say
that a mask that hides no pixels leaves a grayscale image free to take a
process color.
View > Proof Setup > Working CMYK simulates the working CMYK space of
Color Settings in Proof Colors and Separations Preview, also in a
document assigned another CMYK profile. The active context keeps the
working context beside the assigned profiles, and the proof table cache
key includes the working settings, so a change of the working CMYK space
shows in the next proof.
A weeding line at v0 + k*step can round just past the edge of an outline
segment that lies on it: across 0.1 to 0.5 the one line sits at
0.30000000000000004, and (0.30000000000000004 - 0.1) / 0.2 is
1.0000000000000002. The candidate range for that segment then came out
empty, so the line was not stopped there and ran over the art's edge.
The candidate range is now widened by a small tolerance before rounding;
`near` still leaves out lines the segment does not meet.
docs/mcp.md and the params text of `addon.cutting.weed` now state the
`spacing` range (more than 0, at most 100000 pt), the 1000-line limit
each way, and that a request giving both `count` and `spacing` is
refused.
A spot-colored fill or stroke whose opacity is 0 prints no ink, but
Spot Color Objects still listed its object and objects.spots counted
it. Such fills and strokes are now left out; an object stays listed
while another of its fills or strokes prints the spot color. Pattern
Objects and Gradient Objects are unchanged.
With automation read roots in force, document.json returned each entry of
svg_scripts unchanged, so a JavaScript file linked from outside the read
roots kept its full path in the reply. The reply copy now names such a
file by its file name alone. An entry given as a URL is kept, and the
stored document is not changed.
- object.expand.info reports no gradient or fill to expand for a
gradient that repeats in more runs across its box than are written,
matching object.expand, which leaves it a gradient. For a path that a
painting live effect draws, it measures each piece the effect returns.
- CSS writes a repeating gradient's stop positions, and a repeating
radial gradient's radius, with enough decimals that their rounding
adds up to at most a hundredth of a period across the box (at least
four for positions and three for the radius).
- docs/mcp.md says that sharp steps and swatch-linked stops are the last
to be left out rather than always kept, and that the CSS conic limit
counts stops before midpoints and Perceptual curves add more.