postext-pdf 1.27.1 → 1.28.1
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/README.md +1 -1
- package/dist/__tests__/arabicShaping.test.js +2 -0
- package/dist/__tests__/arabicShaping.test.js.map +1 -1
- package/dist/__tests__/crossRefLinks.test.js +49 -0
- package/dist/__tests__/crossRefLinks.test.js.map +1 -1
- package/dist/__tests__/inlineCaptionSide.test.d.ts +2 -0
- package/dist/__tests__/inlineCaptionSide.test.d.ts.map +1 -0
- package/dist/__tests__/inlineCaptionSide.test.js +151 -0
- package/dist/__tests__/inlineCaptionSide.test.js.map +1 -0
- package/dist/__tests__/lineTracking.test.js +31 -0
- package/dist/__tests__/lineTracking.test.js.map +1 -1
- package/dist/__tests__/metadata.test.js +40 -0
- package/dist/__tests__/metadata.test.js.map +1 -1
- package/dist/__tests__/printOutput.test.js +34 -0
- package/dist/__tests__/printOutput.test.js.map +1 -1
- package/dist/__tests__/scriptContext.test.d.ts +2 -0
- package/dist/__tests__/scriptContext.test.d.ts.map +1 -0
- package/dist/__tests__/scriptContext.test.js +266 -0
- package/dist/__tests__/scriptContext.test.js.map +1 -0
- package/dist/__tests__/scriptContextHan.test.d.ts +2 -0
- package/dist/__tests__/scriptContextHan.test.d.ts.map +1 -0
- package/dist/__tests__/scriptContextHan.test.js +164 -0
- package/dist/__tests__/scriptContextHan.test.js.map +1 -0
- package/dist/__tests__/sharedGlyphReadback.test.d.ts +2 -0
- package/dist/__tests__/sharedGlyphReadback.test.d.ts.map +1 -0
- package/dist/__tests__/sharedGlyphReadback.test.js +331 -0
- package/dist/__tests__/sharedGlyphReadback.test.js.map +1 -0
- package/dist/faceFiles.d.ts +9 -0
- package/dist/faceFiles.d.ts.map +1 -1
- package/dist/faceFiles.js +22 -0
- package/dist/faceFiles.js.map +1 -1
- package/dist/fontCache.d.ts +10 -0
- package/dist/fontCache.d.ts.map +1 -1
- package/dist/fontCache.js +15 -0
- package/dist/fontCache.js.map +1 -1
- package/dist/pdf-backend/blockRender.d.ts.map +1 -1
- package/dist/pdf-backend/blockRender.js +11 -5
- package/dist/pdf-backend/blockRender.js.map +1 -1
- package/dist/pdf-backend/fallbackSpaces.d.ts +3 -0
- package/dist/pdf-backend/fallbackSpaces.d.ts.map +1 -1
- package/dist/pdf-backend/fallbackSpaces.js +5 -0
- package/dist/pdf-backend/fallbackSpaces.js.map +1 -1
- package/dist/pdf-backend/index.d.ts +8 -0
- package/dist/pdf-backend/index.d.ts.map +1 -1
- package/dist/pdf-backend/index.js +15 -0
- package/dist/pdf-backend/index.js.map +1 -1
- package/dist/pdf-backend/links.d.ts +14 -5
- package/dist/pdf-backend/links.d.ts.map +1 -1
- package/dist/pdf-backend/links.js +20 -6
- package/dist/pdf-backend/links.js.map +1 -1
- package/dist/pdf-backend/primitives.d.ts +28 -5
- package/dist/pdf-backend/primitives.d.ts.map +1 -1
- package/dist/pdf-backend/primitives.js +219 -57
- package/dist/pdf-backend/primitives.js.map +1 -1
- package/dist/pdf-backend/renderResourceBlock.d.ts.map +1 -1
- package/dist/pdf-backend/renderResourceBlock.js +8 -6
- package/dist/pdf-backend/renderResourceBlock.js.map +1 -1
- package/dist/pdf-backend/rtlRun.d.ts +5 -1
- package/dist/pdf-backend/rtlRun.d.ts.map +1 -1
- package/dist/pdf-backend/rtlRun.js +7 -3
- package/dist/pdf-backend/rtlRun.js.map +1 -1
- package/dist/pdf-backend/shapedText.d.ts +5 -0
- package/dist/pdf-backend/shapedText.d.ts.map +1 -1
- package/dist/pdf-backend/shapedText.js +23 -7
- package/dist/pdf-backend/shapedText.js.map +1 -1
- package/dist/pdf-backend/svgVector.js +1 -1
- package/dist/pdf-backend/svgVector.js.map +1 -1
- package/dist/print/pdfx.d.ts +8 -1
- package/dist/print/pdfx.d.ts.map +1 -1
- package/dist/print/pdfx.js +25 -1
- package/dist/print/pdfx.js.map +1 -1
- package/dist/shapingLanguage.d.ts +15 -3
- package/dist/shapingLanguage.d.ts.map +1 -1
- package/dist/shapingLanguage.js +50 -3
- package/dist/shapingLanguage.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/pdf-backend/links.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/pdf-backend/links.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BlendMode, type PDFPage, type PDFFont, type Color, PDFName, PDFOperator } from 'pdf-lib';
|
|
2
2
|
import { type ColorMode } from '../print/colorMode';
|
|
3
|
-
import { type CjkRegion, type ForcedOrientation, type RoundedOutline, type VDTChip } from 'postext';
|
|
3
|
+
import { type CjkRegion, type ForcedOrientation, type RoundedOutline, type ScriptContext, type VDTChip } from 'postext';
|
|
4
4
|
import type { PageTagger } from './tagging';
|
|
5
5
|
export interface PageCtx {
|
|
6
6
|
page: PDFPage;
|
|
@@ -33,6 +33,11 @@ export interface PageCtx {
|
|
|
33
33
|
* vertical painter reads it, since it sets its own spacing inside its
|
|
34
34
|
* text objects. */
|
|
35
35
|
trackingPx?: number;
|
|
36
|
+
/** How many spans opened with {@link beginActualTextSpan} are open:
|
|
37
|
+
* what is painted inside one is read as the span's text, and no glyph
|
|
38
|
+
* takes a span of its own there (#755; a reader that meets an
|
|
39
|
+
* `/ActualText` inside another, Poppler, drops the outer one). */
|
|
40
|
+
readSpans?: number;
|
|
36
41
|
/** Set while a right-to-left page's flow paints through its mirror
|
|
37
42
|
* (`VDTMirroredFlowFrame`, {@link mirrorMatrix}): every text object
|
|
38
43
|
* and picture is turned back about its own box, so it reads as written
|
|
@@ -56,6 +61,15 @@ export interface VerticalPaint {
|
|
|
56
61
|
/** Set the character spacing (`Tc`) text is painted with, px, and record
|
|
57
62
|
* it on the context. */
|
|
58
63
|
export declare function setTrackingPx(ctx: PageCtx, px: number): void;
|
|
64
|
+
/**
|
|
65
|
+
* Paint, with `paint`, a word the layout measured in `script`
|
|
66
|
+
* (`VDTLineSegment.scriptContext`, #725): shaped in that script (the
|
|
67
|
+
* script in force, `withShapingScript`) and, in a script whose words take
|
|
68
|
+
* no tracking (`scriptContextUntracked`: the Arabic script), with no
|
|
69
|
+
* character spacing, as it was measured. Any other word (`script`
|
|
70
|
+
* undefined) is just painted.
|
|
71
|
+
*/
|
|
72
|
+
export declare function paintInScript<T>(ctx: PageCtx, script: ScriptContext | undefined, paint: () => T): T;
|
|
59
73
|
/** A PDF transformation matrix `[a b c d e f]` (`x' = a·x + c·y + e`,
|
|
60
74
|
* `y' = b·x + d·y + f`). */
|
|
61
75
|
export type PdfMatrix = [number, number, number, number, number, number];
|
|
@@ -158,8 +172,12 @@ export interface TextShow {
|
|
|
158
172
|
}
|
|
159
173
|
/** The show-text operators of `text` in `font`'s face: one
|
|
160
174
|
* ({@link showTextShaped}) for a face of one file, else one per run of
|
|
161
|
-
* characters set in the same file (see `faceFiles.ts`).
|
|
162
|
-
|
|
175
|
+
* characters set in the same file (see `faceFiles.ts`). A glyph the
|
|
176
|
+
* font's `/ToUnicode` map reads as other text is shown in a span of its
|
|
177
|
+
* own ({@link glyphReads}), unless `read` is false: the caller reads the
|
|
178
|
+
* text some other way (an `/ActualText` over all of it, a figure's
|
|
179
|
+
* alternate text). */
|
|
180
|
+
export declare function textShows(font: PDFFont, text: string, read?: boolean): TextShow[];
|
|
163
181
|
/** How far `text` moves the pen in `font`'s face at `sizePx`, px, with
|
|
164
182
|
* `trackingPx` after every glyph (as {@link showTextShaped} paints it,
|
|
165
183
|
* each run in the file of the face that has it); and how many glyphs it
|
|
@@ -187,12 +205,17 @@ export declare function measuredTextOperator(font: PDFFont, pieces: readonly {
|
|
|
187
205
|
* {@link measuredTextOperator} for a face of any number of files: the
|
|
188
206
|
* pieces cut into runs by file (see `faceFiles.ts`), one show-text
|
|
189
207
|
* operator per stretch set in the same file. The pen carries across the
|
|
190
|
-
* font switches, so every piece still starts where the layout put it.
|
|
208
|
+
* font switches, so every piece still starts where the layout put it. A
|
|
209
|
+
* glyph the font's `/ToUnicode` map reads as other text is shown in a span
|
|
210
|
+
* of its own between two of them ({@link glyphReads}).
|
|
191
211
|
*/
|
|
192
212
|
export declare function measuredTextShows(font: PDFFont, pieces: readonly {
|
|
193
213
|
text: string;
|
|
194
214
|
width: number;
|
|
195
|
-
}[], sizePx: number, trackingPx?: number
|
|
215
|
+
}[], sizePx: number, trackingPx?: number,
|
|
216
|
+
/** False when the caller reads the text some other way: no glyph takes
|
|
217
|
+
* a span of its own (see {@link textShows}). */
|
|
218
|
+
read?: boolean): TextShow[] | undefined;
|
|
196
219
|
export declare function fontKeyOn(page: PDFPage, font: PDFFont): PDFName;
|
|
197
220
|
/** Outline of the glyphs a text is drawn with (a design text's `stroke`):
|
|
198
221
|
* stroked over the fill, or alone for hollow letters. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/pdf-backend/primitives.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,SAAS,EAOT,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,KAAK,EAGV,OAAO,EAEP,WAAW,EAoBZ,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAmC,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,
|
|
1
|
+
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/pdf-backend/primitives.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,40 @@
|
|
|
1
1
|
import { rgb, cmyk, grayscale, pushGraphicsState, popGraphicsState, rectangle, clip, endPath, concatTransformationMatrix, PDFArray, PDFHexString, PDFName, PDFNumber, PDFOperator, PDFOperatorNames, beginText, endText, setFillingColor, setFontAndSize, showText, setTextMatrix, moveTo, lineTo, appendBezierCurve, closePath, stroke, fill, setStrokingColor, setLineWidth, setTextRenderingMode, TextRenderingMode, setGraphicsState, setCharacterSpacing, } from 'pdf-lib';
|
|
2
2
|
import { colorAlpha, hexToRgb, rgbToCmyk, rgbToGrayscale } from '../colors';
|
|
3
3
|
import { isPrintMode, modeKey, overPaper } from '../print/colorMode';
|
|
4
|
-
import { joinsLetters } from 'postext';
|
|
5
|
-
import { fallbackPieces } from './fallbackSpaces';
|
|
4
|
+
import { joinsLetters, scriptContextUntracked } from 'postext';
|
|
5
|
+
import { fallbackPieces, isDefaultIgnorable, isSpaceCharacter } from './fallbackSpaces';
|
|
6
6
|
import { fileRuns, noteMissingGlyphs } from '../faceFiles';
|
|
7
|
-
import {
|
|
7
|
+
import { needsComplexShaping } from '../complexShaping';
|
|
8
|
+
import { shapingKey, withShapingScript } from '../shapingLanguage';
|
|
8
9
|
/** Set the character spacing (`Tc`) text is painted with, px, and record
|
|
9
10
|
* it on the context. */
|
|
10
11
|
export function setTrackingPx(ctx, px) {
|
|
11
12
|
ctx.trackingPx = px;
|
|
12
13
|
ctx.page.pushOperators(setCharacterSpacing(px * ctx.scale));
|
|
13
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Paint, with `paint`, a word the layout measured in `script`
|
|
17
|
+
* (`VDTLineSegment.scriptContext`, #725): shaped in that script (the
|
|
18
|
+
* script in force, `withShapingScript`) and, in a script whose words take
|
|
19
|
+
* no tracking (`scriptContextUntracked`: the Arabic script), with no
|
|
20
|
+
* character spacing, as it was measured. Any other word (`script`
|
|
21
|
+
* undefined) is just painted.
|
|
22
|
+
*/
|
|
23
|
+
export function paintInScript(ctx, script, paint) {
|
|
24
|
+
if (script === undefined)
|
|
25
|
+
return paint();
|
|
26
|
+
const tracking = ctx.trackingPx ?? 0;
|
|
27
|
+
const lift = tracking !== 0 && scriptContextUntracked(script);
|
|
28
|
+
if (lift)
|
|
29
|
+
setTrackingPx(ctx, 0);
|
|
30
|
+
try {
|
|
31
|
+
return withShapingScript(script, paint);
|
|
32
|
+
}
|
|
33
|
+
finally {
|
|
34
|
+
if (lift)
|
|
35
|
+
setTrackingPx(ctx, tracking);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
14
38
|
/** Apply `m` to a point. */
|
|
15
39
|
export function applyMatrix(m, x, y) {
|
|
16
40
|
return { x: m[0] * x + m[2] * y + m[4], y: m[1] * x + m[3] * y + m[5] };
|
|
@@ -327,8 +351,15 @@ export function showTextShaped(font, text) {
|
|
|
327
351
|
const hit = cache.get(key);
|
|
328
352
|
if (hit)
|
|
329
353
|
return hit;
|
|
330
|
-
|
|
331
|
-
|
|
354
|
+
const run = shownRun(font, text);
|
|
355
|
+
let op;
|
|
356
|
+
if (run)
|
|
357
|
+
op = partsOperator(font, plainParts(run.parts));
|
|
358
|
+
else {
|
|
359
|
+
// A standard font: no shaper, pdf-lib's own encoding.
|
|
360
|
+
noteMissingGlyphs(font, text);
|
|
361
|
+
op = showText(font.encodeText(text));
|
|
362
|
+
}
|
|
332
363
|
if (cache.size >= ENCODE_CACHE_SLOTS)
|
|
333
364
|
cache.clear();
|
|
334
365
|
cache.set(key, op);
|
|
@@ -336,9 +367,16 @@ export function showTextShaped(font, text) {
|
|
|
336
367
|
}
|
|
337
368
|
/** The show-text operators of `text` in `font`'s face: one
|
|
338
369
|
* ({@link showTextShaped}) for a face of one file, else one per run of
|
|
339
|
-
* characters set in the same file (see `faceFiles.ts`).
|
|
340
|
-
|
|
341
|
-
|
|
370
|
+
* characters set in the same file (see `faceFiles.ts`). A glyph the
|
|
371
|
+
* font's `/ToUnicode` map reads as other text is shown in a span of its
|
|
372
|
+
* own ({@link glyphReads}), unless `read` is false: the caller reads the
|
|
373
|
+
* text some other way (an `/ActualText` over all of it, a figure's
|
|
374
|
+
* alternate text). */
|
|
375
|
+
export function textShows(font, text, read = true) {
|
|
376
|
+
return fileRuns(font, text).flatMap((run) => {
|
|
377
|
+
const shown = read ? shownRun(run.font, run.text) : undefined;
|
|
378
|
+
return shown?.reads ? partsShows(run.font, shown.parts) : [{ font: run.font, op: showTextShaped(run.font, run.text) }];
|
|
379
|
+
});
|
|
342
380
|
}
|
|
343
381
|
function shapingFace(font) {
|
|
344
382
|
const embedder = font.embedder;
|
|
@@ -347,22 +385,96 @@ function shapingFace(font) {
|
|
|
347
385
|
return undefined;
|
|
348
386
|
return { face, features: embedder.fontFeatures };
|
|
349
387
|
}
|
|
350
|
-
/**
|
|
351
|
-
*
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
*
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
*
|
|
388
|
+
/**
|
|
389
|
+
* What the glyphs fontkit laid `text` out with are read as, where the
|
|
390
|
+
* font's `/ToUnicode` map reads them as other text (#755); undefined when
|
|
391
|
+
* the map reads every one as written, which is nearly always.
|
|
392
|
+
*
|
|
393
|
+
* The map is one per font, and a glyph keeps the characters it was first
|
|
394
|
+
* given (fontkit makes a glyph once, with the characters of the text that
|
|
395
|
+
* first showed it; `shapedText.ts` does the same for the glyphs HarfBuzz
|
|
396
|
+
* shows). A glyph two characters share therefore reads as the first of
|
|
397
|
+
* them the document set: the bracket a right-to-left run mirrors is the
|
|
398
|
+
* glyph of the other bracket, so after `(١)` in an Arabic note the glyph
|
|
399
|
+
* of `)` stands for `(`, and a later `(Brill, 2017)` in the same font read
|
|
400
|
+
* back `(Brill, 2017(`. A form the shaper puts in a character's place
|
|
401
|
+
* takes the characters of that character's own glyph, the wrong ones
|
|
402
|
+
* with them. The same goes for any two characters the face's cmap draws
|
|
403
|
+
* with one glyph: the hyphen-minus and the hyphen, the space and the
|
|
404
|
+
* no-break space. Such a glyph is shown in a span whose `/ActualText` is
|
|
405
|
+
* its character here, as `shapedText.ts` does for a cluster HarfBuzz
|
|
406
|
+
* shaped: the first use of a glyph costs nothing, each use for another
|
|
407
|
+
* character one span.
|
|
408
|
+
*
|
|
409
|
+
* The glyphs are walked against the text. A glyph whose own characters
|
|
410
|
+
* are the next ones of the text reads right; one with no characters (the
|
|
411
|
+
* second glyph of a decomposed letter) reads as nothing; one that holds
|
|
412
|
+
* one character, and not the next of the text, is read as that next
|
|
413
|
+
* character. Three glyphs are left as they read: `.notdef`, which stands
|
|
414
|
+
* for every character the face lacks; the space glyph fontkit hides an
|
|
415
|
+
* invisible character behind; and the space glyph, read as a space, under
|
|
416
|
+
* a no-break space or any other space the face draws with it (a space the
|
|
417
|
+
* face lacks reads as a space too, see `fallbackSpaces.ts`). The reads
|
|
418
|
+
* hold only when the walk ends where the text does (every glyph accounted
|
|
419
|
+
* for, one way or another); when it does not — a glyph for several
|
|
420
|
+
* characters that holds others, a variation selector — the run is left as
|
|
421
|
+
* it reads.
|
|
422
|
+
*/
|
|
423
|
+
function glyphReads(face, glyphs, text) {
|
|
424
|
+
// fontkit hands a right-to-left run's glyphs over in visual order: such
|
|
425
|
+
// text is HarfBuzz's whenever it is loaded, and is not walked here.
|
|
426
|
+
if (needsComplexShaping(text))
|
|
427
|
+
return undefined;
|
|
428
|
+
let reads;
|
|
429
|
+
let space;
|
|
430
|
+
// UTF-16 offset in `text` of the next character to read.
|
|
431
|
+
let at = 0;
|
|
432
|
+
for (let i = 0; i < glyphs.length; i++) {
|
|
433
|
+
const glyph = glyphs[i];
|
|
434
|
+
const own = glyph.codePoints;
|
|
435
|
+
if (glyph.id !== 0 && (!own || own.length === 0))
|
|
436
|
+
continue;
|
|
437
|
+
let end = at;
|
|
438
|
+
for (const cp of own ?? []) {
|
|
439
|
+
if (text.codePointAt(end) !== cp) {
|
|
440
|
+
end = -1;
|
|
441
|
+
break;
|
|
442
|
+
}
|
|
443
|
+
end += cp > 0xffff ? 2 : 1;
|
|
444
|
+
}
|
|
445
|
+
if (end > at) {
|
|
446
|
+
at = end;
|
|
447
|
+
continue;
|
|
448
|
+
}
|
|
449
|
+
const cp = text.codePointAt(at);
|
|
450
|
+
if (cp === undefined)
|
|
451
|
+
return undefined;
|
|
452
|
+
at += cp > 0xffff ? 2 : 1;
|
|
453
|
+
if (glyph.id === 0)
|
|
454
|
+
continue;
|
|
455
|
+
if (isDefaultIgnorable(cp) && glyph.id === (space ??= cmapGlyphId(face, 0x20)))
|
|
456
|
+
continue;
|
|
457
|
+
if (own.length !== 1)
|
|
458
|
+
return undefined;
|
|
459
|
+
if (own[0] === 0x20 && isSpaceCharacter(cp))
|
|
460
|
+
continue;
|
|
461
|
+
reads ??= new Array(glyphs.length);
|
|
462
|
+
reads[i] = String.fromCodePoint(cp);
|
|
463
|
+
}
|
|
464
|
+
return at === text.length ? reads : undefined;
|
|
465
|
+
}
|
|
466
|
+
/** The id of the glyph the face's cmap gives `cp` (0: none), read from the
|
|
467
|
+
* cmap itself: `glyphForCodePoint` would make the glyph, with `cp` as the
|
|
468
|
+
* characters it then keeps in the font's map. */
|
|
469
|
+
function cmapGlyphId(face, cp) {
|
|
470
|
+
const cmap = face._cmapProcessor;
|
|
471
|
+
return typeof cmap?.lookup === 'function' ? cmap.lookup(cp) || 0 : 0;
|
|
472
|
+
}
|
|
473
|
+
/** The `TJ` array (hex glyph runs and adjustments) of a shaped run, with
|
|
474
|
+
* the sum of the glyphs' own widths (their `W` entries), in thousandths
|
|
475
|
+
* of the font size; undefined when the shaper's positions cannot be
|
|
476
|
+
* matched to its glyphs. A glyph the font's map reads as other text is a
|
|
477
|
+
* part of its own ({@link glyphReads}). */
|
|
366
478
|
function shapedRun(font, text, encoded) {
|
|
367
479
|
const shaping = shapingFace(font);
|
|
368
480
|
if (!shaping)
|
|
@@ -373,6 +485,7 @@ function shapedRun(font, text, encoded) {
|
|
|
373
485
|
const count = run.glyphs.length;
|
|
374
486
|
if (count === 0 || hex.length !== count * 4 || run.positions.length !== count)
|
|
375
487
|
return undefined;
|
|
488
|
+
const reads = glyphReads(face, run.glyphs, text);
|
|
376
489
|
// TJ numbers are thousandths of text space, subtracted from the pen: a
|
|
377
490
|
// glyph drawn at `pen + xOffset` then advancing by `xAdvance` (not its
|
|
378
491
|
// W width `advanceWidth`) is `-xOffset, glyph, -(xAdvance - w - xOffset)`.
|
|
@@ -395,7 +508,13 @@ function shapedRun(font, text, encoded) {
|
|
|
395
508
|
parts.push(lead);
|
|
396
509
|
}
|
|
397
510
|
const cid = hex.slice(i * 4, i * 4 + 4);
|
|
398
|
-
|
|
511
|
+
const read = reads?.[i];
|
|
512
|
+
if (read !== undefined) {
|
|
513
|
+
flushHex();
|
|
514
|
+
parts.push({ hex: cid, text: read });
|
|
515
|
+
}
|
|
516
|
+
else
|
|
517
|
+
pendingHex += cid;
|
|
399
518
|
pendingAdjust = -(pos.xAdvance - run.glyphs[i].advanceWidth - pos.xOffset) * toText;
|
|
400
519
|
widths += cid === '0000' && subsetFont ? MISSING_WIDTH : run.glyphs[i].advanceWidth * toText;
|
|
401
520
|
}
|
|
@@ -423,10 +542,13 @@ function partsOperator(font, parts) {
|
|
|
423
542
|
return parts.length === 1 && typeof parts[0] === 'string' ? showText(PDFHexString.of(parts[0])) : adjustedOperator(font, parts);
|
|
424
543
|
}
|
|
425
544
|
/** Append a part to a `TJ` array, merging it into a neighbouring glyph run
|
|
426
|
-
* or number; a zero adjustment is dropped.
|
|
545
|
+
* or number; a zero adjustment is dropped. A glyph read through a span
|
|
546
|
+
* stays a part of its own. */
|
|
427
547
|
function pushPart(parts, part) {
|
|
428
548
|
const last = parts[parts.length - 1];
|
|
429
|
-
if (typeof part === '
|
|
549
|
+
if (typeof part === 'object')
|
|
550
|
+
parts.push(part);
|
|
551
|
+
else if (typeof part === 'number') {
|
|
430
552
|
if (part === 0)
|
|
431
553
|
return;
|
|
432
554
|
if (typeof last === 'number')
|
|
@@ -444,16 +566,63 @@ function pushPart(parts, part) {
|
|
|
444
566
|
function shownRunOf(parts, widths) {
|
|
445
567
|
let advance = widths;
|
|
446
568
|
let glyphs = 0;
|
|
569
|
+
let reads = false;
|
|
447
570
|
for (const part of parts) {
|
|
448
571
|
if (typeof part === 'number')
|
|
449
572
|
advance -= part;
|
|
450
|
-
else
|
|
573
|
+
else if (typeof part === 'string')
|
|
451
574
|
glyphs += part.length / 4;
|
|
575
|
+
else {
|
|
576
|
+
glyphs += part.hex.length / 4;
|
|
577
|
+
reads = true;
|
|
578
|
+
}
|
|
452
579
|
}
|
|
453
|
-
return { parts, advance, glyphs };
|
|
580
|
+
return { parts, advance, glyphs, reads };
|
|
581
|
+
}
|
|
582
|
+
/** `parts` with every glyph read through the font's map: one show-text
|
|
583
|
+
* array, as before any glyph took a span. */
|
|
584
|
+
function plainParts(parts) {
|
|
585
|
+
const out = [];
|
|
586
|
+
for (const part of parts)
|
|
587
|
+
pushPart(out, typeof part === 'object' ? part.hex : part);
|
|
588
|
+
return out;
|
|
454
589
|
}
|
|
455
|
-
/**
|
|
456
|
-
*
|
|
590
|
+
/**
|
|
591
|
+
* The show-text operators of `parts` in `font`: one, or, around each glyph
|
|
592
|
+
* read through a span ({@link ReadGlyph}), the span's `BDC`, the glyph and
|
|
593
|
+
* its `EMC`. The glyphs and the pen adjustments are the same ones in the
|
|
594
|
+
* same order, cut into several arrays: nothing moves on the page.
|
|
595
|
+
*/
|
|
596
|
+
function partsShows(font, parts) {
|
|
597
|
+
const shows = [];
|
|
598
|
+
let plain = [];
|
|
599
|
+
const flush = () => {
|
|
600
|
+
if (plain.length > 0)
|
|
601
|
+
shows.push({ font, op: partsOperator(font, plain) });
|
|
602
|
+
plain = [];
|
|
603
|
+
};
|
|
604
|
+
for (const part of parts) {
|
|
605
|
+
if (typeof part !== 'object') {
|
|
606
|
+
pushPart(plain, part);
|
|
607
|
+
continue;
|
|
608
|
+
}
|
|
609
|
+
flush();
|
|
610
|
+
const props = font.doc.context.obj({ ActualText: PDFHexString.fromText(part.text) });
|
|
611
|
+
shows.push({ font, op: PDFOperator.of(PDFOperatorNames.BeginMarkedContentSequence, [PDFName.of('Span'), props]) }, { font, op: showText(PDFHexString.of(part.hex)) }, { font, op: PDFOperator.of(PDFOperatorNames.EndMarkedContent) });
|
|
612
|
+
}
|
|
613
|
+
flush();
|
|
614
|
+
if (shows.length === 0)
|
|
615
|
+
shows.push({ font, op: partsOperator(font, []) });
|
|
616
|
+
return shows;
|
|
617
|
+
}
|
|
618
|
+
/**
|
|
619
|
+
* The parts of a text holding a space the face has no glyph for (a narrow
|
|
620
|
+
* no-break space, a figure space…) or an invisible character (a word
|
|
621
|
+
* joiner): painted as the canvas measured it, not as `.notdef` boxes (see
|
|
622
|
+
* `fallbackSpaces.ts`). A missing space is the face's space glyph — text
|
|
623
|
+
* extraction still finds a space there — moved to the browser's advance
|
|
624
|
+
* for it; an invisible character is not drawn.
|
|
625
|
+
*/
|
|
457
626
|
function fallbackRun(font, face, pieces) {
|
|
458
627
|
const toText = 1000 / face.unitsPerEm;
|
|
459
628
|
const spaceGlyph = face.hasGlyphForCodePoint(0x20) ? face.glyphForCodePoint(0x20) : undefined;
|
|
@@ -462,7 +631,11 @@ function fallbackRun(font, face, pieces) {
|
|
|
462
631
|
for (const piece of pieces) {
|
|
463
632
|
if ('space' in piece) {
|
|
464
633
|
if (spaceGlyph) {
|
|
465
|
-
|
|
634
|
+
// The face's space glyph, read as a space whatever the font's map
|
|
635
|
+
// gives it (a no-break space set before any space, #755).
|
|
636
|
+
const space = font.encodeText(' ');
|
|
637
|
+
for (const part of shapedRun(font, ' ', space)?.parts ?? [space.asString()])
|
|
638
|
+
pushPart(parts, part);
|
|
466
639
|
pushPart(parts, tjNumber((spaceGlyph.advanceWidth - piece.space) * toText));
|
|
467
640
|
widths += spaceGlyph.advanceWidth * toText;
|
|
468
641
|
}
|
|
@@ -479,24 +652,6 @@ function fallbackRun(font, face, pieces) {
|
|
|
479
652
|
}
|
|
480
653
|
return shownRunOf(parts, widths);
|
|
481
654
|
}
|
|
482
|
-
/**
|
|
483
|
-
* The show-text operator of a text holding a space the face has no glyph
|
|
484
|
-
* for (a narrow no-break space, a figure space…) or an invisible character
|
|
485
|
-
* (a word joiner): painted as the canvas measured it, not as `.notdef`
|
|
486
|
-
* boxes (see `fallbackSpaces.ts`). A missing space is the face's space
|
|
487
|
-
* glyph — text extraction still finds a space there — moved to the
|
|
488
|
-
* browser's advance for it; an invisible character is not drawn. Undefined
|
|
489
|
-
* for text that needs none of this.
|
|
490
|
-
*/
|
|
491
|
-
function fallbackOperator(font, text) {
|
|
492
|
-
const shaping = shapingFace(font);
|
|
493
|
-
if (!shaping)
|
|
494
|
-
return undefined;
|
|
495
|
-
const pieces = fallbackPieces(shaping.face, text);
|
|
496
|
-
if (!pieces)
|
|
497
|
-
return undefined;
|
|
498
|
-
return partsOperator(font, fallbackRun(font, shaping.face, pieces).parts);
|
|
499
|
-
}
|
|
500
655
|
const runsByFont = new WeakMap();
|
|
501
656
|
/** `text` as {@link showTextShaped} paints it, with the advance and glyph
|
|
502
657
|
* count it leaves (cached per font). Undefined when the font carries no
|
|
@@ -567,16 +722,21 @@ const MEASURED_TOLERANCE = 0.5;
|
|
|
567
722
|
* added after every glyph. Undefined when the font carries no shaper.
|
|
568
723
|
*/
|
|
569
724
|
export function measuredTextOperator(font, pieces, sizePx, trackingPx = 0) {
|
|
570
|
-
const shows = measuredTextShows(font, pieces, sizePx, trackingPx);
|
|
725
|
+
const shows = measuredTextShows(font, pieces, sizePx, trackingPx, false);
|
|
571
726
|
return shows && shows.length === 1 ? shows[0].op : undefined;
|
|
572
727
|
}
|
|
573
728
|
/**
|
|
574
729
|
* {@link measuredTextOperator} for a face of any number of files: the
|
|
575
730
|
* pieces cut into runs by file (see `faceFiles.ts`), one show-text
|
|
576
731
|
* operator per stretch set in the same file. The pen carries across the
|
|
577
|
-
* font switches, so every piece still starts where the layout put it.
|
|
732
|
+
* font switches, so every piece still starts where the layout put it. A
|
|
733
|
+
* glyph the font's `/ToUnicode` map reads as other text is shown in a span
|
|
734
|
+
* of its own between two of them ({@link glyphReads}).
|
|
578
735
|
*/
|
|
579
|
-
export function measuredTextShows(font, pieces, sizePx, trackingPx = 0
|
|
736
|
+
export function measuredTextShows(font, pieces, sizePx, trackingPx = 0,
|
|
737
|
+
/** False when the caller reads the text some other way: no glyph takes
|
|
738
|
+
* a span of its own (see {@link textShows}). */
|
|
739
|
+
read = true) {
|
|
580
740
|
if (!(sizePx > 0))
|
|
581
741
|
return undefined;
|
|
582
742
|
const groups = [];
|
|
@@ -596,7 +756,7 @@ export function measuredTextShows(font, pieces, sizePx, trackingPx = 0) {
|
|
|
596
756
|
groups.push(group);
|
|
597
757
|
}
|
|
598
758
|
for (const part of run.parts)
|
|
599
|
-
pushPart(group.parts, part);
|
|
759
|
+
pushPart(group.parts, read || typeof part !== 'object' ? part : part.hex);
|
|
600
760
|
advance += run.advance + run.glyphs * tracking;
|
|
601
761
|
}
|
|
602
762
|
ahead += advance - (piece.width / sizePx) * 1000;
|
|
@@ -612,7 +772,7 @@ export function measuredTextShows(font, pieces, sizePx, trackingPx = 0) {
|
|
|
612
772
|
}
|
|
613
773
|
if (groups.length === 0)
|
|
614
774
|
groups.push({ font, parts: [] });
|
|
615
|
-
return groups.
|
|
775
|
+
return groups.flatMap((g) => partsShows(g.font, g.parts));
|
|
616
776
|
}
|
|
617
777
|
const fontKeysByPage = new WeakMap();
|
|
618
778
|
export function fontKeyOn(page, font) {
|
|
@@ -654,7 +814,7 @@ direction) {
|
|
|
654
814
|
// document loaded it (`shapedText.ts`).
|
|
655
815
|
if (complexPainter?.(ctx, text, xPx, baselinePx, font, sizePx, color, outline, actualText, direction))
|
|
656
816
|
return;
|
|
657
|
-
pushTextObject(ctx, textShows(font, text), xPx, baselinePx, font, sizePx, color, outline, actualText);
|
|
817
|
+
pushTextObject(ctx, textShows(font, text, actualText === undefined && !ctx.readSpans), xPx, baselinePx, font, sizePx, color, outline, actualText);
|
|
658
818
|
}
|
|
659
819
|
finally {
|
|
660
820
|
ctx.runAdvancePx = outer;
|
|
@@ -699,7 +859,7 @@ export function drawMeasuredTextPx(ctx, pieces, xPx, baselinePx, font, sizePx, c
|
|
|
699
859
|
endActualTextSpan(ctx, { font, text: pieces[0]?.text ?? '', sizePx, xPx, baselinePx });
|
|
700
860
|
return true;
|
|
701
861
|
}
|
|
702
|
-
const shows = measuredTextShows(font, pieces, sizePx, trackingPx);
|
|
862
|
+
const shows = measuredTextShows(font, pieces, sizePx, trackingPx, actualText === undefined && !ctx.readSpans);
|
|
703
863
|
if (!shows)
|
|
704
864
|
return false;
|
|
705
865
|
// Every piece starts where the layout put it: the run is as wide as the
|
|
@@ -777,6 +937,7 @@ export function withActualText(ctx, text, shows) {
|
|
|
777
937
|
*/
|
|
778
938
|
export function beginActualTextSpan(ctx, text, state) {
|
|
779
939
|
ctx.tags?.close();
|
|
940
|
+
ctx.readSpans = (ctx.readSpans ?? 0) + 1;
|
|
780
941
|
const props = ctx.page.doc.context.obj({ ActualText: PDFHexString.fromText(text) });
|
|
781
942
|
ctx.page.pushOperators(...lineTextState(ctx, state), PDFOperator.of(PDFOperatorNames.BeginMarkedContentSequence, [PDFName.of('Span'), props]));
|
|
782
943
|
}
|
|
@@ -847,6 +1008,7 @@ export function compressedMarkSpacingPx(font, seg, sizePx) {
|
|
|
847
1008
|
* state in force (see `lineTextState`). */
|
|
848
1009
|
export function endActualTextSpan(ctx, state) {
|
|
849
1010
|
ctx.tags?.close();
|
|
1011
|
+
ctx.readSpans = Math.max(0, (ctx.readSpans ?? 0) - 1);
|
|
850
1012
|
ctx.page.pushOperators(...lineTextState(ctx, state), PDFOperator.of(PDFOperatorNames.EndMarkedContent));
|
|
851
1013
|
}
|
|
852
1014
|
export function pushClipRect(ctx, xPx, yPx, wPx, hPx) {
|