WTextItem WPdfImage::measureText(const WString& text, double maxWidth, bool wordWrap) { if (trueTypeFont_ && !trueTypeFonts_->busy()) return trueTypeFonts_->measureText(painter()->font(), text, maxWidth, wordWrap); else { HPDF_REAL width = 0; if (!wordWrap) maxWidth = 1E9; else maxWidth += EPSILON; if (trueTypeFonts_->busy()) setChanged(PainterChangeFlag::Font); std::string s = trueTypeFont_ ? text.toUTF8() : text.narrow(); int bytes = HPDF_Page_MeasureText(page_, s.c_str(), maxWidth, wordWrap, &width); if (trueTypeFont_) return WTextItem(WString::fromUTF8(s.substr(0, bytes)), width); else return WTextItem(text.value().substr(0, bytes), width); } }