Генератор метаданных, который получает и анализирует API Google Fonts, в основном используется для Fontsource Monorepo.
Установите пакет из npm :
npm install google-font-metadataПроект экспортирует следующие данные:
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 ) ; Использует Google Fonts CSS APIV1, который включает в себя различные файлы шрифтов для каждого подмножества, но не включает значения единокодного диапазона. Это обычно не рекомендуется.
Он экспортирует 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 "
},
...
} Использует Google Fonts CSS APIV2 и включает в себя значения Unicode-range для каждого подмножества. Тем не менее, API обслуживает файлы ttf со всеми подмножествами, включенными в один файл, и, следовательно, все ссылки для этих типов файлов в одном и том же подмножестве приводят к одной и той же ссылке для каждого веса и стиля. Файлы woff2 и woff индивидуально разделены на подмножество.
Экспортирует 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 "
},
...
}Обратите внимание, что шрифты с большими глифсами, такими как японский, корейский или китайский язык, разделены на многие меньшие подмножества , которые используют селектор @Fontface Unicode @Fontface. Примером является Noto Sans JP, который возвращает следующее:
{
...
"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 "
}
},
...,
},
...,
}
}
}
...
}Сокращает каталог Google Fonts и использует API Google Fonts для генерации всех соответствующих определений оси и загрузки метаданных. Вы можете узнать больше о оси шрифта.
Есть 3 варианта по умолчанию:
wght - только ссылки на файлы шрифтов, которые имеют только ось wght .standard - набор шрифтов по умолчанию, который включает в себя wght, wdth, slnt, opsz AXIS ', если таковые имеются.full - ссылки на файлы шрифтов, в которых все оси включены в них. Кроме того, вариант генерируется для каждой уникальной оси в шрифте, например, если существует wdth , variants.wdth.normal.latin . Wdth.normal.latin будет существовать. Обратите внимание, что ось wght также включена в каждый уникальный пользовательский вариант.
Обратите внимание, что standard или full варианты могут не существовать, если в шрифте нет соответствующих оси для этой классификации. Это должно предотвратить дубликаты вариантов с разными именами.
Экспортирует 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 "
}
}
}
},
...
} Обратите внимание, что некоторые шрифты, такие как интернация или рекурсивные, имеют ось SLNT, что означает, что их font-style в CSS не будет normal или italic на свойство, но full oblique x deg x deg . Обратитесь к тестовым прибору CSS для рекурсивного. Пока разработчик все еще показывается как normal в метаданных, он должен включать в себя oblique стиль, если они генерируют CSS, используя значения min и max из свойства recursive.axes.slnt .
Это массивы сгенерированных объектов из команды npx gfm generate [key] . Маловероятно, что вы будете использовать это.
import { APIDirect , APIVariableDirect } from "google-font-metadata" ;
const { APIDirect , APIVariableDirect } = require ( "google-font-metadata" ) ; Экспортирует data/api-response.json и data/variable-response.json соответственно.
Соскабливает страницу атрибуции Google Fonts и возвращает читаемый объект.
{
...
"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. "
},
...
} Экспортирует data/licenses.json
{
...
{
"name" : " Thick Stroke " ,
"tag" : " XOPQ " ,
"min" : -1000 ,
"max" : 2000 ,
"default" : 88 ,
"precision" : 0
},
...
} Экспортирует data/axis-registry.json
Вы можете обратиться к src/index.ts и src/data.ts чтобы увидеть все экспорты.
Вы можете использовать инструмент gfm CLI для обновления метаданных со свежими результатами Google API.
npx gfm generate [key] - получает API Google по умолчанию, который можно использовать для дальнейшего анализа. Это должно быть вызвано до npx gfm parse .
Флаги:
-n, --normal -только принесите обычный API разработчика Google для APIV1 и APIV2.-v, --variable -только соскребайте страницу оси переменной для Apivariable. key примечания не нужно давать, если эта опция передается. Вы можете получить key Google Fonts API отсюда. В качестве альтернативы, вы можете использовать файл .env с помощью API_KEY=keyvalue вместо того, чтобы предоставить аргумент ключа в команде.
npx gfm parse - SANAS через API Google FONTS CSS и генерируйте полные метаданные с использованием данных generate команд.
Флаги:
-1, --v1 -только анализ и обновление Apiv1.-2, --v2 -только анализ и обновление Apiv2.-v, --variable -только анализ и обновление обновления.-l, --license -только анализ и обновление Apilicense.-f, --force -это пропускает кеш и силу анализы каждого шрифта.--no-validate -Этот пропуски, вызывая npx gfm validate после завершения анализа. npx gfm validate - команда Helper для проверки ваших существующих метаданных с помощью схемы. Это автоматически вызывается с помощью npx gfm parse .
Флаги:
-1, --v1 -только проверка APIV1.-2, --v2 -только проверка APIV2.-v, --variable -Только подтвердить апиврируемое.