From be998261cc0c7797a199d3dfd2a7ea03938ddf7b Mon Sep 17 00:00:00 2001 From: Yury Delendik Date: Mon, 18 Aug 2014 17:57:52 -0500 Subject: [PATCH] Fixes Type3 negative font direction --- src/display/canvas.js | 4 ++-- test/pdfs/.gitignore | 1 + test/pdfs/bug1011159.pdf | Bin 0 -> 18316 bytes test/test_manifest.json | 8 ++++++++ 4 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 test/pdfs/bug1011159.pdf diff --git a/src/display/canvas.js b/src/display/canvas.js index 3f1fa7643..de0a2ccd0 100644 --- a/src/display/canvas.js +++ b/src/display/canvas.js @@ -1473,7 +1473,7 @@ var CanvasGraphics = (function CanvasGraphicsClosure() { ctx.transform.apply(ctx, current.textMatrix); ctx.translate(current.x, current.y); - ctx.scale(textHScale, 1); + ctx.scale(textHScale, fontDirection); for (i = 0; i < glyphsLength; ++i) { glyph = glyphs[i]; @@ -1503,7 +1503,7 @@ var CanvasGraphics = (function CanvasGraphicsClosure() { this.restore(); var transformed = Util.applyTransform([glyph.width, 0], fontMatrix); - width = ((transformed[0] * fontSize + charSpacing) * fontDirection); + width = transformed[0] * fontSize + charSpacing; ctx.translate(width, 0); current.x += width * textHScale; diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index bb4f3341d..4c9ea5764 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -38,6 +38,7 @@ !issue3323.pdf !issue4304.pdf !issue4550.pdf +!bug1011159.pdf !issue4875.pdf !issue4881.pdf !rotated.pdf diff --git a/test/pdfs/bug1011159.pdf b/test/pdfs/bug1011159.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0e892a24d0898c027328bbeeb284341a3008b811 GIT binary patch literal 18316 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 literal 0 HcmV?d00001 diff --git a/test/test_manifest.json b/test/test_manifest.json index 607f0cc2c..13c07624e 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -1441,6 +1441,14 @@ "link": true, "type": "eq" }, + { "id": "bug1011159", + "file": "pdfs/bug1011159.pdf", + "md5": "4532e22deb92d4cd2992d0cfe255582a", + "rounds": 1, + "lastPage": 1, + "type": "eq", + "about": "Type3 font with negative HScale and font size" + }, { "id": "bug816075", "file": "pdfs/bug816075.pdf", "md5": "7ec87c115c1f9ec41234cc7002555e82",