Set typography scene
set_typography_scenePROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Compose a speech-cued mixed-font phrase in ONE revision, as editable native text. All words reserve their final positions: earlier words never jump or replay their entrance. Stable id replaces its group. lines is 1-6 rows, each {runs:[{text,at,font,italic,scale,color}],size?}. at is the REAL PROGRAM cue in seconds (not source or relative time); default=start. Runs stay until the shared end. Use build to accumulate at spoken cues; still displays everything. Pair Inter Display Bold with sparse Instrument Serif italic for meaningful contrast, not every word. A line's size and run scale multiply font_size (fraction of canvas short edge). box=[left,top,right,bottom] is a measured region; align left/center/right; motion settle/none. Keep the box inside the safe area (left/right .045-.955, top/bottom .04-.96). leading is row spacing 1.05-1.8 (rows never overlap; this is not caption leading). fit=auto (default) clamps out-of-range numbers and the box into the safe area, then scales font_size down until every row fits (at most 40%, never below 0.05; longer copy is rejected with the size that would fit), and reports each applied value; fit=strict rejects instead. A cue before start snaps to start (reported); no other cue time is moved. Every problem is listed in one reply. mute_captions=true replaces dialogue ONLY in these actual live windows; false for independent labels. Use real words and cue times from get_kept_transcript. Inspect the opening, build, settled phrase and face clearance. This is designed typography, not a substitute for selecting a good story.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| box | No | ||
| end | Yes | ||
| fit | No | ||
| align | No | ||
| color | No | ||
| lines | Yes | ||
| start | Yes | ||
| motion | No | ||
| reveal | No | ||
| leading | No | ||
| font_size | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| mute_captions | No |