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

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

index d3c68b53fdf7dbfb7cc2c3d487a2aa785afb2191..23596477512b3ad5c529c512d018c51a1a0372fb 100644 (file)
@@ -228,6 +228,10 @@ void AsyncTextLoader::Update(AsyncTextParameters& parameters)
   defaultFontDescription.width = parameters.fontWidth;
   defaultFontDescription.slant = parameters.fontSlant;
 
+  mTextModel->mHorizontalAlignment   = parameters.horizontalAlignment;
+  mTextModel->mVerticalAlignment     = parameters.verticalAlignment;
+  mTextModel->mVerticalLineAlignment = parameters.verticalLineAlignment;
+
 
   ////////////////////////////////////////////////////////////////////////////////
   // Update visual model.
index 6437a0cfc139f20489f46cc2344380be9337fb7c..904374e47a3b63d7126b4dbbb6b63526bd83233d 100644 (file)
@@ -1941,6 +1941,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 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: