26 lines
705 B
JavaScript
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 |