From a8998fc314b26f69d077a490220555a15647d5f9 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Wed, 25 Sep 2024 09:16:22 +0200 Subject: [PATCH] Correctly compute the font size when printing a text field with an auto font size (bug 1917734) --- src/core/annotation.js | 9 +++++---- test/pdfs/.gitignore | 1 + test/pdfs/bug1917734.pdf | Bin 0 -> 6480 bytes test/test_manifest.json | 13 +++++++++++++ test/unit/annotation_spec.js | 2 +- 5 files changed, 20 insertions(+), 5 deletions(-) create mode 100755 test/pdfs/bug1917734.pdf diff --git a/src/core/annotation.js b/src/core/annotation.js index c77b2b8c96fba..9f27194994349 100644 --- a/src/core/annotation.js +++ b/src/core/annotation.js @@ -2526,12 +2526,13 @@ class WidgetAnnotation extends Annotation { const roundWithTwoDigits = x => Math.floor(x * 100) / 100; if (lineCount === -1) { + // Get the text width for a font size of 1. const textWidth = this._getTextWidth(text, font); + + // width / textWidth is the max font size to fit the width. + // height / LINE_FACTOR is the max font size to fit the height. fontSize = roundWithTwoDigits( - Math.min( - height / LINE_FACTOR, - textWidth > width ? width / textWidth : Infinity - ) + Math.min(height / LINE_FACTOR, width / textWidth) ); numberOfLines = 1; } else { diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 0109958757154..901bdf09cc7c3 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -669,3 +669,4 @@ !issue18693.pdf !bug1918115.pdf !bug1919513.pdf +!bug1917734.pdf diff --git a/test/pdfs/bug1917734.pdf b/test/pdfs/bug1917734.pdf new file mode 100755 index 0000000000000000000000000000000000000000..3b2e589e9d8d9e31ac2b74ce95c40d93e5536823 GIT binary patch literal 6480 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