{"version":3,"file":"fontStringFromTextStyle.mjs","sources":["../../../../../src/scene/text/canvas/utils/fontStringFromTextStyle.ts"],"sourcesContent":["import type { TextStyle } from '../../TextStyle';\n\nconst genericFontFamilies = [\n    'serif',\n    'sans-serif',\n    'monospace',\n    'cursive',\n    'fantasy',\n    'system-ui',\n];\n\n/**\n * Generates a font style string to use for `TextMetrics.measureFont()`.\n * @param style\n * @returns Font style string, for passing to `TextMetrics.measureFont()`\n * @internal\n */\nexport function fontStringFromTextStyle(style: TextStyle): string\n{\n    // build canvas api font setting from individual components. Convert a numeric style.fontSize to px\n    const fontSizeString = (typeof style.fontSize === 'number') ? `${style.fontSize}px` : style.fontSize;\n\n    // Clean-up fontFamily property by quoting each font name\n    // this will support font names with spaces\n    let fontFamilies: string | string[] = style.fontFamily;\n\n    if (!Array.isArray(style.fontFamily))\n    {\n        fontFamilies = style.fontFamily.split(',');\n    }\n\n    for (let i = fontFamilies.length - 1; i >= 0; i--)\n    {\n        // Trim any extra white-space\n        let fontFamily = fontFamilies[i].trim();\n\n        // Check if font already contains strings\n        if (!(/([\\\"\\'])[^\\'\\\"]+\\1/).test(fontFamily) && !genericFontFamilies.includes(fontFamily))\n        {\n            fontFamily = `\"${fontFamily}\"`;\n        }\n        (fontFamilies as string[])[i] = fontFamily;\n    }\n\n    // eslint-disable-next-line max-len\n    return `${style.fontStyle} ${style.fontVariant} ${style.fontWeight} ${fontSizeString} ${(fontFamilies as string[]).join(',')}`;\n}\n"],"names":[],"mappings":";AAEA,MAAM,mBAAA,GAAsB;AAAA,EACxB,OAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA;AACJ,CAAA;AAQO,SAAS,wBAAwB,KAAA,EACxC;AAEI,EAAA,MAAM,cAAA,GAAkB,OAAO,KAAA,CAAM,QAAA,KAAa,WAAY,CAAA,EAAG,KAAA,CAAM,QAAQ,CAAA,EAAA,CAAA,GAAO,KAAA,CAAM,QAAA;AAI5F,EAAA,IAAI,eAAkC,KAAA,CAAM,UAAA;AAE5C,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,UAAU,CAAA,EACnC;AACI,IAAA,YAAA,GAAe,KAAA,CAAM,UAAA,CAAW,KAAA,CAAM,GAAG,CAAA;AAAA,EAC7C;AAEA,EAAA,KAAA,IAAS,IAAI,YAAA,CAAa,MAAA,GAAS,CAAA,EAAG,CAAA,IAAK,GAAG,CAAA,EAAA,EAC9C;AAEI,IAAA,IAAI,UAAA,GAAa,YAAA,CAAa,CAAC,CAAA,CAAE,IAAA,EAAK;AAGtC,IAAA,IAAI,CAAE,qBAAsB,IAAA,CAAK,UAAU,KAAK,CAAC,mBAAA,CAAoB,QAAA,CAAS,UAAU,CAAA,EACxF;AACI,MAAA,UAAA,GAAa,IAAI,UAAU,CAAA,CAAA,CAAA;AAAA,IAC/B;AACA,IAAC,YAAA,CAA0B,CAAC,CAAA,GAAI,UAAA;AAAA,EACpC;AAGA,EAAA,OAAO,CAAA,EAAG,KAAA,CAAM,SAAS,CAAA,CAAA,EAAI,MAAM,WAAW,CAAA,CAAA,EAAI,KAAA,CAAM,UAAU,IAAI,cAAc,CAAA,CAAA,EAAK,YAAA,CAA0B,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AAChI;;;;"}