Un générateur de métadonnées qui récupère et analyse l'API Google Fonts pour être principalement utilisé pour le FONTSource MonorePO.
Installez le package à partir de npm :
npm install google-font-metadataLe projet exporte les données suivantes:
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 ) ; Utilise les polices Google CSS APIV1 qui incluent différents fichiers de police pour chaque sous-ensemble, mais n'incluent pas les valeurs de rangement Unicode. Ce n'est généralement pas recommandé.
Il exporte 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 "
},
...
} Utilise les polices Google CSS APIV2 et inclut les valeurs de rangement Unicode pour chaque sous-ensemble. Cependant, l'API sert des fichiers ttf avec tous les sous-ensembles inclus dans un fichier et donc tous les liens pour ces types de fichiers dans le même sous-ensemble mènent au même lien pour chaque poids et style. Les fichiers woff2 et woff sont divisés individuellement par sous-ensemble.
Exporte 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 "
},
...
}Notez que les polices avec de grands glyphes tels que la langue japonaise, coréenne ou chinoise sont divisées en de nombreux sous-ensembles numérotés plus petits qui utilisent le sélecteur @Fontface Unicode-Range. Un exemple est Noto Sans JP qui renvoie ce qui suit:
{
...
"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 "
}
},
...,
},
...,
}
}
}
...
}Arrondit le répertoire Google Fonts et utilise l'API Google Fonts pour générer toutes les définitions de l'axe pertinentes et télécharger des métadonnées variantes. Vous pouvez apprendre plus d'axe de police variable ici.
Il y a 3 variantes par défaut:
wght - uniquement des liens vers des fichiers de police qui n'ont que l'axe wght .standard - Un ensemble de polices par défaut qui inclut wght, wdth, slnt, opsz Axe 'si disponible.full - Liens vers des fichiers de police qui ont tous les axes inclus en eux. De plus, une variante est générée pour chaque axe unique dans la police, par exemple si wdth existe, variants.wdth.normal.latin existera. Notez que l'axe wght est également inclus dans chaque variante personnalisée unique.
Notez que les variantes standard ou full peuvent ne pas exister s'il n'y a pas de axes pertinents dans la police pour cette classification. Il s'agit d'éviter des variantes en double avec différents noms.
Exportation 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 "
}
}
}
},
...
} Notez que certaines polices telles que inter ou récursives ont l'axe SLNT, ce qui signifie que leur font-style dans CSS ne sera pas normal ou italic sur la propriété full mais oblique x deg x deg . Reportez-vous au luminaire de test CSS pour récursif. Tout en montrant comme normal dans les métadonnées, il appartient au développeur d'inclure le style oblique s'ils génèrent des CSS en utilisant les valeurs min et max de la propriété recursive.axes.slnt .
Ce sont des tableaux d'objets générés à partir de la commande npx gfm generate [key] . Il est peu probable que vous l'utiliserez.
import { APIDirect , APIVariableDirect } from "google-font-metadata" ;
const { APIDirect , APIVariableDirect } = require ( "google-font-metadata" ) ; Exports data/api-response.json et data/variable-response.json respectivement.
Arrondit la page d'attribution Google Fonts et renvoie un objet lisible.
{
...
"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. "
},
...
} Exportation data/licenses.json
{
...
{
"name" : " Thick Stroke " ,
"tag" : " XOPQ " ,
"min" : -1000 ,
"max" : 2000 ,
"default" : 88 ,
"precision" : 0
},
...
} Exportation data/axis-registry.json
Vous pouvez vous référer à src/index.ts et src/data.ts pour voir toutes les exportations.
Vous pouvez utiliser l'outil gfm CLI pour mettre à jour les métadonnées avec de nouveaux résultats des API Google.
npx gfm generate [key] - Repare l'API Google Fonts par défaut qui peut être utilisée pour l'analyse plus tard. Cela doit être appelé avant npx gfm parse .
Frappeurs:
-n, --normal - Reposez uniquement l'API de développeur Google normal pour APIV1 et APIV2.-v, --variable - Stractez uniquement la page de l'axe variable pour apivariable. Remarque key n'a pas besoin d'être donné si cette option est passée. Vous pouvez obtenir une valeur key de l'API Google Fonts à partir d'ici. Alternativement, vous pouvez utiliser un fichier .env avec API_KEY=keyvalue au lieu de fournir un argument clé dans la commande.
npx gfm parse - Parses via l'API Google Fonts CSS et générez des métadonnées complètes à l'aide des données de commande generate .
Frappeurs:
-1, --v1 - Parse et met à jour APIV1.-2, --v2 - Analyser et mettre à jour APIV2.-v, --variable - ne fait que l'analyse et la mise à jour apivariable.-l, --license - ne fait que l'analyse et la mise à jour de l'apilisen.-f, --force - Cela saute le cache et force à l'analyse de chaque police.--no-validate - Ce saute l'invoquant npx gfm validate après avoir terminé l'analyse. npx gfm validate - Commande d'assistance pour valider vos métadonnées existantes avec un schéma. Ceci est automatiquement invoqué avec npx gfm parse .
Frappeurs:
-1, --v1 - Valider uniquement APIV1.-2, --v2 - Valider uniquement APIV2.-v, --variable - Valider uniquement apivariable.