Add standalone web-font target

This commit is contained in:
be5invis 2020-11-27 16:20:10 -08:00
parent afeee11738
commit 7d1d00e303
2 changed files with 21 additions and 17 deletions

View file

@ -313,8 +313,8 @@ To create a custom build, you need:
1. `contents::<plan>` : TTF (Hinted and Unhinted), WOFF(2) and Web font CSS; 1. `contents::<plan>` : TTF (Hinted and Unhinted), WOFF(2) and Web font CSS;
2. `ttf::<plan>` : TTF; 2. `ttf::<plan>` : TTF;
3. `ttf-unhinted::<plan>` : Unhinted TTF only; 3. `ttf-unhinted::<plan>` : Unhinted TTF only;
4. `woff::<plan>` : TTF and WOFF only; 4. `webfont::<plan>` : Web fonts only (CSS + WOFF2);
5. `woff2::<plan>` : TTF and WOFF2 only. 5. `woff2::<plan>` : WOFF2 only.
### Configuring Custom Build ### Configuring Custom Build

View file

@ -268,30 +268,34 @@ const GroupContents = task.group("contents", async (target, gr) => {
// Webfont CSS // Webfont CSS
const DistWebFontCSS = file.make( const DistWebFontCSS = file.make(
gid => `${DIST}/${gid}/${gid}.css`, gr => `${DIST}/${gr}/${gr}.css`,
async (target, out, gid) => { async (target, out, gr) => {
// Note: this target does NOT depend on the font files. // Note: this target does NOT depend on the font files.
const [gr, ts] = await target.need(BuildPlanOf(gid), GroupFontsOf(gid), de(out.dir)); const [bp, ts] = await target.need(BuildPlanOf(gr), GroupFontsOf(gr), de(out.dir));
const hs = await target.need(...ts.map(FontInfoOf)); const hs = await target.need(...ts.map(FontInfoOf));
await node("utility/make-webfont-css.js", out.full, gr.family, hs, webfontFormats); await node("utility/make-webfont-css.js", out.full, bp.family, hs, webfontFormats);
} }
); );
// Content files // Content files
const GroupTTFs = task.group("ttf", async (target, gid) => { const GroupTTFs = task.group("ttf", async (target, gr) => {
const [ts] = await target.need(GroupFontsOf(gid)); const [ts] = await target.need(GroupFontsOf(gr));
await target.need(ts.map(tn => DistHintedTTF(gid, tn))); await target.need(ts.map(tn => DistHintedTTF(gr, tn)));
}); });
const GroupUnhintedTTFs = task.group("ttf-unhinted", async (target, gid) => { const GroupUnhintedTTFs = task.group("ttf-unhinted", async (target, gr) => {
const [ts] = await target.need(GroupFontsOf(gid)); const [ts] = await target.need(GroupFontsOf(gr));
await target.need(ts.map(tn => DistUnhintedTTF(gid, tn))); await target.need(ts.map(tn => DistUnhintedTTF(gr, tn)));
}); });
const GroupWoff2s = task.group("woff2", async (target, gid) => { const GroupWebFonts = task.group("webfont", async (target, gr) => {
const [ts] = await target.need(GroupFontsOf(gid)); const [ts] = await target.need(GroupFontsOf(gr));
await target.need(ts.map(tn => DistWoff2(gid, tn))); await target.need(GroupWoff2s(gr), DistWebFontCSS(gr));
}); });
const GroupFonts = task.group("fonts", async (target, gid) => { const GroupWoff2s = task.group("woff2", async (target, gr) => {
await target.need(GroupTTFs(gid), GroupUnhintedTTFs(gid), GroupWoff2s(gid)); const [ts] = await target.need(GroupFontsOf(gr));
await target.need(ts.map(tn => DistWoff2(gr, tn)));
});
const GroupFonts = task.group("fonts", async (target, gr) => {
await target.need(GroupTTFs(gr), GroupUnhintedTTFs(gr), GroupWoff2s(gr));
}); });
// Per group file // Per group file