Move font building related files to font-src
This commit is contained in:
parent
9a2f862631
commit
c48bc20aa2
56 changed files with 18 additions and 18 deletions
|
@ -1,100 +0,0 @@
|
|||
"use strict";
|
||||
|
||||
const monotonicInterpolate = require("./monotonic-interpolate");
|
||||
|
||||
function build(parametersData, styles, blendArgs) {
|
||||
const sink = {};
|
||||
for (const item of styles) intro(parametersData, item, blendArgs, sink);
|
||||
return sink;
|
||||
}
|
||||
exports.build = build;
|
||||
|
||||
function intro(source, style, blendArgs, sink) {
|
||||
let hive = source[style];
|
||||
if (!hive) return;
|
||||
hive = { ...hive };
|
||||
|
||||
if (hive.inherits) {
|
||||
for (const hn of hive.inherits) intro(source, hn, blendArgs, sink);
|
||||
delete hive.inherits;
|
||||
}
|
||||
if (hive.multiplies) {
|
||||
const mu = hiveBlend(hive.multiplies, getBlendArg(blendArgs, style), sink);
|
||||
for (const k in mu) sink[k] = (sink[k] || 0) * mu[k];
|
||||
delete hive.multiplies;
|
||||
}
|
||||
if (hive.adds) {
|
||||
const mu = hiveBlend(hive.adds, getBlendArg(blendArgs, style), sink);
|
||||
for (const k in mu) sink[k] = (sink[k] || 0) + mu[k];
|
||||
delete hive.adds;
|
||||
}
|
||||
if (hive.appends) {
|
||||
const mu = hive.appends;
|
||||
for (const k in mu) sink[k] = [...(sink[k] || []), ...mu[k]];
|
||||
delete hive.appends;
|
||||
}
|
||||
hive = hiveBlend(hive, getBlendArg(blendArgs, style), sink);
|
||||
for (const k in hive) sink[k] = hive[k];
|
||||
}
|
||||
|
||||
function getBlendArg(blendArgs, style) {
|
||||
if (!blendArgs) return undefined;
|
||||
return blendArgs[style];
|
||||
}
|
||||
|
||||
function hiveBlend(hive, value, sink) {
|
||||
if (!hive || !hive.blend || value == null) return hive;
|
||||
|
||||
const generatedHive = {};
|
||||
const block = hive.blend;
|
||||
let keys = new Set();
|
||||
for (const grade in block) {
|
||||
sink[grade] = block[grade];
|
||||
if (!isFinite(parseFloat(grade))) continue;
|
||||
for (const key in block[grade]) {
|
||||
if (block[grade][key] == null) continue;
|
||||
keys.add(key);
|
||||
}
|
||||
}
|
||||
|
||||
for (const key of keys) {
|
||||
let xs = [],
|
||||
ys = [];
|
||||
for (const grade in block) {
|
||||
if (!isFinite(parseFloat(grade))) continue;
|
||||
if (block[grade][key] == null) continue;
|
||||
xs.push(grade);
|
||||
ys.push(block[grade][key]);
|
||||
}
|
||||
generatedHive[key] = monotonicInterpolate(xs, ys)(value);
|
||||
}
|
||||
return generatedHive;
|
||||
}
|
||||
|
||||
function numericConfigExists(x) {
|
||||
return x != null && isFinite(x);
|
||||
}
|
||||
function applyMetricOverride(para, mo) {
|
||||
if (numericConfigExists(mo.leading)) {
|
||||
para.leading = mo.leading;
|
||||
}
|
||||
if (numericConfigExists(mo.winMetricAscenderPad)) {
|
||||
para.winMetricAscenderPad = mo.winMetricAscenderPad;
|
||||
}
|
||||
if (numericConfigExists(mo.winMetricDescenderPad)) {
|
||||
para.winMetricDescenderPad = mo.winMetricDescenderPad;
|
||||
}
|
||||
if (numericConfigExists(mo.powerlineScaleY)) {
|
||||
para.powerlineScaleY = mo.powerlineScaleY;
|
||||
}
|
||||
if (numericConfigExists(mo.powerlineScaleX)) {
|
||||
para.powerlineScaleX = mo.powerlineScaleX;
|
||||
}
|
||||
if (numericConfigExists(mo.powerlineShiftY)) {
|
||||
para.powerlineShiftY = mo.powerlineShiftY;
|
||||
}
|
||||
if (numericConfigExists(mo.powerlineShiftX)) {
|
||||
para.powerlineShiftX = mo.powerlineShiftX;
|
||||
}
|
||||
}
|
||||
exports.applyMetricOverride = applyMetricOverride;
|
Loading…
Add table
Add a link
Reference in a new issue