import { FontMetrics } from '../'; import f37BoltonMetrics from './f37-bolton'; import ttCommonsMetrics from './tt-commons-pro'; import barlowMetrics from '@capsizecss/metrics/barlow'; import cabinFontmetrics from '@capsizecss/metrics/cabin'; import openSansFontmetrics from '@capsizecss/metrics/openSans'; const fonts = { barlow: { fontFamily: `'Barlow'`, capsizeSettings: barlowMetrics, }, cabin: { fontFamily: `'Cabin'`, capsizeSettings: cabinFontmetrics, }, f37Bolton: { fontFamily: `'F37 Bolton'`, capsizeSettings: f37BoltonMetrics, }, openSans: { fontFamily: `'Open Sans'`, capsizeSettings: openSansFontmetrics, }, ttCommons: { fontFamily: `'tt-commons-pro'`, capsizeSettings: ttCommonsMetrics, }, } as const; export type FontCodeNames = keyof typeof fonts; export type FontFamilies = typeof fonts[FontCodeNames]['fontFamily']; const getFontMetrics: (fontDeclaration: string) => FontMetrics = (fontDeclaration) => { const fontName = fontDeclaration.split(',')[0]; // find the enum key if the fontName is one of our fonts const fontKey = Object.keys(fonts).find((key) => fonts[key as FontCodeNames].fontFamily === fontName); if (fontKey) return fonts[fontKey as FontCodeNames].capsizeSettings; return openSansFontmetrics; }; export default getFontMetrics;