From 59a38e88d1ad3c52c93df324357197b5330d192c Mon Sep 17 00:00:00 2001 From: sushichan044 Date: Wed, 18 Dec 2024 18:19:36 +0900 Subject: [PATCH] feat: support glyphs option in Google Icons (#61) --- src/providers/googleicons.ts | 13 +- test/providers/googleicons.test.ts | 352 +++++++++++++++++++++++++++++ 2 files changed, 361 insertions(+), 4 deletions(-) diff --git a/src/providers/googleicons.ts b/src/providers/googleicons.ts index 6f15de8..3b905e4 100644 --- a/src/providers/googleicons.ts +++ b/src/providers/googleicons.ts @@ -1,5 +1,6 @@ -import { hash } from 'ohash' +import type { ResolveFontOptions } from '../types' +import { hash } from 'ohash' import { extractFontFaceData } from '../css/parse' import { $fetch } from '../fetch' import { defineFontProvider } from '../utils' @@ -21,7 +22,10 @@ export default defineFontProvider('googleicons', async (_options, ctx) => { // svg: 'Mozilla/4.0 (iPad; CPU OS 4_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/4.1 Mobile/9A405 Safari/7534.48.3', } - async function getFontDetails(family: string) { + async function getFontDetails(family: string, options: ResolveFontOptions) { + // Google Icons require sorted icon names, or we will see a 400 error + const iconNames = options.glyphs?.sort().join(',') + let css = '' if (family.includes('Icons')) { @@ -51,6 +55,7 @@ export default defineFontProvider('googleicons', async (_options, ctx) => { headers: { 'user-agent': userAgents[extension as keyof typeof userAgents] }, query: { family: `${family}:` + `opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200`, + ...(iconNames && { icon_names: iconNames }), }, }) } @@ -60,12 +65,12 @@ export default defineFontProvider('googleicons', async (_options, ctx) => { } return { - async resolveFont(fontFamily, defaults) { + async resolveFont(fontFamily, options) { if (!googleIcons.includes(fontFamily)) { return } - const fonts = await ctx.storage.getItem(`googleicons:${fontFamily}-${hash(defaults)}-data.json`, () => getFontDetails(fontFamily)) + const fonts = await ctx.storage.getItem(`googleicons:${fontFamily}-${hash(options)}-data.json`, () => getFontDetails(fontFamily, options)) return { fonts } }, } diff --git a/test/providers/googleicons.test.ts b/test/providers/googleicons.test.ts index 3d85e4f..5d0bf52 100644 --- a/test/providers/googleicons.test.ts +++ b/test/providers/googleicons.test.ts @@ -363,4 +363,356 @@ describe('googleicons', () => { ] `) }) + + it('respects glyphs option and resolves optimized Material Symbols', async () => { + const unifont = await createUnifont([providers.googleicons()]) + + const { fonts } = await unifont.resolveFont('Material Symbols Outlined', { + glyphs: ['arrow_right', 'favorite', 'arraw_drop_down'], + styles: ['normal'], + weights: ['400'], + subsets: [], + }) + + // Do not use sanitizeFontSource here, as we must test the url parameters + expect(fonts).toMatchInlineSnapshot(` + [ + { + "src": [ + { + "format": "woff2", + "url": "https://fonts.gstatic.com/icon/font?kit=kJEhBvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oFsLjBuVYRAXlv94mR5I3mdcRbO7a3RmptnIcogHaoSnWx03LjDeOpP5MpNgr_g&skey=b8dc2088854b122f&v=v222", + }, + ], + "style": "normal", + "weight": [ + 100, + 700, + ], + }, + { + "src": [ + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1p-p_4MrImHCIJIZrDCvHeelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHeelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1t-p_4MrImHCIJIZrDCvHeelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1i-q_4MrImHCIJIZrDCvHeelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1n-q_4MrImHCIJIZrDCvHeelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1p-p_4MrImHCIJIZrDCvHeelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHeelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1t-p_4MrImHCIJIZrDCvHeelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1i-q_4MrImHCIJIZrDCvHeelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1n-q_4MrImHCIJIZrDCvHeelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + ], + "style": "normal", + "weight": 100, + }, + { + "src": [ + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1p-p_4MrImHCIJIZrDAvHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDAvHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1t-p_4MrImHCIJIZrDAvHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1i-q_4MrImHCIJIZrDAvHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1n-q_4MrImHCIJIZrDAvHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1p-p_4MrImHCIJIZrDAvHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDAvHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1t-p_4MrImHCIJIZrDAvHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1i-q_4MrImHCIJIZrDAvHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1n-q_4MrImHCIJIZrDAvHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + ], + "style": "normal", + "weight": 200, + }, + { + "src": [ + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1p-p_4MrImHCIJIZrDDxHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDDxHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1t-p_4MrImHCIJIZrDDxHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1i-q_4MrImHCIJIZrDDxHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1n-q_4MrImHCIJIZrDDxHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1p-p_4MrImHCIJIZrDDxHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDDxHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1t-p_4MrImHCIJIZrDDxHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1i-q_4MrImHCIJIZrDDxHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1n-q_4MrImHCIJIZrDDxHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + ], + "style": "normal", + "weight": 300, + }, + { + "src": [ + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1p-p_4MrImHCIJIZrDCvHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1t-p_4MrImHCIJIZrDCvHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1i-q_4MrImHCIJIZrDCvHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1n-q_4MrImHCIJIZrDCvHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1p-p_4MrImHCIJIZrDCvHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1t-p_4MrImHCIJIZrDCvHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1i-q_4MrImHCIJIZrDCvHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1n-q_4MrImHCIJIZrDCvHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + ], + "style": "normal", + "weight": 400, + }, + { + "src": [ + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1p-p_4MrImHCIJIZrDCdHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCdHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1t-p_4MrImHCIJIZrDCdHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1i-q_4MrImHCIJIZrDCdHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1n-q_4MrImHCIJIZrDCdHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1p-p_4MrImHCIJIZrDCdHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCdHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1t-p_4MrImHCIJIZrDCdHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1i-q_4MrImHCIJIZrDCdHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1n-q_4MrImHCIJIZrDCdHOelHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + ], + "style": "normal", + "weight": 500, + }, + { + "src": [ + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1p-p_4MrImHCIJIZrDBxG-elHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDBxG-elHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1t-p_4MrImHCIJIZrDBxG-elHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1i-q_4MrImHCIJIZrDBxG-elHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1n-q_4MrImHCIJIZrDBxG-elHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1p-p_4MrImHCIJIZrDBxG-elHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDBxG-elHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1t-p_4MrImHCIJIZrDBxG-elHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1i-q_4MrImHCIJIZrDBxG-elHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1n-q_4MrImHCIJIZrDBxG-elHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + ], + "style": "normal", + "weight": 600, + }, + { + "src": [ + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1p-p_4MrImHCIJIZrDBIG-elHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDBIG-elHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1t-p_4MrImHCIJIZrDBIG-elHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1i-q_4MrImHCIJIZrDBIG-elHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1n-q_4MrImHCIJIZrDBIG-elHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1p-p_4MrImHCIJIZrDBIG-elHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDBIG-elHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1t-p_4MrImHCIJIZrDBIG-elHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1i-q_4MrImHCIJIZrDBIG-elHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + { + "format": "woff", + "url": "https://fonts.gstatic.com/icon/font?kit=kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1n-q_4MrImHCIJIZrDBIG-elHdUa3lJNrop87duNwMq-FeICCjJDAsrsZyT0xqdv_vUCh_3tDTxuUA&skey=b8dc2088854b122f&v=v222", + }, + ], + "style": "normal", + "weight": 700, + }, + ] + `) + }) })