The Materials tab and threeD.mapGraphic now map graphics onto
Revolve's swept side, unrolled flat: x runs around the axis (the
angle times the profile's distance from the axis at that point) and
y along the profile. A graphic keeps its size at every distance from
the axis, so it reaches farther around where the profile comes nearer
the axis. Each face of the side draws the part that falls on it: a
graphic narrows toward the silhouette, follows the profile along its
length, is shaded with the surface (several lights included) and is
hidden where the side faces away. A part that runs past the end of
the profile reaches the curved rim and stops there. The middle of the
side faces the viewer with the axis on either edge. On a compound
profile or a group the graphics go on the longest contour.
- three-d: with Revolve::map_surface set, side faces carry a
SurfaceCell (corners on the page and on the unrolled side, whether
the outside faces the viewer) and a closed profile off the axis
takes an anchor where its side is cut; without it the faces are as
before. revolve_surface_size gives the side's size for a new
graphic's fit.
- effects: Revolve takes `graphics` (front only); surface_parts cuts
and maps them per face; curves are cut into straight pieces one at
a time, and commands refuse graphics past the point limits;
switching between Extrude, Plane and Revolve keeps the front's
graphics.
- The Materials tab hides Face for Revolve; params text, docs/mcp.md,
docs/three-d.md and the progress docs describe the change.
- i18n: the complete-message catalogs translate the three new
refusals in place of the planar-faces refusal they replace, and ja,
es, zh-hans and zh-hant translate the Materials tab's label.
A right-click on a character style in the Libraries panel now opens Apply
Character Style, Add to Character Styles, Move to Group, Rename… and
Delete. Apply is enabled only with type selected. Opening the menu applies
nothing, and the paragraph style menu is unchanged.
- library.addToCharacterStyles adds the style to the document's character
styles without applying it, so no type needs to be selected. A document
style with the same name and attributes is reused with no undo step, and
a name taken by other attributes gets a number.
- library.renameItem renames a library item in place and keeps its group.
The name is trimmed and has 1 to 256 characters. Another item of the same
kind with that name is an error, the item's own name writes nothing, and
a rename is not a document undo step.
- library.use and library.addToCharacterStyles compare a library style
with the document's in the form the document stores it in. A whole
number size from a library file no longer adds a numbered copy.
- A character style color linked to a swatch that is not a global or spot
swatch of the document keeps the color it shows without the link.
Before, adding or applying such a style failed with "no swatch".
Help page: https://helpx.adobe.com/illustrator/desktop/design-with-text/fonts-and-scripts/add-and-use-text-and-character-styles-in-libraries.html
A selected warp envelope now shows the points of its surface on a 4x4
grid (8x8 or 16x16 where 4x4 strays more than 0.1% of the warp's
diagonal from it). object.mesh.movePoint, movePoints, addLine,
deletePoint and object.envelope.setMeshPoint accept a warp: the first
edit turns it into a mesh envelope on that grid and applies the edit as
one undo step, so Undo or Escape gives the warp back with its style and
bend. An edit that moves no point leaves the warp and adds no undo
step. A warp that no such grid follows (some version 0 maps) shows no
points and its edits fail without changing anything.
movePoints and setPointColor on a gradient mesh record no undo step
when they change no point.
When a linked file lost its clipping path, the clip group holding the
image stayed as a plain group of the image. When the file had a clipping
path again, the image went into a new clip group inside that plain group,
so each round nested one more group. The plain group holding just the
image now becomes its clip group again, in the layers and in symbol,
pattern, graph design and mask art.
With the lowResProxyEps preference on, opening a document kept the saved
preview of a linked DCS file, so the link showed as EPS without its
plates. Opening now reads the first 1 MiB of each such EPS file and reads
a DCS file in full. The whole file is read only when a binary EPS header
puts the PostScript past those bytes or the header comments run past
them. Other EPS files keep their preview.
In the Touch workspace, a two-finger tap on the canvas now switches
between the Selection tool and the drawing tool chosen last, as the
help page describes. It no longer undoes there; outside Touch a
two-finger tap still undoes, and a three-finger tap still redoes in
every workspace.
- New UI command tool.toggleTouchMode (Switch Selection and Drawing
Modes, {} -> {tool}). From the Selection, Direct Selection, Group
Selection, Magic Wand, Lasso or Perspective Selection tool it chooses
the drawing tool chosen last in the window, or the Pencil tool when
none has been chosen; from any other tool it chooses the Selection
tool. The Hand, Rotate View, Zoom and Print Tiling tools never become
the drawing tool. It adds no undo step.
- These tool lists and Pencil as the first drawing tool are
VectorCraft's own rules.
- The label is in every catalog. Docs: docs/mcp.md, the touch row of
docs/hardware-parity.md and docs/target-app-parity.md.
After a rotation the Selection tool already shows and drags a bounding
box turned with the objects, but the Free Transform tool still used the
page-aligned box. Its handles sat on the wrong corners, a side handle
scaled along the page axes, and Perspective Distort and Free Distort
started from a box that did not match the art.
- The Free Transform tool keeps the selection's turned box for the
drag. Handles, the rotate zone and the move zone are read in its
frame; a handle scales along the selection's own sides from the
opposite handle (or the center with Alt) and snaps as the Selection
tool's does; Cmd/Ctrl on a side handle shears along that side; the
outline, handles and cursors are drawn on the turned box.
- Perspective Distort and Free Distort move the corners of the turned
box. `object.distort` takes `angle?` (degrees): `from`, or the
selection's bounds without it, is then a box in the frame turned by
that angle. Upright boxes send the same params as before.
- The Scale and Reflect tools, their dialogs and commands, and the
Transform panel's flips keep the page's axes.
Docs: docs/mcp.md, docs/target-app-parity.md.
A new Type preference, Show samples on white (`fontSamplesOnWhite`, off
by default), draws each family's sample in every font menu, and in
Type → Font in the in-window menu bar, in the Light brightness's text
color on a white area, in every interface brightness. A row's white
area is drawn while its sample is still rendering, and leaves 2 pt above
and below it where a highlighted row's color shows. The family names and
the rest of the menu keep the interface's colors. Preferences dims the
checkbox while Enable in-menu font previews is off.
Docs: docs/mcp.md (prefs), docs/target-app-parity.md evidence line.
The Paragraph panel's Mojikumi Set lists None, YakumonoHankaku,
GyomatsuYakumonoHankaku, GyomatsuYakumonoZenkaku and YakumonoZenkaku,
then Line-end Punctuation Half Width, and text.setFormat {mojikumi}
takes yakumonoHankaku, gyomatsuYakumonoHankaku, gyomatsuYakumonoZenkaku
and yakumonoZenkaku besides none and lineEndHalf.
The spacing of each set is VectorCraft's own rule, built on the help
page's one-line description of each set:
- YakumonoHankaku sets every bracket, comma and full stop half width,
takes a quarter em off each side of a middle dot, and puts a quarter
em between Japanese and Latin letters or digits.
- GyomatsuYakumonoHankaku keeps punctuation full width inside a line,
sets an opening bracket starting a line flush and a closing mark
ending it half width, and takes the quarter em after a middle dot
ending a line off.
- GyomatsuYakumonoZenkaku keeps punctuation full width and adds the
quarter em between Japanese and Latin text.
- YakumonoZenkaku sets characters as None does.
Both composers and vertical type measure each line as it is set. A
right-to-left paragraph, whose line ends are measured untrimmed, also
draws them untrimmed, and a right-to-left line that ends between a
Japanese and a Latin character is measured without the quarter em the
set adds there. With a Desired glyph scaling other than 100%, the
space a set takes off before an opening bracket or middle dot, and the
Japanese-Latin space recorded at a line's end, scale with the glyph.
The sets save with the document and paragraph styles; new type and
Reset Panel keep Line-end Punctuation Half Width. SVG export lays type
with middle dots out again for its positioned spans. A .ai save
reports a paragraph with one of the new sets as left out.
Docs: docs/mcp.md, docs/target-app-parity.md, docs/type-parity.md,
docs/gaps.md.
Copy now remembers the whole chain of layers around each object, not only
the name of the nearest one. With Paste Remembers Layers on:
- In the same document, art goes back into the sublayer it came from while
that sublayer exists, even after it was moved, so two sublayers of the
same name in different layers stay apart. A deleted sublayer is made
again inside the layer that held it.
- In another document, the sublayer and the layers around it are matched
by name from the top level down; of repeated names, the topmost chain
that matches the most names wins, a shown and unlocked one first. A
missing sublayer is made inside its layer, and a missing layer on top
with the sublayer inside it, in the paste's undo step.
- When the matched layer, or a layer around it, is hidden or locked, the
paste fails with "the target layer is locked or hidden" and nothing is
pasted, instead of putting art in a hidden layer or making a second
layer of the same name.
Show DCS Transparency Interactions compared full object bounds, so a
transparent object over the part of a DCS image that its clipping path
hides marked the image. Bounds are now cut to the clipping paths of the
clip groups and clipping layers that hold each object.
The Layers panel's trash button, rows dropped on it, the panel menu's
Delete Selection, and Delete or Backspace on highlighted rows now run
ui.layerDelete. When a layer or sublayer among the rows holds art
(hidden, locked and nested objects count; guides do not), a confirm
dialog asks first. OK deletes the rows it asked about, by id, in the
document it was asked in, as one undo step; Cancel keeps them. Empty
layers, guide-only layers and object or group rows alone are deleted at
once. layer.delete itself is unchanged and never asks.
The series fill and stroke and the label fill and stroke a graph keeps
for its next redraw are now in the paint traversal, so Delete Pattern
and canceling a new pattern make them no paint and a Pattern Options
rename renames them. Before, a later graph.setData drew the paint of a
missing pattern again. Global swatch edits reach the same paints.
The progress-doc line now says that only canceling a new pattern clears
its paints; canceling the edit of an existing pattern puts the
definition, and after a rename the old name, back.
A 9-slice guide can now be placed outside the symbol's art, by dragging
it past the art's edge in symbol editing mode, by symbol.options
nineSliceGuides, or by a Symbol Options field below 0% or above 100%.
A scaled instance then scales by the cells its art falls in.
- Each guide is a fraction from its edge in -16..16, and the two guides
of an axis keep their order (left + right < 1, top + bottom < 1).
- A guide past an edge cuts the art at that edge, so that side's outer
cell holds no art. With both guides of an axis past opposite edges,
the art scales as a whole along it. With both past the same edge, the
art keeps its size in the outer cell at the other edge.
- Symbol Options shows the guides with three decimals, and OK keeps a
field that was not changed at its exact value.
- Native files keep the guides exactly. SVG and .ai write such an
instance as its placed art, without guides.
Docs: docs/mcp.md, docs/target-app-parity.md, docs/gaps.md.
Enable Rubber Band now hides only the preview segment in the Pen, the
Curvature tool and the Smart Pen. With it off and Measurement Labels on,
the three tools still show the D / Angle / dX / dY readout at the pointer
while a path is drawn, and the Curvature tool also shows it when
going on from the current end of a selected path. With Measurement Labels
off, no readout shows either way. The click places the same anchor as
before.
Docs: docs/mcp.md (penRubberBand, curvatureRubberBand), docs/ui-parity.md,
docs/target-app-parity.md.
effect.apply, appearance.addEffect and effect.setParams checked an effect
parameter's type only when the effect has a dialog default for the key. Keys
that only the params text names were stored as given: an Outline Stroke with
`width: "10 pt"` drew at the stroke's own weight, and a Gaussian Blur with
`linear: 1` blurred in linear light.
- The earlier 3D `perspective`, `lightAzimuth` and `lightElevation`,
Scribble's `variation` and Outline Stroke's `width` must be numbers, and
Gaussian Blur's `linear` must be true or false. A test walks every effect
so a new key without a default needs a listed type or a check of its own.
- The `style` of Crop Marks must be `roman` or `japanese`, and `null` is
refused. Any other value drew as Roman.
- An installed plug-in effect's parameters are checked against its manifest
when the command runs, as plugin.run already checks the effect records a
filter returns.
- effect.setParams with `warpStyle` checks the parameters against the new
Warp style's effect, as it already did for a 3D effect's new
`threeDType`. It checked them against the old style.
- effect.setParams refuses a `visible` that is not true or false, such as
`1` or `"false"`, when called and when a step plays, and nothing changes.
Before, the value was ignored and the rest of the call applied. `null`
still leaves the visibility as it is.
A step of command.batch is refused the same way. A replayed journal or
action still plays a wrongly typed effect parameter, as it plays a key the
effect no longer takes.
Docs: docs/mcp.md, docs/target-app-parity.md.
A parameter schema's error ("`zoom` must be a number > 0, not -1") was
translated around its requirement, which stayed in English in every
language: only "a number", "a string" and "true or false" had rows.
- Every complete catalog gets a row for each requirement a schema
writes: a number with each kind of range and with a unit, an integer
and its range, a list of names, an object id, a list of object ids,
a color, a point, an object and a list. The bounds, unit and names
stay as the English gives them.
- An enum error no longer matches the `{key}` must be one of {_1} row,
which took `"a", "b", not "c"` as its list and left ", not ..." in
English: a `{path}` must be one of {_1}, not {got} row translates it,
in the complete catalogs and in Bulgarian, Bosnian, Danish,
Indonesian and Dutch.
- A part of a message that starts with `{` or `[` is translated only
when it is an exact message, so "[x, y] (two numbers)" translates and
JSON values, shown cut short or whole, stay as they are.
Docs: docs/mcp.md (Parameter schemas), docs/target-app-parity.md.
File > Open and File > Place read QuickDraw pictures, versions 1 and 2,
from .pct, .pic and .pict files, with or without the file's 512 bytes
of application data; a version 2 picture also opens by its content.
The reader plays the opcodes of Apple's Opcodes in Pictures table on
the metafile player: lines, rectangles, rounded rectangles, ovals,
arcs, polygons and regions become paths, text becomes point type in
the font the picture names, bitmaps, pixel maps and QuickTime JPEG
images become images, and the clip region clips what follows it.
Place puts the picture in one group clipped to its frame. What isn't
read comes back as warnings, and a picture cut short keeps what came
before it. PICT is not written.
Images whose transform flattens them no longer leave their pixel data
in the document. Formats whose signature starts the file are detected
before PICT, which is known by bytes 522 or 10.
Docs: docs/mcp.md, docs/file-format-parity.md, docs/target-app-parity.md.
Version 4 marks sets with Select Object steps, so a build that reads
version 4 but has no select.storedPath accepted a Select Path set and
failed at the step during playback. Sets with Select Path steps now
save as version 5, Load Actions reads versions 1 to 5, and docs/mcp.md
and the file header say so.
A colorized image whose linked file is missing shows the placeholder
preview, whose pixels are not grayscale. paint.setFill skipped such an
image and added a fill item instead, while the Fill proxy showed the
image's colorize color. A solid color now replaces the colorize color.
While that color is a spot color, black or white, a process color is
refused, since the relinked pixels may have an alpha channel.