.ai import: legacy type keeps its tab stops

A tab definition in type of the legacy format (`numDots numTabs Xb`, a
`leader decimal tabType tabPosition Xe` for each stop, then `XB`) was
skipped, so every paragraph opened with only the default stops every
36 pt. The stops it describes now become the paragraph's tab stops
(left, center, right or decimal, at their positions), and they last
into the next paragraphs and text objects like the other paragraph
attributes. A definition with no stops, or whose descriptions were all
skipped, leaves the default ones. A description with an unknown type or
a position outside 0 to 100000 pt is skipped, and so is one past the
first 1024 of a definition. A text object's `To` ends a definition that
an earlier object left open.

Docs: docs/file-format-parity.md.
This commit is contained in:
dotCooCoo
2026-11-05 22:26:49 +07:00
committed by bflatastic
parent 7fa35a9bff
commit f092b0b7a7
6 changed files with 115 additions and 13 deletions
+8
View File
@@ -4107,6 +4107,14 @@ fn arb_ai_token() -> impl Strategy<Value = String> {
"7 Tq",
"1 1 1e308 -1e308 4e9 Th",
"1 1 (2) 3 4 Th",
"36 2 Xb",
"Xb",
"0 0 4 1e308 Xe",
"0 0 2 -1e308 Xe",
"0 0 3 72 Xe",
"0 0 1e308 72 Xe",
"(x) /y Xe",
"XB",
"[39/quotesingle 128/Euro/eacute/nosuch 300/x TE",
"[1e308/a -1/b TE",
"\n%AI3_BeginEncoding: _Helvetica Helvetica\n[/_Helvetica/Helvetica 0 0 1 TZ\n%AI3_EndEncoding AdobeType\n",