* Make user build plans' variants inheritable (#1345).
This commit is contained in:
parent
401c8d7863
commit
5f6cf31818
4 changed files with 25 additions and 4 deletions
|
@ -1 +1,2 @@
|
||||||
|
* Make user build plans' variants inheritable (#1345).
|
||||||
* Add top-cut variants of `1` (#1354).
|
* Add top-cut variants of `1` (#1354).
|
|
@ -182,6 +182,7 @@ Subsection `variants` is used to configure character variants in the font. Prope
|
||||||
- `ss17`: Set character variant to “Recursive Mono Style”.
|
- `ss17`: Set character variant to “Recursive Mono Style”.
|
||||||
- `ss18`: Set character variant to “Input Mono Style”.
|
- `ss18`: Set character variant to “Input Mono Style”.
|
||||||
- `ss20`: Set character variant to “Curly Style”.
|
- `ss20`: Set character variant to “Curly Style”.
|
||||||
|
- Other build plans’ variant information, by using `buildPlans.<name>`. For example, `inherits = "buildPlans.iosevka-exp"` will inherit from build plan “`iosevka-exp`”’s variant configuration.
|
||||||
|
|
||||||
<!-- END Section-Stylistic-Sets -->
|
<!-- END Section-Stylistic-Sets -->
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
exports.apply = applyVariantData;
|
exports.apply = applyVariantData;
|
||||||
function applyVariantData(data, para, argv) {
|
function applyVariantData(data, para, argv) {
|
||||||
const parsed = parseVariantsData(data);
|
const parsed = parseVariantsData(data, argv);
|
||||||
let tagSet = new Set();
|
let tagSet = new Set();
|
||||||
for (const prime of parsed.primes.values()) {
|
for (const prime of parsed.primes.values()) {
|
||||||
if (!prime.tag) continue;
|
if (!prime.tag) continue;
|
||||||
|
@ -20,7 +20,6 @@ function applyVariantData(data, para, argv) {
|
||||||
const userComposite = new Composite("{user}", argv.variants);
|
const userComposite = new Composite("{user}", argv.variants);
|
||||||
userComposite.resolve(para, parsed.selectorTree, parsed.composites, variantSelector);
|
userComposite.resolve(para, parsed.selectorTree, parsed.composites, variantSelector);
|
||||||
}
|
}
|
||||||
|
|
||||||
para.variants = {
|
para.variants = {
|
||||||
selectorTree: parsed.selectorTree,
|
selectorTree: parsed.selectorTree,
|
||||||
primes: parsed.primes,
|
primes: parsed.primes,
|
||||||
|
@ -30,7 +29,7 @@ function applyVariantData(data, para, argv) {
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.parse = parseVariantsData;
|
exports.parse = parseVariantsData;
|
||||||
function parseVariantsData(data) {
|
function parseVariantsData(data, argv) {
|
||||||
const primes = new Map();
|
const primes = new Map();
|
||||||
const selectorTree = new SelectorTree();
|
const selectorTree = new SelectorTree();
|
||||||
for (const k in data.prime) {
|
for (const k in data.prime) {
|
||||||
|
@ -45,7 +44,13 @@ function parseVariantsData(data) {
|
||||||
const comp = new Composite(k, data.composite[k]);
|
const comp = new Composite(k, data.composite[k]);
|
||||||
composites.set(k, comp);
|
composites.set(k, comp);
|
||||||
}
|
}
|
||||||
|
if (argv && argv.compositesFromBuildPlan) {
|
||||||
|
for (const k in argv.compositesFromBuildPlan) {
|
||||||
|
const key = `buildPlans.${k}`;
|
||||||
|
const comp = new Composite(key, argv.compositesFromBuildPlan[k]);
|
||||||
|
composites.set(key, comp);
|
||||||
|
}
|
||||||
|
}
|
||||||
return { selectorTree: selectorTree, primes, composites, defaultComposite };
|
return { selectorTree: selectorTree, primes, composites, defaultComposite };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
14
verdafile.js
14
verdafile.js
|
@ -158,6 +158,18 @@ const GroupFontsOf = computed.group("metadata:group-fonts-of", async (target, gi
|
||||||
return plan.targets;
|
return plan.targets;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const CompositesFromBuildPlan = computed(`metadata:composites-from-build-plan`, async target => {
|
||||||
|
const [{ buildPlans }] = await target.need(BuildPlans);
|
||||||
|
let data = {};
|
||||||
|
for (const bpn in buildPlans) {
|
||||||
|
let bp = buildPlans[bpn];
|
||||||
|
if (bp.variants) {
|
||||||
|
data[bpn] = bp.variants;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
});
|
||||||
|
|
||||||
const FontInfoOf = computed.group("metadata:font-info-of", async (target, fileName) => {
|
const FontInfoOf = computed.group("metadata:font-info-of", async (target, fileName) => {
|
||||||
const [{ fileNameToBpMap, buildPlans }] = await target.need(BuildPlans);
|
const [{ fileNameToBpMap, buildPlans }] = await target.need(BuildPlans);
|
||||||
const [version] = await target.need(Version);
|
const [version] = await target.need(Version);
|
||||||
|
@ -304,6 +316,7 @@ const DistUnhintedTTF = file.make(
|
||||||
(gr, fn) => `${DIST}/${gr}/ttf-unhinted/${fn}.ttf`,
|
(gr, fn) => `${DIST}/${gr}/ttf-unhinted/${fn}.ttf`,
|
||||||
async (target, out, gr, fn) => {
|
async (target, out, gr, fn) => {
|
||||||
await target.need(Scripts, Parameters, Dependencies);
|
await target.need(Scripts, Parameters, Dependencies);
|
||||||
|
const [compositesFromBuildPlan] = await target.need(CompositesFromBuildPlan);
|
||||||
const charMapDir = `${BUILD}/ttf/${gr}`;
|
const charMapDir = `${BUILD}/ttf/${gr}`;
|
||||||
const charMapPath = `${charMapDir}/${fn}.charmap.mpz`;
|
const charMapPath = `${charMapDir}/${fn}.charmap.mpz`;
|
||||||
const cachePath = `${charMapDir}/${fn}.cache.mpz`;
|
const cachePath = `${charMapDir}/${fn}.cache.mpz`;
|
||||||
|
@ -314,6 +327,7 @@ const DistUnhintedTTF = file.make(
|
||||||
o: out.full,
|
o: out.full,
|
||||||
oCharMap: charMapPath,
|
oCharMap: charMapPath,
|
||||||
oCache: cachePath,
|
oCache: cachePath,
|
||||||
|
compositesFromBuildPlan,
|
||||||
...fi
|
...fi
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue