diff --git a/src/display/text_layer.js b/src/display/text_layer.js index 6db45eac2..f8308a4e3 100644 --- a/src/display/text_layer.js +++ b/src/display/text_layer.js @@ -113,7 +113,22 @@ var renderTextLayer = (function renderTextLayerClosure() { // We don't bother scaling single-char text divs, because it has very // little effect on text highlighting. This makes scrolling on docs with // lots of such divs a lot faster. + let shouldScaleText = false; if (geom.str.length > 1) { + shouldScaleText = true; + } else if (geom.transform[0] !== geom.transform[3]) { + const absScaleX = Math.abs(geom.transform[0]), + absScaleY = Math.abs(geom.transform[3]); + // When the horizontal/vertical scaling differs significantly, also scale + // even single-char text to improve highlighting (fixes issue11713.pdf). + if ( + absScaleX !== absScaleY && + Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5 + ) { + shouldScaleText = true; + } + } + if (shouldScaleText) { if (style.vertical) { textDivProperties.canvasWidth = geom.height * task._viewport.scale; } else { diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index a6ef9da6a..7b61bf6f2 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -143,6 +143,7 @@ !issue6621.pdf !issue6286.pdf !issue1055r.pdf +!issue11713.pdf !issue1293r.pdf !issue1655r.pdf !issue6541.pdf diff --git a/test/pdfs/issue11713.pdf b/test/pdfs/issue11713.pdf new file mode 100644 index 000000000..be2057488 Binary files /dev/null and b/test/pdfs/issue11713.pdf differ diff --git a/test/test_manifest.json b/test/test_manifest.json index 73f94005e..18880029e 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -1107,6 +1107,12 @@ "link": false, "type": "text" }, + { "id": "issue11713", + "file": "pdfs/issue11713.pdf", + "md5": "bafe5801234feeb95969da106f2ce6d8", + "rounds": 1, + "type": "text" + }, { "id": "bug1250079", "file": "pdfs/bug1250079.pdf", "md5": "a1dd21a70ae7097d96273e85a80b26ef",