0
Fork 0
mirror of https://github.com/penpot/penpot-exporter-figma-plugin.git synced 2025-01-07 23:50:05 -05:00
penpot-exporter-figma-plugin/plugin-src/translators/text/font/gfonts/translateGoogleFont.ts
Alex Sánchez d3c144e5e9
Text libraries (#185)
* color library

* fixes

* wip

* wip

* wip

* wip

* working

* improvements

* changeset

* changeset

* changeset & cleaning

* changeset & cleaning

* improvements

* fixes

* rebase
2024-06-25 16:08:59 +02:00

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)
);
};