game-maker / suite (push) Successful in 9m10s
A font asset holds a file and nothing else, the twin of a texture: the server keeps it
content-addressed under data/fonts/{sha256}.{ext}, with the format read from the file's own
four-byte signature (finfo reports fonts inconsistently across libmagic versions). A text
wears one through its ordinary Font property, so overrides, reset, undo and the Properties
node come for free; no font means the editor's own typeface.
The picker lists everything the server holds and renders each row in the face it offers.
The family name is gm-font-<hash16>, never the name inside the file, so two "Regular" cannot
collide. WorldViewport.syncText is the single place that draws it, which covers scene, game
preview and play at once.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
9 lines
275 B
TypeScript
9 lines
275 B
TypeScript
import { type PropertyBag, textOf } from '../model/Properties';
|
|
|
|
/** The text property naming the font asset it wears; `''` is the editor's own typeface. */
|
|
export const FONT_KEY = 'font';
|
|
|
|
export function fontOf(bag: PropertyBag): string {
|
|
return textOf(bag[FONT_KEY]);
|
|
}
|