diff --git a/api/types.ts b/api/types.ts index c60db8c6b..58ba78d7b 100644 --- a/api/types.ts +++ b/api/types.ts @@ -3,16 +3,26 @@ import type { VanillaFrameworkConfig, } from "@grida/builder-config"; import { LICENSE_CE } from "./license"; +import type { TPlugin } from "@code-plugin/core"; export type FigmaNodeInput = | string | { url: string; version: string } | { filekey: string; node: string; version: string }; -export interface CodeRequest { +type DebugOptions = { + /** + * if true, the response will be a vanilla html without other data. + * @default false + */ + raw?: boolean; +}; + +export type CodeRequest = DebugOptions & { figma: FigmaNodeInput; framework: Partial; -} + plugins?: TPlugin[]; +}; export type CodeResponse = FigmaToVanillaResponse; diff --git a/code/index.ts b/code/index.ts index 91fd77601..720b03b40 100644 --- a/code/index.ts +++ b/code/index.ts @@ -11,11 +11,13 @@ import type { FrameworkConfig } from "@grida/builder-config"; import { defaultConfigByFramework } from "@grida/builder-config-preset"; import { Language } from "@grida/builder-platform-types"; import { formatCode } from "dart-style"; +import type { TPlugin } from "@code-plugin/core"; export async function code({ auth, uri, framework, + plugins, }: { auth: | { @@ -24,6 +26,7 @@ export async function code({ | { accessToken: string }; uri: string; framework: FrameworkConfig; + plugins?: TPlugin[]; }) { // @@ -59,6 +62,7 @@ export async function code({ ...framework, }, asset_config: { asset_repository: MainImageRepository.instance }, + plugins, }); const src = postproc_src( diff --git a/editor/next.config.js b/editor/next.config.js index e18ca9de2..5377fcd29 100644 --- a/editor/next.config.js +++ b/editor/next.config.js @@ -41,6 +41,11 @@ const packages = [ "@code-features/documentation", "@code-features/component", "@code-features/flags", + "@code-features/fonts", + // ----------------------------- + // plugins + "@code-plugin/core", + "@code-plugin/text-fit", // ----------------------------- // reflect-ui ui framework diff --git a/editor/pages/api/v1/code/index.ts b/editor/pages/api/v1/code/index.ts index c4d260234..0066ceb22 100644 --- a/editor/pages/api/v1/code/index.ts +++ b/editor/pages/api/v1/code/index.ts @@ -26,7 +26,12 @@ export default async function handler(req, res) { const figma_access_token_type: FigmaAccessTokenType = figma_access_token.startsWith("figd") ? "fpat" : "fat"; - const { figma: figmaInput, framework } = req.body as CodeRequest; + const { + figma: figmaInput, + framework, + plugins, + raw, + } = req.body as CodeRequest; assert(typeof figmaInput === "string", "`body.figma` must be a string"); @@ -34,6 +39,7 @@ export default async function handler(req, res) { const coderes = await code({ uri: figmaInput, framework: framework as FrameworkConfig, + plugins, auth: figma_access_token_type === "fat" ? { @@ -44,9 +50,7 @@ export default async function handler(req, res) { }, }); - const { src: spchar_src, figma, target } = coderes; - - const src = replaceSpecialChars(spchar_src); + const { src, figma, target } = coderes; const response: FigmaToVanillaResponse = { figma: { @@ -82,7 +86,12 @@ export default async function handler(req, res) { warnings: [], }; - res.status(200).json(response); + if (raw) { + // if debug option raw is set, return raw html + res.status(200).send(src); + } else { + res.status(200).json(response); + } } catch (e) { res.status(500).json({ message: e.message, @@ -98,7 +107,3 @@ export default async function handler(req, res) { }); } } - -function replaceSpecialChars(input: string): string { - return input.replace(/\\t/g, "\t").replace(/\\n/g, "\n"); -} diff --git a/packages/builder-config/configure/index.ts b/packages/builder-config/configure/index.ts index c59252cec..d769fb8d1 100644 --- a/packages/builder-config/configure/index.ts +++ b/packages/builder-config/configure/index.ts @@ -1,3 +1,4 @@ export * from "./framework-config"; export * from "./target-build-platform"; export * from "./build-config"; +export * from "./plugin-config"; diff --git a/packages/builder-config/configure/plugin-config.ts b/packages/builder-config/configure/plugin-config.ts new file mode 100644 index 000000000..730cd88e5 --- /dev/null +++ b/packages/builder-config/configure/plugin-config.ts @@ -0,0 +1,2 @@ +import type { TPlugin } from "@code-plugin/core"; +export type Plugins = ReadonlyArray; diff --git a/packages/builder-web-core/k/index.ts b/packages/builder-web-core/k/index.ts index 66b64b367..b968c6086 100644 --- a/packages/builder-web-core/k/index.ts +++ b/packages/builder-web-core/k/index.ts @@ -8,7 +8,7 @@ export const image_smallest_fallback_source_base_64 = export const user_agent_stylesheet_override_default = { margin: "0px", - "font-family": `Helvetica, "Helvetica Neue", Roboto, Noto, Arial, sans-serif`, + // we don't set default font-family here, because we don't want to add !important to every other font-family. }; export const default_generic_fallback_font_family = "sans-serif"; diff --git a/packages/builder-web-vanilla/export-inline-css-html-file/index.ts b/packages/builder-web-vanilla/export-inline-css-html-file/index.ts index 35302f6a5..1fe58a072 100644 --- a/packages/builder-web-vanilla/export-inline-css-html-file/index.ts +++ b/packages/builder-web-vanilla/export-inline-css-html-file/index.ts @@ -19,6 +19,9 @@ export function export_vanilla_preview_source( const builder = new HtmlIdCssModuleBuilder({ entry: widget, config: { + fonts: { + services: ["system", "fonts.google.com"], + }, ...config, // required (for safety, for consistant preview) disable_all_optimizations: true, diff --git a/packages/builder-web-vanilla/html-css-id-widget/html-css-id-module-builder.ts b/packages/builder-web-vanilla/html-css-id-widget/html-css-id-module-builder.ts index ddc75e528..d26314a04 100644 --- a/packages/builder-web-vanilla/html-css-id-widget/html-css-id-module-builder.ts +++ b/packages/builder-web-vanilla/html-css-id-widget/html-css-id-module-builder.ts @@ -24,6 +24,9 @@ import { } from "coli"; import { Framework } from "@grida/builder-platform-types"; import { stringfy as stringfyHtmlMeta, HtmlMeta } from "../html-meta"; +import { TFontService } from "@code-features/fonts"; +import { htmlFontsMiddleware } from "./html-fonts-middleware"; +import type { Plugin } from "@code-plugin/core"; interface CssDeclaration { key: { @@ -36,6 +39,10 @@ interface CssDeclaration { export type HtmlModuleBuilderConfig = { disable_all_optimizations?: boolean; additional_css_declarations?: CssDeclaration[]; + fonts?: { + services: ReadonlyArray; + }; + plugins?: ReadonlyArray; }; export class HtmlIdCssModuleBuilder { @@ -44,6 +51,7 @@ export class HtmlIdCssModuleBuilder { private readonly stylesMapper: StylesConfigMapBuilder; private readonly stylesRepository: StylesRepository; private readonly namer: ScopedVariableNamer; + private readonly _head: string[] = []; readonly config: HtmlModuleBuilderConfig; constructor({ @@ -77,6 +85,24 @@ export class HtmlIdCssModuleBuilder { : // ALWAYS USE EXACT OVERLAPPING STYLE REDUCTION STRATEGY FOR PREVIEW VANILLA create_duplication_reduction_map ); + + if (config.fonts) { + htmlFontsMiddleware(this, config.fonts.services); + } + } + + private afterVanillaCSSBundle() { + this.config.plugins?.forEach((p) => { + p.apply({ + hooks: { + afterVanillaCSSBundle: { + tap: (name, fn) => { + fn({ builder: this }); + }, + }, + }, + }); + }); } private styledConfig( @@ -98,6 +124,21 @@ export class HtmlIdCssModuleBuilder { ); } + /** + * adds literal string to tag + */ + head(...items: string[]) { + this._head.push(...items); + return this; + } + + /** + * build the part head, excluding styles + */ + partHead(): string { + return this._head.join("\n"); + } + partStyles(): string { const css_declarations: CssDeclaration[] = []; @@ -180,8 +221,14 @@ export class HtmlIdCssModuleBuilder { indentation: "\t", }); + const strfied_css = this.partStyles(); + + // hook TODO: (execution matters due to textfit plugin contributes to head. this is a design flaw. needs to be fixed.) + this.afterVanillaCSSBundle(); + const final = html_render({ - css: this.partStyles(), + head: this.partHead(), + css: strfied_css, body: strfied_body, }); @@ -224,7 +271,15 @@ function injectIdToJsx(jsx: JSXElementLike, id: string) { } } -const html_render = ({ css, body }: { css: string; body: string }) => { +const html_render = ({ + head, + css, + body, +}: { + head: string; + css: string; + body: string; +}) => { // TODO: fixme - this is inacurate (the first line won't be indented) const indenter = (s: string, tabs: number = 0) => s.replace(/\n/g, "\n" + "\t".repeat(tabs)); @@ -238,6 +293,7 @@ ${indenter( }), 2 )} +${indenter(head, 2)} diff --git a/packages/builder-web-vanilla/html-css-id-widget/html-fonts-middleware.ts b/packages/builder-web-vanilla/html-css-id-widget/html-fonts-middleware.ts new file mode 100644 index 000000000..e3fa93116 --- /dev/null +++ b/packages/builder-web-vanilla/html-css-id-widget/html-fonts-middleware.ts @@ -0,0 +1,62 @@ +import { TFontService, fonts } from "@code-features/fonts"; +import type { HtmlIdCssModuleBuilder } from "./html-css-id-module-builder"; + +export function htmlFontsMiddleware( + builder: HtmlIdCssModuleBuilder, + services: ReadonlyArray +) { + try { + // TODO: we need better way to get used fonts. + const styles = builder.partStyles(); + + // parse lines with "font-family: ..." + const matches = styles.match(/font-family:.*?;/g); + if (!matches) { + return; + } else { + const font_families = matches + .map((m) => { + return m + .replace(/font-family:/, "") + .replace(/;/, "") + .trim() + .split(",") + .map((f) => f.trim().replace(/"/g, "").replace(/'/g, "").trim()); + }) + .flat() + .filter((f) => f.length > 0) + .filter( + (f) => + f !== "inherit" && + f !== "initial" && + f !== "unset" && + f !== "serif" && + f !== "sans-serif" && + f !== "monospace" && + f !== "cursive" && + f !== "fantasy" && + f !== "system-ui" + ); + + const resolved = fonts({ + fonts: font_families, + resolution: "fonts.googleapis.com/css2", + services, + }); + + // create tag for each font, which is going to be added to tag. + const links = [ + ``, + ``, + ...Object.keys(resolved).map((f) => { + const { urls } = resolved[f]; + return ``; + }), + ]; + + builder.head(...links); + } + } catch (e) { + console.error(`error while resolving fonts from [${services.join(",")}]`); + } +} diff --git a/packages/designto-code/plugin/index.ts b/packages/designto-code/plugin/index.ts new file mode 100644 index 000000000..80ebd7673 --- /dev/null +++ b/packages/designto-code/plugin/index.ts @@ -0,0 +1,16 @@ +import VanillaTextFitPlugin from "@code-plugin/text-fit"; +import { TPlugin, composePlugin as composeAnyPlugin } from "@code-plugin/core"; + +const BUILTIN_PLUGINS = { + "@code-plugin/text-fit": VanillaTextFitPlugin, +}; + +function resolver(name, params) { + if (name in BUILTIN_PLUGINS) { + return new BUILTIN_PLUGINS[name](params); + } +} + +export function composePlugin(input: TPlugin) { + return composeAnyPlugin(input, resolver); +} diff --git a/packages/designto-code/plugin/readme.md b/packages/designto-code/plugin/readme.md new file mode 100644 index 000000000..e17309e29 --- /dev/null +++ b/packages/designto-code/plugin/readme.md @@ -0,0 +1,3 @@ +# Builtin plugins composition + +- `@code-plugin/text-fit` diff --git a/packages/designto-code/universal/design-to-code.ts b/packages/designto-code/universal/design-to-code.ts index bc7f32a1b..a7bb645cd 100644 --- a/packages/designto-code/universal/design-to-code.ts +++ b/packages/designto-code/universal/design-to-code.ts @@ -23,6 +23,7 @@ import { // import { reusable } from "@code-features/component"; import assert from "assert"; import { debug, debugIf } from "@designto/debugger"; +import { composePlugin } from "../plugin"; type CustomAssetResolver = ({ keys, @@ -56,15 +57,37 @@ export type DesignToCodeInput = { framework: config.FrameworkConfig; build_config?: config.BuildConfiguration; asset_config: AssetsConfig; + plugins?: config.Plugins; }; +const K_PLUGIN_SUPPORTED_FRAMEWORKS: Array = [ + "vanilla", + "preview", +]; + +function assert_plugin_supported_framework( + framework: FrameworkConfig["framework"], + plugins: config.Plugins +) { + if (plugins?.length) { + assert( + K_PLUGIN_SUPPORTED_FRAMEWORKS.includes(framework), + "plugins are not supported for this framework" + ); + } +} + export async function designToCode({ input, framework: framework_config, asset_config, build_config = config.default_build_configuration, + plugins, }: DesignToCodeInput): Promise { assert(input, "input is required"); + + assert_plugin_supported_framework(framework_config["framework"], plugins); + debugIf( // framework_config.framework !== "vanilla", false, @@ -136,6 +159,7 @@ export async function designToCode({ build_config: build_config, vanilla_config: framework_config, asset_config: asset_config, + plugins, })), ..._extend_result, }; @@ -146,6 +170,7 @@ export async function designToCode({ build_config: build_config, vanilla_config: framework_config, asset_config: asset_config, + plugins, })), ..._extend_result, }; @@ -383,6 +408,7 @@ export async function designToVanillaPreview({ asset_config, vanilla_config, build_config, + plugins, }: { input: { widget: Widget }; /** @@ -391,12 +417,18 @@ export async function designToVanillaPreview({ build_config: config.BuildConfiguration; vanilla_config: config.VanillaPreviewFrameworkConfig; asset_config?: AssetsConfig; + plugins?: config.Plugins; }): Promise { const vanillawidget = toVanilla.buildVanillaWidget( input.widget, vanilla_config as any as config.VanillaFrameworkConfig ); - const res = toVanilla.buildVanillaPreviewFile(vanillawidget, vanilla_config); + + const res = toVanilla.buildVanillaPreviewFile( + vanillawidget, + vanilla_config, + plugins?.map(composePlugin) + ); // ------------------------------------------------------------------------ // finilize temporary assets @@ -436,6 +468,7 @@ export async function designToVanilla({ asset_config, vanilla_config, build_config, + plugins, }: { input: { widget: Widget }; /** @@ -444,12 +477,18 @@ export async function designToVanilla({ build_config: config.BuildConfiguration; vanilla_config: config.VanillaFrameworkConfig; asset_config?: AssetsConfig; + plugins?: config.Plugins; }): Promise { const vanillawidget = toVanilla.buildVanillaWidget( input.widget, vanilla_config ); - const res = toVanilla.buildVanillaFile(vanillawidget, vanilla_config); + + const res = toVanilla.buildVanillaFile( + vanillawidget, + vanilla_config, + plugins?.map(composePlugin) + ); // ------------------------------------------------------------------------ // finilize temporary assets diff --git a/packages/designto-vanilla/index.ts b/packages/designto-vanilla/index.ts index 56c618722..a9619520c 100644 --- a/packages/designto-vanilla/index.ts +++ b/packages/designto-vanilla/index.ts @@ -6,16 +6,19 @@ import { export_vanilla_preview_source, } from "@web-builder/vanilla"; import { JsxWidget } from "@web-builder/core"; +import type { Plugin } from "@code-plugin/core"; export function buildVanillaFile( widget: JsxWidget, - config: config.VanillaFrameworkConfig + config: config.VanillaFrameworkConfig, + plugins?: ReadonlyArray ): config.VanillaComponentOutput { if (!widget) { throw "A valid reflect widget manifest should be passed as an input. none was passed."; } const html = export_inlined_css_html_file(widget, { + plugins, additional_css_declarations: config.additional_css_declaration?.declarations, }); @@ -37,13 +40,15 @@ export function buildVanillaFile( export function buildVanillaPreviewFile( widget: JsxWidget, - config: prvconfig.VanillaPreviewFrameworkConfig + config: prvconfig.VanillaPreviewFrameworkConfig, + plugins?: ReadonlyArray ): config.VanillaComponentOutput { if (!widget) { throw "A valid reflect widget manifest should be passed as an input. none was passed."; } const html = export_vanilla_preview_source(widget, { + plugins, additional_css_declarations: config.additional_css_declaration?.declarations, }); diff --git a/packages/designto-web/tokens-to-web-widget/compose-wrapped-with-positioned.ts b/packages/designto-web/tokens-to-web-widget/compose-wrapped-with-positioned.ts index 2cc495e60..5a35d9d9a 100644 --- a/packages/designto-web/tokens-to-web-widget/compose-wrapped-with-positioned.ts +++ b/packages/designto-web/tokens-to-web-widget/compose-wrapped-with-positioned.ts @@ -8,10 +8,13 @@ export function compose_wrapped_with_positioned( ) { const child = child_composer(widget.child); // ------------------------------------- + // TODO: check the version history and investigate why this was added // override w & h with position provided w/h child.extendStyle({ - width: css.length(widget.width), - height: css.length(widget.height), + // unless it was cleared intentionally + width: child.width === undefined ? undefined : css.length(widget.width), + // unless it was cleared intentionally + height: child.height === undefined ? undefined : css.length(widget.height), }); // ------------------------------------- child.constraint = { diff --git a/packages/plugin-core/README.md b/packages/plugin-core/README.md new file mode 100644 index 000000000..cf21f14e2 --- /dev/null +++ b/packages/plugin-core/README.md @@ -0,0 +1,15 @@ +# Plugin Core - `@code-plugin/core` + +Official code plugin core for extending Grida Code's functionality + +## Usage + +```ts +import Plugin from "@code-plugin/core"; + +export default class MyPlugin extends Plugin { + apply(context) { + // ... + } +} +``` diff --git a/packages/plugin-core/composer.ts b/packages/plugin-core/composer.ts new file mode 100644 index 000000000..08e42b5a5 --- /dev/null +++ b/packages/plugin-core/composer.ts @@ -0,0 +1,57 @@ +import type { Plugin } from "./plugin"; +import type { TPlugin } from "./types"; + +type Resolver = (name: string, params: object) => Plugin; + +export function composePlugin(input: TPlugin, resolver?: Resolver): Plugin { + if (typeof input === "object") { + // to avoid circular dependency, we don't use `instanceof` here. + // need better inspection. + if ("apply" in input) { + return input; + } + } + + if (typeof input === "string") { + return composePluginByName(input, resolver); + } + + if (Array.isArray(input)) { + const size = input.length; + switch (size) { + case 1: { + return composePluginByName(input[0], resolver); + } + case 2: { + return composePluginByNameAndParams(input[0], input[1], resolver); + } + default: { + throw new Error("invalid plugin"); + } + } + } + + // TODO: support other seeding options + throw new Error("invalid plugin"); +} + +function composePluginByName(name: string, resolver?: Resolver): Plugin { + return composePluginByNameAndParams(name, {}, resolver); +} + +function composePluginByNameAndParams( + name: string, + params: object, + resolver?: Resolver +): Plugin { + if (resolver) { + return resolver(name, params); + } + + try { + const cls = require(name).default; + return new cls(params); + } catch (e) { + throw new Error(`plugin not found: ${name}`); + } +} diff --git a/packages/plugin-core/index.ts b/packages/plugin-core/index.ts new file mode 100644 index 000000000..e5e8d9aa0 --- /dev/null +++ b/packages/plugin-core/index.ts @@ -0,0 +1,6 @@ +import { Plugin } from "./plugin"; + +export { composePlugin } from "./composer"; +export * from "./types"; +export default Plugin; +export type { Plugin }; diff --git a/packages/plugin-core/package.json b/packages/plugin-core/package.json new file mode 100644 index 000000000..69b91f584 --- /dev/null +++ b/packages/plugin-core/package.json @@ -0,0 +1,4 @@ +{ + "name": "@code-plugin/core", + "version": "0.0.0" +} diff --git a/packages/plugin-core/plugin.ts b/packages/plugin-core/plugin.ts new file mode 100644 index 000000000..eff6f5d58 --- /dev/null +++ b/packages/plugin-core/plugin.ts @@ -0,0 +1,17 @@ +import { Framework } from "@grida/builder-platform-types"; +import type { CodeLifeCycleContext } from "./types"; + +export interface IPlugin { + framework: Framework | "*"; + apply(context: CodeLifeCycleContext): void; +} + +export abstract class Plugin implements IPlugin { + framework: Framework | "*"; + + constructor(args: { framework: Framework | "*" }) { + this.framework = args.framework; + } + + abstract apply(context: any): void; +} diff --git a/packages/plugin-core/presets/.gitkeep b/packages/plugin-core/presets/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/packages/plugin-core/types.ts b/packages/plugin-core/types.ts new file mode 100644 index 000000000..e1522cf27 --- /dev/null +++ b/packages/plugin-core/types.ts @@ -0,0 +1,29 @@ +import type { Plugin, IPlugin } from "./plugin"; + +export type PluginHook = { + tap: (name: string, fn: (config: any) => void) => void; +}; + +export type CodeLifeCycleContext = { + hooks: { + afterVanillaCSSBundle: PluginHook; + }; +}; + +export type UseCodePluginByPresetNameSpec = string; + +export type UseCodePluginByPresetNameAndParamsForInlineJsonUseSpec< + K extends string, + P extends object +> = [K, P]; + +export type UseCodePluginByPresetNameForInlineJsonUseSpec< + K extends string = string +> = [K]; + +export type TPlugin = + | UseCodePluginByPresetNameSpec + | UseCodePluginByPresetNameAndParamsForInlineJsonUseSpec + | UseCodePluginByPresetNameForInlineJsonUseSpec + | IPlugin + | Plugin; diff --git a/packages/plugin-text-auto-resize-vanilla-textfit/README.md b/packages/plugin-text-auto-resize-vanilla-textfit/README.md new file mode 100644 index 000000000..9872c23c5 --- /dev/null +++ b/packages/plugin-text-auto-resize-vanilla-textfit/README.md @@ -0,0 +1,107 @@ +# `@code-plugins/vanilla-textfit` + +## Official code plugin for text elements to auto resize to fit the container, using [textfit](https://github.com/STRML/textFit) + +- **jsdelivr** - https://www.jsdelivr.com/package/npm/textfit +- **npm** - https://www.npmjs.com/package/textfit + +## Usage + +For **`grida.config.js`** + +```js +const VanillaTextFitPlugin = require("@code-plugins/vanilla-textfit"); + +module.exports = { + // ... + plugins: [ + // ... + new VanillaTextFitPlugin({ + // options + }), + ], +}; +``` + +For **API** + +```json +{ + // ... + "plugins": [ + { + "preset": "@code-plugins/vanilla-textfit", + "args": [], + "kwargs": { + "auto": true, + "font-size-gt": 32, + "font-size-lt": 12 + } + } + ] +} +``` + +## Options + +| property | default | type | required | description | +| --------- | ------- | -------------- | -------- | --------------------------------------------------------------------------------------------------------------------- | +| `mode` | `fixed` | `fixed` | ☑ | the mode, only supports `fixed` for now, which the resize will be applied to text with both width & height specified. | +| `min` | `6` | `number` | ☐ | minimum font size in px | +| `max` | `80` | `number` | ☐ | maximum font size in px | +| `include` | `[]` | `string[]` | ☐ | array of query selectors to fit (`.` for class, `#` for id) | +| `exclude` | `[]` | `string[]` | ☐ | array of query selectors to exclude | +| loglevel | `none` | `none \| null` | ☐ | log level | + + + +## Output + +```html + + + + + + + + +
+ + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +
+ +
+ + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +
+
+ + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +
+ + +``` diff --git a/packages/plugin-text-auto-resize-vanilla-textfit/examples/test.html b/packages/plugin-text-auto-resize-vanilla-textfit/examples/test.html new file mode 100644 index 000000000..3cb16c8c0 --- /dev/null +++ b/packages/plugin-text-auto-resize-vanilla-textfit/examples/test.html @@ -0,0 +1,93 @@ + + + + + + + + +
+ + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +
+
+ + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +
+
+ + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +
+ + diff --git a/packages/plugin-text-auto-resize-vanilla-textfit/index.ts b/packages/plugin-text-auto-resize-vanilla-textfit/index.ts new file mode 100644 index 000000000..57828c5a8 --- /dev/null +++ b/packages/plugin-text-auto-resize-vanilla-textfit/index.ts @@ -0,0 +1,91 @@ +import Plugin from "@code-plugin/core"; +import { Framework } from "@grida/builder-platform-types"; +import type { HtmlIdCssModuleBuilder } from "@web-builder/vanilla/html-css-id-widget"; +import { inject } from "./injector"; +export default class VanillaTextFitPlugin extends Plugin { + preset = "@code-plugins/vanilla-textfit"; + name = "VanillaTextFitPlugin"; + config: VanillaTextFitPluginConfigs; + // + constructor(config: VanillaTextFitPluginConfigs) { + super({ + framework: Framework.vanilla, + }); + this.config = config; + } + + apply(context: any): void { + context.hooks.afterVanillaCSSBundle.tap(this.name, (config) => { + const builder: HtmlIdCssModuleBuilder = config.builder; + switch (this.config.strategy) { + case "width-and-height": { + inject( + builder, + this.config.strategy, + ["h1", "h2", "h3", "h4", "h5", "h6", "p", "span"].map( + (selector) => ({ + selector, + option: { + maxFontSize: this.config.max, + minFontSize: this.config.min, + reProcess: this.config.reProcess, + }, + }) + ) + ); + break; + } + } + }); + } +} + +type VanillaTextFitPluginConfigs = VanillaTextFitPluginWidthAndHeightConfig; + +type FitOption = { + /** + * max font size to be resized in px + * @default 80 + */ + max?: number; + + /** + * min font size to be resized in px + * @default 6 + */ + min?: number; + + /** + * if true, textFit will re-process already-fit nodes. Set to 'false' for better performance + * @default false + */ + reProcess?: boolean; + + /** + * if true, textFit will fit text to element width, regardless of text height + * @default false + */ + widthOnly?: boolean; +}; + +type VanillaTextFitPluginWidthAndHeightConfig = { + strategy: "width-and-height"; +} & Omit; + +/** + * @deprecated + */ +type FixedElementVanillaTextFitPluginOption = { + /** + * this only applies to fixed (static) size elements + */ + mode: "fixied"; +} & { + log: LogLevel; + include: "*" | QuerySelector[]; + exclude: "*" | QuerySelector[]; +} & FitOption; + +type QuerySelector = `#${string}` | `.${string}` | string; + +type LogLevel = "none" | "error"; diff --git a/packages/plugin-text-auto-resize-vanilla-textfit/injector/index.ts b/packages/plugin-text-auto-resize-vanilla-textfit/injector/index.ts new file mode 100644 index 000000000..4b702e90c --- /dev/null +++ b/packages/plugin-text-auto-resize-vanilla-textfit/injector/index.ts @@ -0,0 +1,128 @@ +import assert from "assert"; + +type InjectorConfig = { + selector: ReadonlyArray | string; + option: {}; +}; + +export function inject( + builder, + strategy, + injections: ReadonlyArray +) { + assert(strategy === "width-and-height"); + assert(injections); + assert(Array.isArray(injections)); + if (!injections.length) return; + + const chunks = groupByProperty(injections, "option", "selector"); + + const statement = (selectors, option) => + // prettier-ignore + `getElementsWithWidthAndHeight([${selectors.map(s => `"${s}"`).join(',')}]) + .forEach((el) => + { + try{ + textFit(el, ${JSON.stringify(option)}); + + const observer = new MutationObserver((mutations) => { + mutations.forEach((mutation) => { + if (mutation.type === "characterData" || mutation.type === "childList") { + const el = mutation.target; + textFit(el, ${JSON.stringify(option)}); + } + }); + }); + + // Observe the target element and its descendants for changes to text content or child nodes + observer.observe(el, { characterData: true, childList: true }); + + } catch(e){ console.log(e); } + })`; + + const base = ``; + + const src = ``; + const query_func = ``; + + builder.head(src); + builder.head(query_func); + builder.head(base); +} + +function groupByProperty( + list: ReadonlyArray, + groupKey: keyof T, + arrayKey: keyof T +) { + const grouped: { [key: string]: Partial & { [P in keyof T]: T[P][] } } = + {}; + + for (const item of list) { + const itemKey = JSON.stringify(item[groupKey]); + + if (!grouped[itemKey]) { + grouped[itemKey] = { ...item, [arrayKey]: [] }; + } + + // @ts-ignore + grouped[itemKey][arrayKey] = (grouped[itemKey][arrayKey] as any[]).concat( + item[arrayKey] as any[] + ); + } + + return Object.values(grouped); +} + +// TODO: upload to cdn (../pkg) +const JS_FUNCTION_GET_ELEMENTS_WITH_WIDTH_AND_HEIGHT = ` +function getElementsWithWidthAndHeight(selectors) { + const elementsWithWidthAndHeight = []; + + selectors.forEach((selector) => { + const elements = document.querySelectorAll(selector); + + for (const element of elements) { + const inlineStyle = element.style; + const hasInlineWidth = + inlineStyle.width && inlineStyle.width !== "auto"; + const hasInlineHeight = + inlineStyle.height && inlineStyle.height !== "auto"; + + const cssRules = Array.from(document.styleSheets).flatMap( + (sheet) => { + try { + return Array.from(sheet.cssRules); + } catch (error) { + return []; + } + } + ); + const matchingRules = cssRules.filter( + (rule) => + rule.type === CSSRule.STYLE_RULE && + element.matches(rule.selectorText) + ); + const hasWidthInStylesheet = matchingRules.some( + (rule) => rule.style.width && rule.style.width !== "auto" + ); + const hasHeightInStylesheet = matchingRules.some( + (rule) => rule.style.height && rule.style.height !== "auto" + ); + + const hasWidth = hasInlineWidth || hasWidthInStylesheet; + const hasHeight = hasInlineHeight || hasHeightInStylesheet; + + if (hasWidth && hasHeight) { + elementsWithWidthAndHeight.push(element); + } + } + }); + + return elementsWithWidthAndHeight; +} +`; diff --git a/packages/plugin-text-auto-resize-vanilla-textfit/package.json b/packages/plugin-text-auto-resize-vanilla-textfit/package.json new file mode 100644 index 000000000..e0d7c5e38 --- /dev/null +++ b/packages/plugin-text-auto-resize-vanilla-textfit/package.json @@ -0,0 +1,11 @@ +{ + "name": "@code-plugin/text-fit", + "version": "0.0.0", + "peerDependencies": { + "css-tree": "^2.3.1" + }, + "devDependencies": { + "@types/css-tree": "^2.3.1", + "css-tree": "^2.3.1" + } +} diff --git a/packages/plugin-text-auto-resize-vanilla-textfit/pkg/LICENSE b/packages/plugin-text-auto-resize-vanilla-textfit/pkg/LICENSE new file mode 100644 index 000000000..f015e6f2a --- /dev/null +++ b/packages/plugin-text-auto-resize-vanilla-textfit/pkg/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2014 by STRML (strml.github.com), 2023 Grida + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/plugin-text-auto-resize-vanilla-textfit/pkg/package.json b/packages/plugin-text-auto-resize-vanilla-textfit/pkg/package.json new file mode 100644 index 000000000..995205388 --- /dev/null +++ b/packages/plugin-text-auto-resize-vanilla-textfit/pkg/package.json @@ -0,0 +1,13 @@ +{ + "name": "textfit", + "version": "0.0.0", + "main": "textfit.js", + "scripts": { + "prepack": "yarn run build", + "build": "uglifyjs textfit.js -o textfit.min.js" + }, + "license": "MIT", + "devDependencies": { + "uglify-js": "^3.17.4" + } +} diff --git a/packages/plugin-text-auto-resize-vanilla-textfit/pkg/query.js b/packages/plugin-text-auto-resize-vanilla-textfit/pkg/query.js new file mode 100644 index 000000000..c95205e84 --- /dev/null +++ b/packages/plugin-text-auto-resize-vanilla-textfit/pkg/query.js @@ -0,0 +1,41 @@ +function getElementsWithWidthAndHeight(selectors) { + const elementsWithWidthAndHeight = []; + + selectors.forEach((selector) => { + const elements = document.querySelectorAll(selector); + + for (const element of elements) { + const inlineStyle = element.style; + const hasInlineWidth = inlineStyle.width && inlineStyle.width !== "auto"; + const hasInlineHeight = + inlineStyle.height && inlineStyle.height !== "auto"; + + const cssRules = Array.from(document.styleSheets).flatMap((sheet) => { + try { + return Array.from(sheet.cssRules); + } catch (error) { + return []; + } + }); + const matchingRules = cssRules.filter( + (rule) => + rule.type === CSSRule.STYLE_RULE && element.matches(rule.selectorText) + ); + const hasWidthInStylesheet = matchingRules.some( + (rule) => rule.style.width && rule.style.width !== "auto" + ); + const hasHeightInStylesheet = matchingRules.some( + (rule) => rule.style.height && rule.style.height !== "auto" + ); + + const hasWidth = hasInlineWidth || hasWidthInStylesheet; + const hasHeight = hasInlineHeight || hasHeightInStylesheet; + + if (hasWidth && hasHeight) { + elementsWithWidthAndHeight.push(element); + } + } + }); + + return elementsWithWidthAndHeight; +} diff --git a/packages/plugin-text-auto-resize-vanilla-textfit/pkg/textfit.js b/packages/plugin-text-auto-resize-vanilla-textfit/pkg/textfit.js new file mode 100644 index 000000000..553000723 --- /dev/null +++ b/packages/plugin-text-auto-resize-vanilla-textfit/pkg/textfit.js @@ -0,0 +1,274 @@ +/** + * textFit v2.3.1 + * Previously known as jQuery.textFit + * 11/2014 by STRML (strml.github.com) + * MIT License + * + * To use: textFit(document.getElementById('target-div'), options); + * + * Will make the *text* content inside a container scale to fit the container + * The container is required to have a set width and height + * Uses binary search to fit text with minimal layout calls. + * Version 2.0 does not use jQuery. + */ +/*global define:true, document:true, window:true, HTMLElement:true*/ + +(function (root, factory) { + "use strict"; + + // UMD shim + if (typeof define === "function" && define.amd) { + // AMD + define([], factory); + } else if (typeof exports === "object") { + // Node/CommonJS + module.exports = factory(); + } else { + // Browser + root.textFit = factory(); + } +})(typeof global === "object" ? global : this, function () { + "use strict"; + + var defaultSettings = { + alignVert: false, // if true, textFit will align vertically using css tables + alignHoriz: false, // if true, textFit will set text-align: center + multiLine: false, // if true, textFit will not set white-space: no-wrap + detectMultiLine: true, // disable to turn off automatic multi-line sensing + minFontSize: 6, + maxFontSize: 80, + reProcess: true, // if true, textFit will re-process already-fit nodes. Set to 'false' for better performance + widthOnly: false, // if true, textFit will fit text to element width, regardless of text height + alignVertWithFlexbox: false, // if true, textFit will use flexbox for vertical alignment + }; + + return function textFit(els, options) { + if (!options) options = {}; + + // Extend options. + var settings = {}; + for (var key in defaultSettings) { + if (options.hasOwnProperty(key)) { + settings[key] = options[key]; + } else { + settings[key] = defaultSettings[key]; + } + } + + // Convert jQuery objects into arrays + if (typeof els.toArray === "function") { + els = els.toArray(); + } + + // Support passing a single el + var elType = Object.prototype.toString.call(els); + if ( + elType !== "[object Array]" && + elType !== "[object NodeList]" && + elType !== "[object HTMLCollection]" + ) { + els = [els]; + } + + // Process each el we've passed. + for (var i = 0; i < els.length; i++) { + processItem(els[i], settings); + } + }; + + /** + * The meat. Given an el, make the text inside it fit its parent. + * @param {DOMElement} el Child el. + * @param {Object} settings Options for fit. + */ + function processItem(el, settings) { + if ( + !isElement(el) || + (!settings.reProcess && el.getAttribute("textFitted")) + ) { + return false; + } + + // Set textFitted attribute so we know this was processed. + if (!settings.reProcess) { + el.setAttribute("textFitted", 1); + } + + var innerSpan, originalHeight, originalHTML, originalWidth; + var low, mid, high; + + // Get element data. + originalHTML = el.innerHTML; + originalWidth = innerWidth(el); + originalHeight = innerHeight(el); + + // Don't process if we can't find box dimensions + if (!originalWidth || (!settings.widthOnly && !originalHeight)) { + if (!settings.widthOnly) + throw new Error( + "Set a static height and width on the target element " + + el.outerHTML + + " before using textFit!" + ); + else + throw new Error( + "Set a static width on the target element " + + el.outerHTML + + " before using textFit!" + ); + } + + // Add textFitted span inside this container. + if (originalHTML.indexOf("textFitted") === -1) { + innerSpan = document.createElement("span"); + innerSpan.className = "textFitted"; + // Inline block ensure it takes on the size of its contents, even if they are enclosed + // in other tags like

+ innerSpan.style["display"] = "inline-block"; + innerSpan.innerHTML = originalHTML; + el.innerHTML = ""; + el.appendChild(innerSpan); + } else { + // Reprocessing. + innerSpan = el.querySelector("span.textFitted"); + // Remove vertical align if we're reprocessing. + if (hasClass(innerSpan, "textFitAlignVert")) { + innerSpan.className = innerSpan.className.replace( + "textFitAlignVert", + "" + ); + innerSpan.style["height"] = ""; + el.className.replace("textFitAlignVertFlex", ""); + } + } + + // Prepare & set alignment + if (settings.alignHoriz) { + el.style["text-align"] = "center"; + innerSpan.style["text-align"] = "center"; + } + + // Check if this string is multiple lines + // Not guaranteed to always work if you use wonky line-heights + var multiLine = settings.multiLine; + if ( + settings.detectMultiLine && + !multiLine && + innerSpan.getBoundingClientRect().height >= + parseInt(window.getComputedStyle(innerSpan)["font-size"], 10) * 2 + ) { + multiLine = true; + } + + // If we're not treating this as a multiline string, don't let it wrap. + if (!multiLine) { + el.style["white-space"] = "nowrap"; + } + + low = settings.minFontSize; + high = settings.maxFontSize; + + // Binary search for highest best fit + var size = low; + while (low <= high) { + mid = (high + low) >> 1; + innerSpan.style.fontSize = mid + "px"; + var innerSpanBoundingClientRect = innerSpan.getBoundingClientRect(); + if ( + innerSpanBoundingClientRect.width <= originalWidth && + (settings.widthOnly || + innerSpanBoundingClientRect.height <= originalHeight) + ) { + size = mid; + low = mid + 1; + } else { + high = mid - 1; + } + // await injection point + } + // found, updating font if differs: + if (innerSpan.style.fontSize != size + "px") + innerSpan.style.fontSize = size + "px"; + + // Our height is finalized. If we are aligning vertically, set that up. + if (settings.alignVert) { + addStyleSheet(); + var height = innerSpan.scrollHeight; + if (window.getComputedStyle(el)["position"] === "static") { + el.style["position"] = "relative"; + } + if (!hasClass(innerSpan, "textFitAlignVert")) { + innerSpan.className = innerSpan.className + " textFitAlignVert"; + } + innerSpan.style["height"] = height + "px"; + if ( + settings.alignVertWithFlexbox && + !hasClass(el, "textFitAlignVertFlex") + ) { + el.className = el.className + " textFitAlignVertFlex"; + } + } + } + + // Calculate height without padding. + function innerHeight(el) { + var style = window.getComputedStyle(el, null); + return ( + el.getBoundingClientRect().height - + parseInt(style.getPropertyValue("padding-top"), 10) - + parseInt(style.getPropertyValue("padding-bottom"), 10) + ); + } + + // Calculate width without padding. + function innerWidth(el) { + var style = window.getComputedStyle(el, null); + return ( + el.getBoundingClientRect().width - + parseInt(style.getPropertyValue("padding-left"), 10) - + parseInt(style.getPropertyValue("padding-right"), 10) + ); + } + + //Returns true if it is a DOM element + function isElement(o) { + return typeof HTMLElement === "object" + ? o instanceof HTMLElement //DOM2 + : o && + typeof o === "object" && + o !== null && + o.nodeType === 1 && + typeof o.nodeName === "string"; + } + + function hasClass(element, cls) { + return (" " + element.className + " ").indexOf(" " + cls + " ") > -1; + } + + // Better than a stylesheet dependency + function addStyleSheet() { + if (document.getElementById("textFitStyleSheet")) return; + var style = [ + ".textFitAlignVert{", + "position: absolute;", + "top: 0; right: 0; bottom: 0; left: 0;", + "margin: auto;", + "display: flex;", + "justify-content: center;", + "flex-direction: column;", + "}", + ".textFitAlignVertFlex{", + "display: flex;", + "}", + ".textFitAlignVertFlex .textFitAlignVert{", + "position: static;", + "}", + ].join(""); + + var css = document.createElement("style"); + css.type = "text/css"; + css.id = "textFitStyleSheet"; + css.innerHTML = style; + document.body.appendChild(css); + } +}); diff --git a/packages/plugin-text-auto-resize-vanilla-textfit/pkg/textfit.min.js b/packages/plugin-text-auto-resize-vanilla-textfit/pkg/textfit.min.js new file mode 100644 index 000000000..250112566 --- /dev/null +++ b/packages/plugin-text-auto-resize-vanilla-textfit/pkg/textfit.min.js @@ -0,0 +1 @@ +(function(root,factory){"use strict";if(typeof define==="function"&&define.amd){define([],factory)}else if(typeof exports==="object"){module.exports=factory()}else{root.textFit=factory()}})(typeof global==="object"?global:this,function(){"use strict";var defaultSettings={alignVert:false,alignHoriz:false,multiLine:false,detectMultiLine:true,minFontSize:6,maxFontSize:80,reProcess:true,widthOnly:false,alignVertWithFlexbox:false};return function textFit(els,options){if(!options)options={};var settings={};for(var key in defaultSettings){if(options.hasOwnProperty(key)){settings[key]=options[key]}else{settings[key]=defaultSettings[key]}}if(typeof els.toArray==="function"){els=els.toArray()}var elType=Object.prototype.toString.call(els);if(elType!=="[object Array]"&&elType!=="[object NodeList]"&&elType!=="[object HTMLCollection]"){els=[els]}for(var i=0;i=parseInt(window.getComputedStyle(innerSpan)["font-size"],10)*2){multiLine=true}if(!multiLine){el.style["white-space"]="nowrap"}low=settings.minFontSize;high=settings.maxFontSize;var size=low;while(low<=high){mid=high+low>>1;innerSpan.style.fontSize=mid+"px";var innerSpanBoundingClientRect=innerSpan.getBoundingClientRect();if(innerSpanBoundingClientRect.width<=originalWidth&&(settings.widthOnly||innerSpanBoundingClientRect.height<=originalHeight)){size=mid;low=mid+1}else{high=mid-1}}if(innerSpan.style.fontSize!=size+"px")innerSpan.style.fontSize=size+"px";if(settings.alignVert){addStyleSheet();var height=innerSpan.scrollHeight;if(window.getComputedStyle(el)["position"]==="static"){el.style["position"]="relative"}if(!hasClass(innerSpan,"textFitAlignVert")){innerSpan.className=innerSpan.className+" textFitAlignVert"}innerSpan.style["height"]=height+"px";if(settings.alignVertWithFlexbox&&!hasClass(el,"textFitAlignVertFlex")){el.className=el.className+" textFitAlignVertFlex"}}}function innerHeight(el){var style=window.getComputedStyle(el,null);return el.getBoundingClientRect().height-parseInt(style.getPropertyValue("padding-top"),10)-parseInt(style.getPropertyValue("padding-bottom"),10)}function innerWidth(el){var style=window.getComputedStyle(el,null);return el.getBoundingClientRect().width-parseInt(style.getPropertyValue("padding-left"),10)-parseInt(style.getPropertyValue("padding-right"),10)}function isElement(o){return typeof HTMLElement==="object"?o instanceof HTMLElement:o&&typeof o==="object"&&o!==null&&o.nodeType===1&&typeof o.nodeName==="string"}function hasClass(element,cls){return(" "+element.className+" ").indexOf(" "+cls+" ")>-1}function addStyleSheet(){if(document.getElementById("textFitStyleSheet"))return;var style=[".textFitAlignVert{","position: absolute;","top: 0; right: 0; bottom: 0; left: 0;","margin: auto;","display: flex;","justify-content: center;","flex-direction: column;","}",".textFitAlignVertFlex{","display: flex;","}",".textFitAlignVertFlex .textFitAlignVert{","position: static;","}"].join("");var css=document.createElement("style");css.type="text/css";css.id="textFitStyleSheet";css.innerHTML=style;document.body.appendChild(css)}}); \ No newline at end of file diff --git a/packages/plugin-text-auto-resize-vanilla-textfit/pkg/yarn.lock b/packages/plugin-text-auto-resize-vanilla-textfit/pkg/yarn.lock new file mode 100644 index 000000000..556a55eee --- /dev/null +++ b/packages/plugin-text-auto-resize-vanilla-textfit/pkg/yarn.lock @@ -0,0 +1,8 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +uglify-js@^3.17.4: + version "3.17.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" + integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== diff --git a/packages/plugin-text-auto-resize-vanilla-textfit/selector/index.ts b/packages/plugin-text-auto-resize-vanilla-textfit/selector/index.ts new file mode 100644 index 000000000..4201c2b18 --- /dev/null +++ b/packages/plugin-text-auto-resize-vanilla-textfit/selector/index.ts @@ -0,0 +1,18 @@ +import csstree from "css-tree"; + +/** + * selects the text elements that is targeted to be applied for textfit + * @param css the css file as a string + * @param selectors the element query selectors + * @param options + */ +export function select( + css: string, + selectors: string[], + options: { + mode: "fixed"; + widthOnly: boolean; + } +) { + // +} diff --git a/packages/support-fonts/index.ts b/packages/support-fonts/index.ts new file mode 100644 index 000000000..d1369b3bc --- /dev/null +++ b/packages/support-fonts/index.ts @@ -0,0 +1,54 @@ +import { googlefont } from "./services/fonts.google.com"; +import { systemfont } from "./services/system"; + +export type TFontService = "system" | "fonts.google.com"; + +type FontResolutions = { + [family: string]: { + resolution: TFontResulution; + service: TFontService; + urls: { + [request: string]: string; + }; + }; +}; + +type TFontResulution = "fonts.googleapis.com/css2"; + +const providers = { + "fonts.google.com": googlefont, + system: systemfont, +} as const; + +/** + * resolve fonts from services + */ +export function fonts({ + fonts, + services, + resolution, +}: { + fonts: ReadonlyArray; + services: ReadonlyArray; + resolution: TFontResulution; +}): FontResolutions { + const result: FontResolutions = {}; + + const resolvers = services.map((service) => { + return providers[service]; + }); + for (const font of fonts) { + for (const resolver of resolvers) { + const resolved = resolver(font); + if (resolved) { + result[font] = { + resolution, + ...resolved, + }; + break; + } + } + } + + return result; +} diff --git a/packages/support-fonts/package.json b/packages/support-fonts/package.json new file mode 100644 index 000000000..1f553e372 --- /dev/null +++ b/packages/support-fonts/package.json @@ -0,0 +1,7 @@ +{ + "name": "@code-features/fonts", + "version": "0.0.0", + "dependencies": { + "ufo": "^1.1.1" + } +} diff --git a/packages/support-fonts/services/fonts.google.com/fonts.json b/packages/support-fonts/services/fonts.google.com/fonts.json new file mode 100644 index 000000000..7dac6373d --- /dev/null +++ b/packages/support-fonts/services/fonts.google.com/fonts.json @@ -0,0 +1,14333 @@ +{ + "ABeeZee": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Abel": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Abhaya Libre": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Aboreto": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Abril Fatface": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Abyssinica SIL": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Aclonica": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Acme": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Actor": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Adamina": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Advent Pro": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Aguafina Script": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Akaya Kanadaka": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Akaya Telivigala": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Akronim": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Akshar": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Aladin": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Alata": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Alatsi": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Albert Sans": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Aldrich": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Alef": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Alegreya": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Alegreya Sans": { + "fallbacks": ["sans-serif"], + "weights": [100, 300, 400, 500, 700, 800, 900], + "styles": ["italic", "regular"], + "variants": [ + [0, 100], + [1, 100], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 700], + [1, 700], + [0, 800], + [1, 800], + [0, 900], + [1, 900] + ] + }, + "Alegreya Sans SC": { + "fallbacks": ["sans-serif"], + "weights": [100, 300, 400, 500, 700, 800, 900], + "styles": ["italic", "regular"], + "variants": [ + [0, 100], + [1, 100], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 700], + [1, 700], + [0, 800], + [1, 800], + [0, 900], + [1, 900] + ] + }, + "Alegreya SC": { + "fallbacks": ["serif"], + "weights": [400, 500, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 700], + [1, 700], + [0, 800], + [1, 800], + [0, 900], + [1, 900] + ] + }, + "Aleo": { + "fallbacks": ["serif"], + "weights": [300, 400, 700], + "styles": ["italic", "regular"], + "variants": [ + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Alex Brush": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Alexandria": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Alfa Slab One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Alice": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Alike": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Alike Angular": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Alkalami": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Alkatra": { + "fallbacks": ["cursive"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Allan": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Allerta": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Allerta Stencil": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Allison": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Allura": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Almarai": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 700], + [0, 800] + ] + }, + "Almendra": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Almendra Display": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Almendra SC": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Alumni Sans": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Alumni Sans Collegiate One": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Alumni Sans Inline One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Alumni Sans Pinstripe": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Amarante": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Amaranth": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Amatic SC": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Amethysta": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Amiko": { + "fallbacks": ["sans-serif"], + "weights": [400, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 600], + [0, 700] + ] + }, + "Amiri": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Amiri Quran": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Amita": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Anaheim": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Andada Pro": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700, 800], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800] + ] + }, + "Andika": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Anek Bangla": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Anek Devanagari": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Anek Gujarati": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Anek Gurmukhi": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Anek Kannada": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Anek Latin": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Anek Malayalam": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Anek Odia": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Anek Tamil": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Anek Telugu": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Angkor": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Annie Use Your Telescope": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Anonymous Pro": { + "fallbacks": ["monospace"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Antic": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Antic Didone": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Antic Slab": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Anton": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Antonio": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Anybody": { + "fallbacks": ["cursive"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Arapey": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Arbutus": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Arbutus Slab": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Architects Daughter": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Archivo": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Archivo Black": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Archivo Narrow": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [1, 400], + [1, 500], + [1, 600], + [1, 700] + ] + }, + "Are You Serious": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Aref Ruqaa": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Aref Ruqaa Ink": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Arima": { + "fallbacks": ["cursive"], + "weights": [100, 200, 300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Arimo": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [1, 400], + [1, 500], + [1, 600], + [1, 700] + ] + }, + "Arizonia": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Armata": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Arsenal": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Artifika": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Arvo": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Arya": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Asap": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Asap Condensed": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["italic", "regular"], + "variants": [ + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700], + [0, 800], + [1, 800], + [0, 900], + [1, 900] + ] + }, + "Asar": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Asset": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Assistant": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Astloch": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Asul": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Athiti": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Atkinson Hyperlegible": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Atma": { + "fallbacks": ["cursive"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Atomic Age": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Aubrey": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Audiowide": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Autour One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Average": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Average Sans": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Averia Gruesa Libre": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Averia Libre": { + "fallbacks": ["cursive"], + "weights": [300, 400, 700], + "styles": ["italic", "regular"], + "variants": [ + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Averia Sans Libre": { + "fallbacks": ["cursive"], + "weights": [300, 400, 700], + "styles": ["italic", "regular"], + "variants": [ + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Averia Serif Libre": { + "fallbacks": ["cursive"], + "weights": [300, 400, 700], + "styles": ["italic", "regular"], + "variants": [ + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Azeret Mono": { + "fallbacks": ["monospace"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "B612": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "B612 Mono": { + "fallbacks": ["monospace"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Babylonica": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Bad Script": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Bahiana": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Bahianita": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Bai Jamjuree": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700], + "styles": ["italic", "regular"], + "variants": [ + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700] + ] + }, + "Bakbak One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Ballet": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Baloo 2": { + "fallbacks": ["cursive"], + "weights": [400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Baloo Bhai 2": { + "fallbacks": ["cursive"], + "weights": [400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Baloo Bhaijaan 2": { + "fallbacks": ["cursive"], + "weights": [400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Baloo Bhaina 2": { + "fallbacks": ["cursive"], + "weights": [400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Baloo Chettan 2": { + "fallbacks": ["cursive"], + "weights": [400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Baloo Da 2": { + "fallbacks": ["cursive"], + "weights": [400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Baloo Paaji 2": { + "fallbacks": ["cursive"], + "weights": [400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Baloo Tamma 2": { + "fallbacks": ["cursive"], + "weights": [400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Baloo Tammudu 2": { + "fallbacks": ["cursive"], + "weights": [400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Baloo Thambi 2": { + "fallbacks": ["cursive"], + "weights": [400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Balsamiq Sans": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Balthazar": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Bangers": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Barlow": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["italic", "regular"], + "variants": [ + [0, 100], + [1, 100], + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700], + [0, 800], + [1, 800], + [0, 900], + [1, 900] + ] + }, + "Barlow Condensed": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["italic", "regular"], + "variants": [ + [0, 100], + [1, 100], + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700], + [0, 800], + [1, 800], + [0, 900], + [1, 900] + ] + }, + "Barlow Semi Condensed": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["italic", "regular"], + "variants": [ + [0, 100], + [1, 100], + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700], + [0, 800], + [1, 800], + [0, 900], + [1, 900] + ] + }, + "Barriecito": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Barrio": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Basic": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Baskervville": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Battambang": { + "fallbacks": ["cursive"], + "weights": [100, 300, 400, 700, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 300], + [0, 400], + [0, 700], + [0, 900] + ] + }, + "Baumans": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Bayon": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Be Vietnam Pro": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["italic", "regular"], + "variants": [ + [0, 100], + [1, 100], + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700], + [0, 800], + [1, 800], + [0, 900], + [1, 900] + ] + }, + "Beau Rivage": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Bebas Neue": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Belgrano": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Bellefair": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Belleza": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Bellota": { + "fallbacks": ["cursive"], + "weights": [300, 400, 700], + "styles": ["italic", "regular"], + "variants": [ + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Bellota Text": { + "fallbacks": ["cursive"], + "weights": [300, 400, 700], + "styles": ["italic", "regular"], + "variants": [ + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "BenchNine": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 700] + ] + }, + "Benne": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Bentham": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Berkshire Swash": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Besley": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Beth Ellen": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Bevan": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "BhuTuka Expanded One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Big Shoulders Display": { + "fallbacks": ["cursive"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Big Shoulders Inline Display": { + "fallbacks": ["cursive"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Big Shoulders Inline Text": { + "fallbacks": ["cursive"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Big Shoulders Stencil Display": { + "fallbacks": ["cursive"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Big Shoulders Stencil Text": { + "fallbacks": ["cursive"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Big Shoulders Text": { + "fallbacks": ["cursive"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Bigelow Rules": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Bigshot One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Bilbo": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Bilbo Swash Caps": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "BioRhyme": { + "fallbacks": ["serif"], + "weights": [200, 300, 400, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 700], + [0, 800] + ] + }, + "BioRhyme Expanded": { + "fallbacks": ["serif"], + "weights": [200, 300, 400, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 700], + [0, 800] + ] + }, + "Birthstone": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Birthstone Bounce": { + "fallbacks": ["cursive"], + "weights": [400, 500], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500] + ] + }, + "Biryani": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Bitter": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "BIZ UDGothic": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "BIZ UDMincho": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "BIZ UDPGothic": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "BIZ UDPMincho": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Black And White Picture": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Black Han Sans": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Black Ops One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Blaka": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Blaka Hollow": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Blaka Ink": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Blinker": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Bodoni Moda": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Bokor": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Bona Nova": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700] + ] + }, + "Bonbon": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Bonheur Royale": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Boogaloo": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Bowlby One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Bowlby One SC": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Brawler": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Bree Serif": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Brygada 1918": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [1, 400], + [1, 500], + [1, 600], + [1, 700] + ] + }, + "Bubblegum Sans": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Bubbler One": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Buda": { + "fallbacks": ["cursive"], + "weights": [300], + "styles": [], + "variants": [[0, 300]] + }, + "Buenard": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Bungee": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Bungee Hairline": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Bungee Inline": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Bungee Outline": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Bungee Shade": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Bungee Spice": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Butcherman": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Butterfly Kids": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Cabin": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [1, 400], + [1, 500], + [1, 600], + [1, 700] + ] + }, + "Cabin Condensed": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Cabin Sketch": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Caesar Dressing": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Cagliostro": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Cairo": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Cairo Play": { + "fallbacks": ["cursive"], + "weights": [200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Caladea": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Calistoga": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Calligraffitti": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Cambay": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Cambo": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Candal": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Cantarell": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Cantata One": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Cantora One": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Capriola": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Caramel": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Carattere": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Cardo": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700] + ] + }, + "Carme": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Carrois Gothic": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Carrois Gothic SC": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Carter One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Castoro": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Catamaran": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Caudex": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Caveat": { + "fallbacks": ["cursive"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Caveat Brush": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Cedarville Cursive": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Ceviche One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Chakra Petch": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["italic", "regular"], + "variants": [ + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700] + ] + }, + "Changa": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Changa One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Chango": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Charis SIL": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Charm": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Charmonman": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Chathura": { + "fallbacks": ["sans-serif"], + "weights": [100, 300, 400, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 300], + [0, 400], + [0, 700], + [0, 800] + ] + }, + "Chau Philomene One": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Chela One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Chelsea Market": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Chenla": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Cherish": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Cherry Cream Soda": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Cherry Swash": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Chewy": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Chicle": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Chilanka": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Chivo": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Chivo Mono": { + "fallbacks": ["monospace"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Chonburi": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Cinzel": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Cinzel Decorative": { + "fallbacks": ["cursive"], + "weights": [400, 700, 900], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700], + [0, 900] + ] + }, + "Clicker Script": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Climate Crisis": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Coda": { + "fallbacks": ["cursive"], + "weights": [400, 800], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 800] + ] + }, + "Coda Caption": { + "fallbacks": ["sans-serif"], + "weights": [800], + "styles": [], + "variants": [[0, 800]] + }, + "Codystar": { + "fallbacks": ["cursive"], + "weights": [300, 400], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400] + ] + }, + "Coiny": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Combo": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Comfortaa": { + "fallbacks": ["cursive"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Comforter": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Comforter Brush": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Comic Neue": { + "fallbacks": ["cursive"], + "weights": [300, 400, 700], + "styles": ["italic", "regular"], + "variants": [ + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Coming Soon": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Commissioner": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Concert One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Condiment": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Content": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Contrail One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Convergence": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Cookie": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Copse": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Corben": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Corinthia": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Cormorant": { + "fallbacks": ["serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700] + ] + }, + "Cormorant Garamond": { + "fallbacks": ["serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["italic", "regular"], + "variants": [ + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700] + ] + }, + "Cormorant Infant": { + "fallbacks": ["serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["italic", "regular"], + "variants": [ + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700] + ] + }, + "Cormorant SC": { + "fallbacks": ["serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Cormorant Unicase": { + "fallbacks": ["serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Cormorant Upright": { + "fallbacks": ["serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Courgette": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Courier Prime": { + "fallbacks": ["monospace"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Cousine": { + "fallbacks": ["monospace"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Coustard": { + "fallbacks": ["serif"], + "weights": [400, 900], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 900] + ] + }, + "Covered By Your Grace": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Crafty Girls": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Creepster": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Crete Round": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Crimson Pro": { + "fallbacks": ["serif"], + "weights": [200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Crimson Text": { + "fallbacks": ["serif"], + "weights": [400, 600, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 600], + [1, 600], + [0, 700], + [1, 700] + ] + }, + "Croissant One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Crushed": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Cuprum": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [1, 400], + [1, 500], + [1, 600], + [1, 700] + ] + }, + "Cute Font": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Cutive": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Cutive Mono": { + "fallbacks": ["monospace"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Damion": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Dancing Script": { + "fallbacks": ["cursive"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Dangrek": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Darker Grotesque": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "David Libre": { + "fallbacks": ["serif"], + "weights": [400, 500, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 700] + ] + }, + "Dawning of a New Day": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Days One": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Dekko": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Dela Gothic One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Delicious Handrawn": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Delius": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Delius Swash Caps": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Delius Unicase": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Della Respira": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Denk One": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Devonshire": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Dhurjati": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Didact Gothic": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Diplomata": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Diplomata SC": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "DM Mono": { + "fallbacks": ["monospace"], + "weights": [300, 400, 500], + "styles": ["italic", "regular"], + "variants": [ + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500] + ] + }, + "DM Sans": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 700], + [1, 700] + ] + }, + "DM Serif Display": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "DM Serif Text": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Do Hyeon": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Dokdo": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Domine": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Donegal One": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Dongle": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 700] + ] + }, + "Doppio One": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Dorsa": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Dosis": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "DotGothic16": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Dr Sugiyama": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Duru Sans": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Dynalight": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "DynaPuff": { + "fallbacks": ["cursive"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Eagle Lake": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "East Sea Dokdo": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Eater": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "EB Garamond": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700, 800], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800] + ] + }, + "Economica": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Eczar": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Edu NSW ACT Foundation": { + "fallbacks": ["cursive"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Edu QLD Beginner": { + "fallbacks": ["cursive"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Edu SA Beginner": { + "fallbacks": ["cursive"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Edu TAS Beginner": { + "fallbacks": ["cursive"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Edu VIC WA NT Beginner": { + "fallbacks": ["cursive"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "El Messiri": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Electrolize": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Elsie": { + "fallbacks": ["cursive"], + "weights": [400, 900], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 900] + ] + }, + "Elsie Swash Caps": { + "fallbacks": ["cursive"], + "weights": [400, 900], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 900] + ] + }, + "Emblema One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Emilys Candy": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Encode Sans": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Encode Sans Condensed": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Encode Sans Expanded": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Encode Sans SC": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Encode Sans Semi Condensed": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Encode Sans Semi Expanded": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Engagement": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Englebert": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Enriqueta": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Ephesis": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Epilogue": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Erica One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Esteban": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Estonia": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Euphoria Script": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Ewert": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Exo": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Exo 2": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Expletus Sans": { + "fallbacks": ["cursive"], + "weights": [400, 500, 600, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [1, 400], + [1, 500], + [1, 600], + [1, 700] + ] + }, + "Explora": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Fahkwang": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700], + "styles": ["italic", "regular"], + "variants": [ + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700] + ] + }, + "Familjen Grotesk": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [1, 400], + [1, 500], + [1, 600], + [1, 700] + ] + }, + "Fanwood Text": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Farro": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 700] + ] + }, + "Farsan": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Fascinate": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Fascinate Inline": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Faster One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Fasthand": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Fauna One": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Faustina": { + "fallbacks": ["serif"], + "weights": [300, 400, 500, 600, 700, 800], + "styles": ["regular", "italic"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800] + ] + }, + "Federant": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Federo": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Felipa": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Fenix": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Festive": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Figtree": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Finger Paint": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Finlandica": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [1, 400], + [1, 500], + [1, 600], + [1, 700] + ] + }, + "Fira Code": { + "fallbacks": ["monospace"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Fira Mono": { + "fallbacks": ["monospace"], + "weights": [400, 500, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 700] + ] + }, + "Fira Sans": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["italic", "regular"], + "variants": [ + [0, 100], + [1, 100], + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700], + [0, 800], + [1, 800], + [0, 900], + [1, 900] + ] + }, + "Fira Sans Condensed": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["italic", "regular"], + "variants": [ + [0, 100], + [1, 100], + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700], + [0, 800], + [1, 800], + [0, 900], + [1, 900] + ] + }, + "Fira Sans Extra Condensed": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["italic", "regular"], + "variants": [ + [0, 100], + [1, 100], + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700], + [0, 800], + [1, 800], + [0, 900], + [1, 900] + ] + }, + "Fjalla One": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Fjord One": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Flamenco": { + "fallbacks": ["cursive"], + "weights": [300, 400], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400] + ] + }, + "Flavors": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Fleur De Leah": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Flow Block": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Flow Circular": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Flow Rounded": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Fondamento": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Fontdiner Swanky": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Forum": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Fragment Mono": { + "fallbacks": ["monospace"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Francois One": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Frank Ruhl Libre": { + "fallbacks": ["serif"], + "weights": [300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Fraunces": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Freckle Face": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Fredericka the Great": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Fredoka": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Freehand": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Fresca": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Frijole": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Fruktur": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Fugaz One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Fuggles": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Fuzzy Bubbles": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Gabriela": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Gaegu": { + "fallbacks": ["cursive"], + "weights": [300, 400, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 700] + ] + }, + "Gafata": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Gajraj One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Galada": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Galdeano": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Galindo": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Gamja Flower": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Gantari": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Gayathri": { + "fallbacks": ["sans-serif"], + "weights": [100, 400, 700], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 400], + [0, 700] + ] + }, + "Gelasio": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700] + ] + }, + "Gemunu Libre": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Genos": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Gentium Book Plus": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Gentium Plus": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Geo": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Georama": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Geostar": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Geostar Fill": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Germania One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "GFS Didot": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "GFS Neohellenic": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Gideon Roman": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Gidugu": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Gilda Display": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Girassol": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Give You Glory": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Glass Antiqua": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Glegoo": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Gloock": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Gloria Hallelujah": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Glory": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800] + ] + }, + "Gluten": { + "fallbacks": ["cursive"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Goblin One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Gochi Hand": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Goldman": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Golos Text": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Gorditas": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Gothic A1": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Gotu": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Goudy Bookletter 1911": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Gowun Batang": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Gowun Dodum": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Graduate": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Grand Hotel": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Grandstander": { + "fallbacks": ["cursive"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Grape Nuts": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Gravitas One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Great Vibes": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Grechen Fuemen": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Grenze": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["italic", "regular"], + "variants": [ + [0, 100], + [1, 100], + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700], + [0, 800], + [1, 800], + [0, 900], + [1, 900] + ] + }, + "Grenze Gotisch": { + "fallbacks": ["cursive"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Grey Qo": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Griffy": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Gruppo": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Gudea": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700] + ] + }, + "Gugi": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Gulzar": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Gupter": { + "fallbacks": ["serif"], + "weights": [400, 500, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 700] + ] + }, + "Gurajada": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Gwendolyn": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Habibi": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Hachi Maru Pop": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Hahmlet": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Halant": { + "fallbacks": ["serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Hammersmith One": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Hanalei": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Hanalei Fill": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Handlee": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Hanken Grotesk": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Hanuman": { + "fallbacks": ["serif"], + "weights": [100, 300, 400, 700, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 300], + [0, 400], + [0, 700], + [0, 900] + ] + }, + "Happy Monkey": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Harmattan": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Headland One": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Heebo": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Henny Penny": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Hepta Slab": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Herr Von Muellerhoff": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Hi Melody": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Hina Mincho": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Hind": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Hind Guntur": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Hind Madurai": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Hind Siliguri": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Hind Vadodara": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Holtwood One SC": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Homemade Apple": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Homenaje": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Hubballi": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Hurricane": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Ibarra Real Nova": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [1, 400], + [1, 500], + [1, 600], + [1, 700] + ] + }, + "IBM Plex Mono": { + "fallbacks": ["monospace"], + "weights": [100, 200, 300, 400, 500, 600, 700], + "styles": ["italic", "regular"], + "variants": [ + [0, 100], + [1, 100], + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700] + ] + }, + "IBM Plex Sans": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700], + "styles": ["italic", "regular"], + "variants": [ + [0, 100], + [1, 100], + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700] + ] + }, + "IBM Plex Sans Arabic": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "IBM Plex Sans Condensed": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700], + "styles": ["italic", "regular"], + "variants": [ + [0, 100], + [1, 100], + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700] + ] + }, + "IBM Plex Sans Devanagari": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "IBM Plex Sans Hebrew": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "IBM Plex Sans JP": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "IBM Plex Sans KR": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "IBM Plex Sans Thai": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "IBM Plex Sans Thai Looped": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "IBM Plex Serif": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700], + "styles": ["italic", "regular"], + "variants": [ + [0, 100], + [1, 100], + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700] + ] + }, + "Iceberg": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Iceland": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "IM Fell Double Pica": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "IM Fell Double Pica SC": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "IM Fell DW Pica": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "IM Fell DW Pica SC": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "IM Fell English": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "IM Fell English SC": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "IM Fell French Canon": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "IM Fell French Canon SC": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "IM Fell Great Primer": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "IM Fell Great Primer SC": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Imbue": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Imperial Script": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Imprima": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Inconsolata": { + "fallbacks": ["monospace"], + "weights": [200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Inder": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Indie Flower": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Ingrid Darling": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Inika": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Inknut Antiqua": { + "fallbacks": ["serif"], + "weights": [300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Inria Sans": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 700], + "styles": ["italic", "regular"], + "variants": [ + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Inria Serif": { + "fallbacks": ["serif"], + "weights": [300, 400, 700], + "styles": ["italic", "regular"], + "variants": [ + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Inspiration": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Inter": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Inter Tight": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Irish Grover": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Island Moments": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Istok Web": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Italiana": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Italianno": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Itim": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Jacques Francois": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Jacques Francois Shadow": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Jaldi": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "JetBrains Mono": { + "fallbacks": ["monospace"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800] + ] + }, + "Jim Nightshade": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Joan": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Jockey One": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Jolly Lodger": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Jomhuria": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Jomolhari": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Josefin Sans": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700] + ] + }, + "Josefin Slab": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700] + ] + }, + "Jost": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Joti One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Jua": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Judson": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700] + ] + }, + "Julee": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Julius Sans One": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Junge": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Jura": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Just Another Hand": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Just Me Again Down Here": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "K2D": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800], + "styles": ["italic", "regular"], + "variants": [ + [0, 100], + [1, 100], + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700], + [0, 800], + [1, 800] + ] + }, + "Kadwa": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Kaisei Decol": { + "fallbacks": ["serif"], + "weights": [400, 500, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 700] + ] + }, + "Kaisei HarunoUmi": { + "fallbacks": ["serif"], + "weights": [400, 500, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 700] + ] + }, + "Kaisei Opti": { + "fallbacks": ["serif"], + "weights": [400, 500, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 700] + ] + }, + "Kaisei Tokumin": { + "fallbacks": ["serif"], + "weights": [400, 500, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 700], + [0, 800] + ] + }, + "Kalam": { + "fallbacks": ["cursive"], + "weights": [300, 400, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 700] + ] + }, + "Kameron": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Kanit": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["italic", "regular"], + "variants": [ + [0, 100], + [1, 100], + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700], + [0, 800], + [1, 800], + [0, 900], + [1, 900] + ] + }, + "Kantumruy Pro": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700] + ] + }, + "Karantina": { + "fallbacks": ["cursive"], + "weights": [300, 400, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 700] + ] + }, + "Karla": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700, 800], + "styles": ["regular", "italic"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800] + ] + }, + "Karma": { + "fallbacks": ["serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Katibeh": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Kaushan Script": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Kavivanar": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Kavoon": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Kdam Thmor Pro": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Keania One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Kelly Slab": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Kenia": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Khand": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Khmer": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Khula": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Kings": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Kirang Haerang": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Kite One": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Kiwi Maru": { + "fallbacks": ["serif"], + "weights": [300, 400, 500], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500] + ] + }, + "Klee One": { + "fallbacks": ["cursive"], + "weights": [400, 600], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 600] + ] + }, + "Knewave": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Kodchasan": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700], + "styles": ["italic", "regular"], + "variants": [ + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700] + ] + }, + "Koh Santepheap": { + "fallbacks": ["cursive"], + "weights": [100, 300, 400, 700, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 300], + [0, 400], + [0, 700], + [0, 900] + ] + }, + "KoHo": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700], + "styles": ["italic", "regular"], + "variants": [ + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700] + ] + }, + "Kolker Brush": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Kosugi": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Kosugi Maru": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Kotta One": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Koulen": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Kranky": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Kreon": { + "fallbacks": ["serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Kristi": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Krona One": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Krub": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700], + "styles": ["italic", "regular"], + "variants": [ + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700] + ] + }, + "Kufam": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Kulim Park": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 600, 700], + "styles": ["italic", "regular"], + "variants": [ + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 600], + [1, 600], + [0, 700], + [1, 700] + ] + }, + "Kumar One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Kumar One Outline": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Kumbh Sans": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Kurale": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "La Belle Aurore": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Labrada": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Lacquer": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Laila": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Lakki Reddy": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Lalezar": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Lancelot": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Langar": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Lateef": { + "fallbacks": ["serif"], + "weights": [200, 300, 400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Lato": { + "fallbacks": ["sans-serif"], + "weights": [100, 300, 400, 700, 900], + "styles": ["italic", "regular"], + "variants": [ + [0, 100], + [1, 100], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 700], + [1, 700], + [0, 900], + [1, 900] + ] + }, + "Lavishly Yours": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "League Gothic": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "League Script": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "League Spartan": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Leckerli One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Ledger": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Lekton": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700] + ] + }, + "Lemon": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Lemonada": { + "fallbacks": ["cursive"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Lexend": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Lexend Deca": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Lexend Exa": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Lexend Giga": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Lexend Mega": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Lexend Peta": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Lexend Tera": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Lexend Zetta": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Libre Barcode 128": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Libre Barcode 128 Text": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Libre Barcode 39": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Libre Barcode 39 Extended": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Libre Barcode 39 Extended Text": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Libre Barcode 39 Text": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Libre Barcode EAN13 Text": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Libre Baskerville": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700] + ] + }, + "Libre Bodoni": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [1, 400], + [1, 500], + [1, 600], + [1, 700] + ] + }, + "Libre Caslon Display": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Libre Caslon Text": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700] + ] + }, + "Libre Franklin": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Licorice": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Life Savers": { + "fallbacks": ["cursive"], + "weights": [400, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700], + [0, 800] + ] + }, + "Lilita One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Lily Script One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Limelight": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Linden Hill": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Literata": { + "fallbacks": ["serif"], + "weights": [200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Liu Jian Mao Cao": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Livvic": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 900], + "styles": ["italic", "regular"], + "variants": [ + [0, 100], + [1, 100], + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700], + [0, 900], + [1, 900] + ] + }, + "Lobster": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Lobster Two": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Londrina Outline": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Londrina Shadow": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Londrina Sketch": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Londrina Solid": { + "fallbacks": ["cursive"], + "weights": [100, 300, 400, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 300], + [0, 400], + [0, 900] + ] + }, + "Long Cang": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Lora": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [1, 400], + [1, 500], + [1, 600], + [1, 700] + ] + }, + "Love Light": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Love Ya Like A Sister": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Loved by the King": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Lovers Quarrel": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Luckiest Guy": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Lusitana": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Lustria": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Luxurious Roman": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Luxurious Script": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "M PLUS 1": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "M PLUS 1 Code": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "M PLUS 1p": { + "fallbacks": ["sans-serif"], + "weights": [100, 300, 400, 500, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 300], + [0, 400], + [0, 500], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "M PLUS 2": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "M PLUS Code Latin": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "M PLUS Rounded 1c": { + "fallbacks": ["sans-serif"], + "weights": [100, 300, 400, 500, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 300], + [0, 400], + [0, 500], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Ma Shan Zheng": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Macondo": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Macondo Swash Caps": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Mada": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700, 900], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 900] + ] + }, + "Magra": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Maiden Orange": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Maitree": { + "fallbacks": ["serif"], + "weights": [200, 300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Major Mono Display": { + "fallbacks": ["monospace"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Mako": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Mali": { + "fallbacks": ["cursive"], + "weights": [200, 300, 400, 500, 600, 700], + "styles": ["italic", "regular"], + "variants": [ + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700] + ] + }, + "Mallanna": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Mandali": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Manjari": { + "fallbacks": ["sans-serif"], + "weights": [100, 400, 700], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 400], + [0, 700] + ] + }, + "Manrope": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Mansalva": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Manuale": { + "fallbacks": ["serif"], + "weights": [300, 400, 500, 600, 700, 800], + "styles": ["regular", "italic"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800] + ] + }, + "Marcellus": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Marcellus SC": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Marck Script": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Margarine": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Marhey": { + "fallbacks": ["cursive"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Markazi Text": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Marko One": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Marmelad": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Martel": { + "fallbacks": ["serif"], + "weights": [200, 300, 400, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Martel Sans": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Martian Mono": { + "fallbacks": ["monospace"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Marvel": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Mate": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Mate SC": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Material Icons": { + "fallbacks": ["monospace"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Material Icons Outlined": { + "fallbacks": ["monospace"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Material Icons Round": { + "fallbacks": ["monospace"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Material Icons Sharp": { + "fallbacks": ["monospace"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Material Icons Two Tone": { + "fallbacks": ["monospace"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Material Symbols Outlined": { + "fallbacks": ["monospace"], + "weights": [100, 200, 300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Material Symbols Rounded": { + "fallbacks": ["monospace"], + "weights": [100, 200, 300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Material Symbols Sharp": { + "fallbacks": ["monospace"], + "weights": [100, 200, 300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Maven Pro": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "McLaren": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Mea Culpa": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Meddon": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "MedievalSharp": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Medula One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Meera Inimai": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Megrim": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Meie Script": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Meow Script": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Merienda": { + "fallbacks": ["cursive"], + "weights": [300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Merriweather": { + "fallbacks": ["serif"], + "weights": [300, 400, 700, 900], + "styles": ["italic", "regular"], + "variants": [ + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 700], + [1, 700], + [0, 900], + [1, 900] + ] + }, + "Merriweather Sans": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700, 800], + "styles": ["regular", "italic"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800] + ] + }, + "Metal": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Metal Mania": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Metamorphous": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Metrophobic": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Michroma": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Milonga": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Miltonian": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Miltonian Tattoo": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Mina": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Mingzat": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Miniver": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Miriam Libre": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Mirza": { + "fallbacks": ["cursive"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Miss Fajardose": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Mitr": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Mochiy Pop One": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Mochiy Pop P One": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Modak": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Modern Antiqua": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Mogra": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Mohave": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700] + ] + }, + "Molengo": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Molle": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["italic"], + "variants": [[1, 400]] + }, + "Monda": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Monofett": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Monoton": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Monsieur La Doulaise": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Montaga": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Montagu Slab": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "MonteCarlo": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Montez": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Montserrat": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Montserrat Alternates": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["italic", "regular"], + "variants": [ + [0, 100], + [1, 100], + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700], + [0, 800], + [1, 800], + [0, 900], + [1, 900] + ] + }, + "Montserrat Subrayada": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Moo Lah Lah": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Moon Dance": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Moul": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Moulpali": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Mountains of Christmas": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Mouse Memoirs": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Mr Bedfort": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Mr Dafoe": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Mr De Haviland": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Mrs Saint Delafield": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Mrs Sheppards": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Ms Madi": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Mukta": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Mukta Mahee": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Mukta Malar": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Mukta Vaani": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Mulish": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Murecho": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "MuseoModerno": { + "fallbacks": ["cursive"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "My Soul": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Mynerve": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Mystery Quest": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Nabla": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Nanum Brush Script": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Nanum Gothic": { + "fallbacks": ["sans-serif"], + "weights": [400, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700], + [0, 800] + ] + }, + "Nanum Gothic Coding": { + "fallbacks": ["monospace"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Nanum Myeongjo": { + "fallbacks": ["serif"], + "weights": [400, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700], + [0, 800] + ] + }, + "Nanum Pen Script": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Neonderthaw": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Nerko One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Neucha": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Neuton": { + "fallbacks": ["serif"], + "weights": [200, 300, 400, 700, 800], + "styles": ["regular", "italic"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [1, 400], + [0, 700], + [0, 800] + ] + }, + "New Rocker": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "New Tegomin": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "News Cycle": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Newsreader": { + "fallbacks": ["serif"], + "weights": [200, 300, 400, 500, 600, 700, 800], + "styles": ["regular", "italic"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800] + ] + }, + "Niconne": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Niramit": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700], + "styles": ["italic", "regular"], + "variants": [ + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700] + ] + }, + "Nixie One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Nobile": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 700], + [1, 700] + ] + }, + "Nokora": { + "fallbacks": ["sans-serif"], + "weights": [100, 300, 400, 700, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 300], + [0, 400], + [0, 700], + [0, 900] + ] + }, + "Norican": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Nosifer": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Notable": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Nothing You Could Do": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noticia Text": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Noto Color Emoji": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Emoji": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Noto Kufi Arabic": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Music": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Naskh Arabic": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Noto Nastaliq Urdu": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Noto Rashi Hebrew": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["italic", "regular"], + "variants": [ + [0, 100], + [1, 100], + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700], + [0, 800], + [1, 800], + [0, 900], + [1, 900] + ] + }, + "Noto Sans Adlam": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Noto Sans Adlam Unjoined": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Noto Sans Anatolian Hieroglyphs": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Arabic": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans Armenian": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans Avestan": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Balinese": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Noto Sans Bamum": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Noto Sans Bassa Vah": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Noto Sans Batak": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Bengali": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans Bhaiksuki": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Brahmi": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Buginese": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Buhid": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Canadian Aboriginal": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans Carian": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Caucasian Albanian": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Chakma": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Cham": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans Cherokee": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans Coptic": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Cuneiform": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Cypriot": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Deseret": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Devanagari": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans Display": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Noto Sans Duployan": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Egyptian Hieroglyphs": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Elbasan": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Elymaic": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Ethiopic": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans Georgian": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans Glagolitic": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Gothic": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Grantha": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Gujarati": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans Gunjala Gondi": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Gurmukhi": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans Hanifi Rohingya": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Noto Sans Hanunoo": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Hatran": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Hebrew": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans HK": { + "fallbacks": ["sans-serif"], + "weights": [100, 300, 400, 500, 700, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 300], + [0, 400], + [0, 500], + [0, 700], + [0, 900] + ] + }, + "Noto Sans Imperial Aramaic": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Indic Siyaq Numbers": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Inscriptional Pahlavi": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Inscriptional Parthian": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Javanese": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Noto Sans JP": { + "fallbacks": ["sans-serif"], + "weights": [100, 300, 400, 500, 700, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 300], + [0, 400], + [0, 500], + [0, 700], + [0, 900] + ] + }, + "Noto Sans Kaithi": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Kannada": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans Kayah Li": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Noto Sans Kharoshthi": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Khmer": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans Khojki": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Khudawadi": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans KR": { + "fallbacks": ["sans-serif"], + "weights": [100, 300, 400, 500, 700, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 300], + [0, 400], + [0, 500], + [0, 700], + [0, 900] + ] + }, + "Noto Sans Lao": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans Lao Looped": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans Lepcha": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Limbu": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Linear A": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Linear B": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Lisu": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Noto Sans Lycian": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Lydian": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Mahajani": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Malayalam": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans Mandaic": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Manichaean": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Marchen": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Masaram Gondi": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Math": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Mayan Numerals": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Medefaidrin": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Noto Sans Meetei Mayek": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans Mende Kikakui": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Meroitic": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Miao": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Modi": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Mongolian": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Mono": { + "fallbacks": ["monospace"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans Mro": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Multani": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Myanmar": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans Nabataean": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans New Tai Lue": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Noto Sans Newa": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans NKo": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Nushu": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Ogham": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Ol Chiki": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Noto Sans Old Hungarian": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Old Italic": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Old North Arabian": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Old Permic": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Old Persian": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Old Sogdian": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Old South Arabian": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Old Turkic": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Oriya": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans Osage": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Osmanya": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Pahawh Hmong": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Palmyrene": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Pau Cin Hau": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Phags Pa": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Phoenician": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Psalter Pahlavi": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Rejang": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Runic": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Samaritan": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Saurashtra": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans SC": { + "fallbacks": ["sans-serif"], + "weights": [100, 300, 400, 500, 700, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 300], + [0, 400], + [0, 500], + [0, 700], + [0, 900] + ] + }, + "Noto Sans Sharada": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Shavian": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Siddham": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans SignWriting": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Sinhala": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans Sogdian": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Sora Sompeng": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Noto Sans Soyombo": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Sundanese": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Noto Sans Syloti Nagri": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Symbols": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans Symbols 2": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Syriac": { + "fallbacks": ["sans-serif"], + "weights": [100, 400, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 400], + [0, 900] + ] + }, + "Noto Sans Tagalog": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Tagbanwa": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Tai Le": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Tai Tham": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Noto Sans Tai Viet": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Takri": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Tamil": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans Tamil Supplement": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Tangsa": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Noto Sans TC": { + "fallbacks": ["sans-serif"], + "weights": [100, 300, 400, 500, 700, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 300], + [0, 400], + [0, 500], + [0, 700], + [0, 900] + ] + }, + "Noto Sans Telugu": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans Thaana": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans Thai": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans Thai Looped": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Sans Tifinagh": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Tirhuta": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Ugaritic": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Vai": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Wancho": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Warang Citi": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Yi": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Sans Zanabazar Square": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Serif": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Noto Serif Ahom": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Serif Armenian": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Serif Balinese": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Serif Bengali": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Serif Devanagari": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Serif Display": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Noto Serif Dogra": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Serif Ethiopic": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Serif Georgian": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Serif Grantha": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Serif Gujarati": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Serif Gurmukhi": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Serif Hebrew": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Serif HK": { + "fallbacks": ["serif"], + "weights": [200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Serif JP": { + "fallbacks": ["serif"], + "weights": [200, 300, 400, 500, 600, 700, 900], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 900] + ] + }, + "Noto Serif Kannada": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Serif Khmer": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Serif Khojki": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Noto Serif KR": { + "fallbacks": ["serif"], + "weights": [200, 300, 400, 500, 600, 700, 900], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 900] + ] + }, + "Noto Serif Lao": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Serif Malayalam": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Serif Myanmar": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Serif NP Hmong": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Noto Serif Oriya": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Noto Serif SC": { + "fallbacks": ["serif"], + "weights": [200, 300, 400, 500, 600, 700, 900], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 900] + ] + }, + "Noto Serif Sinhala": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Serif Tamil": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Noto Serif Tangut": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Noto Serif TC": { + "fallbacks": ["serif"], + "weights": [200, 300, 400, 500, 600, 700, 900], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 900] + ] + }, + "Noto Serif Telugu": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Serif Thai": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Serif Tibetan": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Noto Serif Toto": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Noto Serif Yezidi": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Noto Traditional Nushu": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Nova Cut": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Nova Flat": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Nova Mono": { + "fallbacks": ["monospace"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Nova Oval": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Nova Round": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Nova Script": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Nova Slim": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Nova Square": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "NTR": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Numans": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Nunito": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Nunito Sans": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 600, 700, 800, 900], + "styles": ["italic", "regular"], + "variants": [ + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 600], + [1, 600], + [0, 700], + [1, 700], + [0, 800], + [1, 800], + [0, 900], + [1, 900] + ] + }, + "Nuosu SIL": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Odibee Sans": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Odor Mean Chey": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Offside": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Oi": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Old Standard TT": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700] + ] + }, + "Oldenburg": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Ole": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Oleo Script": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Oleo Script Swash Caps": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Oooh Baby": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Open Sans": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700, 800], + "styles": ["regular", "italic"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800] + ] + }, + "Oranienbaum": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Orbitron": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Oregano": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Orelega One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Orienta": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Original Surfer": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Oswald": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Outfit": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Over the Rainbow": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Overlock": { + "fallbacks": ["cursive"], + "weights": [400, 700, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700], + [0, 900], + [1, 900] + ] + }, + "Overlock SC": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Overpass": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Overpass Mono": { + "fallbacks": ["monospace"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Ovo": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Oxanium": { + "fallbacks": ["cursive"], + "weights": [200, 300, 400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Oxygen": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 700] + ] + }, + "Oxygen Mono": { + "fallbacks": ["monospace"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Pacifico": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Padauk": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Padyakke Expanded One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Palanquin": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Palanquin Dark": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Pangolin": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Paprika": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Parisienne": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Passero One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Passion One": { + "fallbacks": ["cursive"], + "weights": [400, 700, 900], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700], + [0, 900] + ] + }, + "Passions Conflict": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Pathway Gothic One": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Patrick Hand": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Patrick Hand SC": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Pattaya": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Patua One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Pavanam": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Paytone One": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Peddana": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Peralta": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Permanent Marker": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Petemoss": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Petit Formal Script": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Petrona": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Philosopher": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Phudu": { + "fallbacks": ["cursive"], + "weights": [300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Piazzolla": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Piedra": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Pinyon Script": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Pirata One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Plaster": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Play": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Playball": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Playfair Display": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Playfair Display SC": { + "fallbacks": ["serif"], + "weights": [400, 700, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700], + [0, 900], + [1, 900] + ] + }, + "Plus Jakarta Sans": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700, 800], + "styles": ["regular", "italic"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800] + ] + }, + "Podkova": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Poiret One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Poller One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Poly": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Pompiere": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Pontano Sans": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Poor Story": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Poppins": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["italic", "regular"], + "variants": [ + [0, 100], + [1, 100], + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700], + [0, 800], + [1, 800], + [0, 900], + [1, 900] + ] + }, + "Port Lligat Sans": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Port Lligat Slab": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Potta One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Pragati Narrow": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Praise": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Prata": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Preahvihear": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Press Start 2P": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Pridi": { + "fallbacks": ["serif"], + "weights": [200, 300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Princess Sofia": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Prociono": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Prompt": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["italic", "regular"], + "variants": [ + [0, 100], + [1, 100], + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700], + [0, 800], + [1, 800], + [0, 900], + [1, 900] + ] + }, + "Prosto One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Proza Libre": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700, 800], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700], + [0, 800], + [1, 800] + ] + }, + "PT Mono": { + "fallbacks": ["monospace"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "PT Sans": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "PT Sans Caption": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "PT Sans Narrow": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "PT Serif": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "PT Serif Caption": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Public Sans": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Puppies Play": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Puritan": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Purple Purse": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Qahiri": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Quando": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Quantico": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Quattrocento": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Quattrocento Sans": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Questrial": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Quicksand": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Quintessential": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Qwigley": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Qwitcher Grypen": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Racing Sans One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Radio Canada": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700] + ] + }, + "Radley": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Rajdhani": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Rakkas": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Raleway": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Raleway Dots": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Ramabhadra": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Ramaraja": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Rambla": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Rammetto One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Rampart One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Ranchers": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Rancho": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Ranga": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Rasa": { + "fallbacks": ["serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700] + ] + }, + "Rationale": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Ravi Prakash": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Readex Pro": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Recursive": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Red Hat Display": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Red Hat Mono": { + "fallbacks": ["monospace"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700] + ] + }, + "Red Hat Text": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700] + ] + }, + "Red Rose": { + "fallbacks": ["cursive"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Redacted": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Redacted Script": { + "fallbacks": ["cursive"], + "weights": [300, 400, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 700] + ] + }, + "Redressed": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Reem Kufi": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Reem Kufi Fun": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Reem Kufi Ink": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Reenie Beanie": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Reggae One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Revalia": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Rhodium Libre": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Ribeye": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Ribeye Marrow": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Righteous": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Risque": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Road Rage": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Roboto": { + "fallbacks": ["sans-serif"], + "weights": [100, 300, 400, 500, 700, 900], + "styles": ["italic", "regular"], + "variants": [ + [0, 100], + [1, 100], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 700], + [1, 700], + [0, 900], + [1, 900] + ] + }, + "Roboto Condensed": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 700], + "styles": ["italic", "regular"], + "variants": [ + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Roboto Flex": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Roboto Mono": { + "fallbacks": ["monospace"], + "weights": [100, 200, 300, 400, 500, 600, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700] + ] + }, + "Roboto Serif": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Roboto Slab": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Rochester": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Rock Salt": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "RocknRoll One": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Rokkitt": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Romanesco": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Ropa Sans": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Rosario": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700] + ] + }, + "Rosarivo": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Rouge Script": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Rowdies": { + "fallbacks": ["cursive"], + "weights": [300, 400, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 700] + ] + }, + "Rozha One": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Rubik": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Rubik 80s Fade": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Rubik Beastly": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Rubik Bubbles": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Rubik Burned": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Rubik Dirt": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Rubik Distressed": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Rubik Gemstones": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Rubik Glitch": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Rubik Iso": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Rubik Marker Hatch": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Rubik Maze": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Rubik Microbe": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Rubik Mono One": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Rubik Moonrocks": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Rubik Puddles": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Rubik Spray Paint": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Rubik Storm": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Rubik Vinyl": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Rubik Wet Paint": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Ruda": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Rufina": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Ruge Boogie": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Ruluko": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Rum Raisin": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Ruslan Display": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Russo One": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Ruthie": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Rye": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Sacramento": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Sahitya": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Sail": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Saira": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Saira Condensed": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Saira Extra Condensed": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Saira Semi Condensed": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Saira Stencil One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Salsa": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Sanchez": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Sancreek": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Sansita": { + "fallbacks": ["sans-serif"], + "weights": [400, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700], + [0, 800], + [1, 800], + [0, 900], + [1, 900] + ] + }, + "Sansita Swashed": { + "fallbacks": ["cursive"], + "weights": [300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Sarabun": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800], + "styles": ["italic", "regular"], + "variants": [ + [0, 100], + [1, 100], + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700], + [0, 800], + [1, 800] + ] + }, + "Sarala": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Sarina": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Sarpanch": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Sassy Frass": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Satisfy": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Sawarabi Gothic": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Sawarabi Mincho": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Scada": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Scheherazade New": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Schoolbell": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Scope One": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Seaweed Script": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Secular One": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Sedgwick Ave": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Sedgwick Ave Display": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Sen": { + "fallbacks": ["sans-serif"], + "weights": [400, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700], + [0, 800] + ] + }, + "Send Flowers": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Sevillana": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Seymour One": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Shadows Into Light": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Shadows Into Light Two": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Shalimar": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Shantell Sans": { + "fallbacks": ["cursive"], + "weights": [300, 400, 500, 600, 700, 800], + "styles": ["regular", "italic"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800] + ] + }, + "Shanti": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Share": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Share Tech": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Share Tech Mono": { + "fallbacks": ["monospace"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Shippori Antique": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Shippori Antique B1": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Shippori Mincho": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Shippori Mincho B1": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Shojumaru": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Short Stack": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Shrikhand": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Siemreap": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Sigmar One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Signika": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Signika Negative": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Silkscreen": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Simonetta": { + "fallbacks": ["cursive"], + "weights": [400, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 900], + [1, 900] + ] + }, + "Single Day": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Sintony": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Sirin Stencil": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Six Caps": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Skranji": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Slabo 13px": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Slabo 27px": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Slackey": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Smokum": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Smooch": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Smooch Sans": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Smythe": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Sniglet": { + "fallbacks": ["cursive"], + "weights": [400, 800], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 800] + ] + }, + "Snippet": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Snowburst One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Sofadi One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Sofia": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Sofia Sans": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Sofia Sans Condensed": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Sofia Sans Extra Condensed": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Sofia Sans Semi Condensed": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Solitreo": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Solway": { + "fallbacks": ["serif"], + "weights": [300, 400, 500, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 700], + [0, 800] + ] + }, + "Song Myung": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Sono": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Sonsie One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Sora": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Sorts Mill Goudy": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Source Code Pro": { + "fallbacks": ["monospace"], + "weights": [200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Source Sans 3": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Source Sans Pro": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 600, 700, 900], + "styles": ["italic", "regular"], + "variants": [ + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 600], + [1, 600], + [0, 700], + [1, 700], + [0, 900], + [1, 900] + ] + }, + "Source Serif 4": { + "fallbacks": ["serif"], + "weights": [200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Source Serif Pro": { + "fallbacks": ["serif"], + "weights": [200, 300, 400, 600, 700, 900], + "styles": ["italic", "regular"], + "variants": [ + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 600], + [1, 600], + [0, 700], + [1, 700], + [0, 900], + [1, 900] + ] + }, + "Space Grotesk": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Space Mono": { + "fallbacks": ["monospace"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Special Elite": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Spectral": { + "fallbacks": ["serif"], + "weights": [200, 300, 400, 500, 600, 700, 800], + "styles": ["italic", "regular"], + "variants": [ + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700], + [0, 800], + [1, 800] + ] + }, + "Spectral SC": { + "fallbacks": ["serif"], + "weights": [200, 300, 400, 500, 600, 700, 800], + "styles": ["italic", "regular"], + "variants": [ + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700], + [0, 800], + [1, 800] + ] + }, + "Spicy Rice": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Spinnaker": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Spirax": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Splash": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Spline Sans": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Spline Sans Mono": { + "fallbacks": ["monospace"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700] + ] + }, + "Squada One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Square Peg": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Sree Krushnadevaraya": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Sriracha": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Srisakdi": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Staatliches": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Stalemate": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Stalinist One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Stardos Stencil": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Stick": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Stick No Bills": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Stint Ultra Condensed": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Stint Ultra Expanded": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "STIX Two Text": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [1, 400], + [1, 500], + [1, 600], + [1, 700] + ] + }, + "Stoke": { + "fallbacks": ["serif"], + "weights": [300, 400], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400] + ] + }, + "Strait": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Style Script": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Stylish": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Sue Ellen Francisco": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Suez One": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Sulphur Point": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 700] + ] + }, + "Sumana": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Sunflower": { + "fallbacks": ["sans-serif"], + "weights": [300, 500, 700], + "styles": [], + "variants": [ + [0, 300], + [0, 500], + [0, 700] + ] + }, + "Sunshiney": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Supermercado One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Sura": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Suranna": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Suravaram": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Suwannaphum": { + "fallbacks": ["serif"], + "weights": [100, 300, 400, 700, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 300], + [0, 400], + [0, 700], + [0, 900] + ] + }, + "Swanky and Moo Moo": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Syncopate": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Syne": { + "fallbacks": ["sans-serif"], + "weights": [400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Syne Mono": { + "fallbacks": ["monospace"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Syne Tactile": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Tai Heritage Pro": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Tajawal": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Tangerine": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Tapestry": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Taprom": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Tauri": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Taviraj": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["italic", "regular"], + "variants": [ + [0, 100], + [1, 100], + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700], + [0, 800], + [1, 800], + [0, 900], + [1, 900] + ] + }, + "Teko": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Telex": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Tenali Ramakrishna": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Tenor Sans": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Text Me One": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Texturina": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Thasadith": { + "fallbacks": ["sans-serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "The Girl Next Door": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "The Nautigal": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Tienne": { + "fallbacks": ["serif"], + "weights": [400, 700, 900], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700], + [0, 900] + ] + }, + "Tillana": { + "fallbacks": ["cursive"], + "weights": [400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Timmana": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Tinos": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Tiro Bangla": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Tiro Devanagari Hindi": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Tiro Devanagari Marathi": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Tiro Devanagari Sanskrit": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Tiro Gurmukhi": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Tiro Kannada": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Tiro Tamil": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Tiro Telugu": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Titan One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Titillium Web": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 600, 700, 900], + "styles": ["italic", "regular"], + "variants": [ + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 600], + [1, 600], + [0, 700], + [1, 700], + [0, 900] + ] + }, + "Tomorrow": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["italic", "regular"], + "variants": [ + [0, 100], + [1, 100], + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700], + [0, 800], + [1, 800], + [0, 900], + [1, 900] + ] + }, + "Tourney": { + "fallbacks": ["cursive"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Trade Winds": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Train One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Trirong": { + "fallbacks": ["serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["italic", "regular"], + "variants": [ + [0, 100], + [1, 100], + [0, 200], + [1, 200], + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700], + [0, 800], + [1, 800], + [0, 900], + [1, 900] + ] + }, + "Trispace": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800] + ] + }, + "Trocchi": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Trochut": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700] + ] + }, + "Truculenta": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Trykker": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Tulpen One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Turret Road": { + "fallbacks": ["cursive"], + "weights": [200, 300, 400, 500, 700, 800], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 700], + [0, 800] + ] + }, + "Twinkle Star": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Ubuntu": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 700], + "styles": ["italic", "regular"], + "variants": [ + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 700], + [1, 700] + ] + }, + "Ubuntu Condensed": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Ubuntu Mono": { + "fallbacks": ["monospace"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Uchen": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Ultra": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Unbounded": { + "fallbacks": ["cursive"], + "weights": [200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Uncial Antiqua": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Underdog": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Unica One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "UnifrakturCook": { + "fallbacks": ["cursive"], + "weights": [700], + "styles": [], + "variants": [[0, 700]] + }, + "UnifrakturMaguntia": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Unkempt": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + }, + "Unlock": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Unna": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Updock": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Urbanist": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Vampiro One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Varela": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Varela Round": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Varta": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Vast Shadow": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Vazirmatn": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900] + ] + }, + "Vesper Libre": { + "fallbacks": ["serif"], + "weights": [400, 500, 700, 900], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 700], + [0, 900] + ] + }, + "Viaoda Libre": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Vibes": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Vibur": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Vidaloka": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Viga": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Voces": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Volkhov": { + "fallbacks": ["serif"], + "weights": [400, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400], + [0, 700], + [1, 700] + ] + }, + "Vollkorn": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Vollkorn SC": { + "fallbacks": ["serif"], + "weights": [400, 600, 700, 900], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 600], + [0, 700], + [0, 900] + ] + }, + "Voltaire": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "VT323": { + "fallbacks": ["monospace"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Vujahday Script": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Waiting for the Sunrise": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Wallpoet": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Walter Turncoat": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Warnes": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Water Brush": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Waterfall": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Wellfleet": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Wendy One": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Whisper": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "WindSong": { + "fallbacks": ["cursive"], + "weights": [400, 500], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500] + ] + }, + "Wire One": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Work Sans": { + "fallbacks": ["sans-serif"], + "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["regular", "italic"], + "variants": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 800], + [0, 900], + [1, 100], + [1, 200], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700], + [1, 800], + [1, 900] + ] + }, + "Xanh Mono": { + "fallbacks": ["monospace"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Yaldevi": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Yanone Kaffeesatz": { + "fallbacks": ["sans-serif"], + "weights": [200, 300, 400, 500, 600, 700], + "styles": ["regular"], + "variants": [ + [0, 200], + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700] + ] + }, + "Yantramanav": { + "fallbacks": ["sans-serif"], + "weights": [100, 300, 400, 500, 700, 900], + "styles": ["regular"], + "variants": [ + [0, 100], + [0, 300], + [0, 400], + [0, 500], + [0, 700], + [0, 900] + ] + }, + "Yatra One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Yellowtail": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Yeon Sung": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Yeseva One": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Yesteryear": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Yomogi": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Yrsa": { + "fallbacks": ["serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["regular", "italic"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [1, 300], + [1, 400], + [1, 500], + [1, 600], + [1, 700] + ] + }, + "Yuji Boku": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Yuji Mai": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Yuji Syuku": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Yusei Magic": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "ZCOOL KuaiLe": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "ZCOOL QingKe HuangYou": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "ZCOOL XiaoWei": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Zen Antique": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Zen Antique Soft": { + "fallbacks": ["serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Zen Dots": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Zen Kaku Gothic Antique": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 700, 900], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 700], + [0, 900] + ] + }, + "Zen Kaku Gothic New": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 700, 900], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 700], + [0, 900] + ] + }, + "Zen Kurenaido": { + "fallbacks": ["sans-serif"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Zen Loop": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular", "italic"], + "variants": [ + [0, 400], + [1, 400] + ] + }, + "Zen Maru Gothic": { + "fallbacks": ["sans-serif"], + "weights": [300, 400, 500, 700, 900], + "styles": ["regular"], + "variants": [ + [0, 300], + [0, 400], + [0, 500], + [0, 700], + [0, 900] + ] + }, + "Zen Old Mincho": { + "fallbacks": ["serif"], + "weights": [400, 500, 600, 700, 900], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 500], + [0, 600], + [0, 700], + [0, 900] + ] + }, + "Zen Tokyo Zoo": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Zeyada": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Zhi Mang Xing": { + "fallbacks": ["cursive"], + "weights": [400], + "styles": ["regular"], + "variants": [[0, 400]] + }, + "Zilla Slab": { + "fallbacks": ["serif"], + "weights": [300, 400, 500, 600, 700], + "styles": ["italic", "regular"], + "variants": [ + [0, 300], + [1, 300], + [0, 400], + [1, 400], + [0, 500], + [1, 500], + [0, 600], + [1, 600], + [0, 700], + [1, 700] + ] + }, + "Zilla Slab Highlight": { + "fallbacks": ["cursive"], + "weights": [400, 700], + "styles": ["regular"], + "variants": [ + [0, 400], + [0, 700] + ] + } +} diff --git a/packages/support-fonts/services/fonts.google.com/index.ts b/packages/support-fonts/services/fonts.google.com/index.ts new file mode 100644 index 000000000..28fca8608 --- /dev/null +++ b/packages/support-fonts/services/fonts.google.com/index.ts @@ -0,0 +1,46 @@ +import fonts from "./fonts.json"; +import { constructURL } from "./utils"; + +interface MinimalGoogleFontMeta { + fallbacks: string[]; + weights: number[]; + styles: string[]; + variants: [number, number][]; +} + +interface GoogleFontMeta extends MinimalGoogleFontMeta { + family: string; + service: "fonts.google.com"; + urls: { + [request: string]: string; + }; +} + +/** + * Get the google font with the given family name + * If the font is not found, it will return undefined + * @param family + * @returns + */ +export function googlefont(family: string): GoogleFontMeta | false { + const found = fonts[family] as MinimalGoogleFontMeta; + if (found) { + return { + ...found, + family, + service: "fonts.google.com", + urls: { + "*": + constructURL({ + families: { + [family]: { + wght: found.weights, + // TODO: add styles and variants support + }, + }, + }) || "", + }, + }; + } + return false; +} diff --git a/packages/support-fonts/services/fonts.google.com/utils/LICENSE b/packages/support-fonts/services/fonts.google.com/utils/LICENSE new file mode 100644 index 000000000..cb453c221 --- /dev/null +++ b/packages/support-fonts/services/fonts.google.com/utils/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Datalogix, Grida Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/support-fonts/services/fonts.google.com/utils/README.md b/packages/support-fonts/services/fonts.google.com/utils/README.md new file mode 100644 index 000000000..bd3ff0794 --- /dev/null +++ b/packages/support-fonts/services/fonts.google.com/utils/README.md @@ -0,0 +1,4 @@ +# google fonts utils - forked from https://github.com/majodev/google-webfonts-helper + +- [License](https://github.com/majodev/google-webfonts-helper/blob/master/LICENSE.txt) +- [Original Author](https://github.com/majodev) diff --git a/packages/support-fonts/services/fonts.google.com/utils/index.ts b/packages/support-fonts/services/fonts.google.com/utils/index.ts new file mode 100644 index 000000000..eaf19f820 --- /dev/null +++ b/packages/support-fonts/services/fonts.google.com/utils/index.ts @@ -0,0 +1 @@ +export * from "./url"; diff --git a/packages/support-fonts/services/fonts.google.com/utils/url.ts b/packages/support-fonts/services/fonts.google.com/utils/url.ts new file mode 100644 index 000000000..ecee1713a --- /dev/null +++ b/packages/support-fonts/services/fonts.google.com/utils/url.ts @@ -0,0 +1,209 @@ +import { QueryObject, resolveURL, withQuery, withHttps } from "ufo"; + +export function constructURL({ + families, + display, + subsets, + text, +}: GoogleFonts = {}): string | false { + const subset = (Array.isArray(subsets) ? subsets : [subsets]).filter(Boolean); + const prefix = subset.length > 0 ? "css" : "css2"; + const family = convertFamiliesToArray(families ?? {}, prefix.endsWith("2")); + + if (family.length < 1) { + return false; + } + + const query: QueryObject = { + family, + }; + + if (display && isValidDisplay(display)) { + query.display = display; + } + + if (subset.length > 0) { + query.subset = subset.join(","); + } + + if (text) { + query.text = text; + } + + return withHttps(withQuery(resolveURL(GOOGLE_FONTS_DOMAIN, prefix), query)); +} + +function convertFamiliesToArray(families: Families, v2 = true): string[] { + const result: string[] = []; + + // v1 + if (!v2) { + Object.entries(families).forEach(([name, values]) => { + if (!name) { + return; + } + + name = parseFamilyName(name); + + if ( + (Array.isArray(values) && values.length > 0) || + values === true || + values === 400 + ) { + result.push(name); + return; + } + + if (values === 700) { + result.push(`${name}:bold`); + return; + } + + if (Object.keys(values).length > 0) { + const styles: string[] = []; + + Object.entries(values) + .sort(([styleA], [styleB]) => styleA.localeCompare(styleB)) + .forEach(([style, weight]) => { + const styleParsed = parseStyle(style); + + if ( + styleParsed === "ital" && + (weight === 700 || + (Array.isArray(weight) && weight.includes(700))) + ) { + styles.push("bolditalic"); + + if (Array.isArray(weight) && weight.includes(400)) { + styles.push(styleParsed); + } + } else if ( + styleParsed === "wght" && + (weight === 700 || + (Array.isArray(weight) && weight.includes(700))) + ) { + styles.push("bold"); + + if (Array.isArray(weight) && weight.includes(400)) { + styles.push(styleParsed); + } + } else if (weight !== false) { + styles.push(styleParsed); + } + }); + + const stylesSortered = styles + .sort(([styleA], [styleB]) => styleA.localeCompare(styleB)) + .reverse() + .join(","); + + if (stylesSortered === "wght") { + result.push(name); + return; + } + + result.push(`${name}:${stylesSortered}`); + } + }); + + return result.length ? [result.join("|")] : result; + } + + // v2 + if (v2) { + Object.entries(families).forEach(([name, values]) => { + if (!name) { + return; + } + + name = parseFamilyName(name); + + if (Array.isArray(values) && values.length > 0) { + result.push(`${name}:wght@${values.join(";")}`); + return; + } + + if (Object.keys(values).length > 0) { + const styles: string[] = []; + const weights: string[] = []; + + Object.entries(values) + .sort(([styleA], [styleB]) => styleA.localeCompare(styleB)) + .forEach(([style, weight]) => { + const styleParsed = parseStyle(style); + styles.push(styleParsed); + + (Array.isArray(weight) ? weight : [weight]).forEach( + (value: string | number) => { + if ( + Object.keys(values).length === 1 && + styleParsed === "wght" + ) { + weights.push(String(value)); + } else { + const index = styleParsed === "wght" ? 0 : 1; + weights.push(`${index},${value}`); + } + } + ); + }); + + if (!styles.includes("wght")) { + styles.push("wght"); + } + + const weightsSortered = weights + .sort(([weightA], [weightB]) => weightA.localeCompare(weightB)) + .join(";"); + + result.push(`${name}:${styles.join(",")}@${weightsSortered}`); + return; + } + + if (values) { + result.push(name); + } + }); + } + + return result; +} + +export const GOOGLE_FONTS_DOMAIN = "fonts.googleapis.com"; + +export function isValidDisplay(display: string): boolean { + return ["auto", "block", "swap", "fallback", "optional"].includes(display); +} + +export function parseStyle(style: string): string { + const _style = style.toLowerCase(); + + if (["wght", "regular", "normal"].includes(_style)) { + return "wght"; + } + + if (["i", "italic", "ital"].includes(_style)) { + return "ital"; + } + + return _style; +} + +export function parseFamilyName(name: string) { + return decodeURIComponent(name).replace(/\+/g, " "); +} + +interface FamilyStyles { + [style: string]: boolean | number | number[]; +} + +interface Families { + [family: string]: boolean | number | number[] | FamilyStyles; +} + +interface GoogleFonts { + families?: Families; + display?: string; + subsets?: string[] | string; + text?: string; +} diff --git a/packages/support-fonts/services/system/README.md b/packages/support-fonts/services/system/README.md new file mode 100644 index 000000000..348ca663b --- /dev/null +++ b/packages/support-fonts/services/system/README.md @@ -0,0 +1,7 @@ +# Safe system fonts utilities + +## References + +## About the [`font.json`](./fonts.json) + +The font.json is a manipulated version of the [@googleforcreators/fonts](https://github.com/GoogleForCreators/web-stories-wp/blob/main/packages/fonts/src/fonts.json) containing only minified system fonts info. diff --git a/packages/support-fonts/services/system/fonts.json b/packages/support-fonts/services/system/fonts.json new file mode 100644 index 000000000..576905d2a --- /dev/null +++ b/packages/support-fonts/services/system/fonts.json @@ -0,0 +1,93 @@ +{ + "Arial": { + "fallbacks": ["Helvetica Neue", "Helvetica", "sans-serif"] + }, + "Arial Black": { + "fallbacks": ["Arial Black", "Arial Bold", "Gadget", "sans-serif"] + }, + "Arial Narrow": { + "fallbacks": ["Arial", "sans-serif"] + }, + "Baskerville": { + "fallbacks": [ + "Baskerville Old Face", + "Hoefler Text", + "Garamond", + "Times New Roman", + "serif" + ] + }, + "Brush Script MT": { + "fallbacks": ["cursive"] + }, + "Century Gothic": { + "fallbacks": ["CenturyGothic", "AppleGothic", "sans-serif"] + }, + "Copperplate": { + "fallbacks": ["Copperplate Gothic Light", "fantasy"] + }, + "Courier New": { + "fallbacks": [ + "Courier", + "Lucida Sans Typewriter", + "Lucida Typewriter", + "monospace" + ] + }, + "Garamond": { + "fallbacks": [ + "Baskerville", + "Baskerville Old Face", + "Hoefler Text", + "Times New Roman", + "serif" + ] + }, + "Georgia": { + "fallbacks": ["Times", "Times New Roman", "serif"] + }, + "Gill Sans": { + "fallbacks": ["Gill Sans MT", "Calibri", "sans-serif"] + }, + "Lucida Bright": { + "fallbacks": ["Georgia", "serif"] + }, + "Lucida Sans Typewriter": { + "fallbacks": [ + "Lucida Console", + "monaco", + "Bitstream Vera Sans Mono", + "monospace" + ] + }, + "Palatino": { + "fallbacks": [ + "Palatino Linotype", + "Palatino LT STD", + "Book Antiqua", + "Georgia", + "serif" + ] + }, + "Papyrus": { + "fallbacks": ["fantasy"] + }, + "Tahoma": { + "fallbacks": ["Verdana", "Segoe", "sans-serif"] + }, + "Times New Roman": { + "fallbacks": ["Times New Roman", "Times", "Baskerville", "Georgia", "serif"] + }, + "Trebuchet MS": { + "fallbacks": [ + "Lucida Grande", + "Lucida Sans Unicode", + "Lucida Sans", + "Tahoma", + "sans-serif" + ] + }, + "Verdana": { + "fallbacks": ["Geneva", "sans-serif"] + } +} diff --git a/packages/support-fonts/services/system/index.ts b/packages/support-fonts/services/system/index.ts new file mode 100644 index 000000000..696de9eb4 --- /dev/null +++ b/packages/support-fonts/services/system/index.ts @@ -0,0 +1,27 @@ +import fonts from "./fonts.json"; + +interface SystemFontMeta { + family: string; + fallbacks: string[]; + service: "system"; + urls: {}; +} + +/** + * Get the google font with the given family name + * If the font is not found, it will return undefined + * @param family + * @returns + */ +export function systemfont(family: string): SystemFontMeta | false { + const found = fonts[family]; + if (found) { + return { + ...found, + family, + service: "system", + urls: {}, + }; + } + return false; +} diff --git a/packages/testing-core/package.json b/packages/testing-core/package.json new file mode 100644 index 000000000..c0b80b1c6 --- /dev/null +++ b/packages/testing-core/package.json @@ -0,0 +1,4 @@ +{ + "name": "@code-testing/core", + "version": "0.0.0" +} diff --git a/packages/testing-vis/package.json b/packages/testing-vis/package.json new file mode 100644 index 000000000..bbab39358 --- /dev/null +++ b/packages/testing-vis/package.json @@ -0,0 +1,4 @@ +{ + "name": "@code-testing/visualization", + "version": "0.0.0" +} diff --git a/yarn.lock b/yarn.lock index e8067beb9..03d871fb0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7886,6 +7886,11 @@ resolved "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz" integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw== +"@types/css-tree@^2.3.1": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@types/css-tree/-/css-tree-2.3.1.tgz#f359cf7ad9318d51b173b923bb8e8d81e21329a1" + integrity sha512-3m636Jz4d9d+lHVMp6FNLsUWQrfOx1xpm1SBxPbQYSNNgXMe+XswcsDeo1ldyULiuzYyWKk1kmvkLTgNq+215Q== + "@types/d3-color@^1": version "1.4.2" resolved "https://registry.npmjs.org/@types/d3-color/-/d3-color-1.4.2.tgz" @@ -11244,6 +11249,14 @@ css-to-mat@^1.0.3: "@daybrush/utils" "^1.3.1" "@scena/matrix" "^1.0.0" +css-tree@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" + integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== + dependencies: + mdn-data "2.0.30" + source-map-js "^1.0.1" + css-what@^6.0.1: version "6.1.0" resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" @@ -16370,6 +16383,11 @@ mdast-util-to-string@^1.0.0: resolved "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz" integrity sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A== +mdn-data@2.0.30: + version "2.0.30" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" + integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== + mdurl@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz" @@ -20661,7 +20679,7 @@ source-list-map@^2.0.0: resolved "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -source-map-js@^1.0.2: +source-map-js@^1.0.1, source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== @@ -21806,6 +21824,11 @@ typescript@^4.4.4, typescript@^4.7.4, typescript@^4.8.4, typescript@^4.9.3: resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz" integrity sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA== +ufo@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.1.1.tgz#e70265e7152f3aba425bd013d150b2cdf4056d7c" + integrity sha512-MvlCc4GHrmZdAllBc0iUDowff36Q9Ndw/UzqmEKyrfSzokTd9ZCy1i+IIk5hrYKkjoYVQyNbrw7/F8XJ2rEwTg== + uglify-js@^3.1.4: version "3.17.4" resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz"