@unisim/doc 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/pdfcore.js CHANGED
@@ -81,6 +81,10 @@ const WIN_ANSI_HIGH = {
81
81
  */
82
82
  const SUBSTITUTES = {
83
83
  '→': '->', '←': '<-', '↔': '<->',
84
+ // ↓ and ↑ are not decoration in a technical document: they are the line
85
+ // that says which way the data flows. Losing one loses the diagram.
86
+ '↓': 'v', '↑': '^', '⇓': 'v', '⇑': '^',
87
+ '⟶': '->', '⟵': '<-', '↦': '->', '≈': '~',
84
88
  '⇒': '=>', '⇐': '<=',
85
89
  '≤': '<=', '≥': '>=', '≠': '!=',
86
90
  '−': '-', ' ': ' ', '​': '', ' ': ' ', ' ': ' ',
@@ -89,10 +93,56 @@ const SUBSTITUTES = {
89
93
  '✓': 'v', '✔': 'v', '✗': 'x', '✘': 'x',
90
94
  '●': '*', '○': 'o', '◦': 'o', '▪': '-', '▫': '-', '‣': '-', '⁃': '-',
91
95
  '▶': '>', '◀': '<', '▸': '>',
96
+ // The solid triangles. ▼ is what a topology diagram uses for "and then
97
+ // down into", and it reached a real NAWO spec as '?' on 2026-08-31.
98
+ '▼': 'v', '▲': '^', '▽': 'v', '△': '^',
99
+ '■': '*', '□': 'o', '◆': '*', '◇': 'o', '★': '*', '☆': '*',
100
+ // Bracketed, because a warning sign flattened to a bare '!' reads as part of
101
+ // the sentence after it. Same convention as the two lines below.
102
+ '⚠': '[!]', 'ℹ': '[i]', '❗': '!', '❓': '?',
92
103
  '✅': '[ok]', '❌': '[x]',
93
104
  '
': ' ', '
': ' ',
94
105
  'fi': 'fi', 'fl': 'fl',
95
106
  };
107
+ /**
108
+ * Characters that carry no glyph of their own — they modify the one before.
109
+ *
110
+ * Dropping them is not a loss and must NOT be reported as one. U+FE0F is the
111
+ * emoji variation selector, and it is why a lone warning sign in a Word file
112
+ * came out as TWO question marks rather than one: the sign was unspellable,
113
+ * and so was the invisible byte asking for it in colour.
114
+ */
115
+ const IGNORABLE = new Set(['\uFE0E', '\uFE0F', '\u200D', '\u2060', '\uFEFF']);
116
+ const BOX_HORIZONTAL = new Set([
117
+ 0x2500, 0x2501, 0x2504, 0x2505, 0x2508, 0x2509, 0x254c, 0x254d, 0x2550,
118
+ ]);
119
+ const BOX_VERTICAL = new Set([
120
+ 0x2502, 0x2503, 0x2506, 0x2507, 0x250a, 0x250b, 0x254e, 0x254f, 0x2551,
121
+ ]);
122
+ /**
123
+ * Box drawing (U+2500–U+257F) as ASCII line art.
124
+ *
125
+ * A range rule rather than 128 table entries, because every character in that
126
+ * block is a line, a corner or a junction and there is nothing else in there.
127
+ * Horizontals stay horizontal, verticals stay vertical, and anywhere strokes
128
+ * meet becomes '+' — which is what the same diagram looks like when it is
129
+ * typed rather than drawn, and it still reads as a diagram.
130
+ */
131
+ function boxDrawing(code) {
132
+ if (code < 0x2500 || code > 0x257f)
133
+ return undefined;
134
+ if (BOX_HORIZONTAL.has(code))
135
+ return '-';
136
+ if (BOX_VERTICAL.has(code))
137
+ return '|';
138
+ if (code === 0x2571)
139
+ return '/';
140
+ if (code === 0x2572)
141
+ return '\\';
142
+ if (code === 0x2573)
143
+ return 'X';
144
+ return '+';
145
+ }
96
146
  /**
97
147
  * A JS string as WinAnsi bytes.
98
148
  *
@@ -102,38 +152,135 @@ const SUBSTITUTES = {
102
152
  */
103
153
  export function toWinAnsi(text, report) {
104
154
  const out = [];
105
- for (const ch of text) {
106
- const sub = SUBSTITUTES[ch];
107
- if (sub !== undefined) {
108
- for (const c of sub)
109
- out.push(c.charCodeAt(0));
155
+ for (const ch of normalise(text)) {
156
+ if (IGNORABLE.has(ch))
157
+ continue;
158
+ const bytes = winAnsiBytes(ch);
159
+ if (bytes) {
160
+ out.push(...bytes);
110
161
  continue;
111
162
  }
112
- const code = ch.codePointAt(0);
113
- if (code === 9) {
114
- out.push(32);
163
+ report?.dropped.add(ch);
164
+ out.push(0x3f); // '?'
165
+ }
166
+ return out;
167
+ }
168
+ /**
169
+ * NFC first, everywhere.
170
+ *
171
+ * A macOS-authored file routinely spells 'é' as a bare 'e' plus a combining
172
+ * acute, and decomposed, NEITHER half is WinAnsi: the accent has no code and
173
+ * the pair came out as 'e?'. Composed, it is one byte this encoder has had all
174
+ * along. ⚠️ Every path that measures or draws text has to call this, or the
175
+ * layout measures a string one way and writes it another.
176
+ */
177
+ function normalise(text) {
178
+ return text.normalize('NFC');
179
+ }
180
+ /**
181
+ * One character's WinAnsi bytes, or null when the encoding has no answer for
182
+ * it. Null is the signal that an embedded font is the only way to write it.
183
+ */
184
+ function winAnsiBytes(ch) {
185
+ const sub = SUBSTITUTES[ch] ?? boxDrawing(ch.codePointAt(0));
186
+ if (sub !== undefined) {
187
+ const out = [];
188
+ for (const c of sub)
189
+ out.push(c.charCodeAt(0));
190
+ return out;
191
+ }
192
+ const code = ch.codePointAt(0);
193
+ if (code === 9)
194
+ return [32]; // tab — the layout owns indentation
195
+ if ((code >= 32 && code <= 126) || (code >= 160 && code <= 255))
196
+ return [code];
197
+ const high = WIN_ANSI_HIGH[ch];
198
+ if (high !== undefined)
199
+ return [high];
200
+ return null;
201
+ }
202
+ function segment(text, embedded) {
203
+ const out = [];
204
+ const push = (glyphs) => {
205
+ const last = out[out.length - 1];
206
+ if (last && !!last.glyphs === glyphs)
207
+ return last;
208
+ const fresh = glyphs ? { bytes: [], glyphs: [], source: [] } : { bytes: [] };
209
+ out.push(fresh);
210
+ return fresh;
211
+ };
212
+ for (const ch of normalise(text)) {
213
+ if (IGNORABLE.has(ch))
115
214
  continue;
116
- } // tab — the layout owns indentation
117
- if ((code >= 32 && code <= 126) || (code >= 160 && code <= 255)) {
118
- out.push(code);
215
+ const bytes = winAnsiBytes(ch);
216
+ if (bytes) {
217
+ push(false).bytes.push(...bytes);
119
218
  continue;
120
219
  }
121
- const high = WIN_ANSI_HIGH[ch];
122
- if (high !== undefined) {
123
- out.push(high);
220
+ const glyph = embedded?.glyphFor(ch.codePointAt(0));
221
+ if (glyph !== undefined && glyph > 0) {
222
+ const seg = push(true);
223
+ seg.glyphs.push(glyph);
224
+ seg.source.push(ch);
124
225
  continue;
125
226
  }
126
- report?.dropped.add(ch);
127
- out.push(0x3f); // '?'
227
+ // No WinAnsi code and no glyph in the embedded face either — a '?' it is,
228
+ // and the report is what turns that into a sentence in the UI.
229
+ push(false).bytes.push(0x3f);
128
230
  }
129
231
  return out;
130
232
  }
131
- /** The width of a string at a given size, in points. */
132
- export function widthOfText(font, text, size) {
233
+ /**
234
+ * The characters in `text` that WinAnsi cannot write.
235
+ *
236
+ * Empty means the base-14 fonts can spell the whole string, and no font needs
237
+ * to be fetched or embedded. This is what lets an English document pay nothing
238
+ * for a feature it does not use — the loader is never even called.
239
+ */
240
+ export function unspellable(text) {
241
+ const out = new Set();
242
+ for (const ch of normalise(text)) {
243
+ if (IGNORABLE.has(ch))
244
+ continue;
245
+ if (!winAnsiBytes(ch))
246
+ out.add(ch);
247
+ }
248
+ return out;
249
+ }
250
+ /** What `segment` could not write at all, for the honest warning. */
251
+ function reportDropped(text, embedded, report) {
252
+ if (!report)
253
+ return;
254
+ for (const ch of normalise(text)) {
255
+ if (IGNORABLE.has(ch))
256
+ continue;
257
+ if (winAnsiBytes(ch))
258
+ continue;
259
+ const glyph = embedded?.glyphFor(ch.codePointAt(0));
260
+ if (glyph === undefined || glyph === 0)
261
+ report.dropped.add(ch);
262
+ }
263
+ }
264
+ /**
265
+ * The width of a string at a given size, in points.
266
+ *
267
+ * `embedded` must be the SAME face the page will draw with, or the line-breaker
268
+ * and the content stream disagree. Callers that never embed one pass nothing
269
+ * and get exactly the behaviour they had.
270
+ */
271
+ export function widthOfText(font, text, size, embedded) {
133
272
  const metrics = FONT_METRICS[font];
134
273
  let units = 0;
135
- for (const code of toWinAnsi(text))
136
- units += metrics.widths[code] ?? metrics.fallback;
274
+ for (const seg of segment(text, embedded)) {
275
+ if (seg.glyphs) {
276
+ for (const glyph of seg.glyphs)
277
+ units += embedded.advanceOf(glyph);
278
+ }
279
+ else {
280
+ for (const code of seg.bytes)
281
+ units += metrics.widths[code] ?? metrics.fallback;
282
+ }
283
+ }
137
284
  return (units * size) / 1000;
138
285
  }
139
286
  // ── The document ─────────────────────────────────────────────────────────────
@@ -174,11 +321,14 @@ export class PdfPage {
174
321
  links = [];
175
322
  /** Fonts actually used, so a page's /Resources only names what it draws. */
176
323
  usedFonts = new Set();
324
+ usesEmbedded = false;
177
325
  report;
178
- constructor(width, height, report) {
326
+ embed;
327
+ constructor(width, height, report, embed) {
179
328
  this.width = width;
180
329
  this.height = height;
181
330
  this.report = report;
331
+ this.embed = embed;
182
332
  }
183
333
  /**
184
334
  * Change this page's paper size. See the note on `width`/`height` above:
@@ -199,9 +349,57 @@ export class PdfPage {
199
349
  drawText(text, opts) {
200
350
  if (!text)
201
351
  return;
202
- this.usedFonts.add(opts.font);
203
- const bytes = toWinAnsi(text, this.report);
204
- this.ops.push('BT', `${num(opts.color.r)} ${num(opts.color.g)} ${num(opts.color.b)} rg`, `/${opts.font} ${num(opts.size)} Tf`, `${num(opts.x)} ${num(opts.y)} Td`, `${pdfStringFromBytes(bytes)} Tj`, 'ET');
352
+ const embedded = this.embed?.font;
353
+ reportDropped(text, embedded, this.report);
354
+ const segments = segment(text, embedded);
355
+ // The overwhelmingly common case: one segment, one font, one `Tj`. Kept on
356
+ // its own path so an all-Latin document's content stream is byte-for-byte
357
+ // what it was before any of this existed.
358
+ if (segments.length === 1 && !segments[0].glyphs) {
359
+ this.usedFonts.add(opts.font);
360
+ this.ops.push('BT', `${num(opts.color.r)} ${num(opts.color.g)} ${num(opts.color.b)} rg`, `/${opts.font} ${num(opts.size)} Tf`, `${num(opts.x)} ${num(opts.y)} Td`, `${pdfStringFromBytes(segments[0].bytes)} Tj`, 'ET');
361
+ return;
362
+ }
363
+ // A mixed line — 'Reference: Приложение А'. Each stretch is drawn with its
364
+ // own font at its own x, advanced by the width of the one before it. This
365
+ // is why measuring and drawing must segment identically: the x values here
366
+ // are what the line-breaker was promised.
367
+ //
368
+ // ⚠️ `Tm`, NOT `Td`. `Td` is relative to the START OF THE CURRENT LINE, so
369
+ // a second one inside the same BT/ET lands at the SUM of the two offsets —
370
+ // the third segment of a line drew at 3y, off the top of the page. The
371
+ // single-segment path above keeps `Td` because there is exactly one of
372
+ // them and BT has just reset the matrix, which makes it absolute and keeps
373
+ // an all-Latin content stream byte-for-byte what it always was.
374
+ const metrics = FONT_METRICS[opts.font];
375
+ let x = opts.x;
376
+ this.ops.push('BT', `${num(opts.color.r)} ${num(opts.color.g)} ${num(opts.color.b)} rg`);
377
+ for (const seg of segments) {
378
+ let units = 0;
379
+ if (seg.glyphs) {
380
+ if (!seg.glyphs.length)
381
+ continue;
382
+ this.usesEmbedded = true;
383
+ for (let i = 0; i < seg.glyphs.length; i += 1) {
384
+ const glyph = seg.glyphs[i];
385
+ units += embedded.advanceOf(glyph);
386
+ // Last writer wins, and they agree: the same glyph reached by two
387
+ // code points is one entry either way.
388
+ this.embed.used.set(glyph, seg.source[i]);
389
+ }
390
+ this.ops.push(`/${EMBEDDED_FONT_KEY} ${num(opts.size)} Tf`, `1 0 0 1 ${num(x)} ${num(opts.y)} Tm`, `${hexStringFromGlyphs(seg.glyphs)} Tj`);
391
+ }
392
+ else {
393
+ if (!seg.bytes.length)
394
+ continue;
395
+ this.usedFonts.add(opts.font);
396
+ for (const code of seg.bytes)
397
+ units += metrics.widths[code] ?? metrics.fallback;
398
+ this.ops.push(`/${opts.font} ${num(opts.size)} Tf`, `1 0 0 1 ${num(x)} ${num(opts.y)} Tm`, `${pdfStringFromBytes(seg.bytes)} Tj`);
399
+ }
400
+ x += (units * opts.size) / 1000;
401
+ }
402
+ this.ops.push('ET');
205
403
  }
206
404
  drawRect(opts) {
207
405
  if (opts.width <= 0 || opts.height <= 0)
@@ -234,15 +432,30 @@ export class PdfPage {
234
432
  images: this.images,
235
433
  links: this.links,
236
434
  fonts: [...this.usedFonts],
435
+ embedded: this.usesEmbedded,
237
436
  };
238
437
  }
239
438
  }
439
+ /** The resource name the embedded face is drawn under. */
440
+ const EMBEDDED_FONT_KEY = 'fb';
240
441
  export class PdfDocument {
241
442
  pages = [];
242
443
  /** Collected across every page, so the UI can report it once at the end. */
243
444
  report = { dropped: new Set() };
445
+ embed = { used: new Map() };
446
+ /**
447
+ * Offer a face for everything WinAnsi cannot spell.
448
+ *
449
+ * Optional on purpose, and the whole document works without one — this is the
450
+ * difference between a Cyrillic paragraph and a row of '?', not between a PDF
451
+ * and no PDF. Must be set BEFORE anything is drawn, because a page splits its
452
+ * text between the two fonts as it draws.
453
+ */
454
+ embedFallbackFont(font) {
455
+ this.embed.font = font;
456
+ }
244
457
  addPage(width, height) {
245
- const page = new PdfPage(width, height, this.report);
458
+ const page = new PdfPage(width, height, this.report, this.embed);
246
459
  this.pages.push(page);
247
460
  return page;
248
461
  }
@@ -292,9 +505,68 @@ export class PdfDocument {
292
505
  `/Encoding /WinAnsiEncoding >>\n`);
293
506
  end();
294
507
  }
508
+ // The embedded face, written only when a page actually drew with it. An
509
+ // English document that happened to be converted by an app that offers a
510
+ // font still carries no font: five objects and 350 KB for nothing is not a
511
+ // cost to pay on the ordinary case.
512
+ const builtPages = this.pages.map((page) => page.build());
513
+ const embeddedFont = this.embed.font;
514
+ let embeddedId = null;
515
+ if (embeddedFont && builtPages.some((b) => b.embedded)) {
516
+ const fileId = alloc();
517
+ const descriptorId = alloc();
518
+ const descendantId = alloc();
519
+ const toUnicodeId = alloc();
520
+ embeddedId = alloc();
521
+ // ⚠️ `/Length1` is not decoration. For an uncompressed `/FontFile2` it is
522
+ // the same number as `/Length`, but it is REQUIRED, and a reader that
523
+ // finds it missing is entitled to reject the font — which shows up as a
524
+ // document whose Cyrillic is invisible rather than as an error.
525
+ begin(fileId);
526
+ push(`<< /Length ${embeddedFont.bytes.length} /Length1 ${embeddedFont.bytes.length} >>\nstream\n`);
527
+ push(embeddedFont.bytes);
528
+ push('\nendstream\n');
529
+ end();
530
+ begin(descriptorId);
531
+ push(`<< /Type /FontDescriptor /FontName /${embeddedFont.postScriptName} ` +
532
+ `/Flags ${embeddedFont.flags} ` +
533
+ `/FontBBox [${embeddedFont.bbox.map(num).join(' ')}] ` +
534
+ `/ItalicAngle ${num(embeddedFont.italicAngle)} ` +
535
+ `/Ascent ${num(embeddedFont.ascent)} /Descent ${num(embeddedFont.descent)} ` +
536
+ `/CapHeight ${num(embeddedFont.capHeight)} /StemV 80 ` +
537
+ `/FontFile2 ${fileId} 0 R >>\n`);
538
+ end();
539
+ // Only the glyphs this document used get a width. `/DW 1000` covers the
540
+ // rest, and the rest are never drawn.
541
+ const used = [...this.embed.used.keys()].sort((a, b) => a - b);
542
+ const widths = used
543
+ .map((glyph) => `${glyph} [${num(embeddedFont.advanceOf(glyph))}]`)
544
+ .join(' ');
545
+ begin(descendantId);
546
+ push(`<< /Type /Font /Subtype /CIDFontType2 /BaseFont /${embeddedFont.postScriptName} ` +
547
+ `/CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> ` +
548
+ `/FontDescriptor ${descriptorId} 0 R /DW 1000` +
549
+ (widths ? ` /W [${widths}]` : '') +
550
+ // CIDs ARE glyph indices under Identity-H, which is the whole reason
551
+ // this needs no subsetter and no glyph-name table.
552
+ ` /CIDToGIDMap /Identity >>\n`);
553
+ end();
554
+ const cmap = latin1(toUnicodeCMap(this.embed.used));
555
+ begin(toUnicodeId);
556
+ push(`<< /Length ${cmap.length} >>\nstream\n`);
557
+ push(cmap);
558
+ push('\nendstream\n');
559
+ end();
560
+ begin(embeddedId);
561
+ push(`<< /Type /Font /Subtype /Type0 /BaseFont /${embeddedFont.postScriptName} ` +
562
+ `/Encoding /Identity-H /DescendantFonts [${descendantId} 0 R] ` +
563
+ `/ToUnicode ${toUnicodeId} 0 R >>\n`);
564
+ end();
565
+ }
295
566
  const pageIds = [];
296
- for (const page of this.pages) {
297
- const built = page.build();
567
+ for (let index = 0; index < builtPages.length; index += 1) {
568
+ const built = builtPages[index];
569
+ const page = this.pages[index];
298
570
  const pageId = alloc();
299
571
  pageIds.push(pageId);
300
572
  const contentId = alloc();
@@ -302,6 +574,7 @@ export class PdfDocument {
302
574
  const linkIds = built.links.map(() => alloc());
303
575
  const fontResources = built.fonts
304
576
  .map((f) => `/${f} ${fontIds.get(f)} 0 R`)
577
+ .concat(built.embedded && embeddedId !== null ? [`/${EMBEDDED_FONT_KEY} ${embeddedId} 0 R`] : [])
305
578
  .join(' ');
306
579
  const xobjectResources = imageIds
307
580
  .map((id, i) => `/Im${i} ${id} 0 R`)
@@ -375,6 +648,58 @@ function num(value) {
375
648
  const fixed = value.toFixed(2);
376
649
  return fixed.replace(/\.?0+$/, '') || '0';
377
650
  }
651
+ /**
652
+ * Glyph indices as a hex string — how Identity-H text is written.
653
+ *
654
+ * Two bytes per glyph, big-endian. A literal `(...)` string cannot be used
655
+ * here: half the glyph ids in a real font contain a byte that would have to be
656
+ * escaped, and one missed escape shifts every glyph after it by a byte and
657
+ * turns the rest of the line into someone else's alphabet.
658
+ */
659
+ function hexStringFromGlyphs(glyphs) {
660
+ let out = '<';
661
+ for (const glyph of glyphs)
662
+ out += (glyph & 0xffff).toString(16).padStart(4, '0');
663
+ return out + '>';
664
+ }
665
+ /**
666
+ * The `/ToUnicode` CMap — what makes embedded text selectable and searchable.
667
+ *
668
+ * Without it a reader knows which glyph to DRAW and nothing about what it says,
669
+ * so copying a paragraph out of the PDF yields mojibake and Cmd-F finds
670
+ * nothing. The base-14 path gets this free from `/WinAnsiEncoding`; Identity-H
671
+ * gets it only because this is here.
672
+ *
673
+ * ⚠️ `beginbfchar` takes at most 100 entries per block — a hard limit in the
674
+ * spec, not a convention — so the list is chunked. A single 300-entry block is
675
+ * the classic way this comes out looking right in one reader and empty in
676
+ * another.
677
+ */
678
+ function toUnicodeCMap(used) {
679
+ const entries = [...used.entries()].sort((a, b) => a[0] - b[0]);
680
+ const head = '/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n' +
681
+ '/CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> def\n' +
682
+ '/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n' +
683
+ '1 begincodespacerange\n<0000> <FFFF>\nendcodespacerange\n';
684
+ let body = '';
685
+ for (let i = 0; i < entries.length; i += 100) {
686
+ const chunk = entries.slice(i, i + 100);
687
+ body += `${chunk.length} beginbfchar\n`;
688
+ for (const [glyph, text] of chunk) {
689
+ body += `<${(glyph & 0xffff).toString(16).padStart(4, '0')}> <${utf16BeHex(text)}>\n`;
690
+ }
691
+ body += 'endbfchar\n';
692
+ }
693
+ return head + body + 'endcmap\nCMapName currentdict /CMap defineresource pop\nend\nend\n';
694
+ }
695
+ /** UTF-16BE hex, which is the only encoding a bfchar destination may use. */
696
+ function utf16BeHex(text) {
697
+ let out = '';
698
+ for (let i = 0; i < text.length; i += 1) {
699
+ out += text.charCodeAt(i).toString(16).padStart(4, '0');
700
+ }
701
+ return out;
702
+ }
378
703
  /** A PDF literal string from already-encoded WinAnsi bytes. */
379
704
  function pdfStringFromBytes(bytes) {
380
705
  let out = '(';
@@ -1 +1 @@
1
- {"version":3,"file":"pdfcore.js","sourceRoot":"","sources":["../src/pdfcore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pdfcore.js","sourceRoot":"","sources":["../src/pdfcore.ts"],"names":[],"mappings":"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"}
package/dist/read/docx.js CHANGED
@@ -18,7 +18,7 @@
18
18
  // it. Where one is present and dropped, it is NAMED in a notice, so the loss
19
19
  // arrives with the file rather than being found later.
20
20
  // ---------------------------------------------------------------------------
21
- import { addNotice, mergeRuns, tidy, } from '../model.js';
21
+ import { addNotice, isMonospaceFamily, mergeRuns, runsToText, tidy, } from '../model.js';
22
22
  import { emuToPoints, vmlStyleSize } from '../length.js';
23
23
  import { ZipArchive } from '../unzip.js';
24
24
  import { attr, child, children, descendant, descendants, onOff, parseXml } from '../xml.js';
@@ -224,6 +224,9 @@ async function readParagraph(el, ctx) {
224
224
  else if (isQuote(styleId, ctx.styles)) {
225
225
  blocks.push({ kind: 'quote', runs: mergeRuns(runs) });
226
226
  }
227
+ else if (isPreformatted(props, runs)) {
228
+ blocks.push({ kind: 'code', text: runsToText(runs) });
229
+ }
227
230
  else if (runs.length || !images.length) {
228
231
  blocks.push({ kind: 'paragraph', runs: mergeRuns(runs) });
229
232
  }
@@ -234,6 +237,55 @@ async function readParagraph(el, ctx) {
234
237
  blocks.unshift({ kind: 'pagebreak' });
235
238
  return { runs, blocks, list: null };
236
239
  }
240
+ /**
241
+ * Is this paragraph a preformatted BLOCK, or a sentence with a monospaced word
242
+ * in it?
243
+ *
244
+ * All-monospaced on its own is NOT enough, and the difference matters: plenty
245
+ * of people set a whole document in Courier New, and promoting every paragraph
246
+ * of one to a code block would put a grey plate behind the entire file. So a
247
+ * second signal is required, and either of these two is one:
248
+ *
249
+ * * a HARD LINE BREAK — the paragraph is several lines that were laid out by
250
+ * hand, which is what preformatted means;
251
+ * * a SHADED PLATE — the author already drew the box themselves.
252
+ *
253
+ * A one-line Courier sentence in a prose document has neither, and stays a
254
+ * paragraph whose runs happen to be monospaced. That is the right answer for
255
+ * it: it still comes out in a monospaced face, just without the plate.
256
+ */
257
+ function isPreformatted(props, runs) {
258
+ const text = runsToText(runs);
259
+ if (!text.trim())
260
+ return false;
261
+ // Whitespace-only runs are the joins between code runs and carry no font.
262
+ if (!runs.every((r) => r.code || !r.text.trim()))
263
+ return false;
264
+ return text.includes('\n') || hasShading(props);
265
+ }
266
+ /**
267
+ * A background fill on the paragraph.
268
+ *
269
+ * ⚠️ Looked for in `w:pPr/w:rPr` as well as directly on `w:pPr`. The paragraph
270
+ * MARK's own formatting lives in that inner `w:rPr`, and the Word file this was
271
+ * written for carries the plate there and nowhere else. Checking only the outer
272
+ * level finds nothing.
273
+ */
274
+ function hasShading(props) {
275
+ if (!props)
276
+ return false;
277
+ for (const holder of [props, child(props, W, 'rPr')]) {
278
+ if (!holder)
279
+ continue;
280
+ const shd = child(holder, W, 'shd');
281
+ if (!shd)
282
+ continue;
283
+ const fill = (attr(shd, W, 'fill') ?? '').toLowerCase();
284
+ if (fill && fill !== 'auto' && fill !== 'ffffff')
285
+ return true;
286
+ }
287
+ return false;
288
+ }
237
289
  /**
238
290
  * Runs, hyperlinks and breaks, in document order.
239
291
  *
@@ -304,6 +356,15 @@ function readRun(el, inherited) {
304
356
  const runStyle = (props ? attr(child(props, W, 'rStyle'), W, 'val') : null) ?? '';
305
357
  if (/^(HTMLCode|Code|SourceText|VerbatimChar)$/i.test(runStyle))
306
358
  style.code = true;
359
+ // ...but most Word documents mark code by switching FONT and nothing else —
360
+ // the character style is what an exporter emits, not what a person typing
361
+ // into Word produces. `read/odt.ts` has tested the family since it was
362
+ // written; this side did not, so a Courier diagram that survived an .odt came
363
+ // out of the identical .docx in Helvetica with its columns adrift.
364
+ const fonts = props ? child(props, W, 'rFonts') : null;
365
+ if (fonts && isMonospaceFamily(attr(fonts, W, 'ascii') ?? attr(fonts, W, 'hAnsi') ?? '')) {
366
+ style.code = true;
367
+ }
307
368
  const out = [];
308
369
  for (const node of Array.from(el.childNodes)) {
309
370
  if (node.nodeType !== 1)
@@ -458,6 +519,12 @@ async function readImages(el, ctx) {
458
519
  block.width = size.width;
459
520
  if (size.height !== null)
460
521
  block.height = size.height;
522
+ // Several drawings in ONE paragraph sat on one line in Word — a logo strip,
523
+ // a row of screenshots. `readImages` runs per paragraph, so "not the first
524
+ // one found here" is exactly that relationship, and the PDF writer lays
525
+ // them back out side by side.
526
+ if (out.length)
527
+ block.withPrevious = true;
461
528
  out.push(block);
462
529
  }
463
530
  return out;