Un generador de metadatos que obtiene y analiza la API de Google Fonts que se utilizará principalmente para el monoreo de FontSource.
Instale el paquete desde npm :
npm install google-font-metadataEl proyecto exporta los siguientes datos:
import {
APIv1 ,
APIv2 ,
APIVariable ,
APIIconStatic ,
APIIconVariable ,
APILicense ,
APIRegistry ,
} from "google-font-metadata" ;
const {
APIv1 ,
APIv2 ,
APIVariable ,
APIIconStatic ,
APIIconVariable ,
APILicense ,
APIRegistry ,
} = require ( "google-font-metadata" ) ;
console . dir ( APIv2 ) ; Utiliza el Google Fonts CSS APIV1 que incluye diferentes archivos de fuentes para cada subconjunto, pero no incluye valores de rango unicode. Esto generalmente no se recomienda.
Exporta data/google-fonts-v1.json .
{
...
"abel" : {
"family" : " Abel " ,
"id" : " abel " ,
"subsets" : [ " latin " ],
"weights" : [ 400 ],
"styles" : [ " normal " ],
"variants" : {
"400" : {
"normal" : {
"latin" : {
"url" : {
"woff2" : " https://fonts.gstatic.com/s/abel/v18/MwQ5bhbm2POE2V9BPQ.woff2 " ,
"woff" : " https://fonts.gstatic.com/s/abel/v18/MwQ5bhbm2POE2V9BOw.woff " ,
"truetype" : " https://fonts.gstatic.com/s/abel/v18/MwQ5bhbm2POE2V9BOA.ttf "
}
}
}
}
},
"defSubset" : " latin " ,
"lastModified" : " 2022-04-20 " ,
"version" : " v18 " ,
"category" : " sans-serif "
},
...
} Utiliza el Google Fonts CSS APIV2 e incluye los valores de rango unicode para cada subconjunto. Sin embargo, la API sirve archivos ttf con todos los subconjuntos incluidos en un archivo y, por lo tanto, todos los enlaces para esos tipos de archivos en el mismo subconjunto conducen al mismo enlace para cada peso y estilo. Los archivos woff2 y woff se dividen individualmente por subconjunto.
Exporta data/google-fonts-v2.json .
{
...
"abel" : {
"family" : " Abel " ,
"id" : " abel " ,
"subsets" : [ " latin " ],
"weights" : [ 400 ],
"styles" : [ " normal " ],
"unicodeRange" : {
"latin" : " U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD "
},
"variants" : {
"400" : {
"normal" : {
"latin" : {
"url" : {
"woff2" : " https://fonts.gstatic.com/s/abel/v18/MwQ5bhbm2POE2V9BPQ.woff2 " ,
"woff" : " https://fonts.gstatic.com/s/abel/v18/MwQ5bhbm2POE6Vs.woff " ,
"truetype" : " https://fonts.gstatic.com/s/abel/v18/MwQ5bhbm2POE6Vg.ttf "
}
}
}
}
},
"defSubset" : " latin " ,
"lastModified" : " 2022-04-20 " ,
"version" : " v18 " ,
"category" : " sans-serif "
},
...
}Tenga en cuenta que las fuentes con grandes glifos como el idioma japonés, coreano o chino, se dividen en muchos subconjuntos numerados más pequeños que utilizan el selector de rango @Fontface unicode. Un ejemplo es Noto sin JP que devuelve lo siguiente:
{
...
"noto-sans-jp" : {
"family" : " Noto Sans JP " ,
"id" : " noto-sans-jp " ,
"subsets" : [ " japanese " , " latin " ],
"weights" : [ 100 , 300 , 400 , 500 , 700 , 900 ],
"styles" : [ " normal " ],
"unicodeRange" : {
"[0]" : " U+25ee8,...,U+2f9f4 " ,
"[1]" : " U+1f235-1f23b,...,U+25ed8 " ,
...
"[119]" : " U+20,...,U+ff0e "
},
"variants" : {
"100" : {
"normal" : {
"[0]" : {
"url" : {
"woff2" : " https://fonts.gstatic.com/s/notosansjp/v42/-F6ofjtqLzI2JPCgQBnw7HFQoggPkENvl4B0ZLgOquiXidBa3qHiDcp2RQ.0.woff2 " ,
"woff" : " https://fonts.gstatic.com/s/notosansjp/v42/-F62fjtqLzI2JPCgQBnw7HFoxQII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.0.woff " ,
"opentype" : " https://fonts.gstatic.com/s/notosansjp/v42/-F6ofjtqLzI2JPCgQBnw7HFQoggM.otf "
}
},
...,
},
...,
}
}
}
...
}Rasta el directorio de Google Fonts y utiliza la API de Google Fonts para generar todas las definiciones de eje relevantes y descargar metadatos de variantes. Puede aprender más eje de fuente variable 'aquí.
Hay 3 variantes predeterminadas:
wght : solo enlaces a archivos de fuentes que solo tienen el eje wght .standard : un conjunto predeterminado de fuentes que incluye wght, wdth, slnt, opsz AXIS 'si está disponible.full a archivos de fuentes que tienen todo el eje 'incluido dentro de ellos. Además, se genera una variante para cada eje único en la fuente, por ejemplo, si existe wdth , variants.wdth.normal.latin existirá. Tenga en cuenta que el eje wght también se incluye en cada variante personalizada única.
Tenga en cuenta que las variantes standard o full pueden no existir si no hay ejes relevantes en la fuente para esa clasificación. Esto es para evitar variantes duplicadas con diferentes nombres.
Exporta data/variable.json .
{
...
"akshar" : {
"family" : " Akshar " ,
"id" : " akshar " ,
"axes" : {
"wght" : { "default" : " 400 " , "min" : " 300 " , "max" : " 700 " , "step" : " 1 " }
},
"variants" : {
"wght" : {
"normal" : {
"devanagari" : " https://fonts.gstatic.com/s/akshar/v5/Yq6V-LyHWTfz9rGCpR5lhOc.woff2 " ,
"latin-ext" : " https://fonts.gstatic.com/s/akshar/v5/Yq6V-LyHWTfz9rGCqh5lhOc.woff2 " ,
"latin" : " https://fonts.gstatic.com/s/akshar/v5/Yq6V-LyHWTfz9rGCpB5l.woff2 "
}
},
"full" : {
"normal" : {
"devanagari" : " https://fonts.gstatic.com/s/akshar/v5/Yq6V-LyHWTfz9rGCpR5lhOc.woff2 " ,
"latin-ext" : " https://fonts.gstatic.com/s/akshar/v5/Yq6V-LyHWTfz9rGCqh5lhOc.woff2 " ,
"latin" : " https://fonts.gstatic.com/s/akshar/v5/Yq6V-LyHWTfz9rGCpB5l.woff2 "
}
},
"standard" : {
"normal" : {
"devanagari" : " https://fonts.gstatic.com/s/akshar/v5/Yq6V-LyHWTfz9rGCpR5lhOc.woff2 " ,
"latin-ext" : " https://fonts.gstatic.com/s/akshar/v5/Yq6V-LyHWTfz9rGCqh5lhOc.woff2 " ,
"latin" : " https://fonts.gstatic.com/s/akshar/v5/Yq6V-LyHWTfz9rGCpB5l.woff2 "
}
}
}
},
...
} Tenga en cuenta que ciertas fuentes como Inter o recursivas tienen el eje SLNT, lo que significa que su font-style en CSS no será normal o italic en la propiedad full pero oblique x deg x deg . Consulte el accesorio de prueba CSS para obtener recursivo. Si bien sigue siendo normal en los metadatos, depende del desarrollador incluir el estilo oblique si están generando CSS utilizando los valores min y max de la propiedad recursive.axes.slnt .
Estas son matrices de objetos generados del comando npx gfm generate [key] . Es poco probable que uses esto.
import { APIDirect , APIVariableDirect } from "google-font-metadata" ;
const { APIDirect , APIVariableDirect } = require ( "google-font-metadata" ) ; Exporta data/api-response.json y data/variable-response.json respectivamente.
Raspan la página de atribución de Google Fonts y devuelve un objeto legible.
{
...
"abel" : {
"id" : " abel " ,
"authors" : {
"copyright" : " Copyright 2011, Matthew Desmond with Reserved Font Name Abel. " ,
"website" : " http://www.madtype.com " ,
"email" : " [email protected] "
},
"license" : {
"type" : " SIL Open Font License, 1.1 " ,
"url" : " http://scripts.sil.org/OFL "
},
"original" : " Copyright (c) 2011, Matthew Desmond (http://www.madtype.com | [email protected]), with Reserved Font Name Abel. "
},
...
} Exporta data/licenses.json
{
...
{
"name" : " Thick Stroke " ,
"tag" : " XOPQ " ,
"min" : -1000 ,
"max" : 2000 ,
"default" : 88 ,
"precision" : 0
},
...
} Exporta data/axis-registry.json
Puede consultar src/index.ts y src/data.ts para ver todas las exportaciones.
Puede usar la herramienta gfm CLI para actualizar los metadatos con nuevos resultados de las API de Google.
npx gfm generate [key] : obtiene la API de Google Fonts predeterminada que se puede usar para analizar más adelante. Esto tiene que llamarse antes npx gfm parse .
Banderas:
-n, --normal -Solo obtenga la API de desarrollador de Google normal para APIV1 y APIV2.-v, --variable -Solo raspe la página del eje variable para apivariable. key de nota no es necesario dar si esta opción se pasa. Puede obtener un valor key de la API de Google Fonts desde aquí. Alternativamente, puede usar un archivo .env con API_KEY=keyvalue en lugar de proporcionar un argumento clave en el comando.
npx gfm parse : analiza la API CSS de Google Fonts y genere metadatos completos utilizando los datos de comandos generate .
Banderas:
-1, --v1 -Solo analizar y actualizar APIV1.-2, --v2 -Solo analiza y actualiza APIV2.-v, --variable -solo analizar y actualizar apivariables.-l, --license -solo analiza y actualiza apilicense.-f, --force -Esto omite el caché y la fuerza de fuerza cada fuente.--no-validate -Esto omita que invocen npx gfm validate después de terminar el análisis. npx gfm validate - Comando auxiliar para validar sus metadatos existentes con un esquema. Esto se invoca automáticamente con npx gfm parse .
Banderas:
-1, --v1 -Solo valide la apiv1.-2, --v2 -solo valide la apiv2.-v, --variable -solo valida apivariable.