in fusion-plugin-font-loader-react/src/generate-font-faces.js [12:51]
export function generateFontFaces(
fonts: AtomicFontsObjectType | StyledFontsObjectType
) {
// first sort atomic and styled font faces so font-faces will be well ordered
const atomicDescriptors = [];
const styledDescriptors = [];
Object.keys(fonts).forEach(fontName => {
const font = fonts[fontName];
if (Array.isArray(font)) {
styledDescriptors.push({fontName, font});
} else if (font) {
atomicDescriptors.push({fontName, font});
}
});
const atomicFaces = atomicDescriptors.map(
({fontName, font}) =>
`@font-face {
font-family: "${fontName}";
font-display: fallback;
src: ${String(asFontFaceSrc(font.urls))};
}`
);
const styledFaces = [];
styledDescriptors.forEach(({fontName, font}) =>
styledFaces.push(
...font.map(
fontInstance =>
`@font-face {
font-family: "${fontName}";
font-display: fallback;
src: ${asFontFaceSrc(fontInstance.urls).join(',\n')};
${asFontFaceStyles(fontInstance.styles).join('')}}`
)
)
);
return '\n' + atomicFaces.concat(styledFaces).join('\n');
}