diff --git a/src/display/canvas.js b/src/display/canvas.js index dc399ef359d4f..3f04a29602396 100644 --- a/src/display/canvas.js +++ b/src/display/canvas.js @@ -1145,9 +1145,6 @@ var CanvasGraphics = (function CanvasGraphicsClosure() { consumePath = typeof consumePath !== 'undefined' ? consumePath : true; var ctx = this.ctx; var strokeColor = this.current.strokeColor; - // Prevent drawing too thin lines by enforcing a minimum line width. - ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR, - this.current.lineWidth); // For stroke we want to temporarily change the global alpha to the // stroking alpha. ctx.globalAlpha = this.current.strokeAlpha; @@ -1156,10 +1153,21 @@ var CanvasGraphics = (function CanvasGraphicsClosure() { // for patterns, we transform to pattern space, calculate // the pattern, call stroke, and restore to user space ctx.save(); + // The current transform will be replaced while building the pattern, + // but the line width needs to be adjusted by the current transform, so + // we must scale it. To properly fix this we should be using a pattern + // transform instead (see #10955). + let transform = ctx.mozCurrentTransform; + const scale = Util.singularValueDecompose2dScale(transform)[0]; ctx.strokeStyle = strokeColor.getPattern(ctx, this); + ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR, + this.current.lineWidth * scale); ctx.stroke(); ctx.restore(); } else { + // Prevent drawing too thin lines by enforcing a minimum line width. + ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR, + this.current.lineWidth); ctx.stroke(); } if (consumePath) { diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index b704c96825839..1f0888ab1e7a7 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -138,6 +138,7 @@ !issue6413.pdf !issue4630.pdf !issue4909.pdf +!scorecard_reduced.pdf !issue5084.pdf !issue8960_reduced.pdf !issue5202.pdf diff --git a/test/pdfs/scorecard_reduced.pdf b/test/pdfs/scorecard_reduced.pdf new file mode 100644 index 0000000000000..597c3247cce35 Binary files /dev/null and b/test/pdfs/scorecard_reduced.pdf differ diff --git a/test/test_manifest.json b/test/test_manifest.json index ecf7234d5e14e..1115573d66c45 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -3474,6 +3474,12 @@ "type": "eq", "about": "A CIDFontType0 font with a CFF font that isn't actually CID." }, + { "id": "scorecard_reduced", + "file": "pdfs/scorecard_reduced.pdf", + "md5": "aa8ed0827092c963eea64adb718a3806", + "rounds": 1, + "type": "eq" + }, { "id": "bug921409", "file": "pdfs/bug921409.pdf", "md5": "920e88dde0f5436ebe0df0281e1c30ca",