diff --git a/frameworks/common/text.cpp b/frameworks/common/text.cpp index a3257742adcd8a394d27b605b51376ef436938f1..715e1ba9f751410bc95b5770aab1999dee05c9eb 100644 --- a/frameworks/common/text.cpp +++ b/frameworks/common/text.cpp @@ -260,8 +260,8 @@ void Text::DrawEllipsis(BufferInfo& gfxDstBuffer, LabelLineInfo& labelLine, uint { labelLine.offset.x = 0; labelLine.text = TEXT_ELLIPSIS; - labelLine.lineLength = TEXT_ELLIPSIS_DOT_NUM; - labelLine.length = TEXT_ELLIPSIS_DOT_NUM; + labelLine.lineLength = 1; + labelLine.length = 1; DrawLabel::DrawTextOneLine(gfxDstBuffer, labelLine, letterIndex); } @@ -406,13 +406,14 @@ uint16_t Text::GetLine(int16_t width, uint8_t letterSpace, uint16_t ellipsisInde lineNum++; } if ((lineNum != 0) && (ellipsisIndex != TEXT_ELLIPSIS_END_INV)) { - uint16_t ellipsisWidth = UIFont::GetInstance()->GetWidth('.', fontId_, fontSize_, 0) + letterSpace; - textLine_[lineNum - 1].linePixelWidth += ellipsisWidth * TEXT_ELLIPSIS_DOT_NUM; + uint16_t ellipsisWidth = + UIFont::GetInstance()->GetWidth(TEXT_ELLIPSIS_UNICODE, fontId_, fontSize_, 0) + letterSpace; + textLine_[lineNum - 1].linePixelWidth += ellipsisWidth; if (textLine_[lineNum - 1].linePixelWidth > width) { - int16_t newWidth = width - ellipsisWidth * TEXT_ELLIPSIS_DOT_NUM; + int16_t newWidth = width - ellipsisWidth; maxLineBytes = CalculateLineWithEllipsis(begin, textLen, newWidth, letterSpace, lineNum, letterIndex, sizeSpans_); - textLine_[lineNum - 1].linePixelWidth += ellipsisWidth * TEXT_ELLIPSIS_DOT_NUM; + textLine_[lineNum - 1].linePixelWidth += ellipsisWidth; } } return lineNum; @@ -461,13 +462,13 @@ uint32_t Text::GetTextLine(uint32_t begin, uint32_t textLen, int16_t width, uint uint16_t Text::GetEllipsisIndex(const Rect& textRect, const Style& style) { - if ((textSize_.y <= textRect.GetHeight()) || (TypedText::GetUTF8CharacterSize(text_) <= TEXT_ELLIPSIS_DOT_NUM)) { + if (textSize_.y <= textRect.GetHeight()) { return TEXT_ELLIPSIS_END_INV; } UIFont* fontEngine = UIFont::GetInstance(); - int16_t letterWidth = fontEngine->GetWidth('.', fontId_, fontSize_, 0) + style.letterSpace_; + int16_t letterWidth = fontEngine->GetWidth(TEXT_ELLIPSIS_UNICODE, fontId_, fontSize_, 0) + style.letterSpace_; Point p; - p.x = textRect.GetWidth() - letterWidth * TEXT_ELLIPSIS_DOT_NUM; + p.x = textRect.GetWidth() - letterWidth; p.y = textRect.GetHeight(); int16_t height = style.lineHeight_; if (height == 0) { diff --git a/interfaces/kits/common/text.h b/interfaces/kits/common/text.h index f259186f919cbbc957b697c4bcb16d4b9b897164..f0f84748bc9deef8741d1172378e9425bfe1cd35 100644 --- a/interfaces/kits/common/text.h +++ b/interfaces/kits/common/text.h @@ -138,6 +138,7 @@ class Text : public HeapBase { public: /** Invalid value for the ellipsis position */ static constexpr uint16_t TEXT_ELLIPSIS_END_INV = 0xFFFF; + static constexpr uint16_t TEXT_ELLIPSIS_UNICODE = 0x2026; /** * @brief A constructor used to create a Text instance. @@ -486,8 +487,7 @@ protected: static constexpr uint16_t MAX_LINE_COUNT = 50; static TextLine textLine_[MAX_LINE_COUNT]; - static constexpr int16_t TEXT_ELLIPSIS_DOT_NUM = 3; - static constexpr const char* TEXT_ELLIPSIS = "..."; + static constexpr const char* TEXT_ELLIPSIS = "…"; virtual uint32_t GetTextStrLen();