import { FillInFont, GenericFont, createFont, getVariableValue, isWeb } from '@tamagui/core'
const LINE_HEIGHT = 1.2
export const createSplineSansFont = (
font: Partial = {},
{
sizeLineHeight = (size) => size,
sizeSize = (size) => size,
}: {
sizeLineHeight?: (fontSize: number) => number
sizeSize?: (size: number) => number
} = {}
): FillInFont => {
// merge to allow individual overrides
const size = Object.fromEntries(
Object.entries({
...defaultSizes,
...font.size,
}).map(([k, v]) => [k, sizeSize(+v)])
)
return createFont({
family: isWeb
? 'var(--my-font), -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif'
: 'Spline Sans',
lineHeight: Object.fromEntries(
Object.entries(size).map(([k, v]) => [k, sizeLineHeight(getVariableValue(v) * LINE_HEIGHT)])
),
weight: {
4: '300',
},
letterSpacing: {
4: 0,
},
...(font as any),
size,
})
}
const defaultSizes = {
1: 11,
2: 12,
3: 13,
4: 14,
true: 14,
5: 16,
6: 18,
7: 20,
8: 23,
9: 30,
10: 46,
11: 55,
12: 62,
13: 72,
14: 92,
15: 114,
16: 134,
} as const