PDF, print, EPS and DXF exports now check the art of each placed symbol
instance after its effects are baked. The objects it holds, including
the copies a Transform effect makes, opacity mask art and the art of
instances placed inside it (counted once), count against the export's
16,000,000-object budget. An instance whose baked art passes the budget,
or would draw deeper than the 128 levels a document may draw, stays an
instance.
- doc: DrawnHeights measures how deep an object outside the layers
draws, symbols and patterns it uses included.
- effects: the bake tracks how deep each baked object sits, and a
rejected candidate releases what it and the instances in it charged.
Czech now translates almost every message, so the untranslated report lists the same 1,814 missing messages for Danish as for Spanish and French only. The row count includes the Danish row main added.
- addon.arrange.randomizeOpacity, type.orientation.vertical and .horizontal,
type.opticalMarginAlignment, type.systemLayout and type.fractionalWidths
run through edit_if_changed (the Edit Colors helper) and record an undo step
only when an opacity, a direction or a setting changes.
- A test for each command; the params text says so, and docs/mcp.md for the
commands it describes.
Remove Breaks, Break Text, Combine Point Text, Join Point Text, Set
Alignment, Keep Position and Reset Text Transform skipped locked and
hidden type even when `ids` named it, or named the group or layer
holding it, while other commands such as text.convertListToText act on
named locked or hidden objects.
- With `ids`, the type they name is taken locked or hidden too (not
type on a locked artboard); from the selection, only type that can
be edited, as before.
- Remove Breaks reads a named threaded story with a locked frame as one
text.
- Objects made from locked or hidden type are not selected.
Docs: docs/mcp.md (Text tools), docs/target-app-parity.md.
A freeform gradient's image was sampled, encoded and written inline at
every fill, outside the reuse placed images have. Fields now go through
the same codes and placements: a fill whose encoded image (color setup,
image dictionary, filter, operator and samples) matches one already
kept draws from it, so its samples are written once in the setup as
VCim<i>. A field drawn once is still written where it is drawn.
A fill whose placement can't be drawn, or that arrives when the page is
already at the 256 MB limit, is no longer sampled first, and a field
image taken back with art that passed the limit is forgotten.
Revolve sorted its faces by the depth of each face's middle only, so a
tilted profile with long edges, or a profile of several contours, could
draw a nearer face under a farther one where the two overlap.
- A revolved face carries its view-space plane (none when its corners lie
off one plane or reach the eye), and Revolve (Classic)'s facets keep it.
- Revolve and Revolve (Classic) put each surface's faces through the local
depth order Extrude & Bevel uses for its fill and strokes: when two
overlapping faces are drawn the wrong way round, every pair of
overlapping faces goes in the order of their depths at the middle of the
overlap, within the same 4,000,000-comparison limit. A surface already
in the right order keeps it.
- A group's members, sorted together by depth, go through the same order
across members.
Docs: docs/revolve.md, docs/effects-parity.md, docs/target-app-parity.md.
PDF, print, EPS and DXF wrote a symbol instance by placing its symbol's
art as stored, so live effects inside that art were missing: a square
moved 100 pt by a Transform effect stayed in place in the file while the
canvas drew it moved.
bake_document_placing_symbols replaces each instance of a symbol whose
art (or the art of a symbol nested in it) needs baking by that art
placed as the instance places it, then baked. The art is placed before
its effects apply, as on the canvas, so an instance that scales its art
does not scale what its effects do. A dynamic instance's own paint
changes apply before baking. Nesting stops at 32 levels and the placed
art at 16,000,000 objects per export; past them an instance stays an
instance. DXF places 9-slice cells unclipped, as its scene does. The
symbols' own art, SVG and the .ai editing data are unchanged, and HPGL
already baked each placed instance.
graphicStyle.new linked the object it was made from, the art of a column
or marker design in a graph series included, and graphicStyle.redefine
gave the new look to every object still linked to the style. Redefining
the style from another object then restyled that art, which the graph
draws again from the design.
- graphicStyle.new makes a style from the art without linking it.
- graphicStyle.redefine leaves the art's look as it was and unlinks it,
as an edited object is, whether the art is a linked object (as in a
document saved before this change) or the source.
Docs: docs/mcp.md, the params text of graphicStyle.new and
graphicStyle.redefine.