Files
agency/.pnpm-store/v3/files/b5/7f89af3bcce9103da5ffe5a73938dd4beb7116a39d3b1ac1d1899a457d0e0fab7d997b492716bc29a5f3ea2ce32b6c25ba48791ea5258c6aa43daaad00f6e2
hanzo-agent 5af6960b87 run project
Run: sess_f37640604ae254cb4d11dc6217f7b721
2026-09-30 00:04:56 +00:00

44 lines
2.2 KiB
Plaintext

/**
* The wordmarks — OUTLINED.
*
* "Hanzo AI" on hanzo.ai, "Hanzo ID" on hanzo.id, and so on: the wordmark is
* per-product, so it is a table rather than one asset.
*
* These are PATHS, not <text>. @hanzo/brand's wordmark.svg sets the name as an
* un-outlined <text> in Zen, which renders in whatever fallback face is around
* wherever Zen has not loaded — an OG card, a favicon, a PDF, a machine without
* the webfont. An outline needs no font at all.
*
* Cut from Zen at wght 606 — the house `medium` preset — and shaped through
* HarfBuzz, so the pair spacing is the font's own GPOS kerning rather than naive
* advances. Coordinates are font units at upem 1000, y-up: the box is the tight
* INK bounding box, so a caller sizes by what is drawn. Flip with
* `transform="scale(1,-1)"` or use getWordmarkSVG(), which does it for you.
*
* GENERATED by scripts/wordmarks.py. Re-run it when the list changes or the
* face is recut; do not hand-edit the paths. It is not part of `build` on
* purpose — outlines are static data, and making every build depend on Python
* and fontTools to reproduce bytes that never change is a cost with no payer.
*
* SIZE: this table is ~143 KB of path data. A browser bundle should import the
* ONE wordmark it needs — `@hanzo/logo/wordmark/hanzo-ai.svg` — rather than the
* table. The table is for Node: OG images, PDF, anything rendering server-side.
*/
export interface Wordmark {
/** SVG path data, font units, y-up. */
readonly d: string;
/** Tight ink box: [x, y, width, height]. */
readonly box: readonly [number, number, number, number];
}
export declare const WORDMARKS: Record<string, Wordmark>;
/** The names this package has outlines for. */
export declare const WORDMARK_NAMES: string[];
/**
* One wordmark as a standalone SVG, already flipped to screen coordinates.
*
* Returns null for a name with no outline rather than falling back to <text> —
* a silent fallback is how a page ends up setting the brand in Arial. Add the
* name to scripts/wordmarks.py and re-run it.
*/
export declare function getWordmarkSVG(name: string, fill?: string): string | null;
//# sourceMappingURL=wordmarks.d.ts.map