postext 1.22.3 → 1.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/bundle.test.js +1 -1
- package/dist/__tests__/codeBlocks.test.d.ts +2 -0
- package/dist/__tests__/codeBlocks.test.d.ts.map +1 -0
- package/dist/__tests__/codeBlocks.test.js +550 -0
- package/dist/__tests__/codeBlocks.test.js.map +1 -0
- package/dist/__tests__/exports.test.js +19 -0
- package/dist/__tests__/exports.test.js.map +1 -1
- package/dist/__tests__/hardBreaks.test.d.ts +2 -0
- package/dist/__tests__/hardBreaks.test.d.ts.map +1 -0
- package/dist/__tests__/hardBreaks.test.js +226 -0
- package/dist/__tests__/hardBreaks.test.js.map +1 -0
- package/dist/__tests__/headingInlineMarks.test.js +1 -1
- package/dist/__tests__/headingLetterSpacing.test.js +1 -1
- package/dist/__tests__/headingLetterSpacing.test.js.map +1 -1
- package/dist/__tests__/lineNumbers.test.d.ts +2 -0
- package/dist/__tests__/lineNumbers.test.d.ts.map +1 -0
- package/dist/__tests__/lineNumbers.test.js +304 -0
- package/dist/__tests__/lineNumbers.test.js.map +1 -0
- package/dist/__tests__/mathSizeMigration.test.js +2 -2
- package/dist/__tests__/paragraphDropCap.test.d.ts +2 -0
- package/dist/__tests__/paragraphDropCap.test.d.ts.map +1 -0
- package/dist/__tests__/paragraphDropCap.test.js +442 -0
- package/dist/__tests__/paragraphDropCap.test.js.map +1 -0
- package/dist/__tests__/paragraphStyleIndent.test.js +26 -2
- package/dist/__tests__/paragraphStyleIndent.test.js.map +1 -1
- package/dist/__tests__/pipeline/calloutInlineResourceGap.test.js +1 -1
- package/dist/__tests__/pipeline/calloutSplitMinLinesChild.test.js +1 -1
- package/dist/__tests__/pipeline/colonListRoom.test.js +1 -1
- package/dist/__tests__/pipeline/compoundBreaks.test.js +1 -1
- package/dist/__tests__/pipeline/dashBreaks.test.js +1 -1
- package/dist/__tests__/pipeline/headingSplitOrphans.test.js +1 -1
- package/dist/__tests__/pipeline/inlineFigureSpace.test.js +1 -1
- package/dist/__tests__/pipeline/paragraphContainerTail.test.js +1 -1
- package/dist/__tests__/pipeline/paragraphStyleFaces.test.js +7 -1
- package/dist/__tests__/pipeline/paragraphStyleFaces.test.js.map +1 -1
- package/dist/__tests__/pipeline/raggedOptimal.test.js +1 -1
- package/dist/__tests__/tabStops.test.d.ts +2 -0
- package/dist/__tests__/tabStops.test.d.ts.map +1 -0
- package/dist/__tests__/tabStops.test.js +394 -0
- package/dist/__tests__/tabStops.test.js.map +1 -0
- package/dist/__tests__/verseLines.test.d.ts +2 -0
- package/dist/__tests__/verseLines.test.d.ts.map +1 -0
- package/dist/__tests__/verseLines.test.js +375 -0
- package/dist/__tests__/verseLines.test.js.map +1 -0
- package/dist/bundle/configVersion.d.ts +77 -7
- package/dist/bundle/configVersion.d.ts.map +1 -1
- package/dist/bundle/configVersion.js +239 -5
- package/dist/bundle/configVersion.js.map +1 -1
- package/dist/bundle/index.d.ts +1 -1
- package/dist/bundle/index.d.ts.map +1 -1
- package/dist/bundle/index.js +1 -1
- package/dist/bundle/index.js.map +1 -1
- package/dist/canvas-backend/blockRender.d.ts.map +1 -1
- package/dist/canvas-backend/blockRender.js +39 -5
- package/dist/canvas-backend/blockRender.js.map +1 -1
- package/dist/canvas-backend/index.d.ts.map +1 -1
- package/dist/canvas-backend/index.js +3 -0
- package/dist/canvas-backend/index.js.map +1 -1
- package/dist/cjkMarks.js +1 -1
- package/dist/cjkMarks.js.map +1 -1
- package/dist/code/highlight.d.ts +34 -0
- package/dist/code/highlight.d.ts.map +1 -0
- package/dist/code/highlight.js +406 -0
- package/dist/code/highlight.js.map +1 -0
- package/dist/configWarnings.d.ts.map +1 -1
- package/dist/configWarnings.js +192 -3
- package/dist/configWarnings.js.map +1 -1
- package/dist/defaults/bodyText.d.ts.map +1 -1
- package/dist/defaults/bodyText.js +25 -0
- package/dist/defaults/bodyText.js.map +1 -1
- package/dist/defaults/calloutStyles.d.ts.map +1 -1
- package/dist/defaults/calloutStyles.js +7 -0
- package/dist/defaults/calloutStyles.js.map +1 -1
- package/dist/defaults/codeStyle.d.ts +29 -0
- package/dist/defaults/codeStyle.d.ts.map +1 -0
- package/dist/defaults/codeStyle.js +284 -0
- package/dist/defaults/codeStyle.js.map +1 -0
- package/dist/defaults/dropCap.d.ts +49 -0
- package/dist/defaults/dropCap.d.ts.map +1 -0
- package/dist/defaults/dropCap.js +66 -0
- package/dist/defaults/dropCap.js.map +1 -0
- package/dist/defaults/headings.d.ts +1 -1
- package/dist/defaults/headings.d.ts.map +1 -1
- package/dist/defaults/headings.js +11 -0
- package/dist/defaults/headings.js.map +1 -1
- package/dist/defaults/index.d.ts +3 -0
- package/dist/defaults/index.d.ts.map +1 -1
- package/dist/defaults/index.js +19 -0
- package/dist/defaults/index.js.map +1 -1
- package/dist/defaults/lineNumbers.d.ts +19 -0
- package/dist/defaults/lineNumbers.d.ts.map +1 -0
- package/dist/defaults/lineNumbers.js +101 -0
- package/dist/defaults/lineNumbers.js.map +1 -0
- package/dist/defaults/paragraphStyles.d.ts.map +1 -1
- package/dist/defaults/paragraphStyles.js +20 -0
- package/dist/defaults/paragraphStyles.js.map +1 -1
- package/dist/defaults/tabStops.d.ts +29 -0
- package/dist/defaults/tabStops.d.ts.map +1 -0
- package/dist/defaults/tabStops.js +94 -0
- package/dist/defaults/tabStops.js.map +1 -0
- package/dist/defaults/verse.d.ts +10 -0
- package/dist/defaults/verse.d.ts.map +1 -0
- package/dist/defaults/verse.js +52 -0
- package/dist/defaults/verse.js.map +1 -0
- package/dist/fonts/usage.d.ts +7 -0
- package/dist/fonts/usage.d.ts.map +1 -1
- package/dist/fonts/usage.js +71 -0
- package/dist/fonts/usage.js.map +1 -1
- package/dist/html-backend.d.ts.map +1 -1
- package/dist/html-backend.js +85 -11
- package/dist/html-backend.js.map +1 -1
- package/dist/index.d.ts +8 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/measure/bidiLines.js +2 -2
- package/dist/measure/bidiLines.js.map +1 -1
- package/dist/measure/cache.js +2 -2
- package/dist/measure/cache.js.map +1 -1
- package/dist/measure/cjkCompose.d.ts.map +1 -1
- package/dist/measure/cjkCompose.js +5 -5
- package/dist/measure/cjkCompose.js.map +1 -1
- package/dist/measure/hardBreaks.d.ts +46 -0
- package/dist/measure/hardBreaks.d.ts.map +1 -0
- package/dist/measure/hardBreaks.js +216 -0
- package/dist/measure/hardBreaks.js.map +1 -0
- package/dist/measure/index.d.ts +1 -0
- package/dist/measure/index.d.ts.map +1 -1
- package/dist/measure/index.js +1 -0
- package/dist/measure/index.js.map +1 -1
- package/dist/measure/leader.d.ts +20 -0
- package/dist/measure/leader.d.ts.map +1 -0
- package/dist/measure/leader.js +46 -0
- package/dist/measure/leader.js.map +1 -0
- package/dist/measure/links.js +1 -1
- package/dist/measure/links.js.map +1 -1
- package/dist/measure/plain.d.ts.map +1 -1
- package/dist/measure/plain.js +18 -25
- package/dist/measure/plain.js.map +1 -1
- package/dist/measure/rich.d.ts +19 -0
- package/dist/measure/rich.d.ts.map +1 -1
- package/dist/measure/rich.js +211 -38
- package/dist/measure/rich.js.map +1 -1
- package/dist/measure/tabs.d.ts +103 -0
- package/dist/measure/tabs.d.ts.map +1 -0
- package/dist/measure/tabs.js +123 -0
- package/dist/measure/tabs.js.map +1 -0
- package/dist/measure/types.d.ts +26 -2
- package/dist/measure/types.d.ts.map +1 -1
- package/dist/measure/types.js +23 -3
- package/dist/measure/types.js.map +1 -1
- package/dist/parse/blockParser.d.ts +13 -6
- package/dist/parse/blockParser.d.ts.map +1 -1
- package/dist/parse/blockParser.js +457 -87
- package/dist/parse/blockParser.js.map +1 -1
- package/dist/parse/codeFence.d.ts +18 -0
- package/dist/parse/codeFence.d.ts.map +1 -0
- package/dist/parse/codeFence.js +52 -0
- package/dist/parse/codeFence.js.map +1 -0
- package/dist/parse/index.d.ts +1 -1
- package/dist/parse/index.d.ts.map +1 -1
- package/dist/parse/index.js.map +1 -1
- package/dist/parse/indexMarks.d.ts +3 -1
- package/dist/parse/indexMarks.d.ts.map +1 -1
- package/dist/parse/indexMarks.js +22 -2
- package/dist/parse/indexMarks.js.map +1 -1
- package/dist/parse/inlineFormatting.d.ts +50 -0
- package/dist/parse/inlineFormatting.d.ts.map +1 -1
- package/dist/parse/inlineFormatting.js +94 -0
- package/dist/parse/inlineFormatting.js.map +1 -1
- package/dist/parse/sourceMapping.d.ts.map +1 -1
- package/dist/parse/sourceMapping.js +65 -1
- package/dist/parse/sourceMapping.js.map +1 -1
- package/dist/parse/types.d.ts +144 -9
- package/dist/parse/types.d.ts.map +1 -1
- package/dist/pipeline/build.d.ts.map +1 -1
- package/dist/pipeline/build.js +143 -18
- package/dist/pipeline/build.js.map +1 -1
- package/dist/pipeline/buildBlockKind.d.ts.map +1 -1
- package/dist/pipeline/buildBlockKind.js +60 -1
- package/dist/pipeline/buildBlockKind.js.map +1 -1
- package/dist/pipeline/buildHelpers.d.ts +3 -0
- package/dist/pipeline/buildHelpers.d.ts.map +1 -1
- package/dist/pipeline/buildHelpers.js +7 -2
- package/dist/pipeline/buildHelpers.js.map +1 -1
- package/dist/pipeline/calloutLayout.d.ts.map +1 -1
- package/dist/pipeline/calloutLayout.js +33 -2
- package/dist/pipeline/calloutLayout.js.map +1 -1
- package/dist/pipeline/chips.d.ts.map +1 -1
- package/dist/pipeline/chips.js +4 -0
- package/dist/pipeline/chips.js.map +1 -1
- package/dist/pipeline/codeBlocks.d.ts +38 -0
- package/dist/pipeline/codeBlocks.d.ts.map +1 -0
- package/dist/pipeline/codeBlocks.js +146 -0
- package/dist/pipeline/codeBlocks.js.map +1 -0
- package/dist/pipeline/codeInline.d.ts +22 -0
- package/dist/pipeline/codeInline.d.ts.map +1 -0
- package/dist/pipeline/codeInline.js +93 -0
- package/dist/pipeline/codeInline.js.map +1 -0
- package/dist/pipeline/codeLines.d.ts +91 -0
- package/dist/pipeline/codeLines.d.ts.map +1 -0
- package/dist/pipeline/codeLines.js +399 -0
- package/dist/pipeline/codeLines.js.map +1 -0
- package/dist/pipeline/config.d.ts.map +1 -1
- package/dist/pipeline/config.js +8 -1
- package/dist/pipeline/config.js.map +1 -1
- package/dist/pipeline/contentWarnings.d.ts +9 -0
- package/dist/pipeline/contentWarnings.d.ts.map +1 -1
- package/dist/pipeline/contentWarnings.js +60 -2
- package/dist/pipeline/contentWarnings.js.map +1 -1
- package/dist/pipeline/continuation.d.ts.map +1 -1
- package/dist/pipeline/continuation.js +9 -2
- package/dist/pipeline/continuation.js.map +1 -1
- package/dist/pipeline/dropCap.d.ts +128 -0
- package/dist/pipeline/dropCap.d.ts.map +1 -0
- package/dist/pipeline/dropCap.js +412 -0
- package/dist/pipeline/dropCap.js.map +1 -0
- package/dist/pipeline/hardBreaks.d.ts +19 -0
- package/dist/pipeline/hardBreaks.d.ts.map +1 -0
- package/dist/pipeline/hardBreaks.js +36 -0
- package/dist/pipeline/hardBreaks.js.map +1 -0
- package/dist/pipeline/headerFooter.d.ts.map +1 -1
- package/dist/pipeline/headerFooter.js +4 -1
- package/dist/pipeline/headerFooter.js.map +1 -1
- package/dist/pipeline/lineNumbers.d.ts +37 -0
- package/dist/pipeline/lineNumbers.d.ts.map +1 -0
- package/dist/pipeline/lineNumbers.js +441 -0
- package/dist/pipeline/lineNumbers.js.map +1 -0
- package/dist/pipeline/measureContentBlock.d.ts +31 -5
- package/dist/pipeline/measureContentBlock.d.ts.map +1 -1
- package/dist/pipeline/measureContentBlock.js +274 -68
- package/dist/pipeline/measureContentBlock.js.map +1 -1
- package/dist/pipeline/partPalette.d.ts +1 -1
- package/dist/pipeline/partPalette.d.ts.map +1 -1
- package/dist/pipeline/partPalette.js +24 -2
- package/dist/pipeline/partPalette.js.map +1 -1
- package/dist/pipeline/styles.d.ts +18 -2
- package/dist/pipeline/styles.d.ts.map +1 -1
- package/dist/pipeline/styles.js +15 -3
- package/dist/pipeline/styles.js.map +1 -1
- package/dist/pipeline/tabs.d.ts +35 -0
- package/dist/pipeline/tabs.d.ts.map +1 -0
- package/dist/pipeline/tabs.js +99 -0
- package/dist/pipeline/tabs.js.map +1 -0
- package/dist/pipeline/toc.d.ts.map +1 -1
- package/dist/pipeline/toc.js +3 -38
- package/dist/pipeline/toc.js.map +1 -1
- package/dist/pipeline/verseLines.d.ts +78 -0
- package/dist/pipeline/verseLines.d.ts.map +1 -0
- package/dist/pipeline/verseLines.js +245 -0
- package/dist/pipeline/verseLines.js.map +1 -0
- package/dist/preflight.d.ts.map +1 -1
- package/dist/preflight.js +1 -0
- package/dist/preflight.js.map +1 -1
- package/dist/types.d.ts +560 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/vdt.d.ts +240 -7
- package/dist/vdt.d.ts.map +1 -1
- package/dist/vdt.js +6 -0
- package/dist/vdt.js.map +1 -1
- package/dist/word/docxRead.d.ts.map +1 -1
- package/dist/word/docxRead.js +15 -0
- package/dist/word/docxRead.js.map +1 -1
- package/dist/word/inline.d.ts +6 -1
- package/dist/word/inline.d.ts.map +1 -1
- package/dist/word/inline.js +35 -1
- package/dist/word/inline.js.map +1 -1
- package/dist/word/model.d.ts +14 -0
- package/dist/word/model.d.ts.map +1 -1
- package/dist/word/model.js.map +1 -1
- package/dist/word/template.d.ts +12 -3
- package/dist/word/template.d.ts.map +1 -1
- package/dist/word/template.js +13 -3
- package/dist/word/template.js.map +1 -1
- package/dist/word/toDocx.d.ts.map +1 -1
- package/dist/word/toDocx.js +52 -8
- package/dist/word/toDocx.js.map +1 -1
- package/dist/word/toMarkdown.d.ts +5 -1
- package/dist/word/toMarkdown.d.ts.map +1 -1
- package/dist/word/toMarkdown.js +117 -6
- package/dist/word/toMarkdown.js.map +1 -1
- package/dist/word/word.test.js +124 -2
- package/dist/word/word.test.js.map +1 -1
- package/dist/worker/fonts.d.ts +2 -1
- package/dist/worker/fonts.d.ts.map +1 -1
- package/dist/worker/fonts.js +6 -2
- package/dist/worker/fonts.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tab stops of body text (#622): reading their settings and resolving them
|
|
3
|
+
* to px for the measurer (`measure/tabs.ts`). A stop whose position is no
|
|
4
|
+
* length, `'end'` or percentage is left out (`collectConfigWarnings` says
|
|
5
|
+
* so); an unknown `align` reads as `'start'`.
|
|
6
|
+
*/
|
|
7
|
+
import { dimensionToPx } from '../units';
|
|
8
|
+
import { defaultDecimalChar } from '../measure/tabs';
|
|
9
|
+
const ALIGNS = ['start', 'end', 'center', 'decimal'];
|
|
10
|
+
const UNITS = ['cm', 'mm', 'in', 'pt', 'px', 'em', 'rem'];
|
|
11
|
+
/** The default room between a leader and the text on either side: the
|
|
12
|
+
* contents' `leader.gap`. */
|
|
13
|
+
export const DEFAULT_TAB_LEADER_GAP = { value: 0.5, unit: 'em' };
|
|
14
|
+
export function isTabStopAlign(value) {
|
|
15
|
+
return typeof value === 'string' && ALIGNS.includes(value);
|
|
16
|
+
}
|
|
17
|
+
/** A length written as text (`120mm`, `3.5cm`, `2em`; a bare number is in
|
|
18
|
+
* points), or undefined. */
|
|
19
|
+
export function parseLengthText(text) {
|
|
20
|
+
const m = /^\s*(-?\d+(?:\.\d+)?|-?\.\d+)\s*(cm|mm|in|pt|px|em|rem)?\s*$/i.exec(text);
|
|
21
|
+
if (!m)
|
|
22
|
+
return undefined;
|
|
23
|
+
const value = Number(m[1]);
|
|
24
|
+
if (!Number.isFinite(value))
|
|
25
|
+
return undefined;
|
|
26
|
+
return { value, unit: m[2]?.toLowerCase() ?? 'pt' };
|
|
27
|
+
}
|
|
28
|
+
/** A stop's position as the config (or a `:tab{at=…}`) writes it: a
|
|
29
|
+
* `Dimension`, `'end'`, a percentage (`'50%'`) or a length as text. */
|
|
30
|
+
export function parseTabStopPosition(value) {
|
|
31
|
+
if (value && typeof value === 'object') {
|
|
32
|
+
const d = value;
|
|
33
|
+
return typeof d.value === 'number' && Number.isFinite(d.value) && typeof d.unit === 'string' && UNITS.includes(d.unit)
|
|
34
|
+
? { value: d.value, unit: d.unit }
|
|
35
|
+
: undefined;
|
|
36
|
+
}
|
|
37
|
+
if (typeof value !== 'string')
|
|
38
|
+
return undefined;
|
|
39
|
+
const text = value.trim().toLowerCase();
|
|
40
|
+
if (text === 'end')
|
|
41
|
+
return 'end';
|
|
42
|
+
const pct = /^(\d+(?:\.\d+)?|\.\d+)\s*%$/.exec(text);
|
|
43
|
+
if (pct)
|
|
44
|
+
return `${Number(pct[1])}%`;
|
|
45
|
+
return parseLengthText(text);
|
|
46
|
+
}
|
|
47
|
+
/** The stop of `:tab{at=… align=… leader=… gap=… decimal=…}` (#622), or
|
|
48
|
+
* undefined when `at` is missing or no position. */
|
|
49
|
+
export function tabStopFromAttrs(attrs) {
|
|
50
|
+
const position = attrs.at !== undefined ? parseTabStopPosition(attrs.at) : undefined;
|
|
51
|
+
if (position === undefined)
|
|
52
|
+
return undefined;
|
|
53
|
+
const align = attrs.align?.trim().toLowerCase();
|
|
54
|
+
const gap = attrs.gap !== undefined ? parseLengthText(attrs.gap) : undefined;
|
|
55
|
+
return {
|
|
56
|
+
position,
|
|
57
|
+
...(isTabStopAlign(align) ? { align } : {}),
|
|
58
|
+
...(attrs.leader !== undefined && attrs.leader.length > 0 ? { leader: attrs.leader } : {}),
|
|
59
|
+
...(gap ? { leaderGap: gap } : {}),
|
|
60
|
+
...(attrs.decimal !== undefined && attrs.decimal.length > 0 ? { decimalChar: attrs.decimal } : {}),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/** One stop in px: lengths at `dpi`, `em` of the paragraph's size, the
|
|
64
|
+
* leader gap at its default, the decimal separator the locale's. Undefined
|
|
65
|
+
* for a stop whose position is no position. */
|
|
66
|
+
export function resolveTabStopPx(stop, dpi, fontSizePx, locale) {
|
|
67
|
+
const position = parseTabStopPosition(stop?.position);
|
|
68
|
+
if (position === undefined)
|
|
69
|
+
return undefined;
|
|
70
|
+
const at = position === 'end'
|
|
71
|
+
? 'end'
|
|
72
|
+
: typeof position === 'string'
|
|
73
|
+
? { percent: parseFloat(position) }
|
|
74
|
+
: Math.max(0, dimensionToPx(position, dpi, fontSizePx));
|
|
75
|
+
const gap = stop.leaderGap ?? DEFAULT_TAB_LEADER_GAP;
|
|
76
|
+
return {
|
|
77
|
+
at,
|
|
78
|
+
align: isTabStopAlign(stop.align) ? stop.align : 'start',
|
|
79
|
+
...(typeof stop.leader === 'string' && stop.leader.length > 0 ? { leader: stop.leader } : {}),
|
|
80
|
+
gapPx: Math.max(0, dimensionToPx(gap, dpi, fontSizePx)),
|
|
81
|
+
decimalChar: typeof stop.decimalChar === 'string' && stop.decimalChar.length > 0 ? stop.decimalChar : defaultDecimalChar(locale),
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/** A paragraph's tab stops and default interval in px; undefined when it
|
|
85
|
+
* has neither. */
|
|
86
|
+
export function resolveTabSettings(stops, interval, dpi, fontSizePx, locale) {
|
|
87
|
+
const px = (stops ?? []).map((s) => resolveTabStopPx(s, dpi, fontSizePx, locale)).filter((s) => s !== undefined);
|
|
88
|
+
const intervalPx = interval ? dimensionToPx(interval, dpi, fontSizePx) : undefined;
|
|
89
|
+
const hasInterval = intervalPx !== undefined && Number.isFinite(intervalPx) && intervalPx > 0;
|
|
90
|
+
if (px.length === 0 && !hasInterval)
|
|
91
|
+
return undefined;
|
|
92
|
+
return { stops: px, ...(hasInterval ? { intervalPx } : {}) };
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=tabStops.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabStops.js","sourceRoot":"","sources":["../../src/defaults/tabStops.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ResolvedVerseConfig, VerseConfig } from '../types';
|
|
2
|
+
/** Poems in the line layout (#620): two leading spaces indent a line one
|
|
3
|
+
* em, a turnover hangs two ems, a line of space between stanzas. */
|
|
4
|
+
export declare const DEFAULT_VERSE_CONFIG: ResolvedVerseConfig;
|
|
5
|
+
/** `bodyText.verse` in full (see {@link DEFAULT_VERSE_CONFIG}). */
|
|
6
|
+
export declare function resolveVerseConfig(partial?: VerseConfig): ResolvedVerseConfig;
|
|
7
|
+
/** `bodyText.verse` without the fields that hold their default; undefined
|
|
8
|
+
* when none is left. */
|
|
9
|
+
export declare function stripVerseDefaults(verse?: VerseConfig): VerseConfig | undefined;
|
|
10
|
+
//# sourceMappingURL=verse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verse.d.ts","sourceRoot":"","sources":["../../src/defaults/verse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGjE;qEACqE;AACrE,eAAO,MAAM,oBAAoB,EAAE,mBAQlC,CAAC;AAEF,mEAAmE;AACnE,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,mBAAmB,CAa7E;AAED;yBACyB;AACzB,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS,CAY/E"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { dimensionsEqual } from './shared';
|
|
2
|
+
/** Poems in the line layout (#620): two leading spaces indent a line one
|
|
3
|
+
* em, a turnover hangs two ems, a line of space between stanzas. */
|
|
4
|
+
export const DEFAULT_VERSE_CONFIG = {
|
|
5
|
+
layout: 'auto',
|
|
6
|
+
indentStep: { value: 0.5, unit: 'em' },
|
|
7
|
+
turnover: 'hang',
|
|
8
|
+
hang: { value: 2, unit: 'em' },
|
|
9
|
+
turnoverMark: '[',
|
|
10
|
+
stanzaSpace: 1,
|
|
11
|
+
keepStanzas: 0,
|
|
12
|
+
};
|
|
13
|
+
/** `bodyText.verse` in full (see {@link DEFAULT_VERSE_CONFIG}). */
|
|
14
|
+
export function resolveVerseConfig(partial) {
|
|
15
|
+
const D = DEFAULT_VERSE_CONFIG;
|
|
16
|
+
if (!partial)
|
|
17
|
+
return D;
|
|
18
|
+
const count = (v, d) => (typeof v === 'number' && Number.isFinite(v) && v >= 0 ? v : d);
|
|
19
|
+
return {
|
|
20
|
+
layout: partial.layout === 'bayt' ? 'bayt' : 'auto',
|
|
21
|
+
indentStep: partial.indentStep ?? D.indentStep,
|
|
22
|
+
turnover: partial.turnover === 'right' ? 'right' : 'hang',
|
|
23
|
+
hang: partial.hang ?? D.hang,
|
|
24
|
+
turnoverMark: partial.turnoverMark ?? D.turnoverMark,
|
|
25
|
+
stanzaSpace: count(partial.stanzaSpace, D.stanzaSpace),
|
|
26
|
+
keepStanzas: Math.floor(count(partial.keepStanzas, D.keepStanzas)),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/** `bodyText.verse` without the fields that hold their default; undefined
|
|
30
|
+
* when none is left. */
|
|
31
|
+
export function stripVerseDefaults(verse) {
|
|
32
|
+
if (!verse)
|
|
33
|
+
return undefined;
|
|
34
|
+
const D = DEFAULT_VERSE_CONFIG;
|
|
35
|
+
const out = {};
|
|
36
|
+
if (verse.layout !== undefined && verse.layout !== D.layout)
|
|
37
|
+
out.layout = verse.layout;
|
|
38
|
+
if (verse.indentStep !== undefined && !dimensionsEqual(verse.indentStep, D.indentStep))
|
|
39
|
+
out.indentStep = verse.indentStep;
|
|
40
|
+
if (verse.turnover !== undefined && verse.turnover !== D.turnover)
|
|
41
|
+
out.turnover = verse.turnover;
|
|
42
|
+
if (verse.hang !== undefined && !dimensionsEqual(verse.hang, D.hang))
|
|
43
|
+
out.hang = verse.hang;
|
|
44
|
+
if (verse.turnoverMark !== undefined && verse.turnoverMark !== D.turnoverMark)
|
|
45
|
+
out.turnoverMark = verse.turnoverMark;
|
|
46
|
+
if (verse.stanzaSpace !== undefined && verse.stanzaSpace !== D.stanzaSpace)
|
|
47
|
+
out.stanzaSpace = verse.stanzaSpace;
|
|
48
|
+
if (verse.keepStanzas !== undefined && verse.keepStanzas !== D.keepStanzas)
|
|
49
|
+
out.keepStanzas = verse.keepStanzas;
|
|
50
|
+
return Object.keys(out).length > 0 ? out : undefined;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=verse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verse.js","sourceRoot":"","sources":["../../src/defaults/verse.ts"],"names":[],"mappings":"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"}
|
package/dist/fonts/usage.d.ts
CHANGED
|
@@ -11,6 +11,10 @@ export type FontContentText = string | readonly string[] | undefined;
|
|
|
11
11
|
* styles, running heads, design elements and comic lettering.
|
|
12
12
|
*/
|
|
13
13
|
export declare function configFontFamilies(config: PostextConfig, markdown?: FontContentText): string[];
|
|
14
|
+
/** The faces code is set in (#624): the listings' when the text holds a
|
|
15
|
+
* fence (and the configuration reads fences) or the configuration has a
|
|
16
|
+
* `codeStyle` section, the inline code's when it sets inline code. */
|
|
17
|
+
export declare function codeFontFamilies(config: PostextConfig, markdown?: FontContentText): string[];
|
|
14
18
|
export interface FontVariantUse {
|
|
15
19
|
weight: number;
|
|
16
20
|
style: 'normal' | 'italic';
|
|
@@ -23,6 +27,9 @@ export interface FontUsageDocument {
|
|
|
23
27
|
* emphasis is set as dots ({@link hasLatinEmphasis}). Unset when the
|
|
24
28
|
* text is not known. */
|
|
25
29
|
latinEmphasis?: boolean;
|
|
30
|
+
/** The text the configuration lays out: a code fence in it asks for the
|
|
31
|
+
* code face (#624). */
|
|
32
|
+
markdown?: FontContentText;
|
|
26
33
|
}
|
|
27
34
|
/** Whether the text of `blocks` (headings aside, which are set in their
|
|
28
35
|
* own face) puts a letter or digit that is not Chinese in emphasis: a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/fonts/usage.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/fonts/usage.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAO7C;;;oEAGoE;AACpE,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;AAgCrE;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,MAAM,EAAE,CAyE9F;AASD;;uEAEuE;AACvE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,MAAM,EAAE,CAO5F;AAED,MAAM,WAAW,cAAc;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAAE;AAE9E,eAAO,MAAM,sBAAsB,EAAE,SAAS,cAAc,EAK3D,CAAC;AAEF,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC;;;6BAGyB;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;4BACwB;IACxB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAKD;;;oDAGoD;AACpD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,OAAO,CAEzE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,iBAAiB,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,CA6E9G"}
|
package/dist/fonts/usage.js
CHANGED
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
import { DEFAULT_TEXT_ELEMENT, defaultCjkEmphasis, resolveBodyTextConfig, resolveHeaderFooterConfig, resolveHeadingsConfig, resolveOrderedListsConfig, resolveUnorderedListsConfig } from '../defaults';
|
|
6
6
|
import { primaryFontFamily } from '../measure/font';
|
|
7
7
|
import { comicFontFamilies } from '../comics/fonts';
|
|
8
|
+
import { DEFAULT_CODE_STYLE } from '../defaults/codeStyle';
|
|
9
|
+
import { codeFenceOpen } from '../parse/codeFence';
|
|
8
10
|
/** Config keys naming a font family: `fontFamily`, `bodyFontFamily`,
|
|
9
11
|
* `headerFontFamily`, `separatorFontFamily`, `numberFontFamily`… */
|
|
10
12
|
const FONT_FAMILY_KEY = /^(?:f|[a-z]\w*F)ontFamily$/;
|
|
@@ -84,6 +86,9 @@ export function configFontFamilies(config, markdown) {
|
|
|
84
86
|
if (style.fontFamily)
|
|
85
87
|
families.add(style.fontFamily);
|
|
86
88
|
}
|
|
89
|
+
// Line numbers (#621): a face of their own; unset, the body family.
|
|
90
|
+
if (config.lineNumbers?.fontFamily)
|
|
91
|
+
families.add(config.lineNumbers.fontFamily);
|
|
87
92
|
// Paragraph styles (`:::paragraphs`): a face of their own; unset, the
|
|
88
93
|
// body family.
|
|
89
94
|
for (const style of config.paragraphStyles ?? []) {
|
|
@@ -121,10 +126,35 @@ export function configFontFamilies(config, markdown) {
|
|
|
121
126
|
// default those of the document language.
|
|
122
127
|
for (const family of comicFontFamilies(config, markdown))
|
|
123
128
|
families.add(family);
|
|
129
|
+
// Code listings (#624): the code face (by default `Source Code Pro`)
|
|
130
|
+
// when the text holds a fence, and the inline code face when the
|
|
131
|
+
// configuration sets one.
|
|
132
|
+
for (const family of codeFontFamilies(config, markdown))
|
|
133
|
+
families.add(family);
|
|
124
134
|
// A CSS font stack sets its text in the first family (the engine's
|
|
125
135
|
// `primaryFontFamily`): load that one.
|
|
126
136
|
return [...new Set(Array.from(families, primaryFontFamily))];
|
|
127
137
|
}
|
|
138
|
+
/** Whether `text` holds a line that opens a code fence. */
|
|
139
|
+
function hasCodeFence(text) {
|
|
140
|
+
if (text === undefined)
|
|
141
|
+
return false;
|
|
142
|
+
const texts = typeof text === 'string' ? [text] : text;
|
|
143
|
+
return texts.some((t) => (t.includes('```') || t.includes('~~~')) && t.split('\n').some((line) => codeFenceOpen(line) !== undefined));
|
|
144
|
+
}
|
|
145
|
+
/** The faces code is set in (#624): the listings' when the text holds a
|
|
146
|
+
* fence (and the configuration reads fences) or the configuration has a
|
|
147
|
+
* `codeStyle` section, the inline code's when it sets inline code. */
|
|
148
|
+
export function codeFontFamilies(config, markdown) {
|
|
149
|
+
const cs = config.codeStyle;
|
|
150
|
+
const family = cs?.fontFamily?.trim() || DEFAULT_CODE_STYLE.fontFamily;
|
|
151
|
+
const out = [];
|
|
152
|
+
if ((cs !== undefined && cs.blocks !== false) || (cs?.blocks !== false && hasCodeFence(markdown)))
|
|
153
|
+
out.push(family);
|
|
154
|
+
if (cs?.inline)
|
|
155
|
+
out.push(cs.inline.fontFamily?.trim() || family);
|
|
156
|
+
return out;
|
|
157
|
+
}
|
|
128
158
|
export const STANDARD_FONT_VARIANTS = [
|
|
129
159
|
{ weight: 400, style: 'normal' },
|
|
130
160
|
{ weight: 700, style: 'normal' },
|
|
@@ -200,6 +230,47 @@ export function collectFontUsage(config, doc) {
|
|
|
200
230
|
if (italics || v.style !== 'italic')
|
|
201
231
|
add(primaryFontFamily(body), v);
|
|
202
232
|
}
|
|
233
|
+
// Line numbers (#621) with no face of their own: the body family (the
|
|
234
|
+
// engine's default when the config names none), in their weight and
|
|
235
|
+
// slant.
|
|
236
|
+
const ln = config.lineNumbers;
|
|
237
|
+
if (ln?.enabled && !(typeof ln.fontFamily === 'string' && ln.fontFamily.trim())) {
|
|
238
|
+
const bodyText = resolveBodyTextConfig(config.bodyText, config.locale);
|
|
239
|
+
add(primaryFontFamily(bodyText.fontFamily), { weight: typeof ln.fontWeight === 'number' ? ln.fontWeight : bodyText.fontWeight, style: ln.italic === true ? 'italic' : 'normal' });
|
|
240
|
+
}
|
|
241
|
+
// Drop caps (#623) with no face of their own: the paragraph's family (a
|
|
242
|
+
// paragraph style's, else the body's), in the cap's weight and slant.
|
|
243
|
+
const capUse = (cap, family, weight) => {
|
|
244
|
+
if (!cap || typeof cap !== 'object')
|
|
245
|
+
return;
|
|
246
|
+
const c = cap;
|
|
247
|
+
if (typeof c.fontFamily === 'string' && c.fontFamily.trim())
|
|
248
|
+
return;
|
|
249
|
+
const bodyText = resolveBodyTextConfig(config.bodyText, config.locale);
|
|
250
|
+
add(primaryFontFamily(family ?? bodyText.fontFamily), {
|
|
251
|
+
weight: typeof c.fontWeight === 'number' ? c.fontWeight : weight ?? bodyText.fontWeight,
|
|
252
|
+
style: c.italic === true ? 'italic' : 'normal',
|
|
253
|
+
});
|
|
254
|
+
};
|
|
255
|
+
// Code (#624): the regular and bold weights of the code face, upright
|
|
256
|
+
// and slanted (tokens may be bold or italic: a comment, a prompt).
|
|
257
|
+
const codeFamilies = codeFontFamilies(config, doc?.markdown);
|
|
258
|
+
if (codeFamilies.length > 0) {
|
|
259
|
+
const cs = config.codeStyle;
|
|
260
|
+
const regular = typeof cs?.fontWeight === 'number' ? cs.fontWeight : DEFAULT_CODE_STYLE.fontWeight;
|
|
261
|
+
const bold = typeof cs?.boldFontWeight === 'number' ? cs.boldFontWeight : DEFAULT_CODE_STYLE.boldFontWeight;
|
|
262
|
+
for (const family of codeFamilies) {
|
|
263
|
+
for (const weight of [regular, bold])
|
|
264
|
+
for (const style of ['normal', 'italic'])
|
|
265
|
+
add(primaryFontFamily(family), { weight, style });
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
for (const style of config.paragraphStyles ?? [])
|
|
269
|
+
capUse(style.dropCap, style.fontFamily, style.fontWeight);
|
|
270
|
+
for (const level of config.headings?.levels ?? [])
|
|
271
|
+
capUse(level.dropCap, undefined, undefined);
|
|
272
|
+
for (const style of config.headingStyles ?? [])
|
|
273
|
+
capUse(style.dropCap, undefined, undefined);
|
|
203
274
|
return usage;
|
|
204
275
|
}
|
|
205
276
|
//# sourceMappingURL=usage.js.map
|
package/dist/fonts/usage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/fonts/usage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/fonts/usage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-backend.d.ts","sourceRoot":"","sources":["../src/html-backend.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,
|
|
1
|
+
{"version":3,"file":"html-backend.d.ts","sourceRoot":"","sources":["../src/html-backend.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EAqBX,aAAa,EACd,MAAM,OAAO,CAAC;AA+Df,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;kDAI8C;IAC9C,gBAAgB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC,GAAG;QAC5D;;;0BAGkB;QAClB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;IACF;;;;;;;;;;;;iEAY6D;IAC7D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;4DAGwD;IACxD,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC1D;;;;;;;2DAOuD;IACvD,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;QAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;QAAC,GAAG,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;KAAE,CAAC;IACnG;;;wDAGoD;IACpD,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7C;;;;;;;uEAOmE;IACnE,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC/B;AAgKD;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAajE;AAgoED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5C,8EAA8E;IAC9E,cAAc,EAAE,MAAM,CAAC;IACvB;4EACwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzB,KAAK,EAAE,mBAAmB,EAAE,CAAC;CAC9B;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,QAS4B,CAAC;AAEzD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,WAAW,EAChB,OAAO,GAAE,iBAAsB,GAC9B,eAAe,CAiFjB;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,GAAE,iBAAsB,GAAG,MAAM,CAEtF"}
|
package/dist/html-backend.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { footnoteRuleSegments } from './columnRule';
|
|
2
|
-
import { lineTextAlign, tableCellFillRects, tableFrameOutline } from './vdt';
|
|
2
|
+
import { leaderRuleGeometry, lineTextAlign, tableCellFillRects, tableFrameOutline } from './vdt';
|
|
3
3
|
import { dimensionToPx } from './units';
|
|
4
4
|
import { documentInkHex, isSingleInkSvgUrl, singleInkColorMatrix } from './svg/singleInk';
|
|
5
5
|
import { lineInkExtent, lineTrailingTracking } from './lineInk';
|
|
@@ -521,8 +521,10 @@ function lineEndHtml(text, x) {
|
|
|
521
521
|
* What a copy puts between a line and the one after it in the same block
|
|
522
522
|
* (`next`), or after a block's last line (#403): nothing after a line that
|
|
523
523
|
* ends inside a word or on a hyphen or dash (`VDTLine.hyphenated`); a
|
|
524
|
-
*
|
|
525
|
-
*
|
|
524
|
+
* space before the turnover of a line of verse, a blank line after a
|
|
525
|
+
* stanza (#620); a newline after a line of verse, after a line that ends
|
|
526
|
+
* at a forced line break (`VDTLine.hardBreak`, #620) and after the last line
|
|
527
|
+
* of a paragraph (or of a heading, a caption, a cell); between two lines of a block, a space
|
|
526
528
|
* where the break consumed one — the plain text skips a character between
|
|
527
529
|
* them (`plainEnd` / `plainStart`) — and nothing where it did not (between
|
|
528
530
|
* two ideographs). Lines without those offsets, and a block's last line
|
|
@@ -533,7 +535,16 @@ function lineEndHtml(text, x) {
|
|
|
533
535
|
function lineEndText(line, next) {
|
|
534
536
|
if (line.hyphenated)
|
|
535
537
|
return '';
|
|
536
|
-
|
|
538
|
+
// A line of verse in the line layout (#620): a space before its
|
|
539
|
+
// turnover, a newline after it, a blank line after a stanza.
|
|
540
|
+
if (line.verseLine)
|
|
541
|
+
return next?.verseLine?.turnover ? ' ' : line.verseLine.stanzaEnd ? '\n\n' : '\n';
|
|
542
|
+
// A line of a code listing (#624): nothing before its continuation (a
|
|
543
|
+
// wrapped line reads whole), a newline after each source line.
|
|
544
|
+
if (line.codeLine)
|
|
545
|
+
return next?.codeLine?.continued ? '' : '\n';
|
|
546
|
+
// A forced line break the author typed (#620).
|
|
547
|
+
if (line.verse || line.hardBreak || (!next && line.isLastLine !== false))
|
|
537
548
|
return '\n';
|
|
538
549
|
if (next && line.plainEnd !== undefined && next.plainStart !== undefined)
|
|
539
550
|
return next.plainStart > line.plainEnd ? ' ' : '';
|
|
@@ -599,7 +610,7 @@ end = '') {
|
|
|
599
610
|
// assumption that its inter-word glue shrinks (TeX glue-setting semantics),
|
|
600
611
|
// so honor that by compressing the spaces to fit the measure exactly.
|
|
601
612
|
const useJustify = block.textAlign === 'justify' && spaceCount > 0 &&
|
|
602
|
-
((!line.isLastLine && !line.ragged) || contentWidth > effectiveWidth);
|
|
613
|
+
!line.tabbed && ((!line.isLastLine && !line.ragged) || contentWidth > effectiveWidth);
|
|
603
614
|
const justifiedSpaceWidth = useJustify
|
|
604
615
|
? (effectiveWidth - wordWidth) / spaceCount
|
|
605
616
|
: 0;
|
|
@@ -616,7 +627,7 @@ end = '') {
|
|
|
616
627
|
// x are taken in that order; the markup stays in logical order, so the
|
|
617
628
|
// text copies as written.
|
|
618
629
|
const at = line.order ? orderedOffsets(segs, line.order, leadingGap, useJustify ? justifiedSpaceWidth : undefined) : undefined;
|
|
619
|
-
const cjk = block.tocEntry !== undefined || hasCJK(line.text);
|
|
630
|
+
const cjk = block.tocEntry !== undefined || hasCJK(line.text) || (line.tabbed === true && segs.some((sg) => sg.leader === 'text'));
|
|
620
631
|
const paintText = (seg, at, inLink = false) => {
|
|
621
632
|
const font = quoteFontString(pickSegmentFont(seg, block));
|
|
622
633
|
const color = pickSegmentColor(seg, block);
|
|
@@ -636,6 +647,13 @@ end = '') {
|
|
|
636
647
|
x += useJustify ? justifiedSpaceWidth : seg.width;
|
|
637
648
|
continue;
|
|
638
649
|
}
|
|
650
|
+
if (seg.leader) {
|
|
651
|
+
// A leader (#622): painted, hidden from assistive technology and
|
|
652
|
+
// left out of a selection.
|
|
653
|
+
parts.push(leaderHtml(seg, x, line.baseline - line.bbox.y, block));
|
|
654
|
+
x += seg.width;
|
|
655
|
+
continue;
|
|
656
|
+
}
|
|
639
657
|
parts.push(links.at(segmentHref(seg)));
|
|
640
658
|
if (seg.kind === 'math') {
|
|
641
659
|
parts.push(renderMathSegmentSvg(seg, x, line, block));
|
|
@@ -729,7 +747,7 @@ function renderComposedSegments(line, block, targets, rootDir = 'ltr', end = '')
|
|
|
729
747
|
// assumption that its inter-word glue shrinks (TeX glue-setting semantics),
|
|
730
748
|
// so honor that by compressing the spaces to fit the measure exactly.
|
|
731
749
|
const useJustify = block.textAlign === 'justify' && spaceCount > 0 &&
|
|
732
|
-
((!line.isLastLine && !line.ragged) || contentWidth > effectiveWidth);
|
|
750
|
+
!line.tabbed && ((!line.isLastLine && !line.ragged) || contentWidth > effectiveWidth);
|
|
733
751
|
const justifiedSpaceWidth = useJustify
|
|
734
752
|
? (effectiveWidth - wordWidth) / spaceCount
|
|
735
753
|
: 0;
|
|
@@ -767,6 +785,13 @@ function renderComposedSegments(line, block, targets, rootDir = 'ltr', end = '')
|
|
|
767
785
|
x += gap;
|
|
768
786
|
continue;
|
|
769
787
|
}
|
|
788
|
+
if (seg.leader) {
|
|
789
|
+
// A leader (#622): painted, hidden from assistive technology and
|
|
790
|
+
// left out of a selection.
|
|
791
|
+
parts.push(leaderHtml(seg, x, line.baseline - line.bbox.y, block));
|
|
792
|
+
x += seg.width;
|
|
793
|
+
continue;
|
|
794
|
+
}
|
|
770
795
|
parts.push(links.at(segmentHref(seg)));
|
|
771
796
|
if (seg.kind === 'math') {
|
|
772
797
|
parts.push(renderMathSegmentSvg(seg, x, line, block));
|
|
@@ -824,6 +849,28 @@ function renderComposedSegments(line, block, targets, rootDir = 'ltr', end = '')
|
|
|
824
849
|
parts.push(lineMarksHtml(line, block.color));
|
|
825
850
|
return parts.join('');
|
|
826
851
|
}
|
|
852
|
+
/** A leader (#622, `VDTLineSegment.leader`): a contents row's or a tab
|
|
853
|
+
* stop's dots in the segment's font, or a rule under the baseline
|
|
854
|
+
* (`baselineOffset` from the line top), `aria-hidden` and unselectable,
|
|
855
|
+
* so neither a screen reader nor a copy reads it. */
|
|
856
|
+
function leaderHtml(seg, x, baselineOffset, block) {
|
|
857
|
+
const color = pickSegmentColor(seg, block);
|
|
858
|
+
const hidden = 'aria-hidden="true"';
|
|
859
|
+
const noSelect = 'user-select:none;-webkit-user-select:none;pointer-events:none;';
|
|
860
|
+
if (seg.leader === 'rule') {
|
|
861
|
+
const m = /(\d*\.?\d+)px/.exec(block.fontString);
|
|
862
|
+
const { dy, thickness } = leaderRuleGeometry(m ? Number(m[1]) : 16);
|
|
863
|
+
return `<span ${hidden} style="position:absolute;left:${x.toFixed(3)}px;top:${(baselineOffset + dy - thickness / 2).toFixed(3)}px;`
|
|
864
|
+
+ `width:${seg.width.toFixed(3)}px;height:${thickness.toFixed(3)}px;background:${color};${noSelect}"></span>`;
|
|
865
|
+
}
|
|
866
|
+
const font = quoteFontString(pickSegmentFont(seg, block));
|
|
867
|
+
const fontDecl = font !== quoteFontString(block.fontString) ? `font:${font};` : '';
|
|
868
|
+
const colorDecl = color !== block.color ? `color:${color};` : '';
|
|
869
|
+
const pos = `position:absolute;left:${x.toFixed(3)}px;top:0;white-space:pre;${noSelect}`;
|
|
870
|
+
if (fontDecl)
|
|
871
|
+
return `<span ${hidden} style="${pos}"><span style="${fontDecl}line-height:0;${colorDecl}">${esc(seg.text)}</span></span>`;
|
|
872
|
+
return `<span ${hidden} style="${pos}${colorDecl}">${esc(seg.text)}</span>`;
|
|
873
|
+
}
|
|
827
874
|
/** Inline colour swatch (`:swatch{…}`): a square of `side` px on the line's
|
|
828
875
|
* baseline (`baselineOffset` from the line top), filled with `fill` when
|
|
829
876
|
* the colour resolved and outlined in the text colour. */
|
|
@@ -927,7 +974,10 @@ function renderBullet(block, rootDir = 'ltr') {
|
|
|
927
974
|
}
|
|
928
975
|
function renderLine(line, block, targets, rootDir = 'ltr', rootLang,
|
|
929
976
|
/** The block's line after this one (see {@link lineEndText}). */
|
|
930
|
-
next
|
|
977
|
+
next,
|
|
978
|
+
/** Markup set at the start of the line's box, before its text (a drop
|
|
979
|
+
* cap, #623). */
|
|
980
|
+
lead = '') {
|
|
931
981
|
const font = quoteFontString(block.fontString);
|
|
932
982
|
const strikethroughDecl = block.strikethroughText ? 'text-decoration:line-through;' : '';
|
|
933
983
|
// Tracking — the block's (column balancing, a runt set short) and the
|
|
@@ -945,7 +995,24 @@ next) {
|
|
|
945
995
|
strikethroughDecl +
|
|
946
996
|
trackingDecl +
|
|
947
997
|
(lineCjkDecl(line) ? CJK_TEXT_DECL : '') +
|
|
948
|
-
`">${renderSegments(line, block, targets, rootDir, rootLang, lineEndText(line, next))}</div>`);
|
|
998
|
+
`">${lead}${renderSegments(line, block, targets, rootDir, rootLang, lineEndText(line, next))}</div>`);
|
|
999
|
+
}
|
|
1000
|
+
/**
|
|
1001
|
+
* A paragraph's drop cap (#623), as the first runs of its first line's box:
|
|
1002
|
+
* an opening mark hung before it, then the initial, each standing on its
|
|
1003
|
+
* baseline (a box in the line's font shifted down to it, the glyphs in an
|
|
1004
|
+
* inner box of their own face with no line height, as a contents number
|
|
1005
|
+
* sits on its line). In the markup they come right before the line's text,
|
|
1006
|
+
* with nothing between, so a copy and a screen reader read the first word
|
|
1007
|
+
* whole.
|
|
1008
|
+
*/
|
|
1009
|
+
function dropCapHtml(cap, line, lineFont) {
|
|
1010
|
+
const run = (text, font, x, baselineY, width, cls) => `<span class="${cls}" style="position:absolute;left:${(x - line.bbox.x).toFixed(3)}px;top:${(baselineY - line.baseline).toFixed(3)}px;` +
|
|
1011
|
+
`width:${width.toFixed(3)}px;height:${line.bbox.height}px;font:${lineFont};color:${cap.color};white-space:pre;` +
|
|
1012
|
+
(hasCJK(text) ? CJK_TEXT_DECL : '') +
|
|
1013
|
+
`"><span style="font:${quoteFontString(font)};line-height:0;">${esc(text)}</span></span>`;
|
|
1014
|
+
const hang = cap.hang ? run(cap.hang.text, cap.hang.fontString, cap.hang.x, cap.hang.baselineY, cap.hang.width, 'pt-dropcap-hang') : '';
|
|
1015
|
+
return hang + run(cap.text, cap.fontString, cap.x, cap.baselineY, cap.width, 'pt-dropcap');
|
|
949
1016
|
}
|
|
950
1017
|
// ---------------------------------------------------------------------------
|
|
951
1018
|
// Vertical text (`VDTPage.flow`)
|
|
@@ -1094,7 +1161,7 @@ function renderVerticalLine(line, block, v, targets, next) {
|
|
|
1094
1161
|
}
|
|
1095
1162
|
const contentWidth = line.segments && line.segments.length > 0 ? lineInkExtent(line, 0).width : line.bbox.width;
|
|
1096
1163
|
const useJustify = block.textAlign === 'justify' && spaceCount > 0
|
|
1097
|
-
&& ((!line.isLastLine && !line.ragged) || contentWidth > effectiveWidth);
|
|
1164
|
+
&& !line.tabbed && ((!line.isLastLine && !line.ragged) || contentWidth > effectiveWidth);
|
|
1098
1165
|
const justifiedSpaceWidth = useJustify ? (effectiveWidth - wordWidth) / spaceCount : 0;
|
|
1099
1166
|
const slack = Math.max(0, effectiveWidth - (contentWidth - trailing));
|
|
1100
1167
|
let x = block.textAlign === 'center' ? slack / 2 : block.textAlign === 'right' ? slack : 0;
|
|
@@ -1877,7 +1944,8 @@ function renderBlockInner(block, options) {
|
|
|
1877
1944
|
parts.push(v ? renderVerticalBullet(block, v) : renderBullet(block, options.dir));
|
|
1878
1945
|
block.lines.forEach((line, i) => {
|
|
1879
1946
|
const next = block.lines[i + 1];
|
|
1880
|
-
|
|
1947
|
+
const lead = i === 0 && block.dropCap && !v ? dropCapHtml(block.dropCap, line, quoteFontString(block.fontString)) : '';
|
|
1948
|
+
parts.push(v ? renderVerticalLine(line, block, v, options.linkTargets, next) : renderLine(line, block, options.linkTargets, options.dir, options.rootLang, next, lead));
|
|
1881
1949
|
});
|
|
1882
1950
|
return parts.join('');
|
|
1883
1951
|
}
|
|
@@ -1992,6 +2060,12 @@ verticalRegion, verticalDigits) {
|
|
|
1992
2060
|
// Running heads and folios stay on the sheet, horizontal.
|
|
1993
2061
|
const sheetOptions = options.vertical ? { ...options, vertical: undefined } : options;
|
|
1994
2062
|
const slotParts = [];
|
|
2063
|
+
// Line numbers (#621): on the sheet, hidden from assistive technology
|
|
2064
|
+
// (each block is an artifact) and left out of a selection, so copied
|
|
2065
|
+
// text runs from line to line without them.
|
|
2066
|
+
if (page.lineNumbers) {
|
|
2067
|
+
slotParts.push(`<div class="pt-line-numbers" style="user-select:none;-webkit-user-select:none;pointer-events:none;">${renderDesignSlot(page.lineNumbers, sheetOptions)}</div>`);
|
|
2068
|
+
}
|
|
1995
2069
|
if (page.header)
|
|
1996
2070
|
slotParts.push(renderDesignSlot(page.header, sheetOptions));
|
|
1997
2071
|
if (page.footer)
|