pdf-issues icon indicating copy to clipboard operation
pdf-issues copied to clipboard

12.5.6.13 (Ink annotations): functional gap between InkList and Path entries

Open stechio opened this issue 7 months ago • 0 comments

Older InkList entry (Table 185 — Additional entries specific to an ink annotation) defines an array of separate subpaths ("An array of n arrays, each representing a stroked path"), whilst newer Path entry defines a single subpath ("An array of n arrays, each supplying the operands for a path building operator (m, l or c)").

PROPOSAL

Path entry syntax should be augmented to support intermediate moveto operations (beyond the first one currently supported) in order to allow separate subpaths, like the corresponding InkList entry.

Since operand arrays associated to moveto and lineto operators are indistinguishable, in order to fit multiple separate subpaths it would be necessary to add a new unambiguous syntactic delimiter (which would be incompatible with current definition), for example the null value:

[
% subpath 1
  [10 0]   % moveto
  [10 10]  % lineto
  [35 15]  % lineto
  null     % end subpath
% subpath 2
  [80 100] % moveto
  [50 40]  % lineto
]

or, alternatively, to add a grouping level, encapsulating each subpath in a separate array:

[
% subpath 1
[
  [10 0]   % moveto
  [10 10]  % lineto
  [35 15]  % lineto
]
% subpath 2
[
  [80 100] % moveto
  [50 40]  % lineto
]
]

stechio avatar Jul 06 '24 00:07 stechio