slotdeck 0.1.1 → 0.2.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.
Files changed (109) hide show
  1. package/README.md +94 -8
  2. package/dist/deck/alternatives.d.ts +34 -0
  3. package/dist/deck/alternatives.js +370 -0
  4. package/dist/deck/alternatives.js.map +1 -0
  5. package/dist/deck/design.d.ts +40 -0
  6. package/dist/deck/design.js +112 -0
  7. package/dist/deck/design.js.map +1 -0
  8. package/dist/deck/validate.d.ts +18 -0
  9. package/dist/deck/validate.js +44 -6
  10. package/dist/deck/validate.js.map +1 -1
  11. package/dist/index.d.ts +23 -1
  12. package/dist/index.js +14 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/llm/gemini.d.ts +4 -0
  15. package/dist/llm/gemini.js +43 -7
  16. package/dist/llm/gemini.js.map +1 -1
  17. package/dist/llm/provider.d.ts +12 -0
  18. package/dist/node.d.ts +7 -0
  19. package/dist/node.js +29 -0
  20. package/dist/node.js.map +1 -1
  21. package/dist/plan/catalog.d.ts +11 -1
  22. package/dist/plan/catalog.js +23 -8
  23. package/dist/plan/catalog.js.map +1 -1
  24. package/dist/plan/edit.js +14 -6
  25. package/dist/plan/edit.js.map +1 -1
  26. package/dist/plan/plan.d.ts +26 -2
  27. package/dist/plan/plan.js +58 -17
  28. package/dist/plan/plan.js.map +1 -1
  29. package/dist/plan/review.d.ts +43 -0
  30. package/dist/plan/review.js +141 -0
  31. package/dist/plan/review.js.map +1 -0
  32. package/dist/plan/write.d.ts +13 -1
  33. package/dist/plan/write.js +40 -7
  34. package/dist/plan/write.js.map +1 -1
  35. package/dist/preview/pagus.d.ts +30 -0
  36. package/dist/preview/pagus.js +45 -0
  37. package/dist/preview/pagus.js.map +1 -0
  38. package/dist/preview/patterns.d.ts +27 -0
  39. package/dist/preview/patterns.js +35 -0
  40. package/dist/preview/patterns.js.map +1 -0
  41. package/dist/preview/provider.d.ts +30 -0
  42. package/dist/preview/provider.js +11 -0
  43. package/dist/preview/provider.js.map +1 -0
  44. package/dist/render/render.d.ts +18 -1
  45. package/dist/render/render.js +32 -12
  46. package/dist/render/render.js.map +1 -1
  47. package/dist/render/repeat.d.ts +17 -2
  48. package/dist/render/repeat.js +150 -4
  49. package/dist/render/repeat.js.map +1 -1
  50. package/dist/render/text.d.ts +6 -0
  51. package/dist/render/text.js +24 -0
  52. package/dist/render/text.js.map +1 -1
  53. package/dist/template/budgets.d.ts +33 -0
  54. package/dist/template/budgets.js +38 -0
  55. package/dist/template/budgets.js.map +1 -0
  56. package/dist/template/change.d.ts +19 -1
  57. package/dist/template/change.js +45 -3
  58. package/dist/template/change.js.map +1 -1
  59. package/dist/template/check.d.ts +3 -0
  60. package/dist/template/check.js +53 -3
  61. package/dist/template/check.js.map +1 -1
  62. package/dist/template/derive.d.ts +54 -0
  63. package/dist/template/derive.js +402 -0
  64. package/dist/template/derive.js.map +1 -0
  65. package/dist/template/draft.d.ts +7 -0
  66. package/dist/template/draft.js +17 -1
  67. package/dist/template/draft.js.map +1 -1
  68. package/dist/template/instruct.js +15 -7
  69. package/dist/template/instruct.js.map +1 -1
  70. package/dist/template/manifest.d.ts +38 -0
  71. package/dist/template/manifest.js +43 -1
  72. package/dist/template/manifest.js.map +1 -1
  73. package/dist/template/sample.d.ts +17 -0
  74. package/dist/template/sample.js +31 -5
  75. package/dist/template/sample.js.map +1 -1
  76. package/dist/text/fontkit.d.ts +18 -0
  77. package/dist/text/fontkit.js +91 -0
  78. package/dist/text/fontkit.js.map +1 -0
  79. package/dist/text/fonts.d.ts +45 -0
  80. package/dist/text/fonts.js +59 -0
  81. package/dist/text/fonts.js.map +1 -0
  82. package/dist/text/layout.d.ts +12 -0
  83. package/dist/text/layout.js +104 -0
  84. package/dist/text/layout.js.map +1 -0
  85. package/dist/text/measure.d.ts +85 -0
  86. package/dist/text/measure.js +369 -0
  87. package/dist/text/measure.js.map +1 -0
  88. package/dist/text/styles.d.ts +123 -0
  89. package/dist/text/styles.js +417 -0
  90. package/dist/text/styles.js.map +1 -0
  91. package/dist/tools.d.ts +12 -0
  92. package/dist/tools.js +38 -6
  93. package/dist/tools.js.map +1 -1
  94. package/docs/README.md +16 -5
  95. package/docs/api-reference.md +291 -9
  96. package/docs/changelog.md +242 -0
  97. package/docs/chat-tools.md +26 -5
  98. package/docs/deck-format.md +6 -0
  99. package/docs/design-checks.md +216 -0
  100. package/docs/generating.md +43 -4
  101. package/docs/layout-freedom.md +278 -3
  102. package/docs/manifest-format.md +20 -3
  103. package/docs/preview.md +217 -0
  104. package/docs/providers.md +49 -4
  105. package/docs/rendering.md +8 -0
  106. package/docs/template-studio.md +121 -12
  107. package/docs/text-fit.md +456 -0
  108. package/docs/troubleshooting.md +21 -2
  109. package/package.json +7 -1
@@ -1,7 +1,8 @@
1
1
  import { changeManifest, describeSlot } from './change.js';
2
+ import { VARIANTS } from './derive.js';
2
3
  import { inspectTemplate } from './inspect.js';
3
4
  import { ROLES, describeShape, frameFacts } from './measure.js';
4
- const OPS = ['setSlot', 'addSlot', 'removeSlot', 'setRepeat', 'removeRepeat', 'setPattern', 'copyPattern', 'removePattern', 'addPattern', 'setManifest'];
5
+ const OPS = ['setSlot', 'addSlot', 'removeSlot', 'setRepeat', 'removeRepeat', 'setPattern', 'copyPattern', 'derivePattern', 'removePattern', 'addPattern', 'setManifest'];
5
6
  /** What an operation's values may set. A table's text styles are spelled out so that every value is one word or number. */
6
7
  const PROPERTIES = [
7
8
  'name',
@@ -35,6 +36,9 @@ const PROPERTIES = [
35
36
  'language',
36
37
  'direction',
37
38
  'alignOnDirectionChange',
39
+ 'textScale',
40
+ 'variant',
41
+ 'widen',
38
42
  ];
39
43
  const SYSTEM = [
40
44
  'You maintain the manifest of a presentation template. The manifest says which slides of a pptx are reusable layouts ("patterns") and which shapes on them are slots that new content replaces.',
@@ -47,13 +51,14 @@ const GUIDE = [
47
51
  '- setSlot (pattern, slot): change a slot. Values: empty ("error" makes it required, "remove" optional, "keep" always leaves the template\'s own content, "drop" always removes the shape); maxChars, maxParagraphs (limits of a text); fontSize (a text size in points); deckField (ties a text to one value for the whole deck); name (renames the slot); imageKind ("photo", "icon" or "graphic"). For a table: maxColumns, maxRows, maxCellChars, headerSize, headerBold, headerColor (hex), headerFont, bodySize, bodyBold, bodyColor, bodyFont. For a chart: maxCategories, maxSeries.',
48
52
  '- addSlot (pattern, shape): make a shape of the slide a slot, or give the shape of an existing slot another role. Values: role, and optionally name and optional ("true"). Roles: title, subtitle, text, list (one paragraph per item), number (a large figure), caption, photo, icon, graphic (a supplied chart or diagram picture), chart (a native editable chart in place of a picture), table, decoration (removed from every slide made with the pattern), fixed (stays exactly as designed).',
49
53
  '- removeSlot (pattern, slot): the shape stays as the template shows it.',
50
- '- setRepeat (pattern): how many items the row or grid of a pattern takes. Values: min, max.',
54
+ '- setRepeat (pattern): how many items the row or grid of a pattern takes. Values: min, max, and widen (a factor such as "1.5": with fewer items than the slide draws, each item may grow up to that many times as wide, so the row is filled and does not float in the middle; "1" keeps the drawn width).',
51
55
  '- removeRepeat (pattern): the items stop being a row whose number can change.',
52
56
  '- setPattern (pattern): Values: id (renames the pattern), description, figures ("true" offers it only when a brief has numbers).',
53
- '- copyPattern (pattern): a second pattern from the same slide, to turn into a variant with further operations. Values: id of the new pattern, and optionally description.',
57
+ '- copyPattern (pattern): a second pattern from the same slide, to turn into a variant by hand with further operations. Values: id of the new pattern, and optionally description.',
58
+ '- derivePattern (pattern): a second pattern from the same slide that the software lays out itself. Values: variant, and optionally id and description. Variants: "mirror" (the picture and the text beside it change sides), "text-only" (the picture is left out and the text widens over the room it leaves), "without" (leaves out the optional text named in "slot"; what sits under it moves up). The software works out every position and budget, and refuses a variant the slide does not allow. In a description, say what the layout holds and where the picture is.',
54
59
  '- removePattern (pattern).',
55
60
  '- addPattern: make a slide without a pattern into one. Values: slide, id, and optionally description.',
56
- '- setManifest: settings of the whole template. Values: name, language, direction ("rtl" or "ltr"), alignOnDirectionChange ("flip" or "keep").',
61
+ '- setManifest: settings of the whole template. Values: name, language, direction ("rtl" or "ltr"), alignOnDirectionChange ("flip" or "keep"), textScale (a factor on the body text of every deck, such as "1.3" when the template\'s body text is too small; "1" for the designed size).',
57
62
  'A change to one item of a row (card1Icon) is made to that slot of every item, so give it once.',
58
63
  "When a size, a table's columns or a row count changes, do not also set a character budget: the software measures the new one.",
59
64
  'Operations run in order, so a pattern made by copyPattern can be named by the operations after it.',
@@ -111,7 +116,7 @@ export function describeManifest(template) {
111
116
  const repeat = pattern.repeat;
112
117
  if (repeat) {
113
118
  const drawn = repeat.shapes.length;
114
- lines.push(` ${repeat.columns ? `grid of ${drawn} ${repeat.item}s, ${repeat.columns} to a line` : `row of ${drawn} ${repeat.item}s`} (${repeat.slots.join(', ')}); takes ${repeat.min ?? drawn} to ${repeat.max ?? drawn}`);
119
+ lines.push(` ${repeat.columns ? `grid of ${drawn} ${repeat.item}s, ${repeat.columns} to a line` : `row of ${drawn} ${repeat.item}s`} (${repeat.slots.join(', ')}); takes ${repeat.min ?? drawn} to ${repeat.max ?? drawn}${repeat.widen && repeat.widen > 1 ? `; fewer on a line grow up to ${repeat.widen} times as wide` : ''}`);
115
120
  }
116
121
  lines.push(' slots:');
117
122
  for (const slot of pattern.slots) {
@@ -127,7 +132,7 @@ export function describeManifest(template) {
127
132
  return lines.join('\n');
128
133
  });
129
134
  return [
130
- `Template "${manifest.name}"${manifest.language ? `, written in ${manifest.language}` : ''}, reads ${manifest.direction === 'rtl' ? 'right to left' : 'left to right'}; ${(manifest.alignOnDirectionChange ?? 'flip') === 'flip' ? 'mirrors' : 'keeps'} alignment in decks that read the other way. Positions and sizes are percentages of the slide.`,
135
+ `Template "${manifest.name}"${manifest.language ? `, written in ${manifest.language}` : ''}, reads ${manifest.direction === 'rtl' ? 'right to left' : 'left to right'}; ${(manifest.alignOnDirectionChange ?? 'flip') === 'flip' ? 'mirrors' : 'keeps'} alignment in decks that read the other way${manifest.textScale && manifest.textScale !== 1 ? `; body text is shown at ${manifest.textScale} times its designed size` : ''}. Positions and sizes are percentages of the slide.`,
131
136
  ...blocks,
132
137
  unused.length > 0 ? `Slides without a pattern: ${unused.join(', ')}.` : '',
133
138
  ]
@@ -212,7 +217,7 @@ function toChange(raw) {
212
217
  case 'removeSlot':
213
218
  return { op, pattern, slot };
214
219
  case 'setRepeat':
215
- return put({ op, pattern }, { min: count('min'), max: count('max') });
220
+ return put({ op, pattern }, { min: count('min'), max: count('max'), widen: num('widen') });
216
221
  case 'removeRepeat':
217
222
  case 'removePattern':
218
223
  return { op, pattern };
@@ -220,6 +225,8 @@ function toChange(raw) {
220
225
  return put({ op, pattern }, { id: str('id'), description: str('description'), figures: bool('figures') });
221
226
  case 'copyPattern':
222
227
  return put({ op, pattern, id: str('id') ?? '' }, { description: str('description') });
228
+ case 'derivePattern':
229
+ return put({ op, pattern, variant: choice('variant', VARIANTS) ?? values.get('variant') ?? '' }, { slot: slot || undefined, id: str('id'), description: str('description') });
223
230
  case 'addPattern':
224
231
  return put({ op, slide: count('slide') ?? 0, id: str('id') ?? '' }, { description: str('description') });
225
232
  case 'setManifest':
@@ -228,6 +235,7 @@ function toChange(raw) {
228
235
  language: str('language'),
229
236
  direction: choice('direction', ['rtl', 'ltr']),
230
237
  alignOnDirectionChange: choice('alignOnDirectionChange', ['flip', 'keep']),
238
+ textScale: num('textScale'),
231
239
  });
232
240
  default:
233
241
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"instruct.js","sourceRoot":"","sources":["../../src/template/instruct.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instruct.js","sourceRoot":"","sources":["../../src/template/instruct.ts"],"names":[],"mappings":"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"}
@@ -18,8 +18,33 @@ export interface TemplateManifest {
18
18
  * whose text boxes share one edge but not the other. Slots can override this.
19
19
  */
20
20
  alignOnDirectionChange?: AlignPolicy;
21
+ /**
22
+ * Enlarges the body text of every deck made from this template, as a factor on the designed
23
+ * size: 1.3 turns 9 pt into about 12 pt. For a template whose body text is too small to read
24
+ * comfortably. Budgets shrink with it, and a deck's own text size is applied on top.
25
+ */
26
+ textScale?: number;
27
+ /**
28
+ * Lets text that does not fit its box be set smaller: down to `to` of its size (0.85 is 85%)
29
+ * and never under `minSize` points. It needs fonts to measure with, so it only acts for a
30
+ * template loaded with fonts; without them nothing is shrunk.
31
+ */
32
+ shrinkText?: {
33
+ to: number;
34
+ minSize?: number;
35
+ };
21
36
  patterns: PatternDef[];
22
37
  }
38
+ /**
39
+ * A table slot as it is at a body text scale: the text sizes the manifest states are enlarged,
40
+ * and a cell holds less. A table whose sizes come from the sample table alone is left as it is,
41
+ * since there is nothing stated to enlarge.
42
+ */
43
+ export declare function tableAtScale(slot: TableSlotDef, scale: number): TableSlotDef;
44
+ /** A chart slot as it is at a body text scale: the label size the manifest states is enlarged. */
45
+ export declare function chartAtScale(slot: ChartSlotDef, scale: number): ChartSlotDef;
46
+ /** The factor on body text for a deck: the template's own setting times the deck's. */
47
+ export declare function bodyTextScale(manifest: Pick<TemplateManifest, 'textScale'>, deckScale?: number): number;
23
48
  export interface PatternDef {
24
49
  id: string;
25
50
  /** 1-based slide number in the template pptx that this pattern is cloned from. */
@@ -70,7 +95,20 @@ export interface RepeatDef {
70
95
  * reading order, spread evenly over as few rows as they need. Leave it out for a single row.
71
96
  */
72
97
  columns?: number;
98
+ /**
99
+ * Lets items grow wider when a line holds fewer of them than the template draws, so that they
100
+ * fill the row's span and do not float in the middle of it. The value is the most an item may
101
+ * grow, as a factor on its drawn width: 1.5 lets a card become half as wide again. Backgrounds
102
+ * and text boxes widen; pictures keep their size and their side. Left out, items keep their size.
103
+ */
104
+ widen?: number;
73
105
  }
106
+ /**
107
+ * The factor by which the items of a row are at least wider than drawn for a given count: 1 when
108
+ * the row does not widen. Items grow when the fullest line holds fewer than the template draws on
109
+ * a line; with the same gaps between them, they are then at least `drawn / held` times as wide.
110
+ */
111
+ export declare function widenFactor(repeat: RepeatDef, count: number): number;
74
112
  /**
75
113
  * How many items each row of a repeat holds for a given count. A single row takes them all.
76
114
  * A grid uses as few rows as the count needs and spreads the items evenly: four items in a
@@ -1,3 +1,41 @@
1
+ const halfPoints = (size, scale) => Math.round(size * scale * 2) / 2;
2
+ /**
3
+ * A table slot as it is at a body text scale: the text sizes the manifest states are enlarged,
4
+ * and a cell holds less. A table whose sizes come from the sample table alone is left as it is,
5
+ * since there is nothing stated to enlarge.
6
+ */
7
+ export function tableAtScale(slot, scale) {
8
+ if (scale === 1 || slot.bodyText?.size === undefined)
9
+ return slot;
10
+ const scaled = { ...slot, bodyText: { ...slot.bodyText, size: halfPoints(slot.bodyText.size, scale) } };
11
+ if (slot.headerText?.size !== undefined)
12
+ scaled.headerText = { ...slot.headerText, size: halfPoints(slot.headerText.size, scale) };
13
+ if (slot.maxCellChars !== undefined)
14
+ scaled.maxCellChars = Math.max(1, Math.floor(slot.maxCellChars / (scale * scale)));
15
+ return scaled;
16
+ }
17
+ /** A chart slot as it is at a body text scale: the label size the manifest states is enlarged. */
18
+ export function chartAtScale(slot, scale) {
19
+ if (scale === 1 || slot.text?.size === undefined)
20
+ return slot;
21
+ return { ...slot, text: { ...slot.text, size: halfPoints(slot.text.size, scale) } };
22
+ }
23
+ /** The factor on body text for a deck: the template's own setting times the deck's. */
24
+ export function bodyTextScale(manifest, deckScale = 1) {
25
+ return (manifest.textScale ?? 1) * deckScale;
26
+ }
27
+ /**
28
+ * The factor by which the items of a row are at least wider than drawn for a given count: 1 when
29
+ * the row does not widen. Items grow when the fullest line holds fewer than the template draws on
30
+ * a line; with the same gaps between them, they are then at least `drawn / held` times as wide.
31
+ */
32
+ export function widenFactor(repeat, count) {
33
+ if (!repeat.widen || !(repeat.widen > 1))
34
+ return 1;
35
+ const drawn = repeat.columns ?? repeat.shapes.length;
36
+ const held = Math.max(0, ...rowLayout(repeat, count));
37
+ return held > 0 && held < drawn ? Math.min(repeat.widen, drawn / held) : 1;
38
+ }
1
39
  /**
2
40
  * How many items each row of a repeat holds for a given count. A single row takes them all.
3
41
  * A grid uses as few rows as the count needs and spreads the items evenly: four items in a
@@ -90,7 +128,11 @@ export function effectiveSlots(pattern, items) {
90
128
  slots.push(copy.kind === 'image' ? { ...copy, copyOf: original.shapeId } : copy);
91
129
  }
92
130
  }
93
- return slots;
131
+ // Wider items hold more text: the budgets of the row's texts grow with the items.
132
+ const factor = widenFactor(repeat, count);
133
+ if (factor === 1)
134
+ return slots;
135
+ return slots.map((slot) => (slot.kind === 'text' && slot.maxChars !== undefined && itemOf.has(slot.name) ? { ...slot, maxChars: Math.floor(slot.maxChars * factor) } : slot));
94
136
  }
95
137
  /** Deck text sizes by name, as factors on the template's body text. */
96
138
  export const TEXT_SIZES = { normal: 1, large: 1.25, 'x-large': 1.5 };
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/template/manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/template/manifest.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,19 @@
1
1
  import type { DeckSpec } from '../deck/spec.ts';
2
2
  import type { Template } from '../render/render.ts';
3
+ import type { TextMeasurer } from '../text/measure.ts';
4
+ import type { PatternDef, TextSlotDef } from './manifest.ts';
3
5
  export interface SampleOptions {
4
6
  /** How full to make each text slot, as a share of its budget. Defaults to 0.95. */
5
7
  fill?: number;
6
8
  /** For patterns with a row of items: `drawn` (default) uses the template's number, `max` the most allowed. */
7
9
  items?: 'drawn' | 'max' | 'min';
10
+ /**
11
+ * What "full" means for a text slot. `budget` (default) is the slot's character budget. `box` is
12
+ * what the slot's box holds as measured with the template's fonts, whatever the budget says:
13
+ * the deck then shows every box at its true capacity. `box` needs a template loaded with fonts;
14
+ * a slot that cannot be measured is filled to its budget.
15
+ */
16
+ fit?: 'budget' | 'box';
8
17
  }
9
18
  /**
10
19
  * Builds a deck that uses every pattern once and fills every slot close to its limit, with the
@@ -15,3 +24,11 @@ export declare function sampleDeck(template: Template, options?: SampleOptions):
15
24
  deck: DeckSpec;
16
25
  assets: Record<string, Uint8Array>;
17
26
  };
27
+ /**
28
+ * The most characters of filler text, in a number of paragraphs, that a slot's box holds as
29
+ * measured. `undefined` when the slot cannot be measured. `items` is the number of items on the
30
+ * slide, for a slot of a row whose items widen when there are fewer of them.
31
+ */
32
+ export declare function boxCapacity(measure: TextMeasurer, pattern: PatternDef, slot: TextSlotDef, words: string[], paragraphs: number, textScale?: number, items?: number): number | undefined;
33
+ /** Text of about `length` characters, made of whole words where they fit, starting at a different word each time. */
34
+ export declare function filler(words: string[], length: number, start: number): string;
@@ -1,6 +1,7 @@
1
1
  import { solidPng } from '../util/png.js';
2
+ import { measurerFor } from '../text/measure.js';
2
3
  import { inspectTemplate } from './inspect.js';
3
- import { COPY_ID_STEP, effectiveSlots, itemRange, textBudget } from './manifest.js';
4
+ import { COPY_ID_STEP, effectiveSlots, itemRange, tableAtScale, textBudget } from './manifest.js';
4
5
  /**
5
6
  * Builds a deck that uses every pattern once and fills every slot close to its limit, with the
6
7
  * template's own sample words. Rendering it is the quickest way to see whether a manifest's
@@ -10,6 +11,7 @@ export function sampleDeck(template, options = {}) {
10
11
  const { manifest } = template;
11
12
  const info = inspectTemplate(template.pkg);
12
13
  const fill = options.fill ?? 0.95;
14
+ const measure = options.fit === 'box' ? measurerFor(template) : undefined;
13
15
  const assets = {
14
16
  'sample-photo': solidPng(96, 64, [120, 150, 135]),
15
17
  'sample-icon': solidPng(32, 32, [105, 36, 232]),
@@ -33,10 +35,12 @@ export function sampleDeck(template, options = {}) {
33
35
  fields[slot.deckField] ??= words.join(' ') || slot.deckField;
34
36
  continue;
35
37
  }
36
- const budget = textBudget(slot);
38
+ // The sample is filled to the budgets real decks get, which the template's own text scale shrinks.
39
+ const budget = textBudget(slot, manifest.textScale ?? 1);
37
40
  const several = (slot.maxParagraphs ?? 1) > 1;
38
41
  const paragraphs = several ? (budget.maxParagraphs ?? 2) : 1;
39
- const total = budget.maxChars !== undefined ? Math.max(1, Math.floor(budget.maxChars * fill)) : words.join(' ').length || 12;
42
+ const held = measure ? boxCapacity(measure, pattern, slot, words, paragraphs, manifest.textScale ?? 1, items) : undefined;
43
+ const total = held !== undefined ? Math.max(1, Math.floor(held * fill)) : budget.maxChars !== undefined ? Math.max(1, Math.floor(budget.maxChars * fill)) : words.join(' ').length || 12;
40
44
  const each = Math.max(1, Math.floor(total / paragraphs));
41
45
  const text = Array.from({ length: paragraphs }, (_, index) => filler(words, each, index));
42
46
  slots[slot.name] = several ? text : text[0];
@@ -46,7 +50,7 @@ export function sampleDeck(template, options = {}) {
46
50
  }
47
51
  else if (slot.kind === 'table') {
48
52
  const columns = slot.maxColumns ?? 3;
49
- const cell = 'x'.repeat(Math.max(1, Math.floor((slot.maxCellChars ?? 10) * fill)));
53
+ const cell = 'x'.repeat(Math.max(1, Math.floor((tableAtScale(slot, manifest.textScale ?? 1).maxCellChars ?? 10) * fill)));
50
54
  slots[slot.name] = {
51
55
  header: Array.from({ length: columns }, () => cell),
52
56
  rows: Array.from({ length: slot.maxRows ?? 3 }, () => Array.from({ length: columns }, () => cell)),
@@ -76,8 +80,30 @@ export function sampleDeck(template, options = {}) {
76
80
  deck.fields = fields;
77
81
  return { deck, assets };
78
82
  }
83
+ /**
84
+ * The most characters of filler text, in a number of paragraphs, that a slot's box holds as
85
+ * measured. `undefined` when the slot cannot be measured. `items` is the number of items on the
86
+ * slide, for a slot of a row whose items widen when there are fewer of them.
87
+ */
88
+ export function boxCapacity(measure, pattern, slot, words, paragraphs, textScale = 1, items) {
89
+ const make = (total) => Array.from({ length: paragraphs }, (_, index) => filler(words, Math.max(1, Math.floor(total / paragraphs)), index));
90
+ const options = items === undefined ? { textScale } : { textScale, items };
91
+ const fits = (total) => measure.fit(pattern, slot, make(total), options)?.fits;
92
+ if (fits(paragraphs) === undefined)
93
+ return undefined;
94
+ let low = paragraphs;
95
+ let high = 6000;
96
+ while (low < high) {
97
+ const middle = Math.ceil((low + high) / 2);
98
+ if (fits(middle))
99
+ low = middle;
100
+ else
101
+ high = middle - 1;
102
+ }
103
+ return low;
104
+ }
79
105
  /** Text of about `length` characters, made of whole words where they fit, starting at a different word each time. */
80
- function filler(words, length, start) {
106
+ export function filler(words, length, start) {
81
107
  if (words.length === 0)
82
108
  return 'x'.repeat(length);
83
109
  let text = '';
@@ -1 +1 @@
1
- {"version":3,"file":"sample.js","sourceRoot":"","sources":["../../src/template/sample.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sample.js","sourceRoot":"","sources":["../../src/template/sample.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAiBlG;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,QAAkB,EAAE,OAAO,GAAkB,EAAE;IACxE,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;IAC9B,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;IAClC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1E,MAAM,MAAM,GAA+B;QACzC,cAAc,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACjD,aAAa,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QAC/C,gBAAgB,EAAE,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;KACrD,CAAC;IACF,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAa,EAAE;QAC1D,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/G,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5H,MAAM,KAAK,GAA8B,EAAE,CAAC;QAE5C,KAAK,MAAM,IAAI,IAAI,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC;YACrC,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM;gBAAE,SAAS;YACrD,uGAAuG;YACvG,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;YAElG,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC/E,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC;oBAC7D,SAAS;gBACX,CAAC;gBACD,mGAAmG;gBACnG,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;gBACzD,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC9C,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7D,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,SAAS,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC1H,MAAM,KAAK,GACT,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;gBAC7K,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC;gBACzD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC1F,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,CAAY,CAAC;YAC1D,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACjC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAC3I,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACjC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;gBACrC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC1H,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;oBACjB,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC;oBACnD,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;iBACnG,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBACxD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;oBACjB,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;oBAC7E,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;wBAC/E,IAAI,EAAE,IAAI,MAAM,GAAG,CAAC,EAAE;wBACtB,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,GAAG,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;qBACjG,CAAC,CAAC;iBACJ,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAc,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;QACxD,IAAI,KAAK,KAAK,SAAS;YAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QAC7C,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAa,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAClH,IAAI,QAAQ,CAAC,QAAQ;QAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACzD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,OAAqB,EAAE,OAAmB,EAAE,IAAiB,EAAE,KAAe,EAAE,UAAkB,EAAE,SAAS,GAAG,CAAC,EAAE,KAAc;IAC3J,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IACpJ,MAAM,OAAO,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC3E,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC;IACvF,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACrD,IAAI,GAAG,GAAG,UAAU,CAAC;IACrB,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,OAAO,GAAG,GAAG,IAAI,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,MAAM,CAAC;YAAE,GAAG,GAAG,MAAM,CAAC;;YAC1B,IAAI,GAAG,MAAM,GAAG,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,qHAAqH;AACrH,MAAM,UAAU,MAAM,CAAC,KAAe,EAAE,MAAc,EAAE,KAAa;IACnE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,KAAK,IAAI,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAChG,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAE,KAAK,CAAC,KAAK,CAAY,CAAC;QACzE,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;YACzB,6DAA6D;YAC7D,IAAI,CAAC,IAAI;gBAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACxC,MAAM;QACR,CAAC;QACD,IAAI,GAAG,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { FontMetrics } from './fonts.ts';
2
+ /** The part of the `fontkit` module this adapter uses: `import * as fontkit from 'fontkit'`. */
3
+ export interface FontkitModule {
4
+ create(buffer: never, postscriptName?: string): unknown;
5
+ }
6
+ /** Font files by the typeface name the template uses. Several files give a family its weights and slants. */
7
+ export type FontFiles = Record<string, Uint8Array | Uint8Array[]>;
8
+ /**
9
+ * Builds {@link FontMetrics} from font files, read with `fontkit` (TrueType, OpenType, WOFF,
10
+ * WOFF2 and .ttc collections). Each key is a typeface name as the template states it; its
11
+ * value is one file or several (regular, bold, italic), told apart by what each file says of
12
+ * itself. A file may stand in for a typeface of another name, such as an open metric-compatible
13
+ * font for a licensed one.
14
+ *
15
+ * A weight or slant that was not supplied is measured with the nearest face that was. A
16
+ * character that a typeface lacks is measured in the first supplied typeface that has it.
17
+ */
18
+ export declare function fontkitMetrics(fontkit: FontkitModule, files: FontFiles): FontMetrics;
@@ -0,0 +1,91 @@
1
+ /** A synthesized bold is drawn a little wider than the regular face it is made from. */
2
+ const FAKE_BOLD = 0.02;
3
+ /**
4
+ * Builds {@link FontMetrics} from font files, read with `fontkit` (TrueType, OpenType, WOFF,
5
+ * WOFF2 and .ttc collections). Each key is a typeface name as the template states it; its
6
+ * value is one file or several (regular, bold, italic), told apart by what each file says of
7
+ * itself. A file may stand in for a typeface of another name, such as an open metric-compatible
8
+ * font for a licensed one.
9
+ *
10
+ * A weight or slant that was not supplied is measured with the nearest face that was. A
11
+ * character that a typeface lacks is measured in the first supplied typeface that has it.
12
+ */
13
+ export function fontkitMetrics(fontkit, files) {
14
+ const families = new Map();
15
+ for (const [name, value] of Object.entries(files)) {
16
+ const loaded = [];
17
+ for (const bytes of Array.isArray(value) ? value : [value]) {
18
+ const opened = fontkit.create(bytes);
19
+ // A collection holds several families; the one asked for is taken, or the first.
20
+ const members = opened.fonts ?? [opened];
21
+ const named = members.filter((font) => (font.familyName ?? '').toLowerCase() === name.toLowerCase());
22
+ for (const font of named.length > 0 ? named : members.slice(0, 1)) {
23
+ loaded.push({
24
+ font,
25
+ bold: !!(font['OS/2']?.fsSelection?.bold ?? font.head?.macStyle?.bold) || (font['OS/2']?.usWeightClass ?? 400) >= 600,
26
+ italic: !!(font['OS/2']?.fsSelection?.italic ?? font.head?.macStyle?.italic) || (font.italicAngle ?? 0) !== 0,
27
+ });
28
+ }
29
+ }
30
+ if (loaded.length > 0)
31
+ families.set(name.toLowerCase(), loaded);
32
+ }
33
+ const faces = new Map();
34
+ const build = (family, style) => {
35
+ const exact = family.find((entry) => entry.bold === style.bold && entry.italic === style.italic);
36
+ let chosen = exact ?? family.find((entry) => entry.bold === style.bold) ?? family.find((entry) => !entry.bold && !entry.italic) ?? family[0];
37
+ if (!chosen)
38
+ return undefined;
39
+ let font = chosen.font;
40
+ let substitute = !exact;
41
+ // A variable font carries its bold in the same file.
42
+ if (!exact && style.bold && !chosen.bold && font.variationAxes?.wght && font.getVariation) {
43
+ try {
44
+ font = font.getVariation({ wght: Math.min(700, font.variationAxes.wght.max) });
45
+ chosen = { font, bold: true, italic: chosen.italic };
46
+ substitute = chosen.italic !== style.italic;
47
+ }
48
+ catch {
49
+ // Kept as the regular face.
50
+ }
51
+ }
52
+ const widen = style.bold && !chosen.bold ? FAKE_BOLD : 0;
53
+ const known = new Map();
54
+ const face = {
55
+ has: (codePoint) => font.hasGlyphForCodePoint(codePoint),
56
+ advances(text, kerning) {
57
+ const key = kerning ? `k${text}` : `n${text}`;
58
+ let advances = known.get(key);
59
+ if (!advances) {
60
+ advances = font.layout(text, kerning ? undefined : { kern: false }).positions.map((position) => position.xAdvance / font.unitsPerEm + widen);
61
+ if (known.size < 50000)
62
+ known.set(key, advances);
63
+ }
64
+ return advances;
65
+ },
66
+ };
67
+ if (substitute)
68
+ face.substitute = true;
69
+ return face;
70
+ };
71
+ const lookup = (name, style) => {
72
+ const key = `${name.toLowerCase()}|${style.bold ? 'b' : ''}${style.italic ? 'i' : ''}`;
73
+ if (!faces.has(key)) {
74
+ const family = families.get(name.toLowerCase());
75
+ faces.set(key, family ? build(family, style) : undefined);
76
+ }
77
+ return faces.get(key);
78
+ };
79
+ return {
80
+ face: lookup,
81
+ fallback(codePoint, style) {
82
+ for (const name of families.keys()) {
83
+ const face = lookup(name, style);
84
+ if (face?.has(codePoint))
85
+ return face;
86
+ }
87
+ return undefined;
88
+ },
89
+ };
90
+ }
91
+ //# sourceMappingURL=fontkit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fontkit.js","sourceRoot":"","sources":["../../src/text/fontkit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /** Weight and slant of a face. */
2
+ export interface FontStyle {
3
+ bold: boolean;
4
+ italic: boolean;
5
+ }
6
+ /** A typeface in one weight and slant, as far as measuring needs it. */
7
+ export interface FontFace {
8
+ /** Whether the face has a glyph for a character, given as a code point. */
9
+ has(codePoint: number): boolean;
10
+ /**
11
+ * The advance of each glyph of a text set on one line, in ems, after the font's own shaping
12
+ * (ligatures, Arabic joining) and with kerning when asked for. Their sum times the font size is
13
+ * the width of the text. They are wanted one by one because PowerPoint rounds each of them.
14
+ */
15
+ advances(text: string, kerning: boolean): number[];
16
+ /** Set when the face stands in for a weight or slant that was not supplied, so widths are a little off. */
17
+ substitute?: boolean;
18
+ }
19
+ /**
20
+ * The one thing slotdeck needs from a font library: the widths of glyphs in a typeface.
21
+ * Implement this to plug in any library; {@link fontkitMetrics} does it for `fontkit`.
22
+ */
23
+ export interface FontMetrics {
24
+ /** The face for a typeface name as the template states it, or `undefined` when it was not supplied. */
25
+ face(typeface: string, style: FontStyle): FontFace | undefined;
26
+ /** A face for a character that the chosen face has no glyph for. */
27
+ fallback?(codePoint: number, style: FontStyle): FontFace | undefined;
28
+ }
29
+ /**
30
+ * The width of a piece of text at a font size, in points, as PowerPoint lays it out: on a grid of
31
+ * an eighth of a point, to which the advance of every glyph is rounded. At small sizes that
32
+ * rounding moves a line's width by a percent or two, enough to move a word to the next line.
33
+ */
34
+ export declare function textWidth(face: FontFace, text: string, size: number, kerning: boolean): number;
35
+ /**
36
+ * The three typefaces a run of text carries. PowerPoint sets Hebrew, Arabic and the like in the
37
+ * complex-script face, Chinese, Japanese and Korean in the East Asian one, and the rest in the Latin one.
38
+ */
39
+ export type ScriptClass = 'latin' | 'cs' | 'ea';
40
+ /** The typeface class of a character, or `undefined` for one that takes its neighbour's (a space, a digit, punctuation). */
41
+ export declare function scriptClass(char: string): ScriptClass | undefined;
42
+ /** Whether a line may break before and after the character without a space, as between Chinese or Japanese characters. */
43
+ export declare function breaksAnywhere(char: string): boolean;
44
+ /** The theme's name for the script of a complex-script or East Asian character, as in `<a:font script="Hebr">`. */
45
+ export declare function themeScript(char: string): string | undefined;