/** The RN string weights a style can carry. */ export type FontWeightKey = "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900"; /** * A weight cut at fixed optical sizes: each `opsz` value (in px, as the font's axis counts * it) to the family registered for that cut. For a display face with an optical-size axis * on a platform that cannot set the axis by size: the browser does (`font-optical-sizing: * auto`), iOS and Android draw a variable font at its default size, so an app registers * pinned cuts there and the kit picks the one nearest the text's size. */ export type OpticalFaces = Partial>; /** A registered typeface: one family for every weight, or a face (or optical cuts) per weight. */ export type FontFaces = string | Partial>; /** The families an app hands to the ThemeProvider. All optional: a missing face keeps the system default. */ export interface ThemeFonts { /** The text face (the brand's is `typeface.sans`). */ sans?: FontFaces; /** The monospace face, substituted wherever the kit asks for `MONO_FONT`. */ mono?: FontFaces; /** * The display face the web skins set their headings, titles and big numbers in (the * brand's is `typeface.display`). Omit it to set those in the `sans` face. */ display?: FontFaces; } /** * The brand faces by name: what the v4 design specifies and what an app is expected to * register. Instrument Sans is the interface face (400 to 700), Bricolage Grotesque the * display face of the web skins' headings and big numbers (300 to 800), and JetBrains Mono * the code face (400 to 600), each on Google Fonts and `@expo-google-fonts`. The iOS and * Android skins set their text in the platform's own face (SF Pro, Roboto) whatever is * registered. */ export declare const typeface: { readonly sans: "Instrument Sans"; readonly display: "Bricolage Grotesque"; readonly mono: "JetBrains Mono"; }; /** * Normalize an RN fontWeight (string, number, "bold"/"normal") to a weight key, * snapped to the hundreds the keys use (RN accepts e.g. "550" on some platforms). */ export declare function weightKey(weight: string | number | undefined): FontWeightKey; export interface ResolvedFace { fontFamily: string; /** True when the face already carries its weight and the style's fontWeight must go. */ dropWeight: boolean; } /** * Pick the registered face for a requested weight. A single family resolves as-is * (the platform picks the weight). A map resolves to the exact weight when it was * registered, else the nearest registered weight (ties go to the heavier face, so a * semibold request on a {400, 500, 700} registration reads as emphasis, not body). * Returns null when nothing was registered, so callers leave the style untouched. */ export declare function resolveFontFace(faces: FontFaces | undefined, weight: string | number | undefined, fontSize?: number): ResolvedFace | null; //# sourceMappingURL=fonts.d.ts.map