Iosevka/support/anchor.js
2015-11-28 09:13:14 +08:00

26 lines
705 B
JavaScript

// Anchors records how glyphs are combined.
function Anchor(x, y, type, mbx, mby){
this.x = x;
this.y = y;
this.type = type;
this.mbx = mbx;
this.mby = mby;
}
Anchor.BASE = 'base'
Anchor.MARK = 'mark'
Anchor.transform = function(tfm, a){
var x = a.x * tfm.xx + a.y * tfm.yx + tfm.x;
var y = a.x * tfm.xy + a.y * tfm.yy + tfm.y;
if(a.mbx !== void 0 && a.mby !== void 0) {
var mbx = a.mbx * tfm.xx + a.mby * tfm.yx + tfm.x;
var mby = a.mbx * tfm.xy + a.mby * tfm.yy + tfm.y;
return new Anchor(x, y, a.type, mbx, mby)
} else {
return new Anchor(x, y, a.type)
}
}
Anchor.prototype.transform = function(tfm){ return Anchor.transform(this) }
module.exports = Anchor