postext-pdf 1.8.6 → 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
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import { popGraphicsState, pushGraphicsState
|
|
1
|
+
import { popGraphicsState, pushGraphicsState } from 'pdf-lib';
|
|
2
|
+
import { segmentOrientation } from 'postext';
|
|
2
3
|
import { parseFontString } from '../fontString';
|
|
3
|
-
import { alphaOf, alphaStateOp, drawLinePx, drawMeasuredTextPx, drawSwatchPx, drawTextPx, colorFromHex } from './primitives';
|
|
4
|
+
import { alphaOf, alphaStateOp, beginActualTextSpan, cjkLineText, compressedMarkSpacingPx, drawLinePx, drawMeasuredTextPx, drawSwatchPx, drawTextPx, colorFromHex, endActualTextSpan, setTrackingPx } from './primitives';
|
|
4
5
|
import { paintChip } from './chip';
|
|
5
6
|
import { pickSegmentColor, pickSegmentFont } from './fontHelpers';
|
|
6
7
|
import { renderHeaderFooterSlot } from './headerFooter';
|
|
7
8
|
import { renderResourceBlock, } from './renderResourceBlock';
|
|
8
9
|
import { RefRun, UriRuns } from './links';
|
|
9
10
|
import { tagArtifact, tagContent } from './tagging';
|
|
11
|
+
import { paintLineMarks, paintRuby, paintWarichu } from './annotations';
|
|
12
|
+
import { inkScaleOperators } from './inkScale';
|
|
10
13
|
/** The link destination of a footnote of the document being drawn
|
|
11
14
|
* (`LinkRegistry.documentIndex`: note ids repeat from chapter to chapter).
|
|
12
15
|
* A key no resource id takes: it opens with a NUL. */
|
|
@@ -43,6 +46,40 @@ function renderMathSegment(ctx, seg, xPx, baselinePx, fallbackColor) {
|
|
|
43
46
|
return;
|
|
44
47
|
renderMathRender(ctx, seg.mathRender, xPx, baselinePx - seg.mathRender.ascentPx, fallbackColor);
|
|
45
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* The text of a segment of a composed line (see {@link renderSegments}):
|
|
51
|
+
* a compressed CJK mark painted before its box (`inkOffset`) with the
|
|
52
|
+
* character spacing that advances it to its box's end, a segment's own
|
|
53
|
+
* tracking, a dash of a 破折号 stretched over its em (`inkScale`), the
|
|
54
|
+
* orientation forced down a vertical line, and a ruby base's reading.
|
|
55
|
+
*/
|
|
56
|
+
function paintComposedText(ctx, seg, x, baseline, font, size, color, colorHex, actualText, tracking, fontCache, blockFont, rubyElem) {
|
|
57
|
+
// A compressed CJK mark is painted before its box (`inkOffset`) and
|
|
58
|
+
// advances to its box's end.
|
|
59
|
+
// (Down a vertical line every cell is one em: no mark shown narrower.)
|
|
60
|
+
const markSpacing = ctx.vertical ? undefined : compressedMarkSpacingPx(font, seg, size);
|
|
61
|
+
if (markSpacing !== undefined)
|
|
62
|
+
setTrackingPx(ctx, markSpacing);
|
|
63
|
+
else if (seg.tracking !== undefined)
|
|
64
|
+
setTrackingPx(ctx, tracking + seg.tracking);
|
|
65
|
+
// A dash of a 破折号 is stretched over its em (`inkScale`); down a
|
|
66
|
+
// vertical line it is shown turned with the frame (sideways), so the
|
|
67
|
+
// stretch runs down the column.
|
|
68
|
+
const stretch = inkScaleOperators(seg.inkScale);
|
|
69
|
+
const orient = ctx.vertical && seg.inkScale !== undefined ? 'sideways' : segmentOrientation(seg);
|
|
70
|
+
ctx.page.pushOperators(...stretch.before);
|
|
71
|
+
drawTextPx(ctx, seg.text, x + (seg.inkOffset ?? 0), baseline + (seg.baselineShift ?? 0), font, size, color, undefined, actualText, orient);
|
|
72
|
+
ctx.page.pushOperators(...stretch.after);
|
|
73
|
+
if (markSpacing !== undefined || seg.tracking !== undefined)
|
|
74
|
+
setTrackingPx(ctx, tracking);
|
|
75
|
+
if (seg.ruby) {
|
|
76
|
+
if (tracking !== 0)
|
|
77
|
+
setTrackingPx(ctx, 0);
|
|
78
|
+
paintRuby(ctx, seg.ruby, x, baseline, colorHex, fontCache, blockFont, rubyElem);
|
|
79
|
+
if (tracking !== 0)
|
|
80
|
+
setTrackingPx(ctx, tracking);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
46
83
|
/**
|
|
47
84
|
* Paint a line's segments left to right starting at `startX`. When
|
|
48
85
|
* `justifiedSpaceWidth` is set, spaces advance by it instead of their
|
|
@@ -55,12 +92,41 @@ function renderMathSegment(ctx, seg, xPx, baselinePx, fallbackColor) {
|
|
|
55
92
|
* never has to infer them from the gaps of a justified line. A ref painted
|
|
56
93
|
* as several runs (small capitals; the later runs flagged `refContinues`)
|
|
57
94
|
* is still one `Link` element with one annotation over all its runs.
|
|
95
|
+
*
|
|
96
|
+
* A line of the CJK composer and any line down a vertical page (`composed`)
|
|
97
|
+
* read the composer's fields — a segment's `tracking`, `inkOffset`,
|
|
98
|
+
* `inkScale`, `autospace`, `ruby` and `warichu` — and are read as one
|
|
99
|
+
* `/ActualText`. Any other line was set word by word and carries none of
|
|
100
|
+
* them: its segments are painted as every line was before the CJK
|
|
101
|
+
* features, with no further look at each one.
|
|
58
102
|
*/
|
|
59
|
-
function renderSegments(ctx, segments, startX, baseline, line, block, blockFont, blockSize, blockColor, fontCache, linkRegistry, elem, justifiedSpaceWidth
|
|
103
|
+
function renderSegments(ctx, segments, startX, baseline, line, block, blockFont, blockSize, blockColor, fontCache, linkRegistry, elem, justifiedSpaceWidth,
|
|
104
|
+
/** The character spacing the line is painted with (block + line, px);
|
|
105
|
+
* a segment's own tracking (a justified CJK line) goes on top of it. */
|
|
106
|
+
tracking = 0) {
|
|
60
107
|
let x = startX;
|
|
61
108
|
const refRun = new RefRun();
|
|
62
109
|
const uris = new UriRuns(ctx, line, linkRegistry, elem);
|
|
63
110
|
const repeatedAt = repeatedHyphenSegment(line, segments);
|
|
111
|
+
const composed = line.cjkComposed === true || ctx.vertical !== undefined;
|
|
112
|
+
// A composed CJK line (spread characters, Han–Latin spaces) reads as
|
|
113
|
+
// written, not with the gaps between its pieces.
|
|
114
|
+
// A vertical line is painted in runs and cells down the column: it reads
|
|
115
|
+
// as the line too.
|
|
116
|
+
const actualLine = !composed ? undefined : ctx.vertical ? segments.map((s) => s.text).join('') : cjkLineText(segments);
|
|
117
|
+
let lineState;
|
|
118
|
+
if (actualLine !== undefined) {
|
|
119
|
+
const first = segments.find((s) => s.kind === 'text' && !s.chip && s.text !== '');
|
|
120
|
+
const fontStr = first ? first.fontString ?? pickSegmentFont(!!first.bold, !!first.italic, block) : block.fontString;
|
|
121
|
+
lineState = {
|
|
122
|
+
font: fontCache.get(fontStr) ?? blockFont,
|
|
123
|
+
text: first?.text ?? '',
|
|
124
|
+
sizePx: parseFontString(fontStr)?.sizePx ?? blockSize,
|
|
125
|
+
xPx: startX,
|
|
126
|
+
baselinePx: baseline,
|
|
127
|
+
};
|
|
128
|
+
beginActualTextSpan(ctx, actualLine, lineState);
|
|
129
|
+
}
|
|
64
130
|
for (let i = 0; i < segments.length; i++) {
|
|
65
131
|
const seg = segments[i];
|
|
66
132
|
if (seg.kind === 'space') {
|
|
@@ -69,7 +135,8 @@ function renderSegments(ctx, segments, startX, baseline, line, block, blockFont,
|
|
|
69
135
|
tagContent(ctx, inLink ?? elem);
|
|
70
136
|
drawTextPx(ctx, seg.text, x, baseline, blockFont, blockSize, blockColor);
|
|
71
137
|
}
|
|
72
|
-
|
|
138
|
+
// A Han–Latin space keeps the width the composer set.
|
|
139
|
+
x += composed && seg.autospace ? seg.width : justifiedSpaceWidth ?? seg.width;
|
|
73
140
|
continue;
|
|
74
141
|
}
|
|
75
142
|
if (seg.kind !== 'text' || seg.chip)
|
|
@@ -97,6 +164,17 @@ function renderSegments(ctx, segments, startX, baseline, line, block, blockFont,
|
|
|
97
164
|
x += seg.width;
|
|
98
165
|
continue;
|
|
99
166
|
}
|
|
167
|
+
if (composed && seg.warichu) {
|
|
168
|
+
// A warichu note's part: its two rows, not its text (#195), with no
|
|
169
|
+
// character spacing.
|
|
170
|
+
if (tracking !== 0)
|
|
171
|
+
setTrackingPx(ctx, 0);
|
|
172
|
+
paintWarichu(ctx, seg.warichu, x, baseline, pickSegmentColor(!!seg.bold, !!seg.italic, block), fontCache, blockFont, elem);
|
|
173
|
+
if (tracking !== 0)
|
|
174
|
+
setTrackingPx(ctx, tracking);
|
|
175
|
+
x += seg.width;
|
|
176
|
+
continue;
|
|
177
|
+
}
|
|
100
178
|
const fontStr = seg.fontString ?? pickSegmentFont(!!seg.bold, !!seg.italic, block);
|
|
101
179
|
const font = fontCache.get(fontStr) ?? blockFont;
|
|
102
180
|
const size = parseFontString(fontStr)?.sizePx ?? blockSize;
|
|
@@ -113,13 +191,19 @@ function renderSegments(ctx, segments, startX, baseline, line, block, blockFont,
|
|
|
113
191
|
const link = refRun.enter(seg, x, elem, target);
|
|
114
192
|
// A page number of the index links to its page.
|
|
115
193
|
const pageElem = seg.pageLink !== undefined && elem && !link ? elem.child('Link') : undefined;
|
|
116
|
-
|
|
194
|
+
// A ruby base is the `RB` of a `Ruby` whose `RT` holds its reading (#194).
|
|
195
|
+
const holder = link ?? pageElem ?? uriElem ?? elem;
|
|
196
|
+
const rubyElem = composed && seg.ruby && holder ? holder.child('Ruby') : undefined;
|
|
197
|
+
tagContent(ctx, rubyElem ? rubyElem.child('RB') : holder);
|
|
117
198
|
// The hyphen repeated from the line before is painted but not read.
|
|
118
199
|
const actualText = i === repeatedAt ? seg.text.slice(1) : undefined;
|
|
119
|
-
|
|
200
|
+
if (!composed)
|
|
201
|
+
drawTextPx(ctx, seg.text, x, baseline + (seg.baselineShift ?? 0), font, size, color, undefined, actualText);
|
|
202
|
+
else
|
|
203
|
+
paintComposedText(ctx, seg, x, baseline, font, size, color, colorHex, actualText, tracking, fontCache, blockFont, rubyElem);
|
|
120
204
|
if (seg.pageLink !== undefined && linkRegistry) {
|
|
121
205
|
const { scale, pageHeightPt } = ctx;
|
|
122
|
-
linkRegistry.addPageLink(ctx.page, [x * scale, pageHeightPt - (line.bbox.y + line.bbox.height) * scale, (x + seg.width) * scale, pageHeightPt - line.bbox.y * scale], seg.pageLink, pageElem ? { elem: pageElem, contents: seg.text } : undefined);
|
|
206
|
+
linkRegistry.addPageLink(ctx.page, sheetRect(ctx, [x * scale, pageHeightPt - (line.bbox.y + line.bbox.height) * scale, (x + seg.width) * scale, pageHeightPt - line.bbox.y * scale]), seg.pageLink, pageElem ? { elem: pageElem, contents: seg.text } : undefined);
|
|
123
207
|
}
|
|
124
208
|
const ref = refRun.leave(seg, segments[i + 1], target);
|
|
125
209
|
if (ref && linkRegistry) {
|
|
@@ -128,11 +212,13 @@ function renderSegments(ctx, segments, startX, baseline, line, block, blockFont,
|
|
|
128
212
|
const x2 = (x + seg.width) * scale;
|
|
129
213
|
const y2 = pageHeightPt - line.bbox.y * scale;
|
|
130
214
|
const y1 = pageHeightPt - (line.bbox.y + line.bbox.height) * scale;
|
|
131
|
-
linkRegistry.addLink(ctx.page, [x1, y1, x2, y2], ref.resourceId, link ? { elem: link, contents: ref.text } : undefined);
|
|
215
|
+
linkRegistry.addLink(ctx.page, sheetRect(ctx, [x1, y1, x2, y2]), ref.resourceId, link ? { elem: link, contents: ref.text } : undefined);
|
|
132
216
|
}
|
|
133
217
|
x += seg.width;
|
|
134
218
|
}
|
|
135
219
|
uris.end();
|
|
220
|
+
if (lineState)
|
|
221
|
+
endActualTextSpan(ctx, lineState);
|
|
136
222
|
}
|
|
137
223
|
/** Tracking: the block (column balancing; negative for a runt set short)
|
|
138
224
|
* and the line (justification tracking) were measured with extra advance
|
|
@@ -141,10 +227,10 @@ function renderSegments(ctx, segments, startX, baseline, line, block, blockFont,
|
|
|
141
227
|
function renderLine(ctx, line, block, columnWidth, columnX, fontCache, linkRegistry, elem) {
|
|
142
228
|
const tracking = (block.letterSpacing ?? 0) + (line.letterSpacing ?? 0);
|
|
143
229
|
if (tracking !== 0)
|
|
144
|
-
ctx
|
|
230
|
+
setTrackingPx(ctx, tracking);
|
|
145
231
|
renderLineText(ctx, line, block, columnWidth, columnX, fontCache, linkRegistry, elem, tracking, trailingTracking(line, tracking));
|
|
146
232
|
if (tracking !== 0)
|
|
147
|
-
ctx
|
|
233
|
+
setTrackingPx(ctx, 0);
|
|
148
234
|
}
|
|
149
235
|
/** The tracking a line's measured width carries after its last glyph:
|
|
150
236
|
* `tracking` when the line ends on text, else 0. It is advance, not ink,
|
|
@@ -155,7 +241,11 @@ function trailingTracking(line, tracking) {
|
|
|
155
241
|
return 0;
|
|
156
242
|
const segments = line.segments;
|
|
157
243
|
if (segments && segments.length > 0) {
|
|
158
|
-
|
|
244
|
+
let i = segments.length - 1;
|
|
245
|
+
// A mark hung past the line's end is outside it (CJK only).
|
|
246
|
+
while (i > 0 && segments[i].hangs)
|
|
247
|
+
i--;
|
|
248
|
+
const last = segments[i];
|
|
159
249
|
return last.kind === 'text' && last.text.length > 0 ? tracking : 0;
|
|
160
250
|
}
|
|
161
251
|
return /\S$/.test(line.text) ? tracking : 0;
|
|
@@ -169,6 +259,9 @@ function renderLineText(ctx, line, block, columnWidth, columnX, fontCache, linkR
|
|
|
169
259
|
const lineIndent = line.bbox.x - columnX;
|
|
170
260
|
const effectiveWidth = columnWidth - lineIndent;
|
|
171
261
|
const segments = line.segments;
|
|
262
|
+
// Only a line of the CJK composer (or down a vertical page) has hung
|
|
263
|
+
// marks and Han–Latin spaces (see `renderSegments`).
|
|
264
|
+
const composed = line.cjkComposed === true || ctx.vertical !== undefined;
|
|
172
265
|
// Last lines render ragged at natural width — except when overfull:
|
|
173
266
|
// Knuth-Plass may accept a final line wider than the measure on the
|
|
174
267
|
// assumption that its inter-word glue shrinks (TeX glue-setting semantics),
|
|
@@ -178,7 +271,11 @@ function renderLineText(ctx, line, block, columnWidth, columnX, fontCache, linkR
|
|
|
178
271
|
let naturalWidth = 0;
|
|
179
272
|
let spaceCount = 0;
|
|
180
273
|
for (const seg of segments) {
|
|
181
|
-
|
|
274
|
+
// A hung mark is outside the measure; a Han–Latin space keeps its
|
|
275
|
+
// width.
|
|
276
|
+
if (composed && seg.hangs)
|
|
277
|
+
continue;
|
|
278
|
+
if (seg.kind === 'space' && !(composed && seg.autospace))
|
|
182
279
|
spaceCount++;
|
|
183
280
|
else
|
|
184
281
|
wordWidth += seg.width;
|
|
@@ -186,25 +283,27 @@ function renderLineText(ctx, line, block, columnWidth, columnX, fontCache, linkR
|
|
|
186
283
|
}
|
|
187
284
|
if (spaceCount > 0 && ((!line.isLastLine && !line.ragged) || naturalWidth > effectiveWidth)) {
|
|
188
285
|
const justifiedSpaceWidth = (effectiveWidth - wordWidth) / spaceCount;
|
|
189
|
-
renderSegments(ctx, segments, line.bbox.x, line.baseline, line, block, blockFont, blockSize, blockColor, fontCache, linkRegistry, elem, justifiedSpaceWidth);
|
|
286
|
+
renderSegments(ctx, segments, line.bbox.x, line.baseline, line, block, blockFont, blockSize, blockColor, fontCache, linkRegistry, elem, justifiedSpaceWidth, tracking);
|
|
190
287
|
return;
|
|
191
288
|
}
|
|
192
289
|
}
|
|
193
290
|
if ((block.textAlign === 'center' || block.textAlign === 'right') && segments) {
|
|
291
|
+
// Hung marks stay out of the alignment, as trailing tracking does.
|
|
194
292
|
let contentWidth = 0;
|
|
195
293
|
for (const seg of segments)
|
|
196
|
-
|
|
294
|
+
if (!(composed && seg.hangs))
|
|
295
|
+
contentWidth += seg.width;
|
|
197
296
|
const slack = Math.max(0, effectiveWidth - (contentWidth - trailing));
|
|
198
297
|
const startX = line.bbox.x + (block.textAlign === 'center' ? slack / 2 : slack);
|
|
199
|
-
renderSegments(ctx, segments, startX, line.baseline, line, block, blockFont, blockSize, blockColor, fontCache, linkRegistry, elem);
|
|
298
|
+
renderSegments(ctx, segments, startX, line.baseline, line, block, blockFont, blockSize, blockColor, fontCache, linkRegistry, elem, undefined, tracking);
|
|
200
299
|
return;
|
|
201
300
|
}
|
|
202
301
|
// Ragged (left-aligned) rendering — also used for last lines of justified
|
|
203
302
|
// blocks. Segments are needed when any of them styles differently from the
|
|
204
303
|
// block (bold/italic/math/ref/own font or colour); otherwise one text
|
|
205
304
|
// object paints the line.
|
|
206
|
-
if (segments && segments.some(
|
|
207
|
-
renderSegments(ctx, segments, line.bbox.x, line.baseline, line, block, blockFont, blockSize, blockColor, fontCache, linkRegistry, elem);
|
|
305
|
+
if (segments && segments.some(composed ? composedSegmentIsStyled : segmentIsStyled)) {
|
|
306
|
+
renderSegments(ctx, segments, line.bbox.x, line.baseline, line, block, blockFont, blockSize, blockColor, fontCache, linkRegistry, elem, undefined, tracking);
|
|
208
307
|
return;
|
|
209
308
|
}
|
|
210
309
|
tagContent(ctx, elem);
|
|
@@ -221,6 +320,18 @@ function renderLineText(ctx, line, block, columnWidth, columnX, fontCache, linkR
|
|
|
221
320
|
return;
|
|
222
321
|
drawTextPx(ctx, line.text, plainX, line.baseline, blockFont, blockSize, blockColor, undefined, actualText);
|
|
223
322
|
}
|
|
323
|
+
/** Whether a segment of a line set word by word paints differently from
|
|
324
|
+
* the block's plain text, or is linked; an orientation mark (`:tcy`,
|
|
325
|
+
* `:upright`, `:sideways`) keeps its segment apart. */
|
|
326
|
+
function segmentIsStyled(s) {
|
|
327
|
+
return s.bold || s.italic || s.kind === 'math' || s.kind === 'swatch' || s.kind === 'chip' || s.refResourceId !== undefined || s.href !== undefined || s.pageLink !== undefined || s.fontString !== undefined || s.color !== undefined || s.baselineShift !== undefined
|
|
328
|
+
|| s.tcy !== undefined || s.orientation !== undefined;
|
|
329
|
+
}
|
|
330
|
+
/** {@link segmentIsStyled} for a line of the CJK composer or one down a
|
|
331
|
+
* vertical page, whose segments may carry the composer's fields. */
|
|
332
|
+
function composedSegmentIsStyled(s) {
|
|
333
|
+
return segmentIsStyled(s) || s.tracking !== undefined || s.inkOffset !== undefined || s.hangs !== undefined || s.autospace !== undefined || s.ruby !== undefined || s.warichu !== undefined;
|
|
334
|
+
}
|
|
224
335
|
/**
|
|
225
336
|
* The index of the segment that opens with the hyphen repeated from the line
|
|
226
337
|
* before (`VDTLine.repeatedHyphen`, "vencer-" | "-se"), or -1. The PDF paints
|
|
@@ -292,16 +403,21 @@ function renderBullet(ctx, block, fontCache, elem) {
|
|
|
292
403
|
const midY = block.bulletY ?? firstLine.baseline;
|
|
293
404
|
const baselinePx = onBaseline ? baselineY : midY + size * 0.3;
|
|
294
405
|
tagContent(ctx, elem);
|
|
406
|
+
// Ordered-list separator styled apart from the number (own font/colour),
|
|
407
|
+
// with the prefix run before the number in the same style: drawn in
|
|
408
|
+
// reading order, prefix, number, separator, so text extraction reads
|
|
409
|
+
// (一) and not 一)(.
|
|
410
|
+
const sepFontString = block.separatorText && block.separatorX !== undefined ? block.separatorFontString ?? block.bulletFontString : undefined;
|
|
411
|
+
const sepFont = sepFontString !== undefined ? fontCache.get(sepFontString) : undefined;
|
|
412
|
+
const sepSize = sepFontString !== undefined ? parseFontString(sepFontString)?.sizePx ?? size : size;
|
|
413
|
+
const sepColor = colorFromHex(block.separatorColor ?? colorHex, ctx.colorSpace);
|
|
414
|
+
const sepY = onBaseline ? baselineY : midY + sepSize * 0.3;
|
|
415
|
+
if (sepFont && block.prefixText && block.prefixX !== undefined) {
|
|
416
|
+
drawTextPx(ctx, block.prefixText, block.prefixX, sepY, sepFont, sepSize, sepColor);
|
|
417
|
+
}
|
|
295
418
|
drawTextPx(ctx, block.bulletText, block.bulletOffsetX, baselinePx, font, size, color);
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
const sepFontString = block.separatorFontString ?? block.bulletFontString;
|
|
299
|
-
const sepFont = fontCache.get(sepFontString);
|
|
300
|
-
if (!sepFont)
|
|
301
|
-
return;
|
|
302
|
-
const sepSize = parseFontString(sepFontString)?.sizePx ?? size;
|
|
303
|
-
const sepColor = colorFromHex(block.separatorColor ?? colorHex, ctx.colorSpace);
|
|
304
|
-
drawTextPx(ctx, block.separatorText, block.separatorX, onBaseline ? baselineY : midY + sepSize * 0.3, sepFont, sepSize, sepColor);
|
|
419
|
+
if (sepFont && block.separatorText && block.separatorX !== undefined) {
|
|
420
|
+
drawTextPx(ctx, block.separatorText, block.separatorX, sepY, sepFont, sepSize, sepColor);
|
|
305
421
|
}
|
|
306
422
|
}
|
|
307
423
|
function renderStrikethrough(ctx, block) {
|
|
@@ -315,11 +431,18 @@ function renderStrikethrough(ctx, block) {
|
|
|
315
431
|
drawLinePx(ctx, line.bbox.x, y, line.bbox.x + line.bbox.width, y, color, thickness);
|
|
316
432
|
}
|
|
317
433
|
}
|
|
318
|
-
/**
|
|
434
|
+
/** A rect of the page's frame in PDF points, on the sheet: through the
|
|
435
|
+
* flow frame of a vertical page (`PageCtx.mapRectPt`), as it is on any
|
|
436
|
+
* other. Annotation rects and destinations live outside the content
|
|
437
|
+
* stream, so the frame's `cm` does not reach them. */
|
|
438
|
+
function sheetRect(ctx, rect) {
|
|
439
|
+
return ctx.mapRectPt ? ctx.mapRectPt(rect) : rect;
|
|
440
|
+
}
|
|
441
|
+
/** Annotation rectangle of a block's box, in PDF points, on the sheet. */
|
|
319
442
|
function rectOfBlock(ctx, block) {
|
|
320
443
|
const { scale, pageHeightPt } = ctx;
|
|
321
444
|
const { x, y, width, height } = block.bbox;
|
|
322
|
-
return [x * scale, pageHeightPt - (y + height) * scale, (x + width) * scale, pageHeightPt - y * scale];
|
|
445
|
+
return sheetRect(ctx, [x * scale, pageHeightPt - (y + height) * scale, (x + width) * scale, pageHeightPt - y * scale]);
|
|
323
446
|
}
|
|
324
447
|
export function renderBlock(ctx, block, columnWidth, columnX, fontCache, resourceCtx) {
|
|
325
448
|
if (block.hidden)
|
|
@@ -336,7 +459,9 @@ export function renderBlock(ctx, block, columnWidth, columnX, fontCache, resourc
|
|
|
336
459
|
const textElem = structure
|
|
337
460
|
? () => link ?? (targetPage !== undefined ? (link = structure.blockElem(block).child('Link')) : structure.blockElem(block))
|
|
338
461
|
: undefined;
|
|
339
|
-
renderHeaderFooterSlot(ctx, block.designOverlay, fontCache, resourceCtx?.images, textElem
|
|
462
|
+
renderHeaderFooterSlot(ctx, block.designOverlay, fontCache, resourceCtx?.images, textElem && structure
|
|
463
|
+
? { text: textElem, artifact: { type: 'Layout' }, figure: (alt, attributes, after) => structure.designFigure(alt, attributes, after) }
|
|
464
|
+
: undefined);
|
|
340
465
|
if (targetPage !== undefined && linkRegistry) {
|
|
341
466
|
const contents = block.tocPart ? `${block.tocPart.number} ${block.tocPart.title}`.trim() : block.lines.map((l) => l.text).join(' ');
|
|
342
467
|
linkRegistry.addPageLink(ctx.page, rectOfBlock(ctx, block), targetPage, link ? { elem: link, contents } : undefined);
|
|
@@ -355,7 +480,9 @@ export function renderBlock(ctx, block, columnWidth, columnX, fontCache, resourc
|
|
|
355
480
|
}
|
|
356
481
|
// A note is where its markers link to.
|
|
357
482
|
if (block.footnoteNote !== undefined && linkRegistry) {
|
|
358
|
-
|
|
483
|
+
// The top left of the note's box on the sheet.
|
|
484
|
+
const [left, , , top] = rectOfBlock(ctx, block);
|
|
485
|
+
linkRegistry.addDestination(footnoteDestination(linkRegistry, block.footnoteNote), ctx.page, left, top);
|
|
359
486
|
}
|
|
360
487
|
// Justify against the block's own measure (see the canvas backend): blocks
|
|
361
488
|
// inside callouts are narrower than their column.
|
|
@@ -363,6 +490,9 @@ export function renderBlock(ctx, block, columnWidth, columnX, fontCache, resourc
|
|
|
363
490
|
void columnX;
|
|
364
491
|
for (const line of block.lines) {
|
|
365
492
|
renderLine(ctx, line, block, block.bbox.width, block.bbox.x, fontCache, linkRegistry, elem);
|
|
493
|
+
// Emphasis dots, proper-name and book-title lines (#193).
|
|
494
|
+
if (line.marks)
|
|
495
|
+
paintLineMarks(ctx, line, colorFromHex(block.color, ctx.colorSpace));
|
|
366
496
|
}
|
|
367
497
|
if (targetPage !== undefined && linkRegistry) {
|
|
368
498
|
const contents = block.lines.map((l) => l.text).join(' ');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blockRender.js","sourceRoot":"","sources":["../../src/pdf-backend/blockRender.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"blockRender.js","sourceRoot":"","sources":["../../src/pdf-backend/blockRender.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,25 @@
|
|
|
10
10
|
* draws glyph 0, the notdef box, at its own width — a visible box one em wide
|
|
11
11
|
* in some faces, which also pushes the rest of the word. The PDF backend
|
|
12
12
|
* paints them as the canvas did: {@link fallbackPieces} tells it where.
|
|
13
|
+
*
|
|
14
|
+
* The same goes for the non-breaking hyphen: HarfBuzz sets U+2011 with the
|
|
15
|
+
* face's U+2010 when the face lacks it, and the browser takes a hyphen from
|
|
16
|
+
* another font when it lacks both. Open Sans and Outfit have neither in
|
|
17
|
+
* their `latin` files; the PDF draws the face's own hyphen instead of a
|
|
18
|
+
* box ({@link substituteGlyph}).
|
|
13
19
|
*/
|
|
20
|
+
/** Unicode's Default_Ignorable_Code_Point, as HarfBuzz and fontkit list it. */
|
|
21
|
+
export declare function isDefaultIgnorable(cp: number): boolean;
|
|
22
|
+
/** The character whose glyph stands in for `cp` in a face that has no
|
|
23
|
+
* glyph for it (see {@link GLYPH_SUBSTITUTES}); undefined when the face
|
|
24
|
+
* has the glyph, or `cp` has no stand-in the face holds. */
|
|
25
|
+
export declare function substituteGlyph(face: {
|
|
26
|
+
hasGlyphForCodePoint(codePoint: number): boolean;
|
|
27
|
+
}, cp: number): number | undefined;
|
|
28
|
+
/** Whether {@link fallbackPieces} paints `cp` without the face's glyph for
|
|
29
|
+
* it: a space set from the face's space glyph, or a default-ignorable
|
|
30
|
+
* character left out. A face lacking one of these is not missing it. */
|
|
31
|
+
export declare function isFallbackHandled(cp: number): boolean;
|
|
14
32
|
/** The fontkit face of an embedded font, as far as the fallbacks need it. */
|
|
15
33
|
export interface FallbackFace {
|
|
16
34
|
unitsPerEm: number;
|
|
@@ -30,8 +48,9 @@ export type TextPiece = {
|
|
|
30
48
|
* `text` split for painting with `face`: runs of text to shape as they are,
|
|
31
49
|
* and between them the spaces the face has no glyph for, each with the
|
|
32
50
|
* advance the browser's shaper would give it; invisible characters are
|
|
33
|
-
* dropped (see {@link ALWAYS_HIDDEN})
|
|
34
|
-
*
|
|
51
|
+
* dropped (see {@link ALWAYS_HIDDEN}), and a hyphen the face lacks is set
|
|
52
|
+
* as its stand-in ({@link substituteGlyph}). Undefined when the text needs
|
|
53
|
+
* none of this, which is the common case.
|
|
35
54
|
*/
|
|
36
55
|
export declare function fallbackPieces(face: FallbackFace, text: string): TextPiece[] | undefined;
|
|
37
56
|
//# sourceMappingURL=fallbackSpaces.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fallbackSpaces.d.ts","sourceRoot":"","sources":["../../src/pdf-backend/fallbackSpaces.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"fallbackSpaces.d.ts","sourceRoot":"","sources":["../../src/pdf-backend/fallbackSpaces.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAkCH,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAatD;AAWD;;6DAE6D;AAC7D,wBAAgB,eAAe,CAAC,IAAI,EAAE;IAAE,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAI1H;AAED;;yEAEyE;AACzE,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAErD;AAOD,6EAA6E;AAC7E,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IACjD,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;CAChE;AAED;0DAC0D;AAC1D,MAAM,MAAM,SAAS,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAyB7D;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,SAAS,CA+BxF"}
|
|
@@ -10,6 +10,12 @@
|
|
|
10
10
|
* draws glyph 0, the notdef box, at its own width — a visible box one em wide
|
|
11
11
|
* in some faces, which also pushes the rest of the word. The PDF backend
|
|
12
12
|
* paints them as the canvas did: {@link fallbackPieces} tells it where.
|
|
13
|
+
*
|
|
14
|
+
* The same goes for the non-breaking hyphen: HarfBuzz sets U+2011 with the
|
|
15
|
+
* face's U+2010 when the face lacks it, and the browser takes a hyphen from
|
|
16
|
+
* another font when it lacks both. Open Sans and Outfit have neither in
|
|
17
|
+
* their `latin` files; the PDF draws the face's own hyphen instead of a
|
|
18
|
+
* box ({@link substituteGlyph}).
|
|
13
19
|
*/
|
|
14
20
|
/** The Unicode spaces HarfBuzz sets from the space glyph (`space_fallback_type`). */
|
|
15
21
|
const FALLBACK_SPACES = new Map([
|
|
@@ -37,7 +43,7 @@ const FALLBACK_SPACES = new Map([
|
|
|
37
43
|
* when the face has no glyph for them. */
|
|
38
44
|
const ALWAYS_HIDDEN = new Set([0x00ad, 0x200b, 0x2060, 0xfeff]);
|
|
39
45
|
/** Unicode's Default_Ignorable_Code_Point, as HarfBuzz and fontkit list it. */
|
|
40
|
-
function isDefaultIgnorable(cp) {
|
|
46
|
+
export function isDefaultIgnorable(cp) {
|
|
41
47
|
if (cp < 0x10000) {
|
|
42
48
|
return cp === 0x00ad || cp === 0x034f || cp === 0x061c
|
|
43
49
|
|| (cp >= 0x17b4 && cp <= 0x17b5)
|
|
@@ -51,9 +57,33 @@ function isDefaultIgnorable(cp) {
|
|
|
51
57
|
}
|
|
52
58
|
return (cp >= 0x1bca0 && cp <= 0x1bca3) || (cp >= 0x1d173 && cp <= 0x1d17a) || (cp >= 0xe0000 && cp <= 0xe0fff);
|
|
53
59
|
}
|
|
54
|
-
/**
|
|
55
|
-
*
|
|
56
|
-
|
|
60
|
+
/** Characters drawn with another glyph of the face when it has none of
|
|
61
|
+
* their own, in the order the stand-ins are tried: the non-breaking hyphen
|
|
62
|
+
* as the hyphen (HarfBuzz's own fallback), then as the hyphen-minus, whose
|
|
63
|
+
* glyph is the hyphen in Latin faces; the hyphen as the hyphen-minus. */
|
|
64
|
+
const GLYPH_SUBSTITUTES = new Map([
|
|
65
|
+
[0x2011, [0x2010, 0x002d]],
|
|
66
|
+
[0x2010, [0x002d]],
|
|
67
|
+
]);
|
|
68
|
+
/** The character whose glyph stands in for `cp` in a face that has no
|
|
69
|
+
* glyph for it (see {@link GLYPH_SUBSTITUTES}); undefined when the face
|
|
70
|
+
* has the glyph, or `cp` has no stand-in the face holds. */
|
|
71
|
+
export function substituteGlyph(face, cp) {
|
|
72
|
+
const options = GLYPH_SUBSTITUTES.get(cp);
|
|
73
|
+
if (!options || face.hasGlyphForCodePoint(cp))
|
|
74
|
+
return undefined;
|
|
75
|
+
return options.find((alt) => face.hasGlyphForCodePoint(alt));
|
|
76
|
+
}
|
|
77
|
+
/** Whether {@link fallbackPieces} paints `cp` without the face's glyph for
|
|
78
|
+
* it: a space set from the face's space glyph, or a default-ignorable
|
|
79
|
+
* character left out. A face lacking one of these is not missing it. */
|
|
80
|
+
export function isFallbackHandled(cp) {
|
|
81
|
+
return FALLBACK_SPACES.has(cp) || isDefaultIgnorable(cp);
|
|
82
|
+
}
|
|
83
|
+
/** Quick test for a character {@link fallbackPieces} may have to handle
|
|
84
|
+
* (the spaces, the invisible characters, the two hyphens): most text holds
|
|
85
|
+
* none, and skips the per-character walk. */
|
|
86
|
+
const CANDIDATE_RE = /[\u2010\u2011 ͏឴឵᠋- -- - ︀-️-\uD82F\uD834\uDB40-\uDB43]/;
|
|
57
87
|
function spaceAdvance(face, kind) {
|
|
58
88
|
const space = face.hasGlyphForCodePoint(0x20) ? face.glyphForCodePoint(0x20).advanceWidth : face.unitsPerEm / 4;
|
|
59
89
|
if (typeof kind === 'number')
|
|
@@ -83,8 +113,9 @@ function spaceAdvance(face, kind) {
|
|
|
83
113
|
* `text` split for painting with `face`: runs of text to shape as they are,
|
|
84
114
|
* and between them the spaces the face has no glyph for, each with the
|
|
85
115
|
* advance the browser's shaper would give it; invisible characters are
|
|
86
|
-
* dropped (see {@link ALWAYS_HIDDEN})
|
|
87
|
-
*
|
|
116
|
+
* dropped (see {@link ALWAYS_HIDDEN}), and a hyphen the face lacks is set
|
|
117
|
+
* as its stand-in ({@link substituteGlyph}). Undefined when the text needs
|
|
118
|
+
* none of this, which is the common case.
|
|
88
119
|
*/
|
|
89
120
|
export function fallbackPieces(face, text) {
|
|
90
121
|
if (!CANDIDATE_RE.test(text))
|
|
@@ -108,6 +139,12 @@ export function fallbackPieces(face, text) {
|
|
|
108
139
|
changed = true;
|
|
109
140
|
continue;
|
|
110
141
|
}
|
|
142
|
+
const stand = substituteGlyph(face, cp);
|
|
143
|
+
if (stand !== undefined) {
|
|
144
|
+
run += String.fromCodePoint(stand);
|
|
145
|
+
changed = true;
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
111
148
|
run += ch;
|
|
112
149
|
}
|
|
113
150
|
if (!changed)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fallbackSpaces.js","sourceRoot":"","sources":["../../src/pdf-backend/fallbackSpaces.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"fallbackSpaces.js","sourceRoot":"","sources":["../../src/pdf-backend/fallbackSpaces.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAOH,qFAAqF;AACrF,MAAM,eAAe,GAAG,IAAI,GAAG,CAAoB;IACjD,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB;IACpC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,UAAU;IACvB,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,UAAU;IACvB,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,WAAW;IACxB,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,WAAW;IACxB,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,qBAAqB;IAClC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,oBAAoB;IACjC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,mBAAmB;IAChC,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,eAAe;IACnC,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,oBAAoB;IAC7C,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,aAAa;IAC1B,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,aAAa;IAC3B,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,wBAAwB;IAC5C,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,4BAA4B;IAC9C,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,oBAAoB;CAClC,CAAC,CAAC;AAEH;;;;;2CAK2C;AAC3C,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAEhE,+EAA+E;AAC/E,MAAM,UAAU,kBAAkB,CAAC,EAAU;IAC3C,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;QACjB,OAAO,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,MAAM;eACjD,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC;eAC9B,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC;eAC9B,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC;eAC9B,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC;eAC9B,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC;eAC9B,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC;eAC9B,EAAE,KAAK,MAAM;eACb,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,CAAC,EAAE,IAAI,OAAO,IAAI,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,OAAO,IAAI,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,OAAO,IAAI,EAAE,IAAI,OAAO,CAAC,CAAC;AAClH,CAAC;AAED;;;0EAG0E;AAC1E,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAA4B;IAC3D,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1B,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;CACnB,CAAC,CAAC;AAEH;;6DAE6D;AAC7D,MAAM,UAAU,eAAe,CAAC,IAA0D,EAAE,EAAU;IACpG,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAAE,OAAO,SAAS,CAAC;IAChE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED;;yEAEyE;AACzE,MAAM,UAAU,iBAAiB,CAAC,EAAU;IAC1C,OAAO,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED;;8CAE8C;AAC9C,MAAM,YAAY,GAAG,mEAAmE,CAAC;AAazF,SAAS,YAAY,CAAC,IAAkB,EAAE,IAAe;IACvD,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IAChH,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAC5D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,KAAK,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,KAAK,GAAG,CAAC,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACpC,KAAK,QAAQ;YACX,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClC,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;oBAAE,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;YAClF,CAAC;YACD,OAAO,KAAK,CAAC;QACf,KAAK,aAAa;YAChB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC7B,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;oBAAE,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;YAClF,CAAC;YACD,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,IAAkB,EAAE,IAAY;IAC7D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/C,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;QACtB,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,EAAE,CAAC;YACzD,IAAI,GAAG;gBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;YACpC,GAAG,GAAG,EAAE,CAAC;YACT,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YACjD,OAAO,GAAG,IAAI,CAAC;YACf,SAAS;QACX,CAAC;QACD,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACxF,iEAAiE;YACjE,OAAO,GAAG,IAAI,CAAC;YACf,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACxC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACnC,OAAO,GAAG,IAAI,CAAC;YACf,SAAS;QACX,CAAC;QACD,GAAG,IAAI,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,IAAI,GAAG;QAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { VDTDocument, VDTBlock } from 'postext';
|
|
2
|
+
/** Font strings and the characters set in each (see {@link collectFontText}). */
|
|
3
|
+
export type FontText = Map<string, Set<number>>;
|
|
2
4
|
/**
|
|
3
5
|
* Collect the fontString of every face the pages paint, walking them the
|
|
4
6
|
* way the renderer does: a block's base face when it sets any line, the
|
|
@@ -10,6 +12,16 @@ import type { VDTDocument, VDTBlock } from 'postext';
|
|
|
10
12
|
* lines of a block drawn through its design overlay, paint nothing.
|
|
11
13
|
*/
|
|
12
14
|
export declare function collectFontStrings(doc: VDTDocument): string[];
|
|
15
|
+
/**
|
|
16
|
+
* {@link collectFontStrings} with the characters set in each face, for a
|
|
17
|
+
* font provider that serves a family as several files (issue #196). A
|
|
18
|
+
* block's base face is credited with the whole text of its lines (it paints
|
|
19
|
+
* the spaces and every plain line), so it may list characters a styled run
|
|
20
|
+
* sets in another face: the provider may hand over a file that is never
|
|
21
|
+
* drawn from, which is left out of the PDF. `into` gathers several
|
|
22
|
+
* documents (the chapters of a book).
|
|
23
|
+
*/
|
|
24
|
+
export declare function collectFontText(doc: VDTDocument, into?: FontText): FontText;
|
|
13
25
|
export declare function pickSegmentFont(bold: boolean, italic: boolean, block: VDTBlock): string;
|
|
14
26
|
export declare function pickSegmentColor(bold: boolean, italic: boolean, block: VDTBlock): string;
|
|
15
27
|
//# sourceMappingURL=fontHelpers.d.ts.map
|