poppler/Annot.cc | 54 ++++++++++++++++++------------------------------------ 1 file changed, 18 insertions(+), 36 deletions(-)
New commits: commit 6f62a002967246cf6f702568ef0dd3436640e5f7 Author: Albert Astals Cid <[email protected]> Date: Fri Mar 25 18:20:02 2022 +0100 Simplify code by ensuring there's always Tm in daToks diff --git a/poppler/Annot.cc b/poppler/Annot.cc index 5577651f..48d72c49 100644 --- a/poppler/Annot.cc +++ b/poppler/Annot.cc @@ -4366,6 +4366,12 @@ bool AnnotAppearanceBuilder::drawText(const GooString *text, const GooString *da return false; } + if (tmPos < 0) { + // Add fake Tm to the DA tokens + tmPos = daToks.size(); + daToks.insert(daToks.end(), { "1", "0", "0", "1", "0", "0", "Tm" }); + } + // get the border width const double borderWidth = border ? border->getWidth() : 0; @@ -4443,21 +4449,14 @@ bool AnnotAppearanceBuilder::drawText(const GooString *text, const GooString *da const double y = dy - 3; // set the font matrix - if (tmPos >= 0) { - daToks[tmPos + 4] = "0"; - daToks[tmPos + 5] = GooString().format("{0:.2f}", y)->toStr(); - } + daToks[tmPos + 4] = "0"; + daToks[tmPos + 5] = GooString().format("{0:.2f}", y)->toStr(); // write the DA string for (const std::string &daTok : daToks) { appearBuf->append(daTok)->append(' '); } - // write the font matrix (if not part of the DA string) - if (tmPos < 0) { - appearBuf->appendf("1 0 0 1 0 {0:.2f} Tm\n", y); - } - // write a series of lines of text int i = 0; double xPrev = 0; @@ -4532,21 +4531,14 @@ bool AnnotAppearanceBuilder::drawText(const GooString *text, const GooString *da const double y = 0.5 * dy - 0.4 * fontSize; // set the font matrix - if (tmPos >= 0) { - daToks[tmPos + 4] = GooString().format("{0:.2f}", x)->toStr(); - daToks[tmPos + 5] = GooString().format("{0:.2f}", y)->toStr(); - } + daToks[tmPos + 4] = GooString().format("{0:.2f}", x)->toStr(); + daToks[tmPos + 5] = GooString().format("{0:.2f}", y)->toStr(); // write the DA string for (const std::string &daTok : daToks) { appearBuf->append(daTok)->append(' '); } - // write the font matrix (if not part of the DA string) - if (tmPos < 0) { - appearBuf->appendf("1 0 0 1 {0:.2f} {1:.2f} Tm\n", x, y); - } - // write the text string const char *s = convertedText.c_str(); int len = convertedText.getLength(); @@ -4614,20 +4606,16 @@ bool AnnotAppearanceBuilder::drawText(const GooString *text, const GooString *da const double y = 0.5 * dy - 0.4 * fontSize; // set the font matrix - if (tmPos >= 0) { - daToks[tmPos + 4] = GooString().format("{0:.2f}", x)->toStr(); - daToks[tmPos + 5] = GooString().format("{0:.2f}", y)->toStr(); - } + daToks[tmPos + 4] = GooString().format("{0:.2f}", x)->toStr(); + daToks[tmPos + 5] = GooString().format("{0:.2f}", y)->toStr(); // write the DA string for (const std::string &daTok : daToks) { appearBuf->append(daTok)->append(' '); } - - // write the font matrix (if not part of the DA string) - if (tmPos < 0) { - appearBuf->appendf("1 0 0 1 {0:.2f} {1:.2f} Tm\n", x, y); - } + // This newline is not neeed at all but it makes for easier reading + // and our auto tests "wrongly" assume it will be there, so add it anyway + appearBuf->append("\n"); // write the text string writeString(convertedText.toStr()); commit 3b0611bf6c5be8649591c119f389e243b38f7d91 Author: Albert Astals Cid <[email protected]> Date: Fri Mar 25 18:10:18 2022 +0100 Remove checks for tfPos being >= 0 If it was not, we wouldn't reach this, font would have been null and returned earlier in the function diff --git a/poppler/Annot.cc b/poppler/Annot.cc index 5ab733e3..5577651f 100644 --- a/poppler/Annot.cc +++ b/poppler/Annot.cc @@ -4434,9 +4434,7 @@ bool AnnotAppearanceBuilder::drawText(const GooString *text, const GooString *da break; } } - if (tfPos >= 0) { - daToks[tfPos + 1] = GooString().format("{0:.2f}", fontSize)->toStr(); - } + daToks[tfPos + 1] = GooString().format("{0:.2f}", fontSize)->toStr(); } // starting y coordinate @@ -4509,9 +4507,7 @@ bool AnnotAppearanceBuilder::drawText(const GooString *text, const GooString *da fontSize = w; } fontSize = floor(fontSize); - if (tfPos >= 0) { - daToks[tfPos + 1] = GooString().format("{0:.2f}", fontSize)->toStr(); - } + daToks[tfPos + 1] = GooString().format("{0:.2f}", fontSize)->toStr(); } int dummy = 0; @@ -4598,9 +4594,7 @@ bool AnnotAppearanceBuilder::drawText(const GooString *text, const GooString *da } } fontSize = floor(fontSize); - if (tfPos >= 0) { - daToks[tfPos + 1] = GooString().format("{0:.2f}", fontSize)->toStr(); - } + daToks[tfPos + 1] = GooString().format("{0:.2f}", fontSize)->toStr(); } // compute text start position
