[Tizen] Fix issue where vertical alignment "CENTER" does not align based on line... 09/322609/1 accepted/tizen/7.0/unified/20250508.153855
authorANZ1217 <chihun.jeong@samsung.com>
Thu, 13 Mar 2025 04:14:39 +0000 (13:14 +0900)
committerANZ1217 <chihun.jeong@samsung.com>
Fri, 11 Apr 2025 09:18:47 +0000 (18:18 +0900)
Change-Id: I7b68c67246b58f40306e4c6170245a5f50e35919

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

index 493be13ceca404852d6ff8a70518ce5b80c29a2c..246d75a3474deb476af3af2dcc6bcfce83b88d77 100644 (file)
@@ -1894,6 +1894,14 @@ struct Engine::Impl
           hyphensCount--;
         }
 
+        if(!isMultiline)
+        {
+          // Recalculate line spacing and line height
+          LineRun& firstLineRun = *(lines.Begin());
+          firstLineRun.lineSpacing = GetLineSpacing(firstLineRun.ascender + -firstLineRun.descender, layout.relativeLineSize);
+          layoutSize.height = GetLineHeight(firstLineRun, false);
+        }
+
         // No more lines to layout.
         break;
       }
index a4311208216f08c811d043e7616807a945918d91..3eed37609ee6b4ddf7bb1b83ee644e071a2f972e 100644 (file)
@@ -929,8 +929,7 @@ PixelData Typesetter::Render(const Vector2& size, Toolkit::DevelText::TextDirect
     }
     case VerticalAlignment::CENTER:
     {
-      penY = static_cast<int32_t>(0.5f * (size.height - layoutSize.height));
-      penY = penY < 0.f ? 0.f : penY;
+      penY = static_cast<int32_t>(std::round(0.5f * (size.height - layoutSize.height)));
       break;
     }
     case VerticalAlignment::BOTTOM: