https://bugs.kde.org/show_bug.cgi?id=479070
--- Comment #24 from Keyu Tao <taoky1...@gmail.com> --- (In reply to Albert Astals Cid from comment #23) > (In reply to Keyu Tao from comment #22) > > (In reply to Albert Astals Cid from comment #21) > > > > > How much do you know about programming? If i tell you do add some printf > > > in > > > the poppler code is that something you can do? > > > > Yes, as I got this conclusion just by adding `std::cout` inside poppler code > > :) > > Ok, can you please print > rect->x2 > rect->x1 > width > borderWidth > textwidth > da.getFontPtSize() > before the call to > const DrawMultiLineTextResult textCommands = drawMultiLineText(*contents, > textwidth, form, *font, da.getFontName().getName(), da.getFontPtSize(), > quadding, 0 /*borderWidth*/); > in > generateFreeTextAppearance() > > > Also i'm guessing > > diff --git a/poppler/Annot.cc b/poppler/Annot.cc > index b4c4a771..8a50225f 100644 > --- a/poppler/Annot.cc > +++ b/poppler/Annot.cc > @@ -3036,7 +3036,7 @@ public: > *availableWidth -= blockWidth; > } > > - while (newFontNeeded && (!availableWidth || *availableWidth > 0)) { > + while (newFontNeeded && (!availableWidth || *availableWidth > 0|| > (isUnicode && i == 2) || (!isUnicode && i == 0))) { > if (!form) { > // There's no fonts to look for, so just skip the characters > i += isUnicode ? 2 : 1; > > > Will fix your problem too but i'd like to figure out how availableWidth gets > to be negative Var outputs: === rect->x2: 25.7253 rect->x1: 23.9537 width: 1.77165 borderWidth: 1 textWidth: -2.22835 da.getFontPtSize(): 10 === And this patch is working: I could not reproduce the hang with the patched while loop. -- You are receiving this mail because: You are watching all bug changes.