computeFontFamiliesAssets() — astro Function Reference
Architecture documentation for the computeFontFamiliesAssets() function in compute-font-families-assets.ts from the astro codebase.
Entity Profile
Dependency Diagram
graph TD b443012f_2b06_9e0d_79c4_b47e3b752870["computeFontFamiliesAssets()"] cdee4da8_e0b1_abf7_3abf_ee643402e96d["compute-font-families-assets.ts"] b443012f_2b06_9e0d_79c4_b47e3b752870 -->|defined in| cdee4da8_e0b1_abf7_3abf_ee643402e96d style b443012f_2b06_9e0d_79c4_b47e3b752870 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/astro/src/assets/fonts/core/compute-font-families-assets.ts lines 14–116
export async function computeFontFamiliesAssets({
resolvedFamilies,
fontResolver,
logger,
bold,
defaults,
stringMatcher,
getOrCreateFontFamilyAssets,
collectFontAssetsFromFaces,
filterAndTransformFontFaces,
}: {
resolvedFamilies: Array<ResolvedFontFamily>;
fontResolver: FontResolver;
logger: Logger;
bold: (input: string) => string;
defaults: Defaults;
stringMatcher: StringMatcher;
getOrCreateFontFamilyAssets: Collaborator<
typeof _getOrCreateFontFamilyAssets,
'family' | 'fontFamilyAssetsByUniqueKey'
>;
filterAndTransformFontFaces: Collaborator<
typeof _filterAndTransformFontFaces,
'family' | 'fonts'
>;
collectFontAssetsFromFaces: Collaborator<
typeof _collectFontAssetsFromFaces,
'family' | 'fonts' | 'collectedFontsIds' | 'fontFilesIds'
>;
}) {
/**
* Holds family data by a key, to allow merging families
*/
const fontFamilyAssetsByUniqueKey: FontFamilyAssetsByUniqueKey = new Map();
/**
* Holds associations of id and original font file URLs, so they can be
* downloaded whenever the id is requested.
*/
const fontFileById: FontFileById = new Map();
// First loop: we try to merge families. This is useful for advanced cases, where eg. you want
// 500, 600, 700 as normal but also 500 as italic. That requires 2 families
for (const family of resolvedFamilies) {
const fontAssets = getOrCreateFontFamilyAssets({
fontFamilyAssetsByUniqueKey,
family,
});
const _fonts = await fontResolver.resolveFont({
familyName: family.name,
provider: family.provider,
// We do not merge the defaults, we only provide defaults as a fallback
weights: family.weights ?? defaults.weights,
styles: family.styles ?? defaults.styles,
subsets: family.subsets ?? defaults.subsets,
formats: family.formats ?? defaults.formats,
options: family.options,
});
if (_fonts.length === 0) {
logger.warn(
'assets',
`No data found for font family ${bold(family.name)}. Review your configuration`,
);
const availableFamilies = await fontResolver.listFonts({ provider: family.provider });
if (
availableFamilies &&
availableFamilies.length > 0 &&
!availableFamilies.includes(family.name)
) {
logger.warn(
'assets',
`${bold(family.name)} font family cannot be retrieved by the provider. Did you mean ${bold(stringMatcher.getClosestMatch(family.name, availableFamilies))}?`,
);
}
continue;
}
// The data returned by the provider contains original URLs. We proxy them.
// TODO: dedupe?
fontAssets.fonts.push(
...filterAndTransformFontFaces({
Domain
Subdomains
Source
Frequently Asked Questions
What does computeFontFamiliesAssets() do?
computeFontFamiliesAssets() is a function in the astro codebase, defined in packages/astro/src/assets/fonts/core/compute-font-families-assets.ts.
Where is computeFontFamiliesAssets() defined?
computeFontFamiliesAssets() is defined in packages/astro/src/assets/fonts/core/compute-font-families-assets.ts at line 14.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free