var Font = (function() {
var constructor = function font_constructor(name, file, properties) {
this.name = name;
+ this.textMatrix = properties.textMatrix || IDENTITY_MATRIX;
this.encoding = properties.encoding;
// If the font is to be ignored, register it like an already loaded font
showText: function(text) {
// TODO: apply charSpacing, wordSpacing, textHScale
- this.ctx.save();
- this.ctx.transform.apply(this.ctx, this.current.textMatrix);
- this.ctx.scale(1, -1);
+ var ctx = this.ctx;
+ var current = this.current;
+
+ ctx.save();
+ ctx.transform.apply(ctx, current.textMatrix);
+ ctx.scale(1, -1);
if (this.ctx.$showText) {
- this.ctx.$showText(this.current.y, Fonts.charsToUnicode(text));
+ ctx.$showText(current.y, Fonts.charsToUnicode(text));
} else {
text = Fonts.charsToUnicode(text);
- this.ctx.translate(this.current.x, -1 * this.current.y);
+ ctx.translate(this.current.x, -1 * this.current.y);
var font = this.current.font;
- if (font) {
- var fontInfo = Fonts.lookupById(font.id);
- if (fontInfo && fontInfo.properties.textMatrix)
- this.ctx.transform.apply(this.ctx, fontInfo.properties.textMatrix);
- }
- this.ctx.fillText(text, 0, 0);
- this.current.x += Fonts.measureText(text);
+ if (font)
+ ctx.transform.apply(ctx, font.textMatrix);
+ ctx.fillText(text, 0, 0);
+ current.x += Fonts.measureText(text);
}
this.ctx.restore();