Iosevka/font-src/support/ligation-data.js
Alexey Ten 6d48193438
Allow inherit ligations from calt (#750)
* Allow inherit ligations from `calt`

Add `calt` to `hives` so `inherit = 'calt'` works.

Also get rid of `optInBuildup`/`optOutBuildup` because they just
merged into `para.ligation.defaultBuildup`.

* fixup! Allow inherit ligations from `calt`

* fixup! Allow inherit ligations from `calt`

Rename hives

* fixup! Allow inherit ligations from `calt`

Rename `calt` to `default-calt`

* fixup! fixup! Allow inherit ligations from `calt`
2020-11-22 00:35:41 -08:00

52 lines
1.4 KiB
JavaScript

"use strict";
const Parameters = require("./parameters");
module.exports = function applyLigationData(data, para, argv) {
const defaultBuildup = {};
const hives = {};
hives["default"] = { caltBuildup: [] };
for (const gr in data.simple) {
hives[`ligset-enable-${gr}`] = { appends: { caltBuildup: [data.simple[gr].ligGroup] } };
hives[`ligset-disable-${gr}`] = { removes: { caltBuildup: [data.simple[gr].ligGroup] } };
}
for (const gr in data.composite) {
const comp = data.composite[gr];
if (!comp.tag) continue;
const ligSets = createBuildup(data.simple, comp.buildup);
defaultBuildup[comp.tag] = ligSets;
hives[`ligset-inherit-${gr}`] = { caltBuildup: ligSets };
}
para.ligation = {
defaultBuildup,
caltBuildup: []
};
if (argv.ligations) {
if (argv.ligations.inherits)
Parameters.apply(para.ligation, hives, [`ligset-inherit-${argv.ligations.inherits}`]);
if (argv.ligations.disables)
Parameters.apply(
para.ligation,
hives,
argv.ligations.disables.map(x => `ligset-disable-${x}`)
);
if (argv.ligations.enables)
Parameters.apply(
para.ligation,
hives,
argv.ligations.enables.map(x => `ligset-enable-${x}`)
);
}
};
function createBuildup(simple, buildup) {
let ligSet = new Set();
for (const s of buildup) {
if (!simple[s]) throw new Error("Cannot find simple ligation group " + s);
ligSet.add(simple[s].ligGroup);
}
return Array.from(ligSet);
}