mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-07 15:51:56 +00:00
The editing copy of the art that a PDF-compatible .ai carries now holds: - Transparency: `mode opacity isolate knockout shape Xy` (the blending mode's number, Knockout Group 0 off, 1 on, 2 neutral), written when it changes: in a path's paint after its colors, before a guide, and after a group's end followed by `0 0 Xd` and `6 () XW`. A group without transparency of its own ends `9 () XW`, and a group's name comes before its state block. A layer's transparency follows its art: `Xy`, `0 0 Xd`, `7 () XW`, `LB`. - Clipping groups as `q`, the art, the clipping path or compound path last with `h` (or `H`) and `W` before its painting operator, `Q`, as section 5.6.2 of the version 7 specification shows them (http://mercator.elte.hu/~saman/hu/okt/AI7FileFormat.pdf). A clipping layer whose clipping object is a path or compound path sets the last `Lb` flag and writes its clipping path last. - Opacity masks as an `AI9_Mask` entry in the object's dictionary: the mask's art between `X=` and `X+`, and Clipping, Inverted, Disabled and Linked. Before, clipping groups were written as their art cut to the clipping path, and transparency and opacity masks were left out. Still left out, with a warning: the opacity and blending mode of single fills and strokes, opacity masks on layers (disabled ones too), and opacity masks nested more than 8 deep. A clipping group or layer whose clipping object isn't a path or compound path is written as a group of the art cut to that object, in a layer that doesn't clip, and so are the clipping groups inside that art. A clipping path's paint that a plain fill and line can't draw is written as paths inside the clipping, fills under the art and strokes over it, each side in a group of its own when it has several, with the clipping path's transparency, lock and hidden state; the clipping path's opacity mask stays on the clipping path, with a warning. A clipping group without members is an empty group, and an empty clipping layer is an empty layer. Each of these is written in the form VectorCraft's .ai reader reads, and the tests read the written data back through that reader. Reading .ai editing data: an `Xy` after a layer's last group or compound path, followed by the layer's `7 () XW`, is the layer's (a following `6 () XW` keeps it the group's); groups, compound paths and layers keep Opacity & Mask Define Knockout Shape. The `.ai` option `editingData` and docs/file-format-parity.md describe what the copy now holds.