@litfamily/litopencode 1.0.16 → 1.0.17
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/CHANGELOG.md +7 -0
- package/README-Ko-KR.md +11 -11
- package/README.md +11 -11
- package/dist/activation-routing.js +1 -1
- package/dist/features.js +2 -2
- package/dist/skills.js +6 -4
- package/docs/assets/readme/badge-version.svg +1 -1
- package/docs/reference-Ko-KR.md +1 -1
- package/package.json +1 -1
- package/skills/frontend-ui-ux/data/THIRD-PARTY-NOTICE.txt +1 -3
- package/skills/lit-docx/SKILL.md +80 -19
- package/skills/lit-docx/references/components.md +253 -0
- package/skills/lit-docx/references/direction-step.md +234 -0
- package/skills/lit-docx/references/examples/01-report-ko.md +160 -0
- package/skills/lit-docx/references/examples/02-brief-ko.md +58 -0
- package/skills/lit-docx/references/examples/03-manual-ko.md +107 -0
- package/skills/lit-docx/references/examples/04-proposal-ko.md +93 -0
- package/skills/lit-docx/references/examples/05-memo-ko.md +42 -0
- package/skills/lit-docx/references/examples/06-journal-en.md +84 -0
- package/skills/lit-docx/references/examples/07-report-en.md +137 -0
- package/skills/lit-docx/references/examples/08-journal-ko.md +93 -0
- package/skills/lit-docx/references/examples/09-brief-en.md +64 -0
- package/skills/lit-docx/references/page-composition.md +306 -0
- package/skills/lit-docx/references/tonalities/brief.md +104 -0
- package/skills/lit-docx/references/tonalities/journal.md +101 -0
- package/skills/lit-docx/references/tonalities/manual.md +111 -0
- package/skills/lit-docx/references/tonalities/memo.md +105 -0
- package/skills/lit-docx/references/tonalities/proposal.md +101 -0
- package/skills/lit-docx/references/tonalities/report.md +126 -0
- package/skills/lit-docx/run.py +2 -1
- package/skills/lit-docx/scripts/convert_md_to_docx.py +384 -67
- package/skills/lit-docx/scripts/craft_docx.py +204 -1
- package/skills/lit-docx/scripts/docx_design.py +2445 -0
- package/skills/lit-docx/scripts/docx_layout.py +959 -0
- package/skills/lit-docx/scripts/slop_lint.py +23 -6
- package/skills/lit-docx/templates/tonalities/brief.yaml +29 -0
- package/skills/lit-docx/templates/tonalities/journal.yaml +26 -0
- package/skills/lit-docx/templates/tonalities/manual.yaml +27 -0
- package/skills/lit-docx/templates/tonalities/memo.yaml +27 -0
- package/skills/lit-docx/templates/tonalities/proposal.yaml +27 -0
- package/skills/lit-docx/templates/tonalities/report.yaml +27 -0
- package/skills/lit-pptx/NOTICE.md +1 -1
- package/skills/lit-pptx/SKILL.md +108 -19
- package/skills/lit-pptx/pretendard-font/public/static/Pretendard-Bold.otf +0 -0
- package/skills/lit-pptx/pretendard-font/public/static/Pretendard-Regular.otf +0 -0
- package/skills/lit-pptx/references/density-and-fill.md +283 -0
- package/skills/lit-pptx/references/direction-step.md +249 -0
- package/skills/lit-pptx/references/examples/01-ops-review-ledger-ko.md +173 -0
- package/skills/lit-pptx/references/examples/02-launch-pitch-signal-en.md +153 -0
- package/skills/lit-pptx/references/examples/03-field-survey-atlas-ko.md +120 -0
- package/skills/lit-pptx/references/examples/04-lecture-chalk-ko.md +132 -0
- package/skills/lit-pptx/references/examples/05-research-talk-paper-en.md +162 -0
- package/skills/lit-pptx/references/examples/06-policy-briefing-gazette-ko.md +176 -0
- package/skills/lit-pptx/references/examples/07-annual-story-studio-en.md +131 -0
- package/skills/lit-pptx/references/examples/08-reliability-keynote-night-en.md +182 -0
- package/skills/lit-pptx/references/examples/09-status-update-ledger-en.md +147 -0
- package/skills/lit-pptx/references/examples/10-investor-pitch-signal-ko.md +136 -0
- package/skills/lit-pptx/references/examples/11-forecast-review-night-ko.md +177 -0
- package/skills/lit-pptx/references/examples/12-exhibition-proposal-studio-ko.md +149 -0
- package/skills/lit-pptx/references/layout-families.md +470 -0
- package/skills/lit-pptx/references/title-treatments.md +271 -0
- package/skills/lit-pptx/references/tonalities/atlas.md +132 -0
- package/skills/lit-pptx/references/tonalities/chalk.md +132 -0
- package/skills/lit-pptx/references/tonalities/gazette.md +137 -0
- package/skills/lit-pptx/references/tonalities/ledger.md +151 -0
- package/skills/lit-pptx/references/tonalities/night.md +148 -0
- package/skills/lit-pptx/references/tonalities/paper.md +136 -0
- package/skills/lit-pptx/references/tonalities/signal.md +148 -0
- package/skills/lit-pptx/references/tonalities/studio.md +149 -0
- package/skills/lit-pptx/scripts/compile-deck.js +68 -21
- package/skills/lit-pptx/scripts/craft-thresholds.json +45 -1
- package/skills/lit-pptx/scripts/craft_extras.py +37 -8
- package/skills/lit-pptx/scripts/deck_output.py +654 -0
- package/skills/lit-pptx/scripts/embed_fonts.py +2 -2
- package/skills/lit-pptx/scripts/layout_inventory.py +35 -2
- package/skills/lit-pptx/scripts/lib/directive-parser.js +2 -2
- package/skills/lit-pptx/scripts/lib/font-map.js +4 -4
- package/skills/lit-pptx/scripts/lib/grid-resolver.js +521 -0
- package/skills/lit-pptx/scripts/lib/layout-resolver.js +403 -21
- package/skills/lit-pptx/scripts/lib/markdown-loader.js +6 -4
- package/skills/lit-pptx/scripts/lib/render-adapter-html.js +3 -9
- package/skills/lit-pptx/scripts/lib/render-adapter-pptx.js +500 -113
- package/skills/lit-pptx/scripts/lib/render-pack.js +3558 -0
- package/skills/lit-pptx/scripts/lib/slide-ast.js +55 -24
- package/skills/lit-pptx/scripts/lib/spec-validator.js +2 -2
- package/skills/lit-pptx/scripts/lib/template-registry.js +335 -11
- package/skills/lit-pptx/scripts/qa_deck.py +48 -13
- package/skills/lit-pptx/scripts/validate_pptx.py +17 -5
- package/skills/lit-pptx/specs/template-enrollment-contract.md +4 -4
- package/skills/lit-pptx/templates/boilerplate_professional.css +13 -13
- package/skills/lit-pptx/templates/enrolled/AZURE-A2Z/layout-mapping.yaml +1 -1
- package/skills/lit-pptx/templates/enrolled/AZURE-A2Z/template.yaml +5 -2
- package/skills/lit-pptx/templates/enrolled/AZURE-PRO/capabilities.yaml +20 -20
- package/skills/lit-pptx/templates/enrolled/AZURE-PRO/layout-mapping.yaml +1 -11
- package/skills/lit-pptx/templates/enrolled/AZURE-PRO/template.yaml +10 -7
- package/skills/lit-pptx/templates/enrolled/BOILERPLATE-PRETENDARD/capabilities.yaml +17 -17
- package/skills/lit-pptx/templates/enrolled/BOILERPLATE-PRETENDARD/template.yaml +8 -8
- package/skills/lit-pptx/templates/tonalities/atlas/pack.yaml +105 -0
- package/skills/lit-pptx/templates/tonalities/chalk/pack.yaml +110 -0
- package/skills/lit-pptx/templates/tonalities/gazette/pack.yaml +106 -0
- package/skills/lit-pptx/templates/tonalities/ledger/pack.yaml +107 -0
- package/skills/lit-pptx/templates/tonalities/night/pack.yaml +106 -0
- package/skills/lit-pptx/templates/tonalities/paper/pack.yaml +111 -0
- package/skills/lit-pptx/templates/tonalities/signal/pack.yaml +107 -0
- package/skills/lit-pptx/templates/tonalities/studio/pack.yaml +105 -0
- package/skills/lit-typographic-motion/THIRD_PARTY_NOTICES +1 -1
- package/skills/lit-typographic-motion/engine/stage/capture.mjs +2 -2
- package/skills/lit-typographic-motion/engine/treatment.mjs +1 -1
- package/skills/lit-typographic-motion/fonts/pins.json +2 -2
- package/skills/lit-typographic-motion/gate.mjs +1 -1
- package/skills/lit-typographic-motion/references/stage.md +1 -1
- package/skills/lit-typographic-motion/references/style-bibles.md +2 -2
- package/skills/lit-typographic-motion/references/treatment.md +1 -1
- package/skills/lit-typographic-motion/references/type-craft.md +3 -3
- package/skills/managed-skill-manifest.json +288 -44
- package/skills/lit-pptx/pretendard-font/public/static/LitOpenCodeSans-Bold.otf +0 -0
- package/skills/lit-pptx/pretendard-font/public/static/LitOpenCodeSans-Regular.otf +0 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Studio: a magazine spread. The 12-column grid is visible, titles live in a side rail or open a
|
|
2
|
+
# page at large size, real numbers are set huge, splits are asymmetric, and a dark ochre accent
|
|
3
|
+
# marks the one thing to look at. Wrong for dense data reviews: editorial white space starves tables.
|
|
4
|
+
id: studio
|
|
5
|
+
name: Studio
|
|
6
|
+
version: "1.0.0"
|
|
7
|
+
intent: "Editorial narratives on a visible grid with large numerals."
|
|
8
|
+
canvas: ["16:9", "4:3"]
|
|
9
|
+
|
|
10
|
+
# Pretendard by default; the A2Z map below applies only when the source asks (faces: a2z).
|
|
11
|
+
faces:
|
|
12
|
+
display: Pretendard Bold
|
|
13
|
+
title: Pretendard Bold
|
|
14
|
+
body: Pretendard Regular
|
|
15
|
+
label: Pretendard Regular
|
|
16
|
+
numeral: Pretendard Bold
|
|
17
|
+
faces-pretendard-only:
|
|
18
|
+
display: Pretendard Bold
|
|
19
|
+
title: Pretendard Bold
|
|
20
|
+
body: Pretendard Regular
|
|
21
|
+
label: Pretendard Regular
|
|
22
|
+
numeral: Pretendard Bold
|
|
23
|
+
faces-a2z:
|
|
24
|
+
display: A2Z Black
|
|
25
|
+
title: A2Z Medium
|
|
26
|
+
body: Pretendard Regular
|
|
27
|
+
label: Pretendard Regular
|
|
28
|
+
numeral: A2Z Black
|
|
29
|
+
|
|
30
|
+
palette:
|
|
31
|
+
ground: "#FFFFFF"
|
|
32
|
+
surface: "#F2F2F0"
|
|
33
|
+
ink: "#141414"
|
|
34
|
+
ink-muted: "#525252"
|
|
35
|
+
line: "#D2D2CE"
|
|
36
|
+
accent: "#8A5A00"
|
|
37
|
+
accent-deep: "#4D3200"
|
|
38
|
+
accent-tint: "#F5ECD9"
|
|
39
|
+
field: "#141414"
|
|
40
|
+
on-field: "#FFFFFF"
|
|
41
|
+
positive: "#1E7A3F"
|
|
42
|
+
negative: "#B3261E"
|
|
43
|
+
series: ["#8A5A00", "#141414", "#525252", "#3B5F7F"]
|
|
44
|
+
|
|
45
|
+
ramp: reading
|
|
46
|
+
hero: false
|
|
47
|
+
type-voice:
|
|
48
|
+
title-tracking: -1
|
|
49
|
+
display-tracking: -2
|
|
50
|
+
latin-case: sentence
|
|
51
|
+
figures: proportional
|
|
52
|
+
|
|
53
|
+
density: 10
|
|
54
|
+
variance: 8
|
|
55
|
+
radius: 0
|
|
56
|
+
edge: fill
|
|
57
|
+
|
|
58
|
+
treatments: [side-rail, statement, top-plain-large, bottom-anchor, overlay]
|
|
59
|
+
role-defaults:
|
|
60
|
+
content: side-rail
|
|
61
|
+
data: top-plain-large
|
|
62
|
+
data-takeaway: side-rail
|
|
63
|
+
sequence: side-rail
|
|
64
|
+
image: side-rail
|
|
65
|
+
statement: statement
|
|
66
|
+
reference: side-rail
|
|
67
|
+
definition: side-rail
|
|
68
|
+
|
|
69
|
+
decoration: [column-hairlines, numeral, rail-fill, colour-field, caption-band]
|
|
70
|
+
layout-families: [asymmetric-feature, big-number, image-split, image-full, photo-grid, text-two-column, chart-insight, kpi-row, timeline, comparison, statement]
|
|
71
|
+
# Display slides: the device a type-led cover, a statement, a big number and a closing's next step
|
|
72
|
+
# are drawn with (see references/layout-families.md, "Display slides").
|
|
73
|
+
display:
|
|
74
|
+
# The offset rail stood empty beside a quote: the sentence takes two hairlines instead.
|
|
75
|
+
statement: rules
|
|
76
|
+
number: tint
|
|
77
|
+
closing: band
|
|
78
|
+
covers: [cover-split-image, cover-rail, cover-numeral]
|
|
79
|
+
sections: [section-numeral, section-rail]
|
|
80
|
+
closings: [closing-contact-split, closing-summary-list]
|
|
81
|
+
|
|
82
|
+
table:
|
|
83
|
+
style: open
|
|
84
|
+
header: none
|
|
85
|
+
header-ink: ink
|
|
86
|
+
rules: header-rule
|
|
87
|
+
banding: none
|
|
88
|
+
numbers: right-tabular
|
|
89
|
+
totals: bold
|
|
90
|
+
chart:
|
|
91
|
+
gridlines: none
|
|
92
|
+
labels: direct
|
|
93
|
+
highlight: accent-on-muted
|
|
94
|
+
annotation: on
|
|
95
|
+
image:
|
|
96
|
+
bleed: allowed
|
|
97
|
+
crop: allowed
|
|
98
|
+
frame: none
|
|
99
|
+
|
|
100
|
+
fill-order: [change-family, step-up, anchor-visual, distribute]
|
|
101
|
+
avoid:
|
|
102
|
+
- large numerals that are not real figures
|
|
103
|
+
- column hairlines through text
|
|
104
|
+
- two side-rail slides with the same split in a row
|
|
105
|
+
- centred body text
|
|
@@ -10,7 +10,7 @@ Fonts bundled in this skill (paths relative to this file):
|
|
|
10
10
|
- EMS single-stroke SVG fonts (EMSAllure, EMSFelix, EMSOsmotron, EMSReadability, EMSTech), fonts/stroke/*.svg: SIL OFL 1.1, licence at fonts/stroke/OFL.txt, credits at fonts/stroke/CREDITS
|
|
11
11
|
|
|
12
12
|
Fonts reused by path from the sibling lit-pptx skill:
|
|
13
|
-
-
|
|
13
|
+
- Pretendard Regular and Bold, ../lit-pptx/pretendard-font/public/static/Pretendard-{Regular,Bold}.otf: SIL OFL 1.1, licence at ../lit-pptx/pretendard-font/LICENSE.txt
|
|
14
14
|
|
|
15
15
|
Fonts fetched at pre-warm (litopencode motion-runtime install) into the motion runtime cache,
|
|
16
16
|
${XDG_CACHE_HOME:-~/.cache}/litopencode/motion-runtime/fonts-<pin hash>/, each verified against fonts/pins.json:
|
|
@@ -30,8 +30,8 @@ export function stageFonts(skillRoot, state, pins) {
|
|
|
30
30
|
const faces = [];
|
|
31
31
|
for (const [stretch, width] of [[75, "75%"], [100, "100%"], [125, "125%"]]) for (const weight of [400, 700, 900]) faces.push({ family: "Archivo", weight, stretch: width, file: path.join(skillRoot, "fonts", `Archivo-${stretch}-${weight}.ttf`) });
|
|
32
32
|
if (state.hangul === "lit-pptx") {
|
|
33
|
-
faces.push({ family: "
|
|
34
|
-
} else faces.push({ family: "
|
|
33
|
+
faces.push({ family: "Pretendard", weight: 400, file: path.resolve(skillRoot, pins.litPptxPair.Regular.path) }, { family: "Pretendard", weight: 700, file: path.resolve(skillRoot, pins.litPptxPair.Bold.path) });
|
|
34
|
+
} else faces.push({ family: "Pretendard", weight: 400, file: path.join(state.fontDir, "Pretendard-Regular.otf") }, { family: "Pretendard", weight: 700, file: path.join(state.fontDir, "Pretendard-Regular.otf") });
|
|
35
35
|
faces.push({ family: "VT323", weight: 400, file: path.join(skillRoot, "fonts", "VT323-Regular.ttf") });
|
|
36
36
|
faces.push({ family: "Silkscreen", weight: 400, file: path.join(skillRoot, "fonts", "Silkscreen-Regular.ttf") }, { family: "Silkscreen", weight: 700, file: path.join(skillRoot, "fonts", "Silkscreen-Bold.ttf") });
|
|
37
37
|
faces.push({ family: "MesloLGS NF", weight: 400, file: path.join(state.fontDir, "MesloLGS-NF-Regular.ttf") });
|
|
@@ -14,7 +14,7 @@ export const textureKinds = Object.freeze(["grid", "gradient", "particles", "pho
|
|
|
14
14
|
export const soundModes = Object.freeze(["generated", "supplied", "authored", "none"]);
|
|
15
15
|
export const soundPalettes = Object.freeze(["glass", "warm", "pulse", "air"]);
|
|
16
16
|
// The product's own verified faces: the families `/lit/fonts.css` serves and the type engine draws.
|
|
17
|
-
export const productFaces = Object.freeze(["Archivo", "
|
|
17
|
+
export const productFaces = Object.freeze(["Archivo", "Pretendard", "VT323", "Silkscreen", "MesloLGS NF", "Galmuri9"]);
|
|
18
18
|
const floorTenGenres = new Set(["announcement", "event", "explainer", "motion-graphics"]);
|
|
19
19
|
|
|
20
20
|
// NFC, lowercase, then no whitespace and no punctuation.
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
"Pretendard-LICENSE": { "url": "https://raw.githubusercontent.com/orioncactus/pretendard/v1.3.9/LICENSE", "sha256": "d31ddd9f2bed32fd7e302a205cf2380ba0de6529152d239ef99cfb6f261bfc04" }
|
|
14
14
|
},
|
|
15
15
|
"litPptxPair": {
|
|
16
|
-
"Regular": { "path": "../lit-pptx/pretendard-font/public/static/
|
|
17
|
-
"Bold": { "path": "../lit-pptx/pretendard-font/public/static/
|
|
16
|
+
"Regular": { "path": "../lit-pptx/pretendard-font/public/static/Pretendard-Regular.otf", "sha256": "3ffbacde6ab8411f1d2db54bb9b1f0b3ee2a738932033722cf0388c06aed1c93" },
|
|
17
|
+
"Bold": { "path": "../lit-pptx/pretendard-font/public/static/Pretendard-Bold.otf", "sha256": "2e91915fab54df71cc9598ebf608b2bdb54c6fe3c066ac61dff0bc44fca71cc7" },
|
|
18
18
|
"licence": "../lit-pptx/pretendard-font/LICENSE.txt"
|
|
19
19
|
},
|
|
20
20
|
"bundled": {
|
|
@@ -283,7 +283,7 @@ export function checkRun(dir, options = {}) {
|
|
|
283
283
|
const actionViolations = graphics.filter((g) => g.bbox && (g.bbox[0] < limits.actionSafeX - eps || g.bbox[1] < limits.actionSafeY - eps || g.bbox[2] > FRAME.width - limits.actionSafeX + eps || g.bbox[3] > FRAME.height - limits.actionSafeY + eps));
|
|
284
284
|
checks["MO-C-05"] = actionViolations.length ? fail(`${actionViolations[0].elementId} at frame ${actionViolations[0].frame} crosses the 95% action-safe border`) : pass(`${new Set(graphics.map((g) => g.elementId)).size} graphic elements inside action-safe`);
|
|
285
285
|
const trackingErrors = [], hangulErrors = [], outlineErrors = [], leadingErrors = [], measureErrors = [], measureNotes = [], breakErrors = [];
|
|
286
|
-
const pairFiles = ["
|
|
286
|
+
const pairFiles = ["Pretendard-Regular.otf", "Pretendard-Bold.otf", "Galmuri9.ttf"];
|
|
287
287
|
for (const box of boxes) {
|
|
288
288
|
for (const run of box.runs ?? []) {
|
|
289
289
|
if (run.script === "latin" && box.voice === "display" && run.trackingEm < limits.displayTrackingFloorEm - eps) trackingErrors.push(`"${box.text}" display tracking ${run.trackingEm}em @${box.frame}`);
|
|
@@ -41,7 +41,7 @@ is yours; the kit gives motion primitives, never ready-made scenes, objects or l
|
|
|
41
41
|
- The page is served from `http://lit.stage/` with no listening socket. Only files inside `stage/`,
|
|
42
42
|
the kit and the fonts are served; `..` and symlinks that leave the directory are refused.
|
|
43
43
|
- Fonts: `/lit/fonts.css` declares the product's faces with `font-display: block`: `Archivo` (widths
|
|
44
|
-
75 %, 100 %, 125 %; weights 400, 700, 900), `
|
|
44
|
+
75 %, 100 %, 125 %; weights 400, 700, 900), `Pretendard` (400, 700; Hangul), `VT323`,
|
|
45
45
|
`Silkscreen` (400, 700), `MesloLGS NF` and `Galmuri9`. Use only these; the QA checks the platform
|
|
46
46
|
font behind every copy line.
|
|
47
47
|
|
|
@@ -41,7 +41,7 @@ about payment systems, design systems and workflows that want nothing terminal-l
|
|
|
41
41
|
- Contrast facts: bone on ink is about 16:1. Teal on ink is about 3.8:1, so teal is a rule, a bar or
|
|
42
42
|
large type (32 px and up, or 25 px bold) only, never body copy.
|
|
43
43
|
- Voices: Archivo display (static width x weight instances; width steps are Latin-only), MesloLGS NF
|
|
44
|
-
for small machine annotations, the lit-pptx
|
|
44
|
+
for small machine annotations, the lit-pptx Pretendard pair for Hangul running text.
|
|
45
45
|
- Motion: `slam` (180 ms on the proven deceleration curve) lands a title on a downbeat, `hold`
|
|
46
46
|
keeps it still, `snap-cut` changes scene with no easing. Nothing bounces.
|
|
47
47
|
- Passes: `swiss-grid` hairline rules, then a low-strength Bayer `dither` as a print texture, then
|
|
@@ -72,7 +72,7 @@ about payment systems, design systems and workflows that want nothing terminal-l
|
|
|
72
72
|
- Palette: indigo `#0E1420` background, off-white `#E8ECEF` type, deep teal `#124559` and violet
|
|
73
73
|
`#4C3B6E` gradient stops, coral `#E07856` for one punctuation moment.
|
|
74
74
|
- Contrast facts: off-white clears 8:1 on every stop, so type sits directly on the flow.
|
|
75
|
-
- Voices: Archivo display used calmly (little width or weight motion),
|
|
75
|
+
- Voices: Archivo display used calmly (little width or weight motion), Pretendard for Hangul,
|
|
76
76
|
MesloLGS NF for small timestamps.
|
|
77
77
|
- Motion: `drift` (a slow in-out curve over seconds, matched to the flow speed) and a short
|
|
78
78
|
`surge-punch` tied to a gradient surge. No hold-then-snap rhythm as the default.
|
|
@@ -23,7 +23,7 @@ comparison with `request`, every quoted span (`"…"`, `“…”`, `'…'`, `
|
|
|
23
23
|
| `beats[]` | `{t0, t1, purpose, onScreen, motion, sound}` in order, each at least 1.2 s, covering 0 to `durationSec` with no gap over 0.25 s. At least as many beats as the genre's arc has stages; `type-led` has one beat per supplied line. |
|
|
24
24
|
| `subject` | `{name, source: user or invented, specifics[]}` with at least 2 concrete specifics: what it is or does, for whom, one distinctive detail. `source: user` only when the request names it. |
|
|
25
25
|
| `visualDevices[]` | `{kind, role: subject, support or texture, beats[]}`; `beats` lists beat indices (from 0). Kinds: `illustration`, `diagram`, `chart`, `icon`, `shape`, `path`, `mask`, `depth3d`, `particles`, `grid`, `gradient`, `photo-texture`. |
|
|
26
|
-
| `typePlan` | `{faces[], hierarchy, maxWordsOnScreen}`; faces come from `Archivo`, `
|
|
26
|
+
| `typePlan` | `{faces[], hierarchy, maxWordsOnScreen}`; faces come from `Archivo`, `Pretendard`, `VT323`, `Silkscreen`, `MesloLGS NF`, `Galmuri9`. Optional `showIndex: true` prints a shot index on the type path. |
|
|
27
27
|
| `palette[]` | 3-6 entries `{hex: "#rrggbb", role}`. |
|
|
28
28
|
| `sound` | `{mode, plan, ...}`. `mode` is `generated`, `supplied`, `authored` or `none`. |
|
|
29
29
|
| `copy` | `{source: user or invented, lines[]}`. |
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
| Voice | Latin | Hangul | Source |
|
|
6
6
|
| --- | --- | --- | --- |
|
|
7
|
-
| display | Archivo, static instances at widths 75/100/125 x weights 400/700/900 |
|
|
8
|
-
| body | Archivo 400/700 |
|
|
9
|
-
| machine | MesloLGS NF |
|
|
7
|
+
| display | Archivo, static instances at widths 75/100/125 x weights 400/700/900 | Pretendard Regular/Bold | Archivo instanced at development time from the pinned variable font (OFL); Hangul pair reused by path from `../lit-pptx` |
|
|
8
|
+
| body | Archivo 400/700 | Pretendard Regular/Bold | as above |
|
|
9
|
+
| machine | MesloLGS NF | Pretendard | Meslo fetched at pre-warm with its Apache-2.0 notice, the Apache text and the Vera/Arev notices |
|
|
10
10
|
| pixel | VT323 | Galmuri9 (outline build) | VT323 bundled; Galmuri9 fetched at pre-warm with its OFL text, unmodified |
|
|
11
11
|
| chrome | Silkscreen Regular/Bold (labels only) | none | bundled |
|
|
12
12
|
| stroke | EMS Allure, Felix, Osmotron, Readability, Tech (single-stroke SVG) | none | bundled with the OFL 1.1 text and a CREDITS file |
|