mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-07 16:52:47 +00:00
A legacy .ai in the version 7 form names a linked image's file with `(path) modified XG` and draws the image with `XF`, which takes the operands `XI` takes and has no samples after it (Adobe Illustrator File Format Specification 7.0, sections 8.2 and 8.3). The reader ignored both operators, so the image was dropped without a warning. - `XF` after `XG` becomes a linked image of that file, its pixels placed as an `XI` image of the same operands is placed. The file keeps no pixels of it, so a placeholder stands in until the file is relinked in the Links panel, with a note in the open result. No pixels are read, so the image is not held to the pixel limit of `XI`'s samples. - An `XF` without a file name before it, or with operands `XI` couldn't read (no matrix, too few numbers, no pixels, or samples of other than 1 or 8 bits), is left out with the existing "an image VectorCraft can't read was left out" warning. An `XG` applies only to the image after it in the same raster object; `() 1 XG` before an embedded `XI` keeps that image embedded. - A PostScript page draws nothing for `XF`, so there the placeholder's area is left out of the comparison of the layers with the page, and the file keeps its layers. A PDF part draws the image's pixels, so a file with one is compared with it there as before, and its layers are not used without the PDF part. - Linked images of different files get image keys of their own even when they show the same pixels (the placeholder, or two identical placed-file previews), so updating or exporting one file's image reads that file only. - `vectorcraft_doc::links::missing_placeholder` draws the placeholder: a light tile, crossed out, as SVG import shows for a missing file. Tests: reader tests for the placement, the image keys and the cases left out, an end-to-end test of a legacy file with a linked image, a test of a file with a PDF part, and a fuzz case for damaged files with `XG` and `XF`. The new note has a row in each catalog that translates the placed-file note.