postext-pdf 1.8.5 → 1.9.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/README.md +1 -1
- package/dist/__tests__/accessibility.test.js +44 -0
- package/dist/__tests__/accessibility.test.js.map +1 -1
- package/dist/__tests__/chinesePageLabels.test.d.ts +2 -0
- package/dist/__tests__/chinesePageLabels.test.d.ts.map +1 -0
- package/dist/__tests__/chinesePageLabels.test.js +58 -0
- package/dist/__tests__/chinesePageLabels.test.js.map +1 -0
- package/dist/__tests__/cjkAnnotations.test.d.ts +2 -0
- package/dist/__tests__/cjkAnnotations.test.d.ts.map +1 -0
- package/dist/__tests__/cjkAnnotations.test.js +83 -0
- package/dist/__tests__/cjkAnnotations.test.js.map +1 -0
- package/dist/__tests__/cjkDashRule.test.d.ts +2 -0
- package/dist/__tests__/cjkDashRule.test.d.ts.map +1 -0
- package/dist/__tests__/cjkDashRule.test.js +101 -0
- package/dist/__tests__/cjkDashRule.test.js.map +1 -0
- package/dist/__tests__/cjkFontFiles.test.d.ts +2 -0
- package/dist/__tests__/cjkFontFiles.test.d.ts.map +1 -0
- package/dist/__tests__/cjkFontFiles.test.js +302 -0
- package/dist/__tests__/cjkFontFiles.test.js.map +1 -0
- package/dist/__tests__/cjkGrid.test.d.ts +2 -0
- package/dist/__tests__/cjkGrid.test.d.ts.map +1 -0
- package/dist/__tests__/cjkGrid.test.js +57 -0
- package/dist/__tests__/cjkGrid.test.js.map +1 -0
- package/dist/__tests__/cjkPunctuation.test.d.ts +2 -0
- package/dist/__tests__/cjkPunctuation.test.d.ts.map +1 -0
- package/dist/__tests__/cjkPunctuation.test.js +143 -0
- package/dist/__tests__/cjkPunctuation.test.js.map +1 -0
- package/dist/__tests__/cjkTracking.test.d.ts +2 -0
- package/dist/__tests__/cjkTracking.test.d.ts.map +1 -0
- package/dist/__tests__/cjkTracking.test.js +100 -0
- package/dist/__tests__/cjkTracking.test.js.map +1 -0
- package/dist/__tests__/documentLanguage.test.js +13 -3
- package/dist/__tests__/documentLanguage.test.js.map +1 -1
- package/dist/__tests__/fallbackSpaces.test.js +49 -0
- package/dist/__tests__/fallbackSpaces.test.js.map +1 -1
- package/dist/__tests__/outlineTitles.test.js +87 -0
- package/dist/__tests__/outlineTitles.test.js.map +1 -1
- package/dist/__tests__/pdfWorker.test.js +17 -0
- package/dist/__tests__/pdfWorker.test.js.map +1 -1
- package/dist/__tests__/renderOptionsDocs.test.d.ts +2 -0
- package/dist/__tests__/renderOptionsDocs.test.d.ts.map +1 -0
- package/dist/__tests__/renderOptionsDocs.test.js +32 -0
- package/dist/__tests__/renderOptionsDocs.test.js.map +1 -0
- package/dist/__tests__/rightBinding.test.d.ts +2 -0
- package/dist/__tests__/rightBinding.test.d.ts.map +1 -0
- package/dist/__tests__/rightBinding.test.js +112 -0
- package/dist/__tests__/rightBinding.test.js.map +1 -0
- package/dist/__tests__/verticalDesignImage.test.d.ts +2 -0
- package/dist/__tests__/verticalDesignImage.test.d.ts.map +1 -0
- package/dist/__tests__/verticalDesignImage.test.js +152 -0
- package/dist/__tests__/verticalDesignImage.test.js.map +1 -0
- package/dist/__tests__/verticalText.test.d.ts +2 -0
- package/dist/__tests__/verticalText.test.d.ts.map +1 -0
- package/dist/__tests__/verticalText.test.js +380 -0
- package/dist/__tests__/verticalText.test.js.map +1 -0
- package/dist/faceFiles.d.ts +70 -0
- package/dist/faceFiles.d.ts.map +1 -0
- package/dist/faceFiles.js +154 -0
- package/dist/faceFiles.js.map +1 -0
- package/dist/fontCache.d.ts +101 -7
- package/dist/fontCache.d.ts.map +1 -1
- package/dist/fontCache.js +178 -26
- package/dist/fontCache.js.map +1 -1
- package/dist/fontFamilies.d.ts +12 -0
- package/dist/fontFamilies.d.ts.map +1 -0
- package/dist/fontFamilies.js +12 -0
- package/dist/fontFamilies.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/pdf-backend/annotations.d.ts +29 -0
- package/dist/pdf-backend/annotations.d.ts.map +1 -0
- package/dist/pdf-backend/annotations.js +133 -0
- package/dist/pdf-backend/annotations.js.map +1 -0
- package/dist/pdf-backend/blockRender.d.ts.map +1 -1
- package/dist/pdf-backend/blockRender.js +160 -30
- package/dist/pdf-backend/blockRender.js.map +1 -1
- package/dist/pdf-backend/fallbackSpaces.d.ts +21 -2
- package/dist/pdf-backend/fallbackSpaces.d.ts.map +1 -1
- package/dist/pdf-backend/fallbackSpaces.js +43 -6
- package/dist/pdf-backend/fallbackSpaces.js.map +1 -1
- package/dist/pdf-backend/fontHelpers.d.ts +12 -0
- package/dist/pdf-backend/fontHelpers.d.ts.map +1 -1
- package/dist/pdf-backend/fontHelpers.js +49 -11
- package/dist/pdf-backend/fontHelpers.js.map +1 -1
- package/dist/pdf-backend/headerFooter.d.ts +8 -3
- package/dist/pdf-backend/headerFooter.d.ts.map +1 -1
- package/dist/pdf-backend/headerFooter.js +74 -16
- package/dist/pdf-backend/headerFooter.js.map +1 -1
- package/dist/pdf-backend/index.d.ts +74 -8
- package/dist/pdf-backend/index.d.ts.map +1 -1
- package/dist/pdf-backend/index.js +121 -25
- package/dist/pdf-backend/index.js.map +1 -1
- package/dist/pdf-backend/inkScale.d.ts +12 -0
- package/dist/pdf-backend/inkScale.d.ts.map +1 -0
- package/dist/pdf-backend/inkScale.js +16 -0
- package/dist/pdf-backend/inkScale.js.map +1 -0
- package/dist/pdf-backend/outlines.d.ts +12 -1
- package/dist/pdf-backend/outlines.d.ts.map +1 -1
- package/dist/pdf-backend/outlines.js +46 -16
- package/dist/pdf-backend/outlines.js.map +1 -1
- package/dist/pdf-backend/pageDecorations.d.ts +5 -1
- package/dist/pdf-backend/pageDecorations.d.ts.map +1 -1
- package/dist/pdf-backend/pageDecorations.js +22 -1
- package/dist/pdf-backend/pageDecorations.js.map +1 -1
- package/dist/pdf-backend/pageLabels.d.ts +3 -1
- package/dist/pdf-backend/pageLabels.d.ts.map +1 -1
- package/dist/pdf-backend/pageLabels.js +12 -6
- package/dist/pdf-backend/pageLabels.js.map +1 -1
- package/dist/pdf-backend/primitives.d.ts +153 -6
- package/dist/pdf-backend/primitives.d.ts.map +1 -1
- package/dist/pdf-backend/primitives.js +269 -28
- package/dist/pdf-backend/primitives.js.map +1 -1
- package/dist/pdf-backend/renderResourceBlock.d.ts +4 -0
- package/dist/pdf-backend/renderResourceBlock.d.ts.map +1 -1
- package/dist/pdf-backend/renderResourceBlock.js +105 -26
- package/dist/pdf-backend/renderResourceBlock.js.map +1 -1
- package/dist/pdf-backend/structureFlow.d.ts +5 -0
- package/dist/pdf-backend/structureFlow.d.ts.map +1 -1
- package/dist/pdf-backend/structureFlow.js +8 -0
- package/dist/pdf-backend/structureFlow.js.map +1 -1
- package/dist/pdf-backend/svgVector.d.ts.map +1 -1
- package/dist/pdf-backend/svgVector.js +13 -2
- package/dist/pdf-backend/svgVector.js.map +1 -1
- package/dist/pdf-backend/tagging.d.ts +8 -1
- package/dist/pdf-backend/tagging.d.ts.map +1 -1
- package/dist/pdf-backend/tagging.js +7 -1
- package/dist/pdf-backend/tagging.js.map +1 -1
- package/dist/pdf-backend/verticalText.d.ts +43 -0
- package/dist/pdf-backend/verticalText.d.ts.map +1 -0
- package/dist/pdf-backend/verticalText.js +284 -0
- package/dist/pdf-backend/verticalText.js.map +1 -0
- package/dist/verticalFonts.d.ts +75 -0
- package/dist/verticalFonts.d.ts.map +1 -0
- package/dist/verticalFonts.js +136 -0
- package/dist/verticalFonts.js.map +1 -0
- package/dist/worker/client.d.ts +1 -1
- package/dist/worker/client.d.ts.map +1 -1
- package/dist/worker/client.js +7 -5
- package/dist/worker/client.js.map +1 -1
- package/dist/worker/pdf.worker.js +8 -4
- package/dist/worker/pdf.worker.js.map +1 -1
- package/dist/worker/protocol.d.ts +10 -5
- package/dist/worker/protocol.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verticalText.test.js","sourceRoot":"","sources":["../../src/__tests__/verticalText.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Faces made of several font files (issue #196).
|
|
3
|
+
*
|
|
4
|
+
* A font provider may answer a face with several files, each holding part
|
|
5
|
+
* of its characters: the numbered unicode-range slices Fontsource ships for
|
|
6
|
+
* Chinese, Japanese and Korean families (about a hundred files for Noto
|
|
7
|
+
* Serif SC), or a Latin family's `latin` and `latin-ext` files. The
|
|
8
|
+
* {@link FontCache} embeds each file as its own subset font and registers
|
|
9
|
+
* the list here under the face's first file, the `PDFFont` every renderer
|
|
10
|
+
* is handed. The text primitives then cut each run by the file that has a
|
|
11
|
+
* glyph for each character ({@link fileRuns}) and switch fonts inside one
|
|
12
|
+
* text object, so a line of Han with a Latin word paints from three or four
|
|
13
|
+
* slices and each slice keeps only the glyphs set in it.
|
|
14
|
+
*
|
|
15
|
+
* Characters a face lacks in every file are recorded as they are shaped
|
|
16
|
+
* ({@link noteMissingGlyphs}), for the `missingGlyph` warning.
|
|
17
|
+
*/
|
|
18
|
+
import type { PDFFont } from 'pdf-lib';
|
|
19
|
+
/** The files of one face, in the order their glyphs are looked up. */
|
|
20
|
+
export declare class FaceFiles {
|
|
21
|
+
readonly files: PDFFont[];
|
|
22
|
+
private readonly faces;
|
|
23
|
+
/** First file holding each code point, or null for none. */
|
|
24
|
+
private readonly first;
|
|
25
|
+
constructor(files: readonly PDFFont[]);
|
|
26
|
+
/** Append a file (a slice fetched later); a file already listed is kept
|
|
27
|
+
* where it is. */
|
|
28
|
+
add(file: PDFFont): void;
|
|
29
|
+
/** Whether `file` has a glyph for `cp`. */
|
|
30
|
+
covers(file: PDFFont, cp: number): boolean;
|
|
31
|
+
/** The first file with a glyph for `cp`, or null when none has one. */
|
|
32
|
+
fileFor(cp: number): PDFFont | null;
|
|
33
|
+
}
|
|
34
|
+
/** Register the files of a face under its first file, the font the
|
|
35
|
+
* renderers are handed. A first file already registered (two faces the
|
|
36
|
+
* provider answered with the same files) keeps its list, which takes the
|
|
37
|
+
* new files too; the list in force is returned. */
|
|
38
|
+
export declare function registerFaceFiles(primary: PDFFont, files: readonly PDFFont[]): FaceFiles;
|
|
39
|
+
/** The files of the face whose first file is `font`, when it has several. */
|
|
40
|
+
export declare function faceFilesOf(font: PDFFont): FaceFiles | undefined;
|
|
41
|
+
/** A run of text and the file it is set in. */
|
|
42
|
+
export interface FileRun {
|
|
43
|
+
font: PDFFont;
|
|
44
|
+
text: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* `text` cut into runs by the file of `font`'s face that has a glyph for
|
|
48
|
+
* each character; one run in `font` itself for a face of one file. A
|
|
49
|
+
* character stays in the run before it while that run's file covers it
|
|
50
|
+
* (every Fontsource slice holds the space, so spaces never cut a run), else
|
|
51
|
+
* it goes to the first file that does. A character no file covers, and an
|
|
52
|
+
* invisible one (a joiner, a variation selector), stays in the run before
|
|
53
|
+
* it: it is drawn (or dropped) as that file's fallback, and a printing one
|
|
54
|
+
* is reported as missing when shaped.
|
|
55
|
+
*/
|
|
56
|
+
export declare function fileRuns(font: PDFFont, text: string): FileRun[];
|
|
57
|
+
/** `text`'s width at `size` (points), each run measured in its file. */
|
|
58
|
+
export declare function widthOfTextAtSize(font: PDFFont, text: string, size: number): number;
|
|
59
|
+
/** Record the characters of `text` that `font` has no glyph for (it draws
|
|
60
|
+
* them as `.notdef`). Called once per shaped text, from the caches of the
|
|
61
|
+
* text primitives. A character the fallbacks draw with another glyph of
|
|
62
|
+
* the face (U+2011 as a hyphen, see `fallbackSpaces.ts`) is not missing. */
|
|
63
|
+
export declare function noteMissingGlyphs(font: PDFFont, text: string): void;
|
|
64
|
+
/** The characters drawn in `font` that it has no glyph for, each with its
|
|
65
|
+
* place in the order every font's missing characters were first met. */
|
|
66
|
+
export declare function missingGlyphsOf(font: PDFFont): ReadonlyMap<number, number> | undefined;
|
|
67
|
+
/** Whether a face is missing `cp` in a way worth asking its provider for:
|
|
68
|
+
* a printing character. */
|
|
69
|
+
export declare function wantsGlyph(cp: number): boolean;
|
|
70
|
+
//# sourceMappingURL=faceFiles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faceFiles.d.ts","sourceRoot":"","sources":["../src/faceFiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAoBvC,sEAAsE;AACtE,qBAAa,SAAS;IACpB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgD;IACtE,4DAA4D;IAC5D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqC;gBAE/C,KAAK,EAAE,SAAS,OAAO,EAAE;IAKrC;uBACmB;IACnB,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAQxB,2CAA2C;IAC3C,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAI1C,uEAAuE;IACvE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;CAapC;AAID;;;oDAGoD;AACpD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,CASxF;AAED,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAGhE;AAED,+CAA+C;AAC/C,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,CAmB/D;AAED,wEAAwE;AACxE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMnF;AAQD;;;6EAG6E;AAC7E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAanE;AAED;yEACyE;AACzE,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAEtF;AAED;4BAC4B;AAC5B,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE9C"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { isDefaultIgnorable, isFallbackHandled, substituteGlyph } from './pdf-backend/fallbackSpaces';
|
|
2
|
+
function coverageFace(font) {
|
|
3
|
+
const face = font.embedder?.font;
|
|
4
|
+
return face && typeof face.hasGlyphForCodePoint === 'function' ? face : undefined;
|
|
5
|
+
}
|
|
6
|
+
/** Whether a font lacking `cp` does not count as missing it: controls, and
|
|
7
|
+
* the spaces and invisible characters the fallbacks paint without a glyph
|
|
8
|
+
* (see `fallbackSpaces.ts`). */
|
|
9
|
+
function neverMissing(cp) {
|
|
10
|
+
return cp < 0x20 || (cp >= 0x7f && cp < 0xa0) || isFallbackHandled(cp);
|
|
11
|
+
}
|
|
12
|
+
/** The files of one face, in the order their glyphs are looked up. */
|
|
13
|
+
export class FaceFiles {
|
|
14
|
+
files;
|
|
15
|
+
faces = new Map();
|
|
16
|
+
/** First file holding each code point, or null for none. */
|
|
17
|
+
first = new Map();
|
|
18
|
+
constructor(files) {
|
|
19
|
+
this.files = [];
|
|
20
|
+
for (const file of files)
|
|
21
|
+
this.add(file);
|
|
22
|
+
}
|
|
23
|
+
/** Append a file (a slice fetched later); a file already listed is kept
|
|
24
|
+
* where it is. */
|
|
25
|
+
add(file) {
|
|
26
|
+
if (this.faces.has(file))
|
|
27
|
+
return;
|
|
28
|
+
this.files.push(file);
|
|
29
|
+
this.faces.set(file, coverageFace(file));
|
|
30
|
+
// A code point no file had may be in this one.
|
|
31
|
+
for (const [cp, hit] of this.first)
|
|
32
|
+
if (hit === null)
|
|
33
|
+
this.first.delete(cp);
|
|
34
|
+
}
|
|
35
|
+
/** Whether `file` has a glyph for `cp`. */
|
|
36
|
+
covers(file, cp) {
|
|
37
|
+
return this.faces.get(file)?.hasGlyphForCodePoint(cp) ?? false;
|
|
38
|
+
}
|
|
39
|
+
/** The first file with a glyph for `cp`, or null when none has one. */
|
|
40
|
+
fileFor(cp) {
|
|
41
|
+
const hit = this.first.get(cp);
|
|
42
|
+
if (hit !== undefined)
|
|
43
|
+
return hit;
|
|
44
|
+
let found = null;
|
|
45
|
+
for (const file of this.files) {
|
|
46
|
+
if (this.covers(file, cp)) {
|
|
47
|
+
found = file;
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
this.first.set(cp, found);
|
|
52
|
+
return found;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
const faceFiles = new WeakMap();
|
|
56
|
+
/** Register the files of a face under its first file, the font the
|
|
57
|
+
* renderers are handed. A first file already registered (two faces the
|
|
58
|
+
* provider answered with the same files) keeps its list, which takes the
|
|
59
|
+
* new files too; the list in force is returned. */
|
|
60
|
+
export function registerFaceFiles(primary, files) {
|
|
61
|
+
const known = faceFiles.get(primary);
|
|
62
|
+
if (known) {
|
|
63
|
+
for (const file of files)
|
|
64
|
+
known.add(file);
|
|
65
|
+
return known;
|
|
66
|
+
}
|
|
67
|
+
const list = new FaceFiles([primary, ...files]);
|
|
68
|
+
faceFiles.set(primary, list);
|
|
69
|
+
return list;
|
|
70
|
+
}
|
|
71
|
+
/** The files of the face whose first file is `font`, when it has several. */
|
|
72
|
+
export function faceFilesOf(font) {
|
|
73
|
+
const list = faceFiles.get(font);
|
|
74
|
+
return list && list.files.length > 1 ? list : undefined;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* `text` cut into runs by the file of `font`'s face that has a glyph for
|
|
78
|
+
* each character; one run in `font` itself for a face of one file. A
|
|
79
|
+
* character stays in the run before it while that run's file covers it
|
|
80
|
+
* (every Fontsource slice holds the space, so spaces never cut a run), else
|
|
81
|
+
* it goes to the first file that does. A character no file covers, and an
|
|
82
|
+
* invisible one (a joiner, a variation selector), stays in the run before
|
|
83
|
+
* it: it is drawn (or dropped) as that file's fallback, and a printing one
|
|
84
|
+
* is reported as missing when shaped.
|
|
85
|
+
*/
|
|
86
|
+
export function fileRuns(font, text) {
|
|
87
|
+
const list = faceFilesOf(font);
|
|
88
|
+
if (!list)
|
|
89
|
+
return [{ font, text }];
|
|
90
|
+
const runs = [];
|
|
91
|
+
let current;
|
|
92
|
+
for (const ch of text) {
|
|
93
|
+
const cp = ch.codePointAt(0);
|
|
94
|
+
let file = current?.font;
|
|
95
|
+
if (!file || (!list.covers(file, cp) && !isDefaultIgnorable(cp))) {
|
|
96
|
+
file = list.fileFor(cp) ?? current?.font ?? font;
|
|
97
|
+
}
|
|
98
|
+
if (current && current.font === file) {
|
|
99
|
+
current.text += ch;
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
current = { font: file, text: ch };
|
|
103
|
+
runs.push(current);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return runs.length > 0 ? runs : [{ font, text }];
|
|
107
|
+
}
|
|
108
|
+
/** `text`'s width at `size` (points), each run measured in its file. */
|
|
109
|
+
export function widthOfTextAtSize(font, text, size) {
|
|
110
|
+
const runs = fileRuns(font, text);
|
|
111
|
+
if (runs.length === 1)
|
|
112
|
+
return runs[0].font.widthOfTextAtSize(runs[0].text, size);
|
|
113
|
+
let width = 0;
|
|
114
|
+
for (const run of runs)
|
|
115
|
+
width += run.font.widthOfTextAtSize(run.text, size);
|
|
116
|
+
return width;
|
|
117
|
+
}
|
|
118
|
+
/** Characters each font lacks, with the order they were first met in:
|
|
119
|
+
* one count for every font, so the characters a face lacks in several of
|
|
120
|
+
* its files still sort in the order the pages set them. */
|
|
121
|
+
const missingByFont = new WeakMap();
|
|
122
|
+
let missingSeq = 0;
|
|
123
|
+
/** Record the characters of `text` that `font` has no glyph for (it draws
|
|
124
|
+
* them as `.notdef`). Called once per shaped text, from the caches of the
|
|
125
|
+
* text primitives. A character the fallbacks draw with another glyph of
|
|
126
|
+
* the face (U+2011 as a hyphen, see `fallbackSpaces.ts`) is not missing. */
|
|
127
|
+
export function noteMissingGlyphs(font, text) {
|
|
128
|
+
const face = coverageFace(font);
|
|
129
|
+
if (!face)
|
|
130
|
+
return;
|
|
131
|
+
for (const ch of text) {
|
|
132
|
+
const cp = ch.codePointAt(0);
|
|
133
|
+
if (neverMissing(cp) || face.hasGlyphForCodePoint(cp) || substituteGlyph(face, cp) !== undefined)
|
|
134
|
+
continue;
|
|
135
|
+
let seen = missingByFont.get(font);
|
|
136
|
+
if (!seen) {
|
|
137
|
+
seen = new Map();
|
|
138
|
+
missingByFont.set(font, seen);
|
|
139
|
+
}
|
|
140
|
+
if (!seen.has(cp))
|
|
141
|
+
seen.set(cp, missingSeq++);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
/** The characters drawn in `font` that it has no glyph for, each with its
|
|
145
|
+
* place in the order every font's missing characters were first met. */
|
|
146
|
+
export function missingGlyphsOf(font) {
|
|
147
|
+
return missingByFont.get(font);
|
|
148
|
+
}
|
|
149
|
+
/** Whether a face is missing `cp` in a way worth asking its provider for:
|
|
150
|
+
* a printing character. */
|
|
151
|
+
export function wantsGlyph(cp) {
|
|
152
|
+
return !neverMissing(cp);
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=faceFiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faceFiles.js","sourceRoot":"","sources":["../src/faceFiles.ts"],"names":[],"mappings":"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"}
|
package/dist/fontCache.d.ts
CHANGED
|
@@ -21,7 +21,59 @@ export declare function toUnicodeCmap(glyphs: Array<{
|
|
|
21
21
|
* from the cmap glyphs plus those.
|
|
22
22
|
*/
|
|
23
23
|
export declare function coverAllGlyphUnicode(font: PDFFont): void;
|
|
24
|
-
|
|
24
|
+
/** What the pages set in a face, handed to the {@link PdfFontProvider}. */
|
|
25
|
+
export interface PdfFontRequest {
|
|
26
|
+
/** The characters (Unicode code points) the document sets in the face,
|
|
27
|
+
* collected from its pages before any is drawn. A provider serving a
|
|
28
|
+
* family as several files (Fontsource's unicode-range slices) returns
|
|
29
|
+
* the files that hold them; one serving a single file may ignore it.
|
|
30
|
+
* May be empty when the render cannot tell (a face asked for with no
|
|
31
|
+
* text yet). When the same face is asked for again, it lists only the
|
|
32
|
+
* characters the files already given lack. */
|
|
33
|
+
codePoints: ReadonlySet<number>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* The bytes of a face (TrueType, or CFF-flavoured OpenType): one file, or
|
|
37
|
+
* several that together make the face — each holding part of its
|
|
38
|
+
* characters, like the numbered unicode-range slices Fontsource ships for
|
|
39
|
+
* Chinese, Japanese and Korean families. Each file is embedded as its own
|
|
40
|
+
* subset font and a character is drawn from the first file, in the order
|
|
41
|
+
* given, that has a glyph for it. Reject (throw) for a face the provider
|
|
42
|
+
* cannot supply: another cut of the family is set in its place
|
|
43
|
+
* (`fontFallback`).
|
|
44
|
+
*/
|
|
45
|
+
export type PdfFontProvider = (family: string, weight: number, style: 'normal' | 'italic', request?: PdfFontRequest) => Promise<Uint8Array | Uint8Array[]>;
|
|
46
|
+
/** A face some characters of which no file of it has a glyph for; the PDF
|
|
47
|
+
* draws them as the font's `.notdef` glyph. */
|
|
48
|
+
export interface FontMissingGlyphs {
|
|
49
|
+
family: string;
|
|
50
|
+
weight: number;
|
|
51
|
+
style: 'normal' | 'italic';
|
|
52
|
+
/** The characters, in the order the pages first set them. */
|
|
53
|
+
characters: string[];
|
|
54
|
+
}
|
|
55
|
+
/** A problem with a face's file the render works around: a variable font
|
|
56
|
+
* asked for at a weight other than its default instance (pdf-lib embeds
|
|
57
|
+
* that instance, so the text prints at the default weight), or a CFF
|
|
58
|
+
* face larger than the limit embedded whole (pdf-lib cannot subset CFF
|
|
59
|
+
* outlines reliably). */
|
|
60
|
+
export type FontFileIssue = {
|
|
61
|
+
kind: 'variableFontDefaultInstance';
|
|
62
|
+
family: string;
|
|
63
|
+
weight: number;
|
|
64
|
+
style: 'normal' | 'italic';
|
|
65
|
+
defaultWeight: number;
|
|
66
|
+
} | {
|
|
67
|
+
kind: 'cffEmbeddedWhole';
|
|
68
|
+
family: string;
|
|
69
|
+
weight: number;
|
|
70
|
+
style: 'normal' | 'italic';
|
|
71
|
+
bytes: number;
|
|
72
|
+
};
|
|
73
|
+
/** Size from which a CFF face embedded whole is reported: 2 MB, about ten
|
|
74
|
+
* times a Latin text face, and a fraction of a CJK one (Source Han Serif
|
|
75
|
+
* is 8 to 25 MB a weight). */
|
|
76
|
+
export declare const CFF_WHOLE_WARN_BYTES: number;
|
|
25
77
|
/** A face the document asked for, and the face of the same family set in
|
|
26
78
|
* its place because the provider rejected it (see
|
|
27
79
|
* {@link FontCache.preloadFontStrings}). */
|
|
@@ -56,6 +108,16 @@ export declare function cssWeightOrder(desired: number, weights: readonly number
|
|
|
56
108
|
* family shipping only 400 and 700 takes a 600 as 700; one shipping a
|
|
57
109
|
* single cut sets everything in it. */
|
|
58
110
|
export declare function fallbackFaces(spec: FaceSpec): FaceSpec[];
|
|
111
|
+
export interface FontCacheOptions {
|
|
112
|
+
/** A face the provider rejected and the face set in its place. */
|
|
113
|
+
onFallback?: (fallback: FontFallback) => void;
|
|
114
|
+
/** A variable font asked for at another weight, or a large CFF face
|
|
115
|
+
* embedded whole (see {@link FontFileIssue}). */
|
|
116
|
+
onFileIssue?: (issue: FontFileIssue) => void;
|
|
117
|
+
/** Size from which a CFF face embedded whole is reported
|
|
118
|
+
* ({@link CFF_WHOLE_WARN_BYTES} by default). */
|
|
119
|
+
cffWarnBytes?: number;
|
|
120
|
+
}
|
|
59
121
|
/**
|
|
60
122
|
* Per-document mapping from `family|weight|style` to an embedded pdf-lib
|
|
61
123
|
* font. Entries are populated up-front by `preload()` so that block-level
|
|
@@ -66,15 +128,22 @@ export declare function fallbackFaces(spec: FaceSpec): FaceSpec[];
|
|
|
66
128
|
* is mapped to `null` and reported back via `missing()`. Faces the
|
|
67
129
|
* provider answers with the same file share one embedded font, and
|
|
68
130
|
* `dropUnusedFonts()` keeps the fonts no page draws with out of the file.
|
|
131
|
+
*
|
|
132
|
+
* A face the provider answers with several files (see
|
|
133
|
+
* {@link PdfFontProvider}) embeds each file as a subset of its own; `get()`
|
|
134
|
+
* hands out the first, and the text primitives draw each character from
|
|
135
|
+
* the file that has it (`faceFiles.ts`). Asked again for characters its
|
|
136
|
+
* files lack, such a face asks the provider for those only.
|
|
69
137
|
*/
|
|
70
138
|
export declare class FontCache {
|
|
71
139
|
private pdfDoc;
|
|
72
140
|
private provider;
|
|
73
|
-
private onFallback?;
|
|
74
141
|
private map;
|
|
75
142
|
private failed;
|
|
76
143
|
/** One load per actual face, shared by every key that falls back to it. */
|
|
77
144
|
private loads;
|
|
145
|
+
/** The faces loaded, in the order they loaded. */
|
|
146
|
+
private faces;
|
|
78
147
|
private errors;
|
|
79
148
|
/** Loaded faces by lower-cased family, for lookups nothing preloaded. */
|
|
80
149
|
private byFamily;
|
|
@@ -84,13 +153,38 @@ export declare class FontCache {
|
|
|
84
153
|
private byLength;
|
|
85
154
|
/** Every font this cache embedded. */
|
|
86
155
|
private embedded;
|
|
87
|
-
|
|
88
|
-
|
|
156
|
+
private onFallback?;
|
|
157
|
+
private onFileIssue?;
|
|
158
|
+
private cffWarnBytes;
|
|
159
|
+
constructor(pdfDoc: PDFDocument, provider: PdfFontProvider, options?: FontCacheOptions | ((fallback: FontFallback) => void));
|
|
160
|
+
/** Embed a font file, once per distinct content. `spec` is the face it
|
|
161
|
+
* was first given for (named in a CFF size report). */
|
|
89
162
|
private embedBytes;
|
|
90
|
-
/**
|
|
91
|
-
|
|
163
|
+
/** Embed every file of a provider answer, in order, dropping repeats. */
|
|
164
|
+
private embedAnswer;
|
|
165
|
+
/** Fetch and embed one face, once; later calls with characters it was
|
|
166
|
+
* not asked for grow a sliced face (see {@link growFace}). Null when
|
|
167
|
+
* the provider rejects it or its bytes do not embed. */
|
|
92
168
|
private loadFace;
|
|
93
|
-
|
|
169
|
+
/** Ask a sliced face's provider for the characters none of its files
|
|
170
|
+
* has that it was not asked for yet, and add the files it answers. A
|
|
171
|
+
* rejection leaves the face as it is (the characters are reported as
|
|
172
|
+
* missing when drawn). */
|
|
173
|
+
private growFace;
|
|
174
|
+
/** Report a variable font asked for at a weight other than its default
|
|
175
|
+
* instance, the one pdf-lib embeds. */
|
|
176
|
+
private checkVariableWeight;
|
|
177
|
+
/**
|
|
178
|
+
* Load the faces of the given font strings: a list, or a map from each
|
|
179
|
+
* font string to the characters the pages set in it (handed to the
|
|
180
|
+
* provider, see {@link PdfFontRequest}). A face already loaded is not
|
|
181
|
+
* asked again, except a sliced one for characters its files lack.
|
|
182
|
+
*/
|
|
183
|
+
preloadFontStrings(fontStrings: Iterable<string | undefined> | ReadonlyMap<string, ReadonlySet<number>>): Promise<void>;
|
|
184
|
+
/** Every face some characters drawn in which none of its files has a
|
|
185
|
+
* glyph for, with those characters — call it once the pages are drawn.
|
|
186
|
+
* A file shared by several faces is reported with the first. */
|
|
187
|
+
missingGlyphs(): FontMissingGlyphs[];
|
|
94
188
|
get(fontString: string): PDFFont | null;
|
|
95
189
|
missing(): string[];
|
|
96
190
|
/** Leave out of the file every font this cache embedded that no page
|
package/dist/fontCache.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fontCache.d.ts","sourceRoot":"","sources":["../src/fontCache.ts"],"names":[],"mappings":"AACA,OAAO,EAAuC,KAAK,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"fontCache.d.ts","sourceRoot":"","sources":["../src/fontCache.ts"],"names":[],"mappings":"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"}
|