Files
heygen-com--hyperframes/skills/embedded-captions/references/typography-presets.md
T
wehub-resource-sync 85453da49f
regression / regression-shards (style-16-prod style-9-prod style-17-prod iframe-render-compat variables-prod mp4-h265-sdr, shard-4) (push) Has been cancelled
regression / regression-shards (style-4-prod style-11-prod style-2-prod animejs-adapter typegpu-adapter parallel-capture-regression, shard-5) (push) Has been cancelled
regression / regression-shards (style-7-prod style-8-prod style-10-prod css-spinner-render-compat webm-transparency mp4-h264-sdr webm-vp9, shard-3) (push) Has been cancelled
regression / regression-shards (sub-composition-video style-18-prod raf-ball-render-compat font-variant-numeric sub-comp-t0 sub-comp-id-selector, shard-7) (push) Has been cancelled
Windows render verification / Detect changes (push) Has been cancelled
Windows render verification / Preflight (lint + format) (push) Has been cancelled
Windows render verification / Render on windows-latest (push) Has been cancelled
Windows render verification / Tests on windows-latest (push) Has been cancelled
CI / Detect changes (push) Has been cancelled
CI / Build (push) Has been cancelled
CI / Lint (push) Has been cancelled
CI / Fallow audit (push) Has been cancelled
CI / Format (push) Has been cancelled
CI / Typecheck (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Producer: integration tests (push) Has been cancelled
CI / Producer: unit tests (push) Has been cancelled
CI / File size check (push) Has been cancelled
CI / Test: skills (push) Has been cancelled
CI / Skills: manifest in sync (push) Has been cancelled
CI / CLI: npx shim (macos-latest) (push) Has been cancelled
CI / CLI: npx shim (ubuntu-latest) (push) Has been cancelled
CI / CLI: npx shim (windows-latest) (push) Has been cancelled
CI / SDK: unit + contract + smoke (push) Has been cancelled
CI / Test: runtime contract (push) Has been cancelled
CI / Studio: load smoke (push) Has been cancelled
CI / Smoke: global install (push) Has been cancelled
CI / CLI smoke (required) (push) Has been cancelled
CI / Semantic PR title (push) Has been cancelled
Player perf / Detect changes (push) Has been cancelled
Player perf / Preflight (lint + format) (push) Has been cancelled
Player perf / player-perf (push) Has been cancelled
Player perf / Perf: drift (push) Has been cancelled
Player perf / Perf: fps (push) Has been cancelled
Player perf / Perf: parity (push) Has been cancelled
Player perf / Perf: scrub (push) Has been cancelled
Player perf / Perf: load (push) Has been cancelled
preview-regression / Detect changes (push) Has been cancelled
preview-regression / Preflight (lint + format) (push) Has been cancelled
preview-regression / Preview parity (push) Has been cancelled
preview-regression / preview-regression (push) Has been cancelled
regression / regression (push) Has been cancelled
regression / Detect changes (push) Has been cancelled
regression / Preflight (lint + format) (push) Has been cancelled
regression / regression-shards (hdr-regression style-5-prod style-3-prod mov-prores, shard-1) (push) Has been cancelled
regression / regression-shards (overlay-montage-prod style-12-prod chat missing-host-comp-id png-sequence portrait-edge-bleed, shard-6) (push) Has been cancelled
regression / regression-shards (style-13-prod style-6-prod vignelli-stacking gsap-letters-render-compat audio-mux-parity, shard-8) (push) Has been cancelled
regression / regression-shards (style-15-prod hdr-hlg-regression style-1-prod many-cuts vfr-screen-recording render-symlinked-assets, shard-2) (push) Has been cancelled
CodeQL / Analyze (actions) (push) Has been cancelled
CodeQL / Analyze (javascript-typescript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Docs / Validate docs (push) Has been cancelled
Sync skills to ClawHub / Publish changed skills (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:58:35 +08:00

4.6 KiB
Raw Blame History

Typography Presets

Five named styles corresponding to the cap-* CSS classes. Pick one per caption group in plan.json based on the line's semantic role.

style CSS Use when
intro 66px italic 500 First line, filler ("You know…", "So…"), contemplative openings. Low visual weight.
phrase 78px upright 600 Main statement clauses. Default for most lines.
emph 92px upright 800 Lines with emotional peak or key achievement ("I've achieved incredible things").
dream 82px italic 700 Aspirational / "was dreaming of…" style lines. Italic signals memory/imagination.
crown 140px upright 900 uppercase Only for the climax line. Used in center-stage crown-plane. Maximum one per composition — ideally the last caption.

Tone field

Independent of style, each group has tone: soft or present.

  • soft — gentle fade + 8px y-drift entrance, power2.out ease. Feels floaty, nostalgic. Use for memory, intro, dream.
  • present — snappy 6px y + 1.04 scale pop, power3.out, transformOrigin center. Feels assertive, in-the-moment. Use for emphasis and crown.

Picking automatically

Scan each group's words:

  1. Does it contain superlatives (incredible, best, only, never, always) or brand/proper nouns? → emph + present
  2. Does it start with discourse markers (you know, so, well, look) or is it short (≤3 words)? → intro + soft
  3. Does it reference dreams, hopes, memory, past tense verbs like "was dreaming"? → dream + soft
  4. Is it the final sentence-clinching line and feels like a title/headline? → crown + present (only one per video)
  5. Otherwise → phrase + (match the group's neighbors' tone; default soft)

Font-size scales with column width

The .cap-* defaults in each template are tuned for a ~560px column (the original champion composition). When the caption plane is wider than that, the fonts feel underweight — too much negative space around text. Scale up accordingly.

Plane width intro phrase emph dream crown (centered, full-frame) crown (clean-zone only)
460-580 px (tight) 66 78 92 82 140 n/a
600-760 px (medium) 78 108 128 100 220 118
780+ px (wide) 90 128 150 116 260 140

Notes:

  • Crown sizes assume landscape (1920×1080). For portrait 1080×1920, divide all crown sizes by 1.5.
  • "full-frame crown" = centered, designed to span 0.8+ × frame_width and cross the subject's body. Use only when layout-heuristics.md § Crown placement conditions pass.
  • "clean-zone only crown" = crown positioned inside one clean zone, smaller font, tail letters lightly touch subject. Fallback when centered crown would eat too much.

Also: if a plane's rotateY is non-trivial (say > 8°), effective visible width shrinks. Scale fonts up ~10% to compensate.

What NOT to do

  • Don't use more than one crown per render. The whole point is that it's a singular payoff.
  • Don't use emph on more than ~30% of groups. Emphasis loses meaning when everything is emphasized.
  • Don't pick intro for the main content just because the words are short. "I won" (2 words) is emph or crown, not intro.
  • Don't mix soft and present alternately for no reason. Tone should follow the story arc: soft opening → present build → emph peak → (optional crown climax).

When scene luminance affects color choice

The default color is warm bone-white (#fff5df). Adjust in the template CSS:

  • Wall is mostly warm wood / tan → keep default, or shift cooler #e8f0ff
  • Wall is cool blue / tech-lab → push warmer #fff0c0
  • Wall has strong primary color → desaturate default, luminance first

These adjustments happen in the HTML template, not plan.json. If you repeatedly need different palettes, make new template variants.