With `unicode-bidi: plaintext`, SVG import looked for the first strong
character of an element in each text node on its own and kept the
first answer. An isolate that opened in one text node and closed in a
later one hid the rest of that node, and the node then answered left
to right. For `⁧ab<tspan>⁩א</tspan>` the element
ran left to right, where UAX #9 P2 skips the isolate and finds the
right-to-left letter after it
(https://www.unicode.org/reports/tr9/#P2).
The characters of the whole `<text>` are now read once, in order, and
each isolate initiator is matched with its PDI (UAX #9 BD9). Each
element's first strong character is then found in constant time, so
nested `plaintext` elements do not read the same characters again. An
isolate that opens inside an element and closes after it hides the
rest of that element.
vectorcraft-svg takes `unicode-bidi` 0.3.18, which vectorcraft-text
already uses, for the bidi classes.
#7307's French message rows ran CI before #7392 made bracketed field names stay in English,
and two of them translate [subpath, anchor], so main fails
translated_messages_keep_the_field_names_and_values_their_english_lists.
The Czech message rows (#7355) and the rule that bracketed field names stay in English (#7392)
landed in the same batch; four Czech rows translated [subpath, anchor], so main fails
translated_messages_keep_the_field_names_and_values_their_english_lists.
A Fill + Offset Path below a group's Contents painted every clipped member
of a clip group among its members, so art hidden outside the clipping path
bulged the offset outline. A clip group (or clipping layer) now adds the
region its clipping path clips to.
Object > Live Paint > Make gave each new face and edge one fresh row
built from only the source's topmost fill or stroke paint and the top
stroke's weight. A lower row that draws was lost, a hidden top row
became visible, and the rows' opacity, blending mode, effects and
stroke settings were dropped.
- A face takes every fill row that draws (shown, with paint and an
opacity above 0) of its front-most covering source that has one and
an opacity above 0, in order with their settings. A source in front
whose fill does not draw no longer hides the fill behind it.
- An edge takes every stroke row of its source that draws (also with a
weight above 0). Faces and edges take the source's opacity and
blending mode; gradients keep their fit on the source, and pen
pressure stays with the source.
- Where a path is cut into several edges, each edge runs the way the
path does, its dashes go on from where it starts along the path, the
arrowheads stay at the path's own ends, and a width profile or brush
stays only on an edge that runs the whole path.
- Rows that draw nothing stay with the stored sources, which Release
returns unchanged. Merge and Gap Options build their new parts the
same way.
Docs: livePaint.make params, docs/mcp.md, docs/target-app-parity.md.