Fix issue where vertical alignment "CENTER" does not align based on line height. 75/321075/1
authorANZ1217 <chihun.jeong@samsung.com>
Thu, 13 Mar 2025 04:14:39 +0000 (13:14 +0900)
committerANZ1217 <chihun.jeong@samsung.com>
Thu, 13 Mar 2025 11:09:29 +0000 (20:09 +0900)
Change-Id: I7b68c67246b58f40306e4c6170245a5f50e35919

dali-toolkit/internal/text/layouts/layout-engine.cpp
dali-toolkit/internal/text/rendering/text-typesetter.cpp

index 6437a0cfc139f20489f46cc2344380be9337fb7c..596d0a568f6f57c567fc732797adfb36ea5b26e1 100644 (file)
@@ -1941,6 +1941,14 @@ struct Engine::Impl
           hyphensCount--;
         }
 
+        if(!isMultiline)
+        {
+          // Recalculate line spacing and line height
+          LineRun& lastLineRun = *(lines.End() - 1u);
+          lastLineRun.lineSpacing = GetLineSpacing(lastLineRun.ascender + -lastLineRun.descender, layout.relativeLineSize);
+          layoutSize.height = GetLineHeight(lastLineRun, false);
+        }
+
         // No more lines to layout.
         break;
       }
index 52747a3ccd6675c152c3627c3052d9d3e2f46412..c493430c391d8815bca5f0842552c31045e95a9b 100644 (file)
@@ -267,8 +267,6 @@ Devel::PixelBuffer Typesetter::RenderWithPixelBuffer(const Vector2& size, Toolki
     case VerticalAlignment::CENTER:
     {
       penY = static_cast<int32_t>(std::round(0.5f * (size.height - layoutSize.height)));
-      penY = penY < 0.f ? 0.f : penY;
-
       break;
     }
     case VerticalAlignment::BOTTOM: