mirror of
https://github.com/penpot/penpot-exporter-figma-plugin.git
synced 2025-01-07 23:50:05 -05:00
d3c144e5e9
* color library * fixes * wip * wip * wip * wip * working * improvements * changeset * changeset * changeset & cleaning * changeset & cleaning * improvements * fixes * rebase
36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
import slugify from 'slugify';
|
|
|
|
import { Cache } from '@plugin/Cache';
|
|
import { translateFontVariantId } from '@plugin/translators/text/font/gfonts';
|
|
|
|
import { TextTypography } from '@ui/lib/types/shapes/textShape';
|
|
|
|
import { items as gfonts } from './gfonts.json';
|
|
import { GoogleFont } from './googleFont';
|
|
|
|
const fontsCache = new Cache<string, GoogleFont>({ max: 30 });
|
|
|
|
export const translateGoogleFont = (
|
|
fontName: FontName,
|
|
fontWeight: string
|
|
): Pick<TextTypography, 'fontId' | 'fontVariantId' | 'fontWeight'> | undefined => {
|
|
const googleFont = getGoogleFont(fontName);
|
|
|
|
if (googleFont === undefined) return;
|
|
|
|
return {
|
|
fontId: `gfont-${slugify(fontName.family.toLowerCase())}`,
|
|
fontVariantId: translateFontVariantId(googleFont, fontName, fontWeight),
|
|
fontWeight
|
|
};
|
|
};
|
|
|
|
export const isGoogleFont = (fontName: FontName): boolean => {
|
|
return getGoogleFont(fontName) !== undefined;
|
|
};
|
|
|
|
const getGoogleFont = (fontName: FontName): GoogleFont | undefined => {
|
|
return fontsCache.get(fontName.family, () =>
|
|
gfonts.find(font => font.family === fontName.family)
|
|
);
|
|
};
|