addMultiple top-level property
Null Function(dynamic feature, dynamic substitution, dynamic script, dynamic language)
addMultiple
getter/setter pair
Implementation
Substitution.prototype.addMultiple = function(feature, substitution, script, language) {
check.assert(substitution.by instanceof Array && substitution.by.length > 1, 'Multiple: "by" must be an array of two or more ids');
const lookupTable = this.getLookupTables(script, language, feature, 2, true)[0];
const subtable = getSubstFormat(lookupTable, 1, { // lookup type 2 subtable, format 1, coverage format 1
substFormat: 1,
coverage: {format: 1, glyphs: []},
sequences: []
});
check.assert(subtable.coverage.format === 1, 'Multiple: unable to modify coverage table format ' + subtable.coverage.format);
const coverageGlyph = substitution.sub;
let pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph);
if (pos < 0) {
pos = -1 - pos;
subtable.coverage.glyphs.splice(pos, 0, coverageGlyph);
subtable.sequences.splice(pos, 0, 0);
}
subtable.sequences[pos] = substitution.by;
};