mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-10-24 09:46:59 -06:00
#249 made the reduced repros of #234 open, but a real file saved by the reference app (version 30) still fell back to its screen-resolution preview with "typecheck in `a dictionary`". Running its prolog to the end needed: - The standard dictionaries (systemdict, userdict, globaldict, statusdict, errordict, $error) as values in systemdict, so `/globaldict where { /globaldict get begin } if` gets a dictionary, not an operator. SharedFontDirectory names the font directory too. errordict has a handleerror for prologs that wrap it. - `dictstack`, `internaldict`, `currentsystemparams` and `currentuserparams` (with the cache sizes programs `get`), and `cshow`. - Executable files: `cvx` and `cvlit` set a file's attribute, `xcheck` reads it, and executing one runs its data as a program, as the prolog does with `(...) 0 () /SubFileDecode filter cvx exec`. - SubFileDecode with a count of 0 and an empty end string passes its whole source through instead of nothing. - `flushfile` on a filter over the program's data skips that data (the file's XMP packet). A filter chained from a pending one leaves it nothing to skip, so the writer's own `VCsrc flushfile` is unchanged. The interpreter empties its standard dictionaries when it finishes, since systemdict now holds itself. Both real files tested now import as 15 vector paths in CMYK with no warnings, and round-trip through SVG and PDF pixel for pixel. The EPS fuzzer exercises the new operators. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>