Paste without Formatting dropped the label formats a pasted graph keeps
but left the mark that its legend labels' fill is their own. After a later
change to a legend label (its size, for example), the next redraw read the
default black fill as the labels' own and drew them black on dark wedges
again. The mark now stays behind with the other formats.
A pie's legend label whose series name holds line breaks of its own (from
a quoted CSV cell) is now located by all of its lines, as a redraw centers
it. Before, only `|` counted as a line break, so a tall label on stacked
pies could take the contrast of the wrong ring.
Paste no longer recolors the legend labels of a pie whose wedges a merged
or changed swatch recolors. That is a separate change to Paste and goes in
its own pull request. Paste without Formatting sets the legend labels by
the wedge colors as copied.
An Abutting trace with Fills now holds a "Seam Fills" group under its
paths. For each color it has one stroke, 1.5 image pixels wide, along
the edges where a filled path of that color meets a filled path drawn
after it, in that color. A renderer that anti-aliases each path on its
own no longer shows a light hairline along those edges. The traced
paths and their shared edges do not change, and edges against the
image's border, a transparent area or a color left out get no stroke.
- vectorcraft-trace: `seam_fills` finds the segments two filled paths
share and strokes them in the lower path's color (one stroke per
gradient path). Overlapping, traces without Fills and Flat Logo get
none.
- Image Trace commands: the group comes under every path (right above
the hidden image in a live trace). Expand keeps it, Expand by color
leaves it under the color groups, and a trace whose paths have more
than half of the anchor limit gets no seam fills.
Docs: docs/mcp.md, the params text, docs/target-app-parity.md.
select.key {id, anchor} set the new key anchor before checking it, so a
point that is in the selection but not on the path cleared the key
anchor and then returned an error. The point is now checked first: an
anchor the path does not have is not a selected anchor point, and the
other conditions are checked on a copy of the selection.
Variable Options in the Variables panel only renamed a variable, and no
command changed a variable's kind. variable.rename now takes
{name, newName?, kind?} and renames the variable, changes its kind, or
both, in one undo step, with none when nothing changes. A null or empty
value, an unknown kind, a taken name and locked variables are refused.
A kind change unbinds the objects that can't hold the new kind (text
keeps type with no other text variable, image keeps image objects,
graph keeps graph roots, visibility keeps every object) and drops the
variable's values in every data set. The dialog shows the variable's
name and kind and sends both.
- CMYK colors converted between two loaded CMYK profiles now use the
Color Settings black point compensation, as RGB colors already did:
the conversion goes through linear ProPhoto RGB and maps the source
profile's black onto the destination's.
- The edit.colorSettings, document.open and file.newFromTemplate params
text and docs/mcp.md name file.newFromTemplate with the commands that
apply the policies, and say that colorMode on open converts after the
policies, through the profiles the document keeps.
- A test covers New from Template under the policies, and another the
CMYK black point compensation.
object.distribute uses spacing with a key anchor, and to: "selection" or
"artboard" makes the key anchor an ordinary point. docs/mcp.md and the
object.distribute and object.distributeSpacing params text still said
both commands ignore to and spacing with anchor points selected.
The Assign tab has a New Row button before Merge. With art selected it
adds a row with no current colors above the first selected row, or at
the top, with that row's new color, and selects it. Merge with the new
row first moves the other rows' current colors into it, and they take
its new color. The row shows an empty slot until then.
An empty row recolors nothing and does not count toward Colors. OK
sends it with the other rows. recolor.apply adds no library swatch for
it and gives a rewritten color group no color from it, in the dialog's
groupColors and in the command's default.
The Variables panel drew each variable as one "name · object" line in
the order the variables were defined, with no headers and no sorting.
The list now has three columns with headers: the type icon, Variables
and Objects. A click on a header sorts the list by that column, and a
second click reverses the order. The new command variable.sort {by:
name|object|type|none, descending?} sets the order, which is panel
state: not saved and not an undo step. variable.list lists the
variables in that order and reports it as sort. An unknown by, or a
descending that is not true or false, is an error.
Type > Composite Fonts... has Custom: named character sets, each setting
the characters it lists in its own font, style, size, baseline and
scales ahead of their class. The later of two sets that list a character
sets it. Characters are added by Direct Entry or by Unicode code and
deleted one at a time, and the parts table scrolls when it grows.
- type.compositeFonts.set takes `custom`; part keys left out take the
Kanji part's values. Sets are saved with the document and in
.vccomposite files, and Export refuses a file over 4 MB.
- VectorCraft's own limits: 64 sets per font, 8,192 characters per set,
each character once per set, up to U+FFFF and no control characters.
- The font database caches each font's character lookup.
Docs: docs/mcp.md, docs/type-parity.md, docs/target-app-parity.md.
With Direct Selection, the point a Shift-click adds to two or more
selected anchor points is the key anchor. It is drawn as a larger filled
square in a frame, and the Align panel and the Control bar show the key
choice chosen as Align to Key Anchor. The Align buttons move the other
points to its x or y, and Distribute with a spacing places them from it.
A plain click still selects one point alone.
select.key takes {id, anchor} to set it, select.key {} cancels it, and
document.inspect reports it as keyAnchor. It goes when it is deselected,
deleted or left as the only selected point.
A graph keeps its labels' character and paragraph formats for each redraw.
Paste without Formatting reset the labels' text but left those formats in
the graph, so the next redraw (Graph Data, Graph Type) gave the labels their
source formatting back.
Paste without Formatting now drops the formats the graph keeps and sets the
pasted labels as a new graph's labels are set: 9 pt black, unscaled (a
rotated graph's labels keep their rotation), default paragraph attributes,
each keeping its alignment, and white on a dark pie wedge. Before, they took
12 pt and lost their alignment. The rest of the graph's art is pasted as it
was copied. A swatch-linked character fill the graph kept for its labels
stays behind with the other formats.
When the document's swatches give a pasted pie's wedges another color (a
swatch merged into the document's swatch of that name, or a swatch changed
in the document the pie was copied from), Paste and Paste without Formatting
set the legend labels in those wedges white on a dark wedge and black on a
light one, as a redraw does. Before, they kept the color chosen for the
copied wedge, which could leave white text on a light wedge. A label whose
characters are not all white or all black keeps its colors.
The OK of the import options a click of the place cursor asks for now
places the file within the automation roots the cursor was loaded in,
or within the roots of a caller that confirms with roots of its own.
Options from a click before the cursor was loaded again are refused.
A cursor loaded again (a queue set with tool.setOption, a script) no
longer asks for import options or keeps the queued sizes of the cursor
the Place dialog loaded. The engine counts cursor loads
(Session::place_queue_loads) so the app can tell.
Extrude & Bevel (Classic), Revolve (Classic) and Rotate (Classic) take a
preserveSpotColors param and a Preserve Spot Colors checkbox on the
Lighting tab. When it is on, a fill or stroke linked to a spot or global
swatch stays linked on every face: the highlight lowers the swatch's
tint, and a face that darkens gets black over it, multiplied and
overprinting, so a spot color keeps its own plate in separations and PDF.
The checkbox is unavailable while Shading Color is Custom, and the param
does nothing then. With the option off, the faces draw as before. A
value that is not true or false is refused.