Google Fonts API를 FontSource Monorepo에 주로 사용하도록 Google Fonts API를 가져오고 구문 분석하는 메타 데이터 생성기.
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를 사용하고 모든 서브 세트에 대한 유니 코드 범위 값을 포함합니다. 그러나 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 셀렉터를 사용하는 많은 소규모 번호 서브 세트로 나뉩니다. 예를 들어 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 디렉토리를 긁어 내고 Google Fonts API를 사용하여 모든 관련 축 정의를 생성하고 변형 메타 데이터를 다운로드합니다. 여기에서 더 가변적 인 글꼴 축을 배울 수 있습니다.
기본 변형은 3 가지입니다.
wght wght 축 만있는 글꼴 파일에만 링크됩니다.standard - 사용 가능한 경우 wght, wdth, slnt, opsz AXIS를 포함하는 기본 글꼴 세트.full 모든 축이 포함 된 글꼴 파일에 대한 링크. 또한, wdth 존재하는 경우, variants.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 "
}
}
}
},
...
} Inter 또는 Recursive와 같은 특정 글꼴은 SLNT 축을 가지고 있습니다. 즉, CSS의 font-style full 에서 normal 이거나 italic 아니지만 oblique x deg x deg 의미합니다. 재귀는 CSS 테스트 고정물을 참조하십시오. 메타 데이터에서 여전히 normal 으로 표시되지만 recursive.axes.slnt 속성에서 min 및 max 값을 사용하여 CSS를 생성하는 경우 oblique 스타일을 포함시키는 것은 개발자에게 달려 있습니다.
이들은 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 글꼴 속성 페이지를 긁어 내고 읽을 수있는 객체를 반환합니다.
{
...
"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 내보내고 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] - 나중에 구문 분석에 사용할 수있는 기본 Google Fonts API를 가져옵니다. 이것은 npx gfm parse 전에 호출되어야합니다.
깃발 :
-n, --normal -APIV1 및 APIV2의 일반적인 Google 개발자 API 만 가져옵니다.-v, --variable apivariable의 변수 축 페이지 만 긁어냅니다. 이 옵션이 전달되면 참고 key 제공 할 필요가 없습니다. 여기에서 Google Fonts API key 값을 얻을 수 있습니다. 또는 명령에 키 인수를 제공하는 대신 API_KEY=keyvalue 있는 .env 파일을 사용할 수 있습니다.
npx gfm parse Google Fonts CSS API를 통해 구문 분석하고 명령 데이터를 사용하여 전체 메타 데이터를 generate 합니다.
깃발 :
-1, --v1 APIV1을 구문 분석하고 업데이트합니다.-2, --v2 APIV2를 구문 분석하고 업데이트합니다.-v, --variable 을 구문 분석하고 업데이트합니다.-l, --license parse and update pilicense.-f, --force -캐시를 건너 뛰고 모든 글꼴을 강제로 구문 분석합니다.--no-validate 파싱을 마친 후 npx gfm validate 하게하는 건너칩니다. npx gfm validate -Helper 명령은 기존 메타 데이터를 스키마로 검증합니다. 이것은 npx gfm parse 으로 자동으로 호출됩니다.
깃발 :
-1, --v1 APIV1 만 검증하십시오.-2, --v2 APIV2 만 검증하십시오.-v, --variable apivariable 만 유효성을 유지합니다.