Merge pull request #221 from andreasgal/staging

avoid font lookup by id in showText
This commit is contained in:
sbarman 2011-07-08 15:15:13 -07:00
commit babcf86e52
2 changed files with 13 additions and 12 deletions

View File

@ -413,6 +413,7 @@ function getUnicodeRangeFor(value) {
var Font = (function() { var Font = (function() {
var constructor = function font_constructor(name, file, properties) { var constructor = function font_constructor(name, file, properties) {
this.name = name; this.name = name;
this.textMatrix = properties.textMatrix || IDENTITY_MATRIX;
this.encoding = properties.encoding; this.encoding = properties.encoding;
// If the font is to be ignored, register it like an already loaded font // If the font is to be ignored, register it like an already loaded font

24
pdf.js
View File

@ -3925,24 +3925,24 @@ var CanvasGraphics = (function() {
showText: function(text) { showText: function(text) {
// TODO: apply charSpacing, wordSpacing, textHScale // TODO: apply charSpacing, wordSpacing, textHScale
this.ctx.save(); var ctx = this.ctx;
this.ctx.transform.apply(this.ctx, this.current.textMatrix); var current = this.current;
this.ctx.scale(1, -1);
ctx.save();
ctx.transform.apply(ctx, current.textMatrix);
ctx.scale(1, -1);
if (this.ctx.$showText) { if (this.ctx.$showText) {
this.ctx.$showText(this.current.y, Fonts.charsToUnicode(text)); ctx.$showText(current.y, Fonts.charsToUnicode(text));
} else { } else {
text = Fonts.charsToUnicode(text); text = Fonts.charsToUnicode(text);
this.ctx.translate(this.current.x, -1 * this.current.y); ctx.translate(current.x, -1 * current.y);
var font = this.current.font; var font = this.current.font;
if (font) { if (font)
var fontInfo = Fonts.lookupById(font.id); ctx.transform.apply(ctx, font.textMatrix);
if (fontInfo && fontInfo.properties.textMatrix) ctx.fillText(text, 0, 0);
this.ctx.transform.apply(this.ctx, fontInfo.properties.textMatrix); current.x += Fonts.measureText(text);
}
this.ctx.fillText(text, 0, 0);
this.current.x += Fonts.measureText(text);
} }
this.ctx.restore(); this.ctx.restore();