- Each contour of a graphic is cut only at the faces its own bounds reach,
and the points cut at the faces count toward a limit of 64,000,000.
- The paint copies of a graphic's parts count toward a budget of their own,
one copy for a part's fill and one for its seam stroke when it takes one.
- A part filled with a pattern, or whose gradient has a transparent stop or
point, takes no seam stroke.
- Under several lights an opaque solid part also covers its seams, with its
lit art clipped to a band of the seam stroke's width.
- A line of a graphic that reaches farther than any surface is refused, as a
curve already was.
- A full turn places each segment by its own middle, so the cut at the back
falls on the segment edge nearest half a turn from the middle.
- A group's members are measured for graphics only when it has some.
- docs/three-d.md: Revolve shows no Face control, and the new limits.
affinity-corpus.yml ran a local job; it now calls craft-common-actions
gate.yml with the same toolchain (1.95), environment and commands, and a
cache of its own. release.yml's git-sources copy is removed: the shared
release.yml runs the same check before any build.
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.
Dutch was not in COMPLETE_MESSAGES, so with the interface in Dutch
script errors, plug-in manifest and permission errors, parameter
schema errors, 3D effect refusals, file-reader errors and data-set
messages showed in English.
- nl.tsv gains 557 `@msg` rows and one `@msgplural` row: the messages
the German catalog translates and Dutch lacked. Most are one block
with a header comment on their conventions, in the order de.tsv
holds them; the rest sit next to the related existing rows.
Backticked names, command ids, double-quoted values and bare true,
false and null stay as the English writes them.
- nl joins COMPLETE_MESSAGES, so the message tests that iterate the
list check Dutch too, and the untranslated report lists Dutch's
missing messages. It lists the same set for Dutch as for German.
- The registry comment, docs/development.md, the Dutch row and
introduction of docs/localization-parity.md, and the interface
languages line of docs/target-app-parity.md list Dutch among the
languages that translate messages.
A right or middle drag on a swatch or color group, a brush, a symbol, a
graphic style, a library item or group, a character or paragraph style,
an Appearance row or thumbnail, the Fill and Stroke squares, a Recent
Colors chip or the Gradient panel's thumbnail started the same drag as
the primary button, so it could reorder, copy, delete or apply the item.
These drags now start only with the primary button, as Layers rows
(#7016) and Artboards rows (#7005) do: `widgets::drag_source`, the
Swatches tiles, library panel items, text style rows and Appearance rows
check `drag_started_by(Primary)`, and the Appearance thumbnail shows the
grabbing hand only for a primary drag. Right-click menus and the Graphic
Styles panel's held right-button preview are unchanged.
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
path.smoothRegion replaced the anchors of each path it smoothed but left
the selection alone, so anchor and segment refs selected with Direct
Selection still named the old indices: after a smooth that removed
anchors, a ref could point past the end of the path or at another
anchor. The edit now drops those refs for each path it changes, so the
path stays selected whole. Selected paths the drag does not change keep
their anchors, and undo restores the earlier selection.
Stroke is the widest feature that can be stroked, and it was applied to
each connected shape as a whole: a thick body with thin arms stayed one
filled area. Now a shape wider than Stroke somewhere keeps as its area
every disc wider than Stroke that fits in it, and each piece outside
those discs that reaches out of them at least one and a half times its
own width (and 3 px) is traced as a stroked center line. A line's end at
the area goes to the cut, so the line's cap closes the join. Corners and
edge slivers stay in the area, and a piece that cannot be traced stays
in it too. Shapes no wider than Stroke trace as before.
Each line keeps one width; without Fills, the area is still a 1 px
outline.
Docs: docs/target-app-parity.md.
The fuzz case counted objects that match the look style C applies, so a
C read with no paint also passed. It now also checks that C's look has
no fill and one red 2 pt stroke.
Mesh export checked the object's solids together by building all of them
before the first mesh. It now builds and counts each solid as the loop
reaches it, so a mesh past the triangle budget stops the export before
the solids after it are built.
The kept grid now records whether a type measure was registered, so a
grid built before registration is not reused when the registered inputs
number happens to be 0.
object.mesh.movePoint and object.envelope.setMeshPoint compare a handle
end with point plus handle, the form the caller sends, so a rounding
difference in (p + v) - p no longer turns an unchanged warp into a mesh
envelope with an undo step.
The fuzz case also loads its .ai library with graphicStyle.loadLibrary,
applies every style to the rich document's objects and then applies a
red 2 pt stroke style read before the fuzzed one, and checks that the
stroke style reaches the objects whenever the fuzzed text is only paint
operators.