diff --git a/src/core/evaluator.js b/src/core/evaluator.js index 97958faa6..0ba9bcb38 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -956,6 +956,17 @@ var PartialEvaluator = (function PartialEvaluatorClosure() { var tsm = [textState.fontSize * textState.textHScale, 0, 0, textState.fontSize, 0, textState.textRise]; + + if (font.isType3Font && + textState.fontMatrix !== FONT_IDENTITY_MATRIX && + textState.fontSize === 1) { + var glyphHeight = font.bbox[3] - font.bbox[1]; + if (glyphHeight > 0) { + glyphHeight = glyphHeight * textState.fontMatrix[3]; + tsm[3] *= glyphHeight; + } + } + var trm = textChunk.transform = Util.transform(textState.ctm, Util.transform(textState.textMatrix, tsm)); if (!font.vertical) { @@ -1639,6 +1650,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() { // is a tagged pdf. Create a barbebones one to get by. descriptor = new Dict(null); descriptor.set('FontName', Name.get(type)); + descriptor.set('FontBBox', dict.get('FontBBox')); } else { // Before PDF 1.5 if the font was one of the base 14 fonts, having a // FontDescriptor was not required. diff --git a/src/core/fonts.js b/src/core/fonts.js index 1554ff894..751183a93 100644 --- a/src/core/fonts.js +++ b/src/core/fonts.js @@ -2438,6 +2438,7 @@ var Font = (function FontClosure() { this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS; this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS; this.fontMatrix = properties.fontMatrix; + this.bbox = properties.bbox; this.toUnicode = properties.toUnicode = this.buildToUnicode(properties);