mirror of
https://github.com/hanzoai/agency.git
synced 2026-11-02 19:13:28 +00:00
44 lines
2.2 KiB
Plaintext
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 |