import { Injectable } from '../decorators' import WebFont from 'webfontloader' @Injectable('webfontLoaderService') export default class WebfontLoaderService { loadFonts(families: string[]): void { // const families = fontList.map(f => f.family) let hasFonts = true // Chrome on a Mac doesn't get the bold versions automatically, so explicitly request those too. // (It does get italic automatically though. :shrug:) const alsoBold = [ ...families, ...families.map(font => `${font}:bold`) ] try { WebFont.load({ google: { families: alsoBold }, timeout: 5000 }) } catch (err) { hasFonts = false } finally { if (hasFonts) { WebFont.load({ google: { families: alsoBold }, timeout: 5000 }) } } } loadFontVariants(fontFamily: string, variants: string[]): void { const fontVariants = [`${fontFamily}:${variants.join(',')}`] WebFont.load({ google: { families: fontVariants }, timeout: 5000 }) } }