postext 1.19.2 → 1.20.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__/comics/art.test.d.ts +2 -0
- package/dist/__tests__/comics/art.test.d.ts.map +1 -0
- package/dist/__tests__/comics/art.test.js +96 -0
- package/dist/__tests__/comics/art.test.js.map +1 -0
- package/dist/__tests__/comics/build.test.d.ts +2 -0
- package/dist/__tests__/comics/build.test.d.ts.map +1 -0
- package/dist/__tests__/comics/build.test.js +215 -0
- package/dist/__tests__/comics/build.test.js.map +1 -0
- package/dist/__tests__/comics/canvas.test.d.ts +2 -0
- package/dist/__tests__/comics/canvas.test.d.ts.map +1 -0
- package/dist/__tests__/comics/canvas.test.js +161 -0
- package/dist/__tests__/comics/canvas.test.js.map +1 -0
- package/dist/__tests__/comics/config.test.d.ts +2 -0
- package/dist/__tests__/comics/config.test.d.ts.map +1 -0
- package/dist/__tests__/comics/config.test.js +97 -0
- package/dist/__tests__/comics/config.test.js.map +1 -0
- package/dist/__tests__/comics/geometry.test.d.ts +2 -0
- package/dist/__tests__/comics/geometry.test.d.ts.map +1 -0
- package/dist/__tests__/comics/geometry.test.js +118 -0
- package/dist/__tests__/comics/geometry.test.js.map +1 -0
- package/dist/__tests__/comics/html.test.d.ts +2 -0
- package/dist/__tests__/comics/html.test.d.ts.map +1 -0
- package/dist/__tests__/comics/html.test.js +253 -0
- package/dist/__tests__/comics/html.test.js.map +1 -0
- package/dist/__tests__/comics/lettering.test.d.ts +2 -0
- package/dist/__tests__/comics/lettering.test.d.ts.map +1 -0
- package/dist/__tests__/comics/lettering.test.js +241 -0
- package/dist/__tests__/comics/lettering.test.js.map +1 -0
- package/dist/__tests__/comics/script.test.d.ts +2 -0
- package/dist/__tests__/comics/script.test.d.ts.map +1 -0
- package/dist/__tests__/comics/script.test.js +147 -0
- package/dist/__tests__/comics/script.test.js.map +1 -0
- package/dist/__tests__/comics/split.test.d.ts +2 -0
- package/dist/__tests__/comics/split.test.d.ts.map +1 -0
- package/dist/__tests__/comics/split.test.js +120 -0
- package/dist/__tests__/comics/split.test.js.map +1 -0
- package/dist/__tests__/comics/spread.test.d.ts +2 -0
- package/dist/__tests__/comics/spread.test.d.ts.map +1 -0
- package/dist/__tests__/comics/spread.test.js +161 -0
- package/dist/__tests__/comics/spread.test.js.map +1 -0
- package/dist/__tests__/comics/strip.test.d.ts +2 -0
- package/dist/__tests__/comics/strip.test.d.ts.map +1 -0
- package/dist/__tests__/comics/strip.test.js +231 -0
- package/dist/__tests__/comics/strip.test.js.map +1 -0
- package/dist/__tests__/exports.test.js +89 -0
- package/dist/__tests__/exports.test.js.map +1 -1
- package/dist/__tests__/parse/containers.test.js +1 -1
- package/dist/__tests__/parse/containers.test.js.map +1 -1
- package/dist/canvas-backend/comic.d.ts +32 -0
- package/dist/canvas-backend/comic.d.ts.map +1 -0
- package/dist/canvas-backend/comic.js +216 -0
- package/dist/canvas-backend/comic.js.map +1 -0
- package/dist/canvas-backend/headerFooter.d.ts +4 -1
- package/dist/canvas-backend/headerFooter.d.ts.map +1 -1
- package/dist/canvas-backend/headerFooter.js +3 -1
- package/dist/canvas-backend/headerFooter.js.map +1 -1
- package/dist/canvas-backend/index.d.ts.map +1 -1
- package/dist/canvas-backend/index.js +7 -1
- package/dist/canvas-backend/index.js.map +1 -1
- package/dist/comics/art.d.ts +72 -0
- package/dist/comics/art.d.ts.map +1 -0
- package/dist/comics/art.js +154 -0
- package/dist/comics/art.js.map +1 -0
- package/dist/comics/fonts.d.ts +20 -0
- package/dist/comics/fonts.d.ts.map +1 -0
- package/dist/comics/fonts.js +42 -0
- package/dist/comics/fonts.js.map +1 -0
- package/dist/comics/geometry.d.ts +87 -0
- package/dist/comics/geometry.d.ts.map +1 -0
- package/dist/comics/geometry.js +272 -0
- package/dist/comics/geometry.js.map +1 -0
- package/dist/comics/index.d.ts +29 -0
- package/dist/comics/index.d.ts.map +1 -0
- package/dist/comics/index.js +18 -0
- package/dist/comics/index.js.map +1 -0
- package/dist/comics/layoutPage.d.ts +156 -0
- package/dist/comics/layoutPage.d.ts.map +1 -0
- package/dist/comics/layoutPage.js +697 -0
- package/dist/comics/layoutPage.js.map +1 -0
- package/dist/comics/lettering/__tests__/harness.test.d.ts +2 -0
- package/dist/comics/lettering/__tests__/harness.test.d.ts.map +1 -0
- package/dist/comics/lettering/__tests__/harness.test.js +273 -0
- package/dist/comics/lettering/__tests__/harness.test.js.map +1 -0
- package/dist/comics/lettering/__tests__/letterPanel.test.d.ts +2 -0
- package/dist/comics/lettering/__tests__/letterPanel.test.d.ts.map +1 -0
- package/dist/comics/lettering/__tests__/letterPanel.test.js +224 -0
- package/dist/comics/lettering/__tests__/letterPanel.test.js.map +1 -0
- package/dist/comics/lettering/__tests__/polish.test.d.ts +2 -0
- package/dist/comics/lettering/__tests__/polish.test.d.ts.map +1 -0
- package/dist/comics/lettering/__tests__/polish.test.js +357 -0
- package/dist/comics/lettering/__tests__/polish.test.js.map +1 -0
- package/dist/comics/lettering/__tests__/round2.test.d.ts +2 -0
- package/dist/comics/lettering/__tests__/round2.test.d.ts.map +1 -0
- package/dist/comics/lettering/__tests__/round2.test.js +289 -0
- package/dist/comics/lettering/__tests__/round2.test.js.map +1 -0
- package/dist/comics/lettering/__tests__/shapeText.test.d.ts +2 -0
- package/dist/comics/lettering/__tests__/shapeText.test.d.ts.map +1 -0
- package/dist/comics/lettering/__tests__/shapeText.test.js +98 -0
- package/dist/comics/lettering/__tests__/shapeText.test.js.map +1 -0
- package/dist/comics/lettering/__tests__/shapes.test.d.ts +2 -0
- package/dist/comics/lettering/__tests__/shapes.test.d.ts.map +1 -0
- package/dist/comics/lettering/__tests__/shapes.test.js +137 -0
- package/dist/comics/lettering/__tests__/shapes.test.js.map +1 -0
- package/dist/comics/lettering/__tests__/stubMeasure.d.ts +5 -0
- package/dist/comics/lettering/__tests__/stubMeasure.d.ts.map +1 -0
- package/dist/comics/lettering/__tests__/stubMeasure.js +47 -0
- package/dist/comics/lettering/__tests__/stubMeasure.js.map +1 -0
- package/dist/comics/lettering/__tests__/text.test.d.ts +2 -0
- package/dist/comics/lettering/__tests__/text.test.d.ts.map +1 -0
- package/dist/comics/lettering/__tests__/text.test.js +86 -0
- package/dist/comics/lettering/__tests__/text.test.js.map +1 -0
- package/dist/comics/lettering/geom.d.ts +78 -0
- package/dist/comics/lettering/geom.d.ts.map +1 -0
- package/dist/comics/lettering/geom.js +376 -0
- package/dist/comics/lettering/geom.js.map +1 -0
- package/dist/comics/lettering/index.d.ts +7 -0
- package/dist/comics/lettering/index.d.ts.map +1 -0
- package/dist/comics/lettering/index.js +8 -0
- package/dist/comics/lettering/index.js.map +1 -0
- package/dist/comics/lettering/letter.d.ts +7 -0
- package/dist/comics/lettering/letter.d.ts.map +1 -0
- package/dist/comics/lettering/letter.js +397 -0
- package/dist/comics/lettering/letter.js.map +1 -0
- package/dist/comics/lettering/placement.d.ts +117 -0
- package/dist/comics/lettering/placement.d.ts.map +1 -0
- package/dist/comics/lettering/placement.js +889 -0
- package/dist/comics/lettering/placement.js.map +1 -0
- package/dist/comics/lettering/presets.d.ts +15 -0
- package/dist/comics/lettering/presets.d.ts.map +1 -0
- package/dist/comics/lettering/presets.js +61 -0
- package/dist/comics/lettering/presets.js.map +1 -0
- package/dist/comics/lettering/shape-text.d.ts +72 -0
- package/dist/comics/lettering/shape-text.d.ts.map +1 -0
- package/dist/comics/lettering/shape-text.js +550 -0
- package/dist/comics/lettering/shape-text.js.map +1 -0
- package/dist/comics/lettering/shapes.d.ts +83 -0
- package/dist/comics/lettering/shapes.d.ts.map +1 -0
- package/dist/comics/lettering/shapes.js +512 -0
- package/dist/comics/lettering/shapes.js.map +1 -0
- package/dist/comics/lettering/text.d.ts +79 -0
- package/dist/comics/lettering/text.d.ts.map +1 -0
- package/dist/comics/lettering/text.js +488 -0
- package/dist/comics/lettering/text.js.map +1 -0
- package/dist/comics/lettering/types.d.ts +270 -0
- package/dist/comics/lettering/types.d.ts.map +1 -0
- package/dist/comics/lettering/types.js +9 -0
- package/dist/comics/lettering/types.js.map +1 -0
- package/dist/comics/page.d.ts +37 -0
- package/dist/comics/page.d.ts.map +1 -0
- package/dist/comics/page.js +285 -0
- package/dist/comics/page.js.map +1 -0
- package/dist/comics/paint.d.ts +65 -0
- package/dist/comics/paint.d.ts.map +1 -0
- package/dist/comics/paint.js +219 -0
- package/dist/comics/paint.js.map +1 -0
- package/dist/comics/script.d.ts +42 -0
- package/dist/comics/script.d.ts.map +1 -0
- package/dist/comics/script.js +302 -0
- package/dist/comics/script.js.map +1 -0
- package/dist/comics/split.d.ts +135 -0
- package/dist/comics/split.d.ts.map +1 -0
- package/dist/comics/split.js +514 -0
- package/dist/comics/split.js.map +1 -0
- package/dist/comics/spread.d.ts +36 -0
- package/dist/comics/spread.d.ts.map +1 -0
- package/dist/comics/spread.js +172 -0
- package/dist/comics/spread.js.map +1 -0
- package/dist/comics/strip.d.ts +77 -0
- package/dist/comics/strip.d.ts.map +1 -0
- package/dist/comics/strip.js +89 -0
- package/dist/comics/strip.js.map +1 -0
- package/dist/comics/transform.d.ts +37 -0
- package/dist/comics/transform.d.ts.map +1 -0
- package/dist/comics/transform.js +161 -0
- package/dist/comics/transform.js.map +1 -0
- package/dist/comics/types.d.ts +143 -0
- package/dist/comics/types.d.ts.map +1 -0
- package/dist/comics/types.js +13 -0
- package/dist/comics/types.js.map +1 -0
- package/dist/comics/warnings.d.ts +14 -0
- package/dist/comics/warnings.d.ts.map +1 -0
- package/dist/comics/warnings.js +94 -0
- package/dist/comics/warnings.js.map +1 -0
- package/dist/configWarnings.d.ts.map +1 -1
- package/dist/configWarnings.js +42 -0
- package/dist/configWarnings.js.map +1 -1
- package/dist/defaults/comics.d.ts +51 -0
- package/dist/defaults/comics.d.ts.map +1 -0
- package/dist/defaults/comics.js +385 -0
- package/dist/defaults/comics.js.map +1 -0
- package/dist/defaults/index.d.ts +1 -0
- package/dist/defaults/index.d.ts.map +1 -1
- package/dist/defaults/index.js +9 -0
- package/dist/defaults/index.js.map +1 -1
- package/dist/design/layout.d.ts +13 -1
- package/dist/design/layout.d.ts.map +1 -1
- package/dist/design/layout.js +17 -0
- package/dist/design/layout.js.map +1 -1
- package/dist/html-backend.d.ts +3 -0
- package/dist/html-backend.d.ts.map +1 -1
- package/dist/html-backend.js +44 -8
- package/dist/html-backend.js.map +1 -1
- package/dist/htmlComic.d.ts +69 -0
- package/dist/htmlComic.d.ts.map +1 -0
- package/dist/htmlComic.js +179 -0
- package/dist/htmlComic.js.map +1 -0
- package/dist/index.d.ts +8 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/parse/blockParser.d.ts.map +1 -1
- package/dist/parse/blockParser.js +25 -1
- package/dist/parse/blockParser.js.map +1 -1
- package/dist/parse/indexMarks.d.ts.map +1 -1
- package/dist/parse/indexMarks.js +3 -0
- package/dist/parse/indexMarks.js.map +1 -1
- package/dist/parse/types.d.ts +7 -1
- package/dist/parse/types.d.ts.map +1 -1
- package/dist/pipeline/build.d.ts.map +1 -1
- package/dist/pipeline/build.js +251 -9
- package/dist/pipeline/build.js.map +1 -1
- package/dist/pipeline/config.d.ts.map +1 -1
- package/dist/pipeline/config.js +4 -1
- package/dist/pipeline/config.js.map +1 -1
- package/dist/pipeline/contentWarnings.d.ts.map +1 -1
- package/dist/pipeline/contentWarnings.js +58 -0
- package/dist/pipeline/contentWarnings.js.map +1 -1
- package/dist/pipeline/floatSlots.js +1 -1
- package/dist/pipeline/floatSlots.js.map +1 -1
- package/dist/pipeline/headerFooter.d.ts +6 -2
- package/dist/pipeline/headerFooter.d.ts.map +1 -1
- package/dist/pipeline/headerFooter.js +11 -3
- package/dist/pipeline/headerFooter.js.map +1 -1
- package/dist/pipeline/pageRoles.d.ts +1 -0
- package/dist/pipeline/pageRoles.d.ts.map +1 -1
- package/dist/pipeline/pageRoles.js +3 -0
- package/dist/pipeline/pageRoles.js.map +1 -1
- package/dist/pipeline/placement.d.ts +3 -3
- package/dist/pipeline/placement.d.ts.map +1 -1
- package/dist/pipeline/placement.js +4 -4
- package/dist/pipeline/placement.js.map +1 -1
- package/dist/types.d.ts +338 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/vdt.d.ts +271 -2
- package/dist/vdt.d.ts.map +1 -1
- package/dist/vdt.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 +11 -1
- package/dist/worker/fonts.js.map +1 -1
- package/package.json +1 -1
package/dist/types.d.ts
CHANGED
|
@@ -300,6 +300,26 @@ export interface ResourceSafeArea {
|
|
|
300
300
|
width: number;
|
|
301
301
|
height: number;
|
|
302
302
|
}
|
|
303
|
+
/** A point of a picture that the lettering of a comic refers to (#557):
|
|
304
|
+
* where a speaker's mouth is, so a balloon's tail points at it. Written
|
|
305
|
+
* once per picture, in fractions of the picture (0–1, top-left origin), so
|
|
306
|
+
* every translation of a comic reuses it and a crop or a splitter drag
|
|
307
|
+
* never moves it off the speaker. */
|
|
308
|
+
export interface ResourceAnchor {
|
|
309
|
+
/** The speaker id the script names (`ana: Hello`), or any point id. */
|
|
310
|
+
id: string;
|
|
311
|
+
/** The mouth: where a speech balloon's tail points. */
|
|
312
|
+
x: number;
|
|
313
|
+
y: number;
|
|
314
|
+
/** The head: where a thought balloon's bubbles point (style `target:
|
|
315
|
+
* 'head'`). Unset: the mouth. */
|
|
316
|
+
head?: {
|
|
317
|
+
x: number;
|
|
318
|
+
y: number;
|
|
319
|
+
};
|
|
320
|
+
/** The face: a region no balloon covers. */
|
|
321
|
+
face?: ResourceSafeArea;
|
|
322
|
+
}
|
|
303
323
|
/** A user-managed resource instance. Binary payloads (bitmaps, SVGs) are
|
|
304
324
|
* stored out-of-band (IndexedDB in the sandbox) and referenced by
|
|
305
325
|
* `fileId`; table resources carry their model inline. */
|
|
@@ -384,6 +404,14 @@ export interface Resource {
|
|
|
384
404
|
* to their sizes and the safe area always stays in view. Without one the
|
|
385
405
|
* picture is always shown whole. Ignored for tables. */
|
|
386
406
|
safeArea?: ResourceSafeArea;
|
|
407
|
+
/** The speakers and named points of a comic panel's picture (#557):
|
|
408
|
+
* balloon tails point at them, thought balloons at their `head`, and no
|
|
409
|
+
* balloon covers their `face`. Language-independent: every edition of
|
|
410
|
+
* the comic shares them. Only comic panels (`:::page`) read them. */
|
|
411
|
+
anchors?: ResourceAnchor[];
|
|
412
|
+
/** Regions of a comic panel's picture no balloon covers (a hand, a key
|
|
413
|
+
* object), in fractions of the picture. Only comic panels read them. */
|
|
414
|
+
avoid?: ResourceSafeArea[];
|
|
387
415
|
/** Optional per-resource placement override. When unset, the resource's
|
|
388
416
|
* type default (then `top` / `column`) applies. A `position` of `'top'` or
|
|
389
417
|
* `'bottom'` floats the resource to a band on the page near its first
|
|
@@ -4212,8 +4240,9 @@ export type HeaderFooterHAlign = 'left' | 'center' | 'right';
|
|
|
4212
4240
|
* - `'part'` — a part-divider page (`partInfo` set);
|
|
4213
4241
|
* - `'opener'` — the first block in reading order is a heading whose level
|
|
4214
4242
|
* spans the page or forces a page break before it (a chapter opener);
|
|
4243
|
+
* - `'comic'` — a comic page (`:::page`, `VDTPage.comic` set);
|
|
4215
4244
|
* - `'body'` — everything else. */
|
|
4216
|
-
export type PageRole = 'body' | 'opener' | 'part' | 'blank';
|
|
4245
|
+
export type PageRole = 'body' | 'opener' | 'part' | 'blank' | 'comic';
|
|
4217
4246
|
/** Which page roles a design element renders on. `'all'` (default) renders
|
|
4218
4247
|
* on every page the parity filter admits. */
|
|
4219
4248
|
export type PageRoleFilter = 'all' | PageRole;
|
|
@@ -5057,6 +5086,311 @@ export interface ResolvedIndexConfig {
|
|
|
5057
5086
|
numbersLabel?: string;
|
|
5058
5087
|
};
|
|
5059
5088
|
}
|
|
5089
|
+
/** The direction the panels of a comic page are read in: `'ltr'` (Western
|
|
5090
|
+
* comics: the first panel of a tier at the left), `'rtl'` (manga and
|
|
5091
|
+
* Arabic comics: at the right), `'auto'`: `'rtl'` in a right-to-left
|
|
5092
|
+
* document (an Arabic edition mirrors its pages), else the direction the
|
|
5093
|
+
* art was drawn for (`artDirection`): a Japanese edition of a Western
|
|
5094
|
+
* comic reads left to right, a manga right to left in any language. */
|
|
5095
|
+
export type ComicReadingDirection = 'auto' | 'ltr' | 'rtl';
|
|
5096
|
+
/** How a panel's border is drawn: a clean stroke, none, or a hand-drawn
|
|
5097
|
+
* line (a stroke that wobbles, seeded from the panel, so the same page
|
|
5098
|
+
* always draws the same line). */
|
|
5099
|
+
export type ComicPanelBorderStyle = 'solid' | 'none' | 'rough';
|
|
5100
|
+
/** How a panel's picture fills its cell: `'cover'` crops it (never into its
|
|
5101
|
+
* safe area) to fill the cell, `'contain'` shows it whole, the rest of the
|
|
5102
|
+
* cell in the panel background. */
|
|
5103
|
+
export type ComicPanelFit = 'cover' | 'contain';
|
|
5104
|
+
/** The look of a comic panel: its border, its background (the colour of an
|
|
5105
|
+
* empty panel and of the bands a letterboxed picture leaves) and how its
|
|
5106
|
+
* picture fills it. */
|
|
5107
|
+
export interface PanelStyleConfig {
|
|
5108
|
+
/** Border width; `0` draws none. Default `1pt`. */
|
|
5109
|
+
borderWidth?: Dimension;
|
|
5110
|
+
/** Border colour. Default black. */
|
|
5111
|
+
borderColor?: ColorValue;
|
|
5112
|
+
/** Corner radius of a rectangular panel (a panel cut by a slanted line
|
|
5113
|
+
* keeps straight corners). Default `0`. */
|
|
5114
|
+
borderRadius?: Dimension;
|
|
5115
|
+
/** Default `'solid'`. */
|
|
5116
|
+
borderStyle?: ComicPanelBorderStyle;
|
|
5117
|
+
/** Panel fill under the picture. Default white. */
|
|
5118
|
+
background?: ColorValue;
|
|
5119
|
+
/** Default `'cover'`. */
|
|
5120
|
+
fit?: ComicPanelFit;
|
|
5121
|
+
/** The panel's outer sides that touch the frame run to the trim (and the
|
|
5122
|
+
* bleed past it, `page.cutLines.bleed`). Default `false`. */
|
|
5123
|
+
bleed?: boolean;
|
|
5124
|
+
}
|
|
5125
|
+
/** A named panel style (`:::page{style=…}`, `::panel{style=…}`): its unset
|
|
5126
|
+
* fields follow `comics.panel`. */
|
|
5127
|
+
export interface NamedPanelStyleConfig extends PanelStyleConfig {
|
|
5128
|
+
id: string;
|
|
5129
|
+
/** Human-readable name (editor UI only). Defaults to {@link id}. */
|
|
5130
|
+
name?: string;
|
|
5131
|
+
}
|
|
5132
|
+
export interface ResolvedPanelStyleConfig {
|
|
5133
|
+
borderWidth: Dimension;
|
|
5134
|
+
borderColor: ColorValue;
|
|
5135
|
+
borderRadius: Dimension;
|
|
5136
|
+
borderStyle: ComicPanelBorderStyle;
|
|
5137
|
+
background: ColorValue;
|
|
5138
|
+
fit: ComicPanelFit;
|
|
5139
|
+
bleed: boolean;
|
|
5140
|
+
}
|
|
5141
|
+
export interface ResolvedNamedPanelStyleConfig extends ResolvedPanelStyleConfig {
|
|
5142
|
+
id: string;
|
|
5143
|
+
name: string;
|
|
5144
|
+
}
|
|
5145
|
+
/** The lettering of a comic: one face and one size for the whole book
|
|
5146
|
+
* (text is never shrunk to fit a balloon; the balloon changes shape
|
|
5147
|
+
* instead). A balloon style may scale the size (`fontScale`). */
|
|
5148
|
+
export interface LetteringConfig {
|
|
5149
|
+
/** Default: the lettering face of the document language
|
|
5150
|
+
* (`defaultComicFont`): `Comic Neue`, `Zen Antique` for Japanese, `Noto
|
|
5151
|
+
* Sans SC` for Simplified Chinese, `LXGW WenKai TC` for Traditional
|
|
5152
|
+
* Chinese, `Playpen Sans Arabic` for Arabic. */
|
|
5153
|
+
fontFamily?: string;
|
|
5154
|
+
/** Default `7.5pt`. */
|
|
5155
|
+
fontSize?: Dimension;
|
|
5156
|
+
/** Line height, a multiple of the size. Default `1.15`. */
|
|
5157
|
+
lineHeight?: number;
|
|
5158
|
+
/** Default black. */
|
|
5159
|
+
color?: ColorValue;
|
|
5160
|
+
/** Default `false`. */
|
|
5161
|
+
bold?: boolean;
|
|
5162
|
+
/** Default `false`. */
|
|
5163
|
+
italic?: boolean;
|
|
5164
|
+
/** Default `0`. */
|
|
5165
|
+
letterSpacing?: Dimension;
|
|
5166
|
+
/** `'auto'` (default): vertical for Japanese and Traditional Chinese,
|
|
5167
|
+
* horizontal otherwise. */
|
|
5168
|
+
writingMode?: 'auto' | 'horizontal' | 'vertical';
|
|
5169
|
+
/** `'uppercase'` sets the lettering in capitals (scripts without case
|
|
5170
|
+
* keep theirs). Default `'none'`. */
|
|
5171
|
+
textTransform?: 'none' | 'uppercase';
|
|
5172
|
+
/** Drop the full stop that ends a balloon (`。` in Japanese and Chinese
|
|
5173
|
+
* manga). `'auto'` (default): for Japanese and Chinese. */
|
|
5174
|
+
dropFinalStop?: 'auto' | boolean;
|
|
5175
|
+
/** Write an em dash as `--` (US lettering). Default `false`. */
|
|
5176
|
+
doubleDash?: boolean;
|
|
5177
|
+
/** Room kept between a balloon and its panel's border. Default `1.5mm`. */
|
|
5178
|
+
inset?: Dimension;
|
|
5179
|
+
/** How two balloons of the same speaker in a row join: their bodies
|
|
5180
|
+
* merged (`'butt'`, default), a narrow neck between them
|
|
5181
|
+
* (`'connector'`), or kept apart (`'none'`). */
|
|
5182
|
+
joinSameSpeaker?: 'butt' | 'connector' | 'none';
|
|
5183
|
+
/** Vertical lettering: the most characters in a column. Default `8`. */
|
|
5184
|
+
maxColumnChars?: number;
|
|
5185
|
+
}
|
|
5186
|
+
export interface ResolvedLetteringConfig {
|
|
5187
|
+
fontFamily: string;
|
|
5188
|
+
fontSize: Dimension;
|
|
5189
|
+
lineHeight: number;
|
|
5190
|
+
color: ColorValue;
|
|
5191
|
+
bold: boolean;
|
|
5192
|
+
italic: boolean;
|
|
5193
|
+
letterSpacing: Dimension;
|
|
5194
|
+
writingMode: 'auto' | 'horizontal' | 'vertical';
|
|
5195
|
+
textTransform: 'none' | 'uppercase';
|
|
5196
|
+
dropFinalStop: 'auto' | boolean;
|
|
5197
|
+
doubleDash: boolean;
|
|
5198
|
+
inset: Dimension;
|
|
5199
|
+
joinSameSpeaker: 'butt' | 'connector' | 'none';
|
|
5200
|
+
maxColumnChars: number;
|
|
5201
|
+
}
|
|
5202
|
+
/** The outline of a balloon body. */
|
|
5203
|
+
export type ComicBalloonShape = 'oval' | 'rounded' | 'rectangle' | 'cloud' | 'burst' | 'wavy' | 'electric' | 'none';
|
|
5204
|
+
/** The tail of a balloon. */
|
|
5205
|
+
export type ComicBalloonTail = 'curved' | 'wedge' | 'bubbles' | 'zigzag' | 'none';
|
|
5206
|
+
/** Where a balloon or caption sits when the script pins none: placed by
|
|
5207
|
+
* the lettering (`'auto'`) or at a corner or edge of the panel. */
|
|
5208
|
+
export type ComicBalloonPosition = 'auto' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | 'top' | 'bottom';
|
|
5209
|
+
/** A kind of balloon (`speech`, `thought`, `whisper`…): its shape, tail and
|
|
5210
|
+
* lettering. A script line names one with a bare flag (`ben{whisper}:
|
|
5211
|
+
* …`); its unset fields follow the built-in style of the same id, then
|
|
5212
|
+
* the lettering. */
|
|
5213
|
+
export interface BalloonStyleConfig {
|
|
5214
|
+
/** The kind a script line names (`{thought}`, `style=thought`). */
|
|
5215
|
+
id: string;
|
|
5216
|
+
/** Human-readable name (editor UI only). Defaults to {@link id}. */
|
|
5217
|
+
name?: string;
|
|
5218
|
+
shape?: ComicBalloonShape;
|
|
5219
|
+
fill?: ColorValue;
|
|
5220
|
+
stroke?: ColorValue;
|
|
5221
|
+
strokeWidth?: Dimension;
|
|
5222
|
+
/** A dashed outline (whisper). */
|
|
5223
|
+
dash?: boolean;
|
|
5224
|
+
/** A double outline. */
|
|
5225
|
+
double?: boolean;
|
|
5226
|
+
/** Hand-drawn wobble of the outline, 0–1 (seeded from the balloon). */
|
|
5227
|
+
wobble?: number;
|
|
5228
|
+
/** Superellipse exponent of an oval (2 = ellipse). */
|
|
5229
|
+
roundness?: number;
|
|
5230
|
+
/** Spikes of a burst. */
|
|
5231
|
+
burstPoints?: number;
|
|
5232
|
+
/** Depth of a burst's spikes, a fraction of the body. */
|
|
5233
|
+
burstDepth?: number;
|
|
5234
|
+
/** Air between the text and the outline, in em of the balloon text. */
|
|
5235
|
+
padding?: Dimension;
|
|
5236
|
+
/** Target width / height of a horizontal text block. */
|
|
5237
|
+
aspect?: number;
|
|
5238
|
+
tail?: ComicBalloonTail;
|
|
5239
|
+
/** Width of the tail at the body. */
|
|
5240
|
+
tailWidth?: Dimension;
|
|
5241
|
+
/** How far the tail reaches toward its target: a fraction of the gap
|
|
5242
|
+
* from the outline to the target. */
|
|
5243
|
+
tailReach?: number;
|
|
5244
|
+
/** What the tail points at: the anchor's mouth or its head. */
|
|
5245
|
+
target?: 'mouth' | 'head';
|
|
5246
|
+
position?: ComicBalloonPosition;
|
|
5247
|
+
/** Set flush against the panel border (captions). */
|
|
5248
|
+
butt?: boolean;
|
|
5249
|
+
/** Unset: the lettering face. */
|
|
5250
|
+
fontFamily?: string;
|
|
5251
|
+
/** Size, a multiple of the lettering size. */
|
|
5252
|
+
fontScale?: number;
|
|
5253
|
+
bold?: boolean;
|
|
5254
|
+
italic?: boolean;
|
|
5255
|
+
/** Text colour. Unset: the lettering colour. */
|
|
5256
|
+
color?: ColorValue;
|
|
5257
|
+
textTransform?: 'none' | 'uppercase';
|
|
5258
|
+
letterSpacing?: Dimension;
|
|
5259
|
+
align?: 'center' | 'start';
|
|
5260
|
+
/** An outline drawn around the letters (a sound effect, text set on the
|
|
5261
|
+
* picture), its width. */
|
|
5262
|
+
halo?: Dimension;
|
|
5263
|
+
haloColor?: ColorValue;
|
|
5264
|
+
/** Rotation in degrees (sound effects). */
|
|
5265
|
+
rotate?: number;
|
|
5266
|
+
}
|
|
5267
|
+
export interface ResolvedBalloonStyleConfig {
|
|
5268
|
+
id: string;
|
|
5269
|
+
name: string;
|
|
5270
|
+
shape: ComicBalloonShape;
|
|
5271
|
+
fill: ColorValue;
|
|
5272
|
+
stroke: ColorValue;
|
|
5273
|
+
strokeWidth: Dimension;
|
|
5274
|
+
dash: boolean;
|
|
5275
|
+
double: boolean;
|
|
5276
|
+
wobble: number;
|
|
5277
|
+
roundness: number;
|
|
5278
|
+
burstPoints: number;
|
|
5279
|
+
burstDepth: number;
|
|
5280
|
+
padding: Dimension;
|
|
5281
|
+
aspect: number;
|
|
5282
|
+
tail: ComicBalloonTail;
|
|
5283
|
+
tailWidth: Dimension;
|
|
5284
|
+
tailReach: number;
|
|
5285
|
+
target: 'mouth' | 'head';
|
|
5286
|
+
position: ComicBalloonPosition;
|
|
5287
|
+
butt: boolean;
|
|
5288
|
+
fontScale: number;
|
|
5289
|
+
align: 'center' | 'start';
|
|
5290
|
+
rotate: number;
|
|
5291
|
+
/** Unset: the lettering's. */
|
|
5292
|
+
fontFamily?: string;
|
|
5293
|
+
bold?: boolean;
|
|
5294
|
+
italic?: boolean;
|
|
5295
|
+
color?: ColorValue;
|
|
5296
|
+
textTransform?: 'none' | 'uppercase';
|
|
5297
|
+
letterSpacing?: Dimension;
|
|
5298
|
+
halo?: Dimension;
|
|
5299
|
+
haloColor?: ColorValue;
|
|
5300
|
+
}
|
|
5301
|
+
/** A character of a comic: the speaker id its script lines and the
|
|
5302
|
+
* pictures' anchors use, with the lettering that sets them apart. */
|
|
5303
|
+
export interface ComicCastMember {
|
|
5304
|
+
id: string;
|
|
5305
|
+
/** The character's name (editor UI, the reflowable EPUB's dialogue). */
|
|
5306
|
+
name?: string;
|
|
5307
|
+
/** The balloon style the character speaks in by default. */
|
|
5308
|
+
balloonStyle?: string;
|
|
5309
|
+
/** Text colour of the character's balloons. */
|
|
5310
|
+
color?: ColorValue;
|
|
5311
|
+
/** Fill of the character's balloons. */
|
|
5312
|
+
fill?: ColorValue;
|
|
5313
|
+
fontFamily?: string;
|
|
5314
|
+
}
|
|
5315
|
+
/** Comic pages (`:::page`): the frame and gutters of the panel grid, the
|
|
5316
|
+
* panel styles, the lettering, the balloon styles and the cast. Only
|
|
5317
|
+
* documents with comic pages read it. */
|
|
5318
|
+
export interface ComicsConfig {
|
|
5319
|
+
/** Default `'auto'`. */
|
|
5320
|
+
readingDirection?: ComicReadingDirection;
|
|
5321
|
+
/** The direction the art was drawn for. Default `'ltr'`. */
|
|
5322
|
+
artDirection?: 'ltr' | 'rtl';
|
|
5323
|
+
/** Mirror the pictures of a page read in the other direction than
|
|
5324
|
+
* {@link artDirection} (a panel opts out with `mirror=false`). Default
|
|
5325
|
+
* `false`. */
|
|
5326
|
+
mirrorArt?: boolean;
|
|
5327
|
+
/** The box the panels are cut from. Default: the page's content area
|
|
5328
|
+
* (its margins). */
|
|
5329
|
+
frame?: {
|
|
5330
|
+
margins?: PageMargins;
|
|
5331
|
+
};
|
|
5332
|
+
/** Room between tiers (`horizontal`, default `4mm`) and between panels
|
|
5333
|
+
* side by side (`vertical`, default `2mm`). */
|
|
5334
|
+
gutter?: {
|
|
5335
|
+
horizontal?: Dimension;
|
|
5336
|
+
vertical?: Dimension;
|
|
5337
|
+
};
|
|
5338
|
+
/** The default panel style. */
|
|
5339
|
+
panel?: PanelStyleConfig;
|
|
5340
|
+
/** Named panel styles. */
|
|
5341
|
+
panelStyles?: NamedPanelStyleConfig[];
|
|
5342
|
+
lettering?: LetteringConfig;
|
|
5343
|
+
/** Balloon styles, by kind. The built-in ones (`speech`, `thought`,
|
|
5344
|
+
* `whisper`, `shout`, `radio`, `caption`, `inner`, `note`, `sfx`) are
|
|
5345
|
+
* always there; an entry with one of their ids changes it. */
|
|
5346
|
+
balloonStyles?: BalloonStyleConfig[];
|
|
5347
|
+
cast?: ComicCastMember[];
|
|
5348
|
+
/** Print the running heads and folios on comic pages. Default `false`:
|
|
5349
|
+
* a comic page is all panels (its folio still counts). */
|
|
5350
|
+
runningHeads?: boolean;
|
|
5351
|
+
/** For hosts whose page is not a leaf (the Sandbox's HTML viewer lays
|
|
5352
|
+
* the book out on pages a screen wide and a scroll tall): comic pages
|
|
5353
|
+
* are laid out on this leaf instead — the print page's size and
|
|
5354
|
+
* margins — scaled to {@link ComicViewerLeafConfig.fitWidth} px wide
|
|
5355
|
+
* (and at most `fitHeight` px tall) and set at the top of the page,
|
|
5356
|
+
* centred across it. Every length of the comic page (margins, gutters,
|
|
5357
|
+
* borders, lettering) is resolved at that scale, so the page shows its
|
|
5358
|
+
* print geometry, never reflowed. Not saved with a document. */
|
|
5359
|
+
viewerLeaf?: ComicViewerLeafConfig;
|
|
5360
|
+
}
|
|
5361
|
+
/** See {@link ComicsConfig.viewerLeaf}. */
|
|
5362
|
+
export interface ComicViewerLeafConfig {
|
|
5363
|
+
width: Dimension;
|
|
5364
|
+
height: Dimension;
|
|
5365
|
+
margins?: PageMargins;
|
|
5366
|
+
/** Width of the leaf on the page, px. */
|
|
5367
|
+
fitWidth: number;
|
|
5368
|
+
/** Height the leaf may take at most, px (the leaf is then narrower). */
|
|
5369
|
+
fitHeight?: number;
|
|
5370
|
+
}
|
|
5371
|
+
export interface ResolvedComicsConfig {
|
|
5372
|
+
readingDirection: ComicReadingDirection;
|
|
5373
|
+
artDirection: 'ltr' | 'rtl';
|
|
5374
|
+
mirrorArt: boolean;
|
|
5375
|
+
/** Set when the config gives the frame its own margins. */
|
|
5376
|
+
frame: {
|
|
5377
|
+
margins?: Required<PageMargins>;
|
|
5378
|
+
};
|
|
5379
|
+
gutter: {
|
|
5380
|
+
horizontal: Dimension;
|
|
5381
|
+
vertical: Dimension;
|
|
5382
|
+
};
|
|
5383
|
+
panel: ResolvedPanelStyleConfig;
|
|
5384
|
+
panelStyles: ResolvedNamedPanelStyleConfig[];
|
|
5385
|
+
lettering: ResolvedLetteringConfig;
|
|
5386
|
+
/** The built-in styles with the config's laid over them, then the
|
|
5387
|
+
* config's other styles. */
|
|
5388
|
+
balloonStyles: ResolvedBalloonStyleConfig[];
|
|
5389
|
+
cast: ComicCastMember[];
|
|
5390
|
+
runningHeads: boolean;
|
|
5391
|
+
/** As the config gives it (hosts only). */
|
|
5392
|
+
viewerLeaf?: ComicViewerLeafConfig;
|
|
5393
|
+
}
|
|
5060
5394
|
export interface PostextConfig {
|
|
5061
5395
|
page?: PageConfig;
|
|
5062
5396
|
layout?: LayoutConfig;
|
|
@@ -5152,6 +5486,9 @@ export interface PostextConfig {
|
|
|
5152
5486
|
htmlViewer?: HtmlViewerConfig;
|
|
5153
5487
|
/** The 3D book viewer (`postext-folio`): paper, binding, surface, light. */
|
|
5154
5488
|
folio?: FolioConfig;
|
|
5489
|
+
/** Comic pages (`:::page`): panel grid, panel and balloon styles,
|
|
5490
|
+
* lettering, cast. */
|
|
5491
|
+
comics?: ComicsConfig;
|
|
5155
5492
|
pdfGeneration?: PdfGenerationConfig;
|
|
5156
5493
|
colorPalette?: ColorPaletteEntry[];
|
|
5157
5494
|
/** User-provided font families. Referenced the same way as Google Fonts:
|