Change RegisterGlCallback function name of GlView
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit-internal / utc-Dali-Text-Layout.cpp
index 8c934d3..281dbba 100755 (executable)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -41,28 +41,29 @@ const std::string DEFAULT_FONT_DIR( "/resources/fonts" );
 
 struct LayoutTextData
 {
-  std::string          description;
-  std::string          text;
-  Size                 textArea;
-  unsigned int         numberOfFonts;
-  FontDescriptionRun*  fontDescriptions;
-  Size                 layoutSize;
-  unsigned int         totalNumberOfGlyphs;
-  float*               positions;
-  unsigned int         numberOfLines;
-  LineRun*             lines;
-  Layout::Engine::Type layout;
-  unsigned int         startIndex;
-  unsigned int         numberOfGlyphs;
-  bool                 ellipsis:1;
-  bool                 updated:1;
+  std::string                                       description;
+  std::string                                       text;
+  Size                                              textArea;
+  unsigned int                                      numberOfFonts;
+  FontDescriptionRun*                               fontDescriptions;
+  Size                                              layoutSize;
+  unsigned int                                      totalNumberOfGlyphs;
+  float*                                            positions;
+  unsigned int                                      numberOfLines;
+  LineRun*                                          lines;
+  Layout::Engine::Type                              layout;
+  unsigned int                                      startIndex;
+  unsigned int                                      numberOfGlyphs;
+  bool                                              ellipsis:1;
+  DevelText::EllipsisPosition::Type                 ellipsisPosition;
+  bool                                              updated:1;
 };
 
 void Print( const LineRun& line )
 {
   std::cout << "        glyph run, index : " << line.glyphRun.glyphIndex << ", num glyphs : " << line.glyphRun.numberOfGlyphs << std::endl;
   std::cout << "    character run, index : " << line.characterRun.characterIndex << ", num chars : " << line.characterRun.numberOfCharacters << std::endl;
-  std::cout << "                   width : " << line.width << std::endl;
+  std::cout << "                   width : " << floor(line.width) << std::endl;
   std::cout << "                ascender : " << line.ascender << std::endl;
   std::cout << "               descender : " << line.descender << std::endl;
   std::cout << "             extraLength : " << line.extraLength << std::endl;
@@ -108,7 +109,10 @@ bool LayoutTextTest( const LayoutTextData& data )
                    layoutSize,
                    textModel,
                    metrics,
-                   false );
+                   false,
+                   LineWrap::WORD,
+                   false,
+                   Toolkit::DevelText::EllipsisPosition::END );
 
   LogicalModelPtr logicalModel = textModel->mLogicalModel;
   VisualModelPtr visualModel = textModel->mVisualModel;
@@ -161,7 +165,6 @@ bool LayoutTextTest( const LayoutTextData& data )
   textModel->mHorizontalAlignment = Text::HorizontalAlignment::BEGIN;
   textModel->mLineWrapMode = LineWrap::WORD;
   textModel->mIgnoreSpacesAfterText = true;
-  textModel->mMatchSystemLanguageDirection = false;
   Layout::Parameters layoutParameters( data.textArea,
                                        textModel );
 
@@ -179,7 +182,8 @@ bool LayoutTextTest( const LayoutTextData& data )
   const bool updated = engine.LayoutText( layoutParameters,
                                           layoutSize,
                                           data.ellipsis,
-                                          isAutoScroll );
+                                          isAutoScroll,
+                                          data.ellipsisPosition );
 
   // 4) Compare the results.
 
@@ -199,7 +203,7 @@ bool LayoutTextTest( const LayoutTextData& data )
   {
     const Vector2& position = *( glyphPositions.Begin() + index );
 
-    if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
+    if( fabsf( std::round( position.x ) - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
     {
       std::cout << "  Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl;
       return false;
@@ -256,7 +260,7 @@ bool LayoutTextTest( const LayoutTextData& data )
       return false;
     }
 
-    if( fabsf( line.width - expectedLine.width ) > Math::MACHINE_EPSILON_1 )
+    if( fabsf( floor( line.width ) - expectedLine.width ) > Math::MACHINE_EPSILON_1 )
     {
       std::cout << "  Different line info for line : " << index << std::endl;
       Print( line );
@@ -363,7 +367,10 @@ bool AlignTest( const AlignData& data )
                    layoutSize,
                    textModel,
                    metrics,
-                   false );
+                   false,
+                   LineWrap::WORD,
+                   false,
+                   Toolkit::DevelText::EllipsisPosition::END );
 
   LogicalModelPtr logicalModel = textModel->mLogicalModel;
   VisualModelPtr visualModel = textModel->mVisualModel;
@@ -500,6 +507,7 @@ int UtcDaliTextLayoutNoText(void)
     0u,
     0u,
     false,
+    DevelText::EllipsisPosition::END,
     false
   };
 
@@ -554,6 +562,7 @@ int UtcDaliTextLayoutSmallTextArea01(void)
     0u,
     11u,
     false,
+    DevelText::EllipsisPosition::END,
     false
   };
 
@@ -591,15 +600,15 @@ int UtcDaliTextLayoutSmallTextArea02(void)
   Vector<FontDescriptionRun> fontDescriptionRuns;
   fontDescriptionRuns.PushBack( fontDescriptionRun );
   Size textArea(1.f, 1.f);
-  Size layoutSize(78.f, 19.f);
-  float positions[] = { 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f };
+  Size layoutSize(81.f, 20.f);
+  float positions[] = { 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f };
   struct LineRun line =
   {
     { 0u, 11u },
     { 0u, 11u },
-    78.f,
+    81.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -625,6 +634,7 @@ int UtcDaliTextLayoutSmallTextArea02(void)
     0u,
     11u,
     false,
+    DevelText::EllipsisPosition::END,
     true
   };
 
@@ -675,22 +685,22 @@ int UtcDaliTextLayoutMultilineText01(void)
   fontDescriptionRuns.PushBack( fontDescriptionRun1 );
   fontDescriptionRuns.PushBack( fontDescriptionRun2 );
   Size textArea(100.f, 300.f);
-  Size layoutSize(91.f, 95.f);
+  Size layoutSize(98.f, 97.f);
   float positions[] =
   {
-    0.f, -12.f, 10.f,  -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f,  -0.f, 39.f, -9.f, 50.f,  -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 78.f, -0.f,
-    0.f, -13.f,  9.f,  -9.f, 18.f,  -9.f, 30.f,  -9.f, 39.f, -2.f, 42.f, -12.f,
-    0.f, -12.f,  8.f,  -9.f, 16.f,  -9.f, 26.f,  -9.f, 35.f, -9.f, 44.f, -11.f, 50.f, -0.f,
-    0.f, -12.f, 10.f, -12.f, 14.f, -12.f, 25.f,  -9.f, 34.f, -9.f, 40.f,  -9.f, 49.f, -9.f, 58.f, -11.f, 64.f, -0.f,
-    0.f, -12.f,  4.f, -12.f,  8.f,  -9.f, 18.f,  -9.f, 27.f, -9.f, 34.f,  -0.f, 40.f, -9.f, 49.f, -12.f, 53.f, -0.f, 58.f, -11.f, 65.f,  -9.f, 74.f, -9.f, 82.f, -11.f, 90.f, -2.f
+    0.f, -12.f, 10.f,  -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f,  -0.f, 40.f, -9.f, 52.f,  -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f,
+    0.f, -13.f,  9.f,  -9.f, 19.f,  -9.f, 32.f,  -9.f, 41.f, -2.f, 45.f, -12.f,
+    0.f, -12.f,  8.f,  -9.f, 18.f,  -9.f, 27.f,  -9.f, 38.f, -9.f, 47.f, -11.f, 53.f, -0.f,
+    0.f, -12.f, 11.f, -12.f, 15.f, -12.f, 26.f,  -9.f, 36.f, -9.f, 42.f,  -9.f, 53.f, -9.f, 62.f, -11.f, 68.f, -0.f,
+    0.f, -12.f,  4.f, -12.f,  9.f,  -9.f, 18.f,  -9.f, 28.f, -9.f, 36.f,  -0.f, 41.f, -9.f, 51.f, -12.f, 57.f, -0.f, 62.f, -11.f, 68.f,  -9.f, 78.f, -9.f, 87.f, -11.f, 94.f, -2.f
   };
   struct LineRun line0 =
   {
     { 0u, 12u },
     { 0u, 12u },
-    78.f,
+    81.f,
     15.f,
-    -4.f,
+    -5.f,
     4.f,
     0.f,
     0.f,
@@ -701,9 +711,9 @@ int UtcDaliTextLayoutMultilineText01(void)
   {
     { 12u, 6u },
     { 12u, 6u },
-    42.f,
+    44.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -714,10 +724,10 @@ int UtcDaliTextLayoutMultilineText01(void)
   {
     { 18u, 7u },
     { 18u, 7u },
-    49.f,
+    54.f,
     15.f,
     -4.f,
-    5.f,
+    6.f,
     0.f,
     0.f,
     false,
@@ -727,10 +737,10 @@ int UtcDaliTextLayoutMultilineText01(void)
   {
     { 25u, 9u },
     { 25u, 10u },
-    63.f,
+    68.f,
     15.f,
     -4.f,
-    5.f,
+    6.f,
     0.f,
     0.f,
     false,
@@ -740,7 +750,7 @@ int UtcDaliTextLayoutMultilineText01(void)
   {
     { 34u, 14u },
     { 35u, 14u },
-    91.f,
+    98.f,
     15.f,
     -4.f,
     0.f,
@@ -773,6 +783,7 @@ int UtcDaliTextLayoutMultilineText01(void)
     0u,
     48u,
     false,
+    DevelText::EllipsisPosition::END,
     true
   };
 
@@ -874,23 +885,23 @@ int UtcDaliTextLayoutMultilineText02(void)
   fontDescriptionRuns.PushBack( fontDescriptionRun4 );
   fontDescriptionRuns.PushBack( fontDescriptionRun5 );
   Size textArea(100.f, 300.f);
-  Size layoutSize(78.f, 114.f);
+  Size layoutSize(81.f, 120.f);
   float positions[] =
   {
-    0.f, -12.f, 10.f,  -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f,  -0.f, 39.f,  -9.f, 50.f,  -9.f, 60.f,  -9.f, 66.f, -13.f, 69.f, -13.f, 78.f, -0.f,  //  0 .. 11
-    0.f, -13.f,  9.f,  -9.f, 18.f,  -9.f, 30.f,  -9.f, 39.f, -0.f, 65.f, -10.f, 57.f, -13.f, 52.f, -10.f, 44.f, -10.f, 75.f,  -0.f,                           // 12 .. 21
-    21.f, -10.f, 16.f, -10.f, 9.f, -13.f, 0.f, -10.f, 29.f, -2.f, 32.f, -12.f,                                                                                // 22 .. 27
-    59.f, -10.f, 51.f, -13.f, 46.f, -10.f, 38.f, -10.f, 33.f, -0.f, 25.f, -10.f, 20.f, -10.f, 13.f, -13.f, 4.f, -10.f, 0.f,  -0.f,                            // 28 .. 37
-    4.f, -13.f,  12.f,  -9.f, 21.f, -13.f, 25.f, -13.f, 28.f, -9.f, 37.f,  -0.f, 41.f,  -9.f, 52.f,  -9.f, 62.f,  -9.f, 68.f, -13.f, 71.f, -13.f, 0.f, -0.f,  // 38 .. 49
-    3.f, -13.f,  12.f,  -9.f, 21.f,  -9.f, 33.f,  -9.f, 0.f, -2.f,                                                                                            // 50 .. 54
+    0.f, -12.f, 10.f,  -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f,  -0.f, 40.f,  -9.f, 52.f,  -9.f, 62.f,  -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, //  0 .. 11
+    0.f, -13.f,  9.f,  -9.f, 19.f,  -9.f, 32.f,  -9.f, 41.f, -0.f, 68.f, -10.f, 59.f, -13.f, 54.f, -10.f, 45.f, -10.f, 79.f,  -0.f,                          // 12 .. 21
+    23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -2.f, 36.f, -12.f,                                                                              // 22 .. 27
+    63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 41.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f,  -0.f,                           // 28 .. 37
+    4.f, -13.f,  12.f,  -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f,  -0.f, 42.f,  -9.f, 54.f,  -9.f, 64.f,  -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f, // 38 .. 49
+    4.f, -13.f,  13.f,  -9.f, 23.f,  -9.f, 36.f,  -9.f, 0.f, -2.f,                                                                                           // 50 .. 54
   };
   struct LineRun line0 =
   {
     { 0u, 12u },
     { 0u, 12u },
-    78.f,
+    81.f,
     15.f,
-    -4.f,
+    -5.f,
     4.f,
     0.f,
     0.f,
@@ -901,10 +912,10 @@ int UtcDaliTextLayoutMultilineText02(void)
   {
     { 12u, 10u },
     { 12u, 10u },
-    74.f,
+    79.f,
     15.f,
-    -4.f,
-    4.f,
+    -5.f,
+    5.f,
     0.f,
     0.f,
     false,
@@ -914,9 +925,9 @@ int UtcDaliTextLayoutMultilineText02(void)
   {
     { 22u, 6u },
     { 22u, 6u },
-    32.f,
+    35.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -927,10 +938,10 @@ int UtcDaliTextLayoutMultilineText02(void)
   {
     { 28u, 10u },
     { 28u, 10u },
-    64.f,
+    70.f,
     15.f,
-    -4.f,
-    4.f,
+    -5.f,
+    5.f,
     0.f,
     0.f,
     false,
@@ -940,9 +951,9 @@ int UtcDaliTextLayoutMultilineText02(void)
   {
     { 38u, 12u },
     { 38u, 12u },
-    76.f,
+    79.f,
     15.f,
-    -4.f,
+    -5.f,
     4.f,
     0.f,
     0.f,
@@ -953,9 +964,9 @@ int UtcDaliTextLayoutMultilineText02(void)
   {
     { 50u, 5u },
     { 50u, 5u },
-    42.f,
+    45.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -987,6 +998,7 @@ int UtcDaliTextLayoutMultilineText02(void)
     0u,
     55u,
     false,
+    DevelText::EllipsisPosition::END,
     true
   };
 
@@ -1024,20 +1036,20 @@ int UtcDaliTextLayoutMultilineText03(void)
   Vector<FontDescriptionRun> fontDescriptionRuns;
   fontDescriptionRuns.PushBack( fontDescriptionRun );
   Size textArea(100.f, 300.f);
-  Size layoutSize(94.f, 57.f);
+  Size layoutSize(98.f, 60.f);
   float positions[] =
   {
-    0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f,  -9.f, 35.f,  -9.f, 46.f, -9.f, 56.f, -9.f, 62.f, -13.f, 65.f, -13.f, 74.f, -13.f, 83.f,  -9.f,
-    0.f,  -9.f, 12.f, -9.f, 22.f, -13.f, 30.f,  -9.f, 39.f, -13.f, 43.f, -13.f, 46.f, -9.f, 55.f, -9.f, 66.f,  -9.f, 76.f,  -9.f, 82.f, -13.f, 85.f, -13.f,
-    0.f, -13.f,  9.f, -9.f, 18.f,  -9.f, 30.f,  -9.f, 39.f,  -2.f,
+    0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f,  -9.f, 36.f,  -9.f, 48.f, -9.f, 58.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -13.f, 86.f,  -9.f,
+    0.f,  -9.f, 13.f, -9.f, 23.f, -13.f, 31.f,  -9.f, 41.f, -13.f, 45.f, -13.f, 48.f, -9.f, 57.f, -9.f, 69.f,  -9.f, 79.f,  -9.f, 85.f, -13.f, 88.f, -13.f,
+    0.f, -13.f,  9.f, -9.f, 19.f,  -9.f, 32.f,  -9.f, 41.f,  -2.f,
   };
   struct LineRun line0 =
   {
     { 0u, 12u },
     { 0u, 12u },
-    91.f,
+    95.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -1048,9 +1060,9 @@ int UtcDaliTextLayoutMultilineText03(void)
   {
     { 12u, 12u },
     { 12u, 12u },
-    94.f,
+    98.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -1061,9 +1073,9 @@ int UtcDaliTextLayoutMultilineText03(void)
   {
     { 24u, 5u },
     { 24u, 5u },
-    42.f,
+    44.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -1091,6 +1103,7 @@ int UtcDaliTextLayoutMultilineText03(void)
     0u,
     29u,
     false,
+    DevelText::EllipsisPosition::END,
     true
   };
 
@@ -1128,18 +1141,18 @@ int UtcDaliTextLayoutMultilineText04(void)
   Vector<FontDescriptionRun> fontDescriptionRuns;
   fontDescriptionRuns.PushBack( fontDescriptionRun );
   Size textArea(100.f, 300.f);
-  Size layoutSize(81.f, 38.f);
+  Size layoutSize(84.f, 40.f);
   float positions[] =
   {
-    0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 78.f, -2.f, 81.f, -12.f
+    0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -2.f, 85.f, -12.f
   };
   struct LineRun line0 =
   {
     { 0u, 13u },
     { 0u, 13u },
-    81.f,
+    84.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     false,
@@ -1151,7 +1164,7 @@ int UtcDaliTextLayoutMultilineText04(void)
     { 13u, 0u },
     0.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -1178,6 +1191,7 @@ int UtcDaliTextLayoutMultilineText04(void)
     0u,
     13u,
     false,
+    DevelText::EllipsisPosition::END,
     true
   };
 
@@ -1242,19 +1256,19 @@ int UtcDaliTextLayoutMultilineText05(void)
   fontDescriptionRuns.PushBack( fontDescriptionRun2 );
   fontDescriptionRuns.PushBack( fontDescriptionRun3 );
   Size textArea(100.f, 300.f);
-  Size layoutSize(87.f, 51.f);
+  Size layoutSize(89.f, 53.f);
   float positions[] =
   {
-    0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -14.f, 59.f, -9.f, 69.f, -9.f, 75.f, -13.f, 78.f, -13.f, 87.f, -0.f,
-    0.f, -13.f,  9.f, -9.f, 18.f,  -9.f, 30.f,  -9.f, 39.f, -2.f
+    0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -14.f, 60.f, -9.f, 70.f, -9.f, 76.f, -13.f, 80.f, -13.f, 89.f, -0.f,
+    0.f, -13.f,  9.f, -9.f, 19.f,  -9.f, 32.f,  -9.f, 41.f, -2.f
   };
   struct LineRun line0 =
   {
     { 0u, 12u },
     { 0u, 12u },
-    87.f,
+    89.f,
     25.f,
-    -7.f,
+    -8.f,
     4.f,
     0.f,
     0.f,
@@ -1265,9 +1279,9 @@ int UtcDaliTextLayoutMultilineText05(void)
   {
     { 12u, 5u },
     { 12u, 5u },
-    42.f,
+    44.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -1294,6 +1308,7 @@ int UtcDaliTextLayoutMultilineText05(void)
     0u,
     17u,
     false,
+    DevelText::EllipsisPosition::END,
     true
   };
 
@@ -1330,20 +1345,20 @@ int UtcDaliTextLayoutMultilineText06(void)
   fontDescriptionRuns.PushBack( fontDescriptionRun );
 
   Size textArea(64.f, 100.f);
-  Size layoutSize(31.f, 38.f);
+  Size layoutSize(34.f, 40.f);
   float positions[] =
   {
-    26.f, -13.f, 17.f, -10.f, 8.f, -10.f, 4.f, -10.f, 0.f, -0.f,
+    27.f, -13.f, 18.f, -10.f, 9.f, -10.f, 4.f, -10.f, 0.f, -0.f,
     22.f, -10.f, 17.f, -10.f, 12.f, -10.f, 4.f, -10.f, 0.f, -10.f
   };
   struct LineRun line0 =
   {
     { 0u, 5u },
     { 0u, 5u },
-    30.f,
+    32.f,
     15.f,
-    -4.f,
-    4.f,
+    -5.f,
+    5.f,
     0.f,
     0.f,
     true,
@@ -1353,9 +1368,9 @@ int UtcDaliTextLayoutMultilineText06(void)
   {
     { 5u, 5u },
     { 5u, 5u },
-    31.f,
+    34.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -1382,6 +1397,7 @@ int UtcDaliTextLayoutMultilineText06(void)
     0u,
     10u,
     false,
+    DevelText::EllipsisPosition::END,
     true
   };
 
@@ -1418,20 +1434,20 @@ int UtcDaliTextLayoutMultilineText07(void)
   fontDescriptionRuns.PushBack( fontDescriptionRun );
 
   Size textArea(26.f, 100.f);
-  Size layoutSize(21.f, 57.f);
+  Size layoutSize(24.f, 60.f);
   float positions[] =
   {
-    10.f, -10.f, 5.f, -10.f, 0.f, -10.f,
-    11.f, -10.f, 7.f, -10.f, 0.f, -13.f,
-    13.f, -10.f, 4.f, -10.f, 0.f, -10.f
+    10.f, -10.f, 4.f, -10.f, 0.f, -10.f,
+    13.f, -10.f, 9.f, -10.f, 0.f, -13.f,
+    14.f, -10.f, 4.f, -10.f, 0.f, -10.f
   };
   struct LineRun line0 =
   {
     { 0u, 3u },
     { 0u, 3u },
-    19.f,
+    21.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -1442,9 +1458,9 @@ int UtcDaliTextLayoutMultilineText07(void)
   {
     { 3u, 3u },
     { 3u, 3u },
-    18.f,
+    22.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -1455,9 +1471,9 @@ int UtcDaliTextLayoutMultilineText07(void)
   {
     { 6u, 3u },
     { 6u, 3u },
-    21.f,
+    24.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -1485,6 +1501,7 @@ int UtcDaliTextLayoutMultilineText07(void)
     0u,
     9u,
     false,
+    DevelText::EllipsisPosition::END,
     true
   };
 
@@ -1748,36 +1765,36 @@ int UtcDaliTextUpdateLayout01(void)
   fontDescriptionRuns.PushBack( fontDescriptionRun16 );
   fontDescriptionRuns.PushBack( fontDescriptionRun17 );
   Size textArea(100.f, 300.f);
-  Size layoutSize(90.f, 361.f);
+  Size layoutSize(100.f, 380.f);
   float positions[] =
   {
-    0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 78.f, -0.f,                                                                                                     //   0 ..  11
-    0.f, -13.f,  9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 65.f, -10.f, 57.f, -13.f, 52.f, -10.f, 44.f, -10.f, 75.f, -0.f,                                                                                                                             //  12 ..  21
-    21.f, -10.f, 16.f, -10.f, 9.f, -13.f, 0.f, -10.f, 29.f, -2.f, 32.f, -12.f,                                                                                                                                                                              //  22 ..  27
-    87.f, -8.f, 82.f, -6.f, 75.f, -8.f, 72.f, -7.f, 71.f, -11.f, 67.f, -0.f, 63.f, -7.f, 62.f, -11.f, 57.f, -11.f, 51.f, -8.f, 50.f, -11.f, 45.f, -11.f, 40.f, -8.f, 37.f, -0.f, 4.f, -13.f, 12.f, -9.f, 21.f, -13.f, 25.f, -13.f, 28.f, -9.f, 0.f, -0.f,   //  28 ..  47
-    39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 35.f, -0.f, 25.f, -10.f, 17.f, -13.f, 12.f, -10.f, 4.f, -10.f, 0.f, -0.f,                                                                                                                 //  48 ..  58
-    21.f, -10.f, 16.f, -10.f, 9.f, -13.f, 0.f, -10.f, 0.f, -0.f,                                                                                                                                                                                            //  59 ..  63
-    59.f, -10.f, 51.f, -13.f, 46.f, -10.f, 38.f, -10.f, 33.f, -0.f, 25.f, -10.f, 20.f, -10.f, 13.f, -13.f, 4.f, -10.f, 0.f, -0.f,                                                                                                                           //  64 ..  73
-    4.f, -13.f,  12.f, -9.f, 21.f, -13.f, 25.f, -13.f, 28.f, -9.f, 37.f, -0.f, 41.f, -9.f, 52.f, -9.f, 62.f, -9.f, 68.f, -13.f, 71.f, -13.f, 0.f, -0.f,                                                                                                     //  74 ..  85
-    3.f, -13.f,  12.f, -9.f, 21.f, -9.f, 33.f, -9.f, 0.f, -2.f, 0.f, -12.f,                                                                                                                                                                                 //  86 ..  91
-    0.f, -13.f,  8.f, -9.f, 17.f, -13.f, 21.f, -13.f, 24.f, -9.f, 33.f, -0.f, 37.f, -9.f, 48.f, -9.f, 58.f, -9.f, 64.f, -13.f, 67.f, -13.f, 76.f, -0.f,                                                                                                     //  92 .. 103
-    81.f, -8.f, 76.f, -6.f, 69.f, -8.f, 66.f, -7.f, 65.f, -11.f, 61.f, -0.f, 57.f, -7.f, 56.f, -11.f, 51.f, -11.f, 45.f, -8.f, 44.f, -11.f, 39.f, -11.f, 34.f, -8.f, 31.f, -0.f, 21.f, -10.f, 13.f, -13.f, 8.f, -10.f, 0.f, -10.f, 88.f, -0.f,              // 104 .. 122
-    21.f, -10.f, 16.f, -10.f, 9.f, -13.f, 0.f, -10.f, 29.f, -0.f,                                                                                                                                                                                           // 123 .. 127
-    0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 78.f, -0.f,                                                                                                     // 128 .. 139
-    0.f, -13.f,  9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 65.f, -10.f, 57.f, -13.f, 52.f, -10.f, 44.f, -10.f, 75.f, -0.f,                                                                                                                             // 140 .. 149
-    21.f, -10.f, 16.f, -10.f, 9.f, -13.f, 0.f, -10.f, 29.f, -2.f, 32.f, -12.f,                                                                                                                                                                              // 150 .. 155
-    59.f, -10.f, 51.f, -13.f, 46.f, -10.f, 38.f, -10.f, 33.f, -0.f, 25.f, -10.f, 20.f, -10.f, 13.f, -13.f, 4.f, -10.f, 0.f, -0.f,                                                                                                                           // 156 .. 165
-    4.f, -13.f,  12.f, -9.f, 21.f, -13.f, 25.f, -13.f, 28.f, -9.f, 37.f, -0.f, 41.f, -9.f, 52.f, -9.f, 62.f, -9.f, 68.f, -13.f, 71.f, -13.f, 0.f, -0.f,                                                                                                     // 166 .. 177
-    47.f, -8.f, 42.f, -6.f, 35.f, -8.f, 32.f, -7.f, 31.f, -11.f, 27.f, -0.f, 23.f, -7.f, 22.f, -11.f, 17.f, -11.f, 11.f, -8.f, 10.f, -11.f, 5.f, -11.f, 0.f, -8.f, 0.f, -0.f,                                                                               // 178 .. 191
+    0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f,                                                                                                 //   0 ..  11
+    0.f, -13.f,  9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -0.f, 68.f, -10.f, 59.f, -13.f, 54.f, -10.f, 45.f, -10.f, 79.f, -0.f,                                                                                                                         //  12 ..  21
+    23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -2.f, 36.f, -12.f,                                                                                                                                                                         //  22 ..  27
+    58.f, -8.f, 52.f, -6.f, 45.f, -8.f, 41.f, -7.f, 39.f, -11.f, 34.f, -0.f, 30.f, -7.f, 28.f, -11.f, 23.f, -11.f, 16.f, -8.f, 15.f, -11.f, 9.f, -11.f, 4.f, -8.f, 0.f, -0.f, 4.f, -13.f, 12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, //  28 ..  47
+    42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f, 59.f, -10.f, 50.f, -13.f, 46.f, -10.f, 36.f, -10.f, 32.f, -0.f,                                                                                                            //  48 ..  58
+    23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 0.f, -0.f,                                                                                                                                                                                       //  59 ..  63
+    63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 41.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f,                                                                                                                       //  64 ..  73
+    4.f, -13.f,  12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f,                                                                                                 //  74 ..  85
+    4.f, -13.f,  13.f, -9.f, 23.f, -9.f, 36.f, -9.f, 0.f, -2.f, 0.f, -12.f,                                                                                                                                                                             //  86 ..  91
+    0.f, -13.f,  8.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 79.f, -0.f,                                                                                                 //  92 .. 103
+    92.f, -8.f, 86.f, -6.f, 79.f, -8.f, 75.f, -7.f, 73.f, -11.f, 68.f, -0.f, 64.f, -7.f, 62.f, -11.f, 57.f, -11.f, 50.f, -8.f, 49.f, -11.f, 43.f, -11.f, 38.f, -8.f, 34.f, -0.f, 23.f, -10.f, 14.f, -13.f, 10.f, -10.f, 0.f, -10.f, 99.f, -0.f,         // 104 .. 122
+    23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -0.f,                                                                                                                                                                                      // 123 .. 127
+    0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f,                                                                                                 // 128 .. 139
+    0.f, -13.f,  9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -0.f, 68.f, -10.f, 59.f, -13.f, 54.f, -10.f, 45.f, -10.f, 79.f, -0.f,                                                                                                                         // 140 .. 149
+    23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -2.f, 36.f, -12.f,                                                                                                                                                                         // 150 .. 155
+    63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 41.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f,                                                                                                                       // 156 .. 165
+    4.f, -13.f,  12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f,                                                                                                 // 166 .. 177
+    54.f, -8.f, 49.f, -6.f, 41.f, -8.f, 37.f, -7.f, 35.f, -11.f, 31.f, -0.f, 26.f, -7.f, 24.f, -11.f, 19.f, -11.f, 12.f, -8.f, 11.f, -11.f, 5.f, -11.f, 0.f, -8.f, 0.f, -0.f,                                                                           // 178 .. 191
   };
 
   struct LineRun line01 =
   {
     { 0u, 12u },
     { 0u, 12u },
-    78.f,
+    81.f,
     15.f,
-    -4.f,
+    -5.f,
     4.f,
     0.f,
     0.f,
@@ -1788,10 +1805,10 @@ int UtcDaliTextUpdateLayout01(void)
   {
     { 12u, 10u },
     { 12u, 10u },
-    74.f,
+    79.f,
     15.f,
-    -4.f,
-    4.f,
+    -5.f,
+    5.f,
     0.f,
     0.f,
     false,
@@ -1801,9 +1818,9 @@ int UtcDaliTextUpdateLayout01(void)
   {
     { 22u, 6u },
     { 22u, 6u },
-    32.f,
+    35.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -1812,11 +1829,11 @@ int UtcDaliTextUpdateLayout01(void)
   };
   struct LineRun line04 =
   {
-    { 28u, 20u },
-    { 28u, 20u },
-    90.f,
+    { 28u, 14u },
+    { 28u, 14u },
+    63.f,
     15.f,
-    -4.f,
+    -5.f,
     4.f,
     0.f,
     0.f,
@@ -1825,24 +1842,24 @@ int UtcDaliTextUpdateLayout01(void)
   };
   struct LineRun line05 =
   {
-    { 48u, 11u },
-    { 48u, 11u },
-    74.f,
+    { 42, 12u },
+    { 42, 12u },
+    79.f,
     15.f,
-    -4.f,
+    -5.f,
     4.f,
     0.f,
     0.f,
-    false,
+    true,
     false
   };
   struct LineRun line06 =
   {
-    { 59u, 5u },
-    { 59u, 5u },
-    28.f,
+    { 54u, 10u },
+    { 54u, 10u },
+    70.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -1853,10 +1870,10 @@ int UtcDaliTextUpdateLayout01(void)
   {
     { 64u, 10u },
     { 64u, 10u },
-    64.f,
+    70.f,
     15.f,
-    -4.f,
-    4.f,
+    -5.f,
+    5.f,
     0.f,
     0.f,
     true,
@@ -1866,9 +1883,9 @@ int UtcDaliTextUpdateLayout01(void)
   {
     { 74u, 12u },
     { 74u, 12u },
-    76.f,
+    79.f,
     15.f,
-    -4.f,
+    -5.f,
     4.f,
     0.f,
     0.f,
@@ -1879,9 +1896,9 @@ int UtcDaliTextUpdateLayout01(void)
   {
     { 86u, 6u },
     { 86u, 6u },
-    42.f,
+    45.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -1892,9 +1909,9 @@ int UtcDaliTextUpdateLayout01(void)
   {
     { 92u, 12u },
     { 92u, 12u },
-    76.f,
+    79.f,
     15.f,
-    -4.f,
+    -5.f,
     4.f,
     0.f,
     0.f,
@@ -1905,10 +1922,10 @@ int UtcDaliTextUpdateLayout01(void)
   {
     { 104u, 19u },
     { 104u, 19u },
-    88.f,
+    100.f,
     15.f,
-    -4.f,
-    4.f,
+    -5.f,
+    5.f,
     0.f,
     0.f,
     false,
@@ -1918,9 +1935,9 @@ int UtcDaliTextUpdateLayout01(void)
   {
     { 123u, 5u },
     { 123u, 5u },
-    28.f,
+    32.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -1931,9 +1948,9 @@ int UtcDaliTextUpdateLayout01(void)
   {
     { 128u, 12u },
     { 128u, 12u },
-    78.f,
+    81.f,
     15.f,
-    -4.f,
+    -5.f,
     4.f,
     0.f,
     0.f,
@@ -1944,10 +1961,10 @@ int UtcDaliTextUpdateLayout01(void)
   {
     { 140u, 10u },
     { 140u, 10u },
-    74.f,
+    79.f,
     15.f,
-    -4.f,
-    4.f,
+    -5.f,
+    5.f,
     0.f,
     0.f,
     false,
@@ -1957,9 +1974,9 @@ int UtcDaliTextUpdateLayout01(void)
   {
     { 150u, 6u },
     { 150u, 6u },
-    32.f,
+    35.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -1970,10 +1987,10 @@ int UtcDaliTextUpdateLayout01(void)
   {
     { 156u, 10u },
     { 156u, 10u },
-    64.f,
+    70.f,
     15.f,
-    -4.f,
-    4.f,
+    -5.f,
+    5.f,
     0.f,
     0.f,
     true,
@@ -1983,9 +2000,9 @@ int UtcDaliTextUpdateLayout01(void)
   {
     { 166u, 12u },
     { 166u, 12u },
-    76.f,
+    79.f,
     15.f,
-    -4.f,
+    -5.f,
     4.f,
     0.f,
     0.f,
@@ -1996,9 +2013,9 @@ int UtcDaliTextUpdateLayout01(void)
   {
     { 178u, 14u },
     { 178u, 14u },
-    54.f,
+    63.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -2011,7 +2028,7 @@ int UtcDaliTextUpdateLayout01(void)
     { 192u, 0u },
     0.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -2060,6 +2077,7 @@ int UtcDaliTextUpdateLayout01(void)
     0u,
     64u,
     false,
+    DevelText::EllipsisPosition::END,
     true
   };
 
@@ -2323,36 +2341,36 @@ int UtcDaliTextUpdateLayout02(void)
   fontDescriptionRuns.PushBack( fontDescriptionRun16 );
   fontDescriptionRuns.PushBack( fontDescriptionRun17 );
   Size textArea(100.f, 300.f);
-  Size layoutSize(90.f, 361.f);
+  Size layoutSize(100.f, 380.f);
   float positions[] =
   {
-    0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 78.f, -0.f,                                                                                                     //   0 ..  11
-    0.f, -13.f,  9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 65.f, -10.f, 57.f, -13.f, 52.f, -10.f, 44.f, -10.f, 75.f, -0.f,                                                                                                                             //  12 ..  21
-    21.f, -10.f, 16.f, -10.f, 9.f, -13.f, 0.f, -10.f, 29.f, -2.f, 32.f, -12.f,                                                                                                                                                                              //  22 ..  27
-    87.f, -8.f, 82.f, -6.f, 75.f, -8.f, 72.f, -7.f, 71.f, -11.f, 67.f, -0.f, 63.f, -7.f, 62.f, -11.f, 57.f, -11.f, 51.f, -8.f, 50.f, -11.f, 45.f, -11.f, 40.f, -8.f, 37.f, -0.f, 4.f, -13.f, 12.f, -9.f, 21.f, -13.f, 25.f, -13.f, 28.f, -9.f, 0.f, -0.f,   //  28 ..  47
-    39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 35.f, -0.f, 25.f, -10.f, 17.f, -13.f, 12.f, -10.f, 4.f, -10.f, 0.f, -0.f,                                                                                                                 //  48 ..  58
-    21.f, -10.f, 16.f, -10.f, 9.f, -13.f, 0.f, -10.f, 0.f, -0.f,                                                                                                                                                                                            //  59 ..  63
-    59.f, -10.f, 51.f, -13.f, 46.f, -10.f, 38.f, -10.f, 33.f, -0.f, 25.f, -10.f, 20.f, -10.f, 13.f, -13.f, 4.f, -10.f, 0.f, -0.f,                                                                                                                           //  64 ..  73
-    4.f, -13.f,  12.f, -9.f, 21.f, -13.f, 25.f, -13.f, 28.f, -9.f, 37.f, -0.f, 41.f, -9.f, 52.f, -9.f, 62.f, -9.f, 68.f, -13.f, 71.f, -13.f, 0.f, -0.f,                                                                                                     //  74 ..  85
-    3.f, -13.f,  12.f, -9.f, 21.f, -9.f, 33.f, -9.f, 0.f, -2.f, 0.f, -12.f,                                                                                                                                                                                 //  86 ..  91
-    0.f, -13.f,  8.f, -9.f, 17.f, -13.f, 21.f, -13.f, 24.f, -9.f, 33.f, -0.f, 37.f, -9.f, 48.f, -9.f, 58.f, -9.f, 64.f, -13.f, 67.f, -13.f, 76.f, -0.f,                                                                                                     //  92 .. 103
-    81.f, -8.f, 76.f, -6.f, 69.f, -8.f, 66.f, -7.f, 65.f, -11.f, 61.f, -0.f, 57.f, -7.f, 56.f, -11.f, 51.f, -11.f, 45.f, -8.f, 44.f, -11.f, 39.f, -11.f, 34.f, -8.f, 31.f, -0.f, 21.f, -10.f, 13.f, -13.f, 8.f, -10.f, 0.f, -10.f, 88.f, -0.f,              // 104 .. 122
-    21.f, -10.f, 16.f, -10.f, 9.f, -13.f, 0.f, -10.f, 29.f, -0.f,                                                                                                                                                                                           // 123 .. 127
-    0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 78.f, -0.f,                                                                                                     // 128 .. 139
-    0.f, -13.f,  9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 65.f, -10.f, 57.f, -13.f, 52.f, -10.f, 44.f, -10.f, 75.f, -0.f,                                                                                                                             // 140 .. 149
-    21.f, -10.f, 16.f, -10.f, 9.f, -13.f, 0.f, -10.f, 29.f, -2.f, 32.f, -12.f,                                                                                                                                                                              // 150 .. 155
-    59.f, -10.f, 51.f, -13.f, 46.f, -10.f, 38.f, -10.f, 33.f, -0.f, 25.f, -10.f, 20.f, -10.f, 13.f, -13.f, 4.f, -10.f, 0.f, -0.f,                                                                                                                           // 156 .. 165
-    4.f, -13.f,  12.f, -9.f, 21.f, -13.f, 25.f, -13.f, 28.f, -9.f, 37.f, -0.f, 41.f, -9.f, 52.f, -9.f, 62.f, -9.f, 68.f, -13.f, 71.f, -13.f, 0.f, -0.f,                                                                                                     // 166 .. 177
-    47.f, -8.f, 42.f, -6.f, 35.f, -8.f, 32.f, -7.f, 31.f, -11.f, 27.f, -0.f, 23.f, -7.f, 22.f, -11.f, 17.f, -11.f, 11.f, -8.f, 10.f, -11.f, 5.f, -11.f, 0.f, -8.f, 0.f, -0.f,                                                                               // 178 .. 191
+    0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f,                                                                                                   //   0 ..  11
+    0.f, -13.f,  9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -0.f, 68.f, -10.f, 59.f, -13.f, 54.f, -10.f, 45.f, -10.f, 79.f, -0.f,                                                                                                                           //  12 ..  21
+    23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -2.f, 36.f, -12.f,                                                                                                                                                                           //  22 ..  27
+    58.f, -8.f, 52.f, -6.f, 45.f, -8.f, 41.f, -7.f, 39.f, -11.f, 34.f, -0.f, 30.f, -7.f, 28.f, -11.f, 23.f, -11.f, 16.f, -8.f, 15.f, -11.f, 9.f, -11.f, 4.f, -8.f, 0.f, -0.f, 4.f, -13.f, 12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f,   //  28 ..  47
+    42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f, 59.f, -10.f, 50.f, -13.f, 46.f, -10.f, 36.f, -10.f, 32.f, -0.f,                                                                                                              //  48 ..  58
+    23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 0.f, -0.f,                                                                                                                                                                                         //  59 ..  63
+    63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 41.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f,                                                                                                                         //  64 ..  73
+    4.f, -13.f,  12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f,                                                                                                   //  74 ..  85
+    4.f, -13.f,  13.f, -9.f, 23.f, -9.f, 36.f, -9.f, 0.f, -2.f, 0.f, -12.f,                                                                                                                                                                               //  86 ..  91
+    0.f, -13.f,  8.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 79.f, -0.f,                                                                                                   //  92 .. 103
+    92.f, -8.f, 86.f, -6.f, 79.f, -8.f, 75.f, -7.f, 73.f, -11.f, 68.f, -0.f, 64.f, -7.f, 62.f, -11.f, 57.f, -11.f, 50.f, -8.f, 49.f, -11.f, 43.f, -11.f, 38.f, -8.f, 34.f, -0.f, 23.f, -10.f, 14.f, -13.f, 10.f, -10.f, 0.f, -10.f, 99.f, -0.f,           // 104 .. 122
+    23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -0.f,                                                                                                                                                                                        // 123 .. 127
+    0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f,                                                                                                   // 128 .. 139
+    0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -0.f, 68.f, -10.f, 59.f, -13.f, 54.f, -10.f, 45.f, -10.f, 79.f, -0.f,                                                                                                                            // 140 .. 149
+    23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -2.f, 36.f, -12.f,                                                                                                                                                                           // 150 .. 155
+    63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 41.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f,                                                                                                                         // 156 .. 165
+    4.f, -13.f, 12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f,                                                                                                    // 166 .. 177
+    54.f, -8.f, 49.f, -6.f, 41.f, -8.f, 37.f, -7.f, 35.f, -11.f, 31.f, -0.f, 26.f, -7.f, 24.f, -11.f, 19.f, -11.f, 12.f, -8.f, 11.f, -11.f, 5.f, -11.f, 0.f, -8.f, 0.f, -0.f,                                                                             // 178 .. 191
   };
 
   struct LineRun line01 =
   {
     { 0u, 12u },
     { 0u, 12u },
-    78.f,
+    81.f,
     15.f,
-    -4.f,
+    -5.f,
     4.f,
     0.f,
     0.f,
@@ -2363,10 +2381,10 @@ int UtcDaliTextUpdateLayout02(void)
   {
     { 12u, 10u },
     { 12u, 10u },
-    74.f,
+    79.f,
     15.f,
-    -4.f,
-    4.f,
+    -5.f,
+    5.f,
     0.f,
     0.f,
     false,
@@ -2376,9 +2394,9 @@ int UtcDaliTextUpdateLayout02(void)
   {
     { 22u, 6u },
     { 22u, 6u },
-    32.f,
+    35.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -2387,11 +2405,11 @@ int UtcDaliTextUpdateLayout02(void)
   };
   struct LineRun line04 =
   {
-    { 28u, 20u },
-    { 28u, 20u },
-    90.f,
+    { 28u, 14u },
+    { 28u, 14u },
+    63.f,
     15.f,
-    -4.f,
+    -5.f,
     4.f,
     0.f,
     0.f,
@@ -2400,11 +2418,11 @@ int UtcDaliTextUpdateLayout02(void)
   };
   struct LineRun line05 =
   {
-    { 48u, 11u },
-    { 48u, 11u },
-    74.f,
+    { 42u, 12u },
+    { 42u, 12u },
+    79.f,
     15.f,
-    -4.f,
+    -5.f,
     4.f,
     0.f,
     0.f,
@@ -2413,11 +2431,11 @@ int UtcDaliTextUpdateLayout02(void)
   };
   struct LineRun line06 =
   {
-    { 59u, 5u },
-    { 59u, 5u },
-    28.f,
+    { 54u, 10u },
+    { 54u, 10u },
+    70.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -2428,10 +2446,10 @@ int UtcDaliTextUpdateLayout02(void)
   {
     { 64u, 10u },
     { 64u, 10u },
-    64.f,
+    70.f,
     15.f,
-    -4.f,
-    4.f,
+    -5.f,
+    5.f,
     0.f,
     0.f,
     false,
@@ -2441,9 +2459,9 @@ int UtcDaliTextUpdateLayout02(void)
   {
     { 74u, 12u },
     { 74u, 12u },
-    76.f,
+    79.f,
     15.f,
-    -4.f,
+    -5.f,
     4.f,
     1.f,
     0.f,
@@ -2454,9 +2472,9 @@ int UtcDaliTextUpdateLayout02(void)
   {
     { 86u, 6u },
     { 86u, 6u },
-    42.f,
+    45.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -2467,9 +2485,9 @@ int UtcDaliTextUpdateLayout02(void)
   {
     { 92u, 12u },
     { 92u, 12u },
-    76.f,
+    79.f,
     15.f,
-    -4.f,
+    -5.f,
     4.f,
     0.f,
     0.f,
@@ -2480,10 +2498,10 @@ int UtcDaliTextUpdateLayout02(void)
   {
     { 104u, 19u },
     { 104u, 19u },
-    88.f,
+    100.f,
     15.f,
-    -4.f,
-    4.f,
+    -5.f,
+    5.f,
     0.f,
     0.f,
     false,
@@ -2493,9 +2511,9 @@ int UtcDaliTextUpdateLayout02(void)
   {
     { 123u, 5u },
     { 123u, 5u },
-    28.f,
+    32.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -2506,9 +2524,9 @@ int UtcDaliTextUpdateLayout02(void)
   {
     { 128u, 12u },
     { 128u, 12u },
-    78.f,
+    81.f,
     15.f,
-    -4.f,
+    -5.f,
     4.f,
     0.f,
     0.f,
@@ -2519,10 +2537,10 @@ int UtcDaliTextUpdateLayout02(void)
   {
     { 140u, 10u },
     { 140u, 10u },
-    74.f,
+    79.f,
     15.f,
-    -4.f,
-    4.f,
+    -5.f,
+    5.f,
     0.f,
     0.f,
     false,
@@ -2532,9 +2550,9 @@ int UtcDaliTextUpdateLayout02(void)
   {
     { 150u, 6u },
     { 150u, 6u },
-    32.f,
+    35.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -2545,10 +2563,10 @@ int UtcDaliTextUpdateLayout02(void)
   {
     { 156u, 10u },
     { 156u, 10u },
-    64.f,
+    70.f,
     15.f,
-    -4.f,
-    4.f,
+    -5.f,
+    5.f,
     0.f,
     0.f,
     false,
@@ -2558,9 +2576,9 @@ int UtcDaliTextUpdateLayout02(void)
   {
     { 166u, 12u },
     { 166u, 12u },
-    76.f,
+    79.f,
     15.f,
-    -4.f,
+    -5.f,
     4.f,
     0.f,
     0.f,
@@ -2571,9 +2589,9 @@ int UtcDaliTextUpdateLayout02(void)
   {
     { 178u, 14u },
     { 178u, 14u },
-    54.f,
+    63.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -2586,7 +2604,7 @@ int UtcDaliTextUpdateLayout02(void)
     { 192u, 0u },
     0.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -2635,6 +2653,7 @@ int UtcDaliTextUpdateLayout02(void)
     64u,
     64u,
     false,
+    DevelText::EllipsisPosition::END,
     true
   };
 
@@ -2898,36 +2917,36 @@ int UtcDaliTextUpdateLayout03(void)
   fontDescriptionRuns.PushBack( fontDescriptionRun16 );
   fontDescriptionRuns.PushBack( fontDescriptionRun17 );
   Size textArea(100.f, 300.f);
-  Size layoutSize(90.f, 361.f);
+  Size layoutSize(100.f, 380.f);
   float positions[] =
   {
-    0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 78.f, -0.f,                                                                                                     //   0 ..  11
-    0.f, -13.f,  9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 65.f, -10.f, 57.f, -13.f, 52.f, -10.f, 44.f, -10.f, 75.f, -0.f,                                                                                                                             //  12 ..  21
-    21.f, -10.f, 16.f, -10.f, 9.f, -13.f, 0.f, -10.f, 29.f, -2.f, 32.f, -12.f,                                                                                                                                                                              //  22 ..  27
-    87.f, -8.f, 82.f, -6.f, 75.f, -8.f, 72.f, -7.f, 71.f, -11.f, 67.f, -0.f, 63.f, -7.f, 62.f, -11.f, 57.f, -11.f, 51.f, -8.f, 50.f, -11.f, 45.f, -11.f, 40.f, -8.f, 37.f, -0.f, 4.f, -13.f, 12.f, -9.f, 21.f, -13.f, 25.f, -13.f, 28.f, -9.f, 0.f, -0.f,   //  28 ..  47
-    39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 35.f, -0.f, 25.f, -10.f, 17.f, -13.f, 12.f, -10.f, 4.f, -10.f, 0.f, -0.f,                                                                                                                 //  48 ..  58
-    21.f, -10.f, 16.f, -10.f, 9.f, -13.f, 0.f, -10.f, 0.f, -0.f,                                                                                                                                                                                            //  59 ..  63
-    59.f, -10.f, 51.f, -13.f, 46.f, -10.f, 38.f, -10.f, 33.f, -0.f, 25.f, -10.f, 20.f, -10.f, 13.f, -13.f, 4.f, -10.f, 0.f, -0.f,                                                                                                                           //  64 ..  73
-    4.f, -13.f,  12.f, -9.f, 21.f, -13.f, 25.f, -13.f, 28.f, -9.f, 37.f, -0.f, 41.f, -9.f, 52.f, -9.f, 62.f, -9.f, 68.f, -13.f, 71.f, -13.f, 0.f, -0.f,                                                                                                     //  74 ..  85
-    3.f, -13.f,  12.f, -9.f, 21.f, -9.f, 33.f, -9.f, 0.f, -2.f, 0.f, -12.f,                                                                                                                                                                                 //  86 ..  91
-    0.f, -13.f,  8.f, -9.f, 17.f, -13.f, 21.f, -13.f, 24.f, -9.f, 33.f, -0.f, 37.f, -9.f, 48.f, -9.f, 58.f, -9.f, 64.f, -13.f, 67.f, -13.f, 76.f, -0.f,                                                                                                     //  92 .. 103
-    81.f, -8.f, 76.f, -6.f, 69.f, -8.f, 66.f, -7.f, 65.f, -11.f, 61.f, -0.f, 57.f, -7.f, 56.f, -11.f, 51.f, -11.f, 45.f, -8.f, 44.f, -11.f, 39.f, -11.f, 34.f, -8.f, 31.f, -0.f, 21.f, -10.f, 13.f, -13.f, 8.f, -10.f, 0.f, -10.f, 88.f, -0.f,              // 104 .. 122
-    21.f, -10.f, 16.f, -10.f, 9.f, -13.f, 0.f, -10.f, 29.f, -0.f,                                                                                                                                                                                           // 123 .. 127
-    0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 78.f, -0.f,                                                                                                     // 128 .. 139
-    0.f, -13.f,  9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 65.f, -10.f, 57.f, -13.f, 52.f, -10.f, 44.f, -10.f, 75.f, -0.f,                                                                                                                             // 140 .. 149
-    21.f, -10.f, 16.f, -10.f, 9.f, -13.f, 0.f, -10.f, 29.f, -2.f, 32.f, -12.f,                                                                                                                                                                              // 150 .. 155
-    59.f, -10.f, 51.f, -13.f, 46.f, -10.f, 38.f, -10.f, 33.f, -0.f, 25.f, -10.f, 20.f, -10.f, 13.f, -13.f, 4.f, -10.f, 0.f, -0.f,                                                                                                                           // 156 .. 165
-    4.f, -13.f,  12.f, -9.f, 21.f, -13.f, 25.f, -13.f, 28.f, -9.f, 37.f, -0.f, 41.f, -9.f, 52.f, -9.f, 62.f, -9.f, 68.f, -13.f, 71.f, -13.f, 0.f, -0.f,                                                                                                     // 166 .. 177
-    47.f, -8.f, 42.f, -6.f, 35.f, -8.f, 32.f, -7.f, 31.f, -11.f, 27.f, -0.f, 23.f, -7.f, 22.f, -11.f, 17.f, -11.f, 11.f, -8.f, 10.f, -11.f, 5.f, -11.f, 0.f, -8.f, 0.f, -0.f,                                                                               // 178 .. 191
+    0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f,                                                                                                     //   0 ..  11
+    0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -0.f, 68.f, -10.f, 59.f, -13.f, 54.f, -10.f, 45.f, -10.f, 79.f, -0.f,                                                                                                                              //  12 ..  21
+    23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -2.f, 36.f, -12.f,                                                                                                                                                                             //  22 ..  27
+    58.f, -8.f, 52.f, -6.f, 45.f, -8.f, 41.f, -7.f, 39.f, -11.f, 34.f, -0.f, 30.f, -7.f, 28.f, -11.f, 23.f, -11.f, 16.f, -8.f, 15.f, -11.f, 9.f, -11.f, 4.f, -8.f, 0.f, -0.f, 4.f, -13.f, 12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f,     //  28 ..  47
+    42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f, 59.f, -10.f, 50.f, -13.f, 46.f, -10.f, 36.f, -10.f, 32.f, -0.f,                                                                                                                //  48 ..  58
+    23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 0.f, -0.f,                                                                                                                                                                                           //  59 ..  63
+    63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 41.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f,                                                                                                                           //  64 ..  73
+    4.f, -13.f, 12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f,                                                                                                      //  74 ..  85
+    4.f, -13.f, 13.f, -9.f, 23.f, -9.f, 36.f, -9.f, 0.f, -2.f, 0.f, -12.f,                                                                                                                                                                                  //  86 ..  91
+    0.f, -13.f, 8.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 79.f, -0.f,                                                                                                      //  92 .. 103
+    92.f, -8.f, 86.f, -6.f, 79.f, -8.f, 75.f, -7.f, 73.f, -11.f, 68.f, -0.f, 64.f, -7.f, 62.f, -11.f, 57.f, -11.f, 50.f, -8.f, 49.f, -11.f, 43.f, -11.f, 38.f, -8.f, 34.f, -0.f, 23.f, -10.f, 14.f, -13.f, 10.f, -10.f, 0.f, -10.f, 99.f, -0.f,             // 104 .. 122
+    23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -0.f,                                                                                                                                                                                          // 123 .. 127
+    0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f,                                                                                                     // 128 .. 139
+    0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -0.f, 68.f, -10.f, 59.f, -13.f, 54.f, -10.f, 45.f, -10.f, 79.f, -0.f,                                                                                                                              // 140 .. 149
+    23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -2.f, 36.f, -12.f,                                                                                                                                                                             // 150 .. 155
+    63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 41.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f,                                                                                                                           // 156 .. 165
+    4.f, -13.f, 12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f,                                                                                                      // 166 .. 177
+    54.f, -8.f, 49.f, -6.f, 41.f, -8.f, 37.f, -7.f, 35.f, -11.f, 31.f, -0.f, 26.f, -7.f, 24.f, -11.f, 19.f, -11.f, 12.f, -8.f, 11.f, -11.f, 5.f, -11.f, 0.f, -8.f, 0.f, -0.f,                                                                               // 178 .. 191
   };
 
   struct LineRun line01 =
   {
     { 0u, 12u },
     { 0u, 12u },
-    78.f,
+    81.f,
     15.f,
-    -4.f,
+    -5.f,
     4.f,
     0.f,
     0.f,
@@ -2938,10 +2957,10 @@ int UtcDaliTextUpdateLayout03(void)
   {
     { 12u, 10u },
     { 12u, 10u },
-    74.f,
+    79.f,
     15.f,
-    -4.f,
-    4.f,
+    -5.f,
+    5.f,
     0.f,
     0.f,
     false,
@@ -2951,9 +2970,9 @@ int UtcDaliTextUpdateLayout03(void)
   {
     { 22u, 6u },
     { 22u, 6u },
-    32.f,
+    35.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -2962,11 +2981,11 @@ int UtcDaliTextUpdateLayout03(void)
   };
   struct LineRun line04 =
   {
-    { 28u, 20u },
-    { 28u, 20u },
-    90.f,
+    { 28u, 14u },
+    { 28u, 14u },
+    63.f,
     15.f,
-    -4.f,
+    -5.f,
     4.f,
     0.f,
     0.f,
@@ -2975,11 +2994,11 @@ int UtcDaliTextUpdateLayout03(void)
   };
   struct LineRun line05 =
   {
-    { 48u, 11u },
-    { 48u, 11u },
-    74.f,
+    { 42u, 12u },
+    { 42u, 12u },
+    79.f,
     15.f,
-    -4.f,
+    -5.f,
     4.f,
     0.f,
     0.f,
@@ -2988,11 +3007,11 @@ int UtcDaliTextUpdateLayout03(void)
   };
   struct LineRun line06 =
   {
-    { 59u, 5u },
-    { 59u, 5u },
-    28.f,
+    { 54u, 10u },
+    { 54u, 10u },
+    70.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -3003,10 +3022,10 @@ int UtcDaliTextUpdateLayout03(void)
   {
     { 64u, 10u },
     { 64u, 10u },
-    64.f,
+    70.f,
     15.f,
-    -4.f,
-    4.f,
+    -5.f,
+    5.f,
     0.f,
     0.f,
     false,
@@ -3016,9 +3035,9 @@ int UtcDaliTextUpdateLayout03(void)
   {
     { 74u, 12u },
     { 74u, 12u },
-    76.f,
+    79.f,
     15.f,
-    -4.f,
+    -5.f,
     4.f,
     1.f,
     0.f,
@@ -3029,9 +3048,9 @@ int UtcDaliTextUpdateLayout03(void)
   {
     { 86u, 6u },
     { 86u, 6u },
-    42.f,
+    45.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -3042,9 +3061,9 @@ int UtcDaliTextUpdateLayout03(void)
   {
     { 92u, 12u },
     { 92u, 12u },
-    76.f,
+    79.f,
     15.f,
-    -4.f,
+    -5.f,
     4.f,
     0.f,
     0.f,
@@ -3055,10 +3074,10 @@ int UtcDaliTextUpdateLayout03(void)
   {
     { 104u, 19u },
     { 104u, 19u },
-    88.f,
+    100.f,
     15.f,
-    -4.f,
-    4.f,
+    -5.f,
+    5.f,
     0.f,
     0.f,
     false,
@@ -3068,9 +3087,9 @@ int UtcDaliTextUpdateLayout03(void)
   {
     { 123u, 5u },
     { 123u, 5u },
-    28.f,
+    32.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -3081,9 +3100,9 @@ int UtcDaliTextUpdateLayout03(void)
   {
     { 128u, 12u },
     { 128u, 12u },
-    78.f,
+    81.f,
     15.f,
-    -4.f,
+    -5.f,
     4.f,
     0.f,
     0.f,
@@ -3094,10 +3113,10 @@ int UtcDaliTextUpdateLayout03(void)
   {
     { 140u, 10u },
     { 140u, 10u },
-    74.f,
+    79.f,
     15.f,
-    -4.f,
-    4.f,
+    -5.f,
+    5.f,
     0.f,
     0.f,
     false,
@@ -3107,9 +3126,9 @@ int UtcDaliTextUpdateLayout03(void)
   {
     { 150u, 6u },
     { 150u, 6u },
-    32.f,
+    35.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -3120,10 +3139,10 @@ int UtcDaliTextUpdateLayout03(void)
   {
     { 156u, 10u },
     { 156u, 10u },
-    64.f,
+    70.f,
     15.f,
-    -4.f,
-    4.f,
+    -5.f,
+    5.f,
     0.f,
     0.f,
     false,
@@ -3133,9 +3152,9 @@ int UtcDaliTextUpdateLayout03(void)
   {
     { 166u, 12u },
     { 166u, 12u },
-    76.f,
+    79.f,
     15.f,
-    -4.f,
+    -5.f,
     4.f,
     0.f,
     0.f,
@@ -3146,9 +3165,9 @@ int UtcDaliTextUpdateLayout03(void)
   {
     { 178u, 14u },
     { 178u, 14u },
-    54.f,
+    63.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -3161,7 +3180,7 @@ int UtcDaliTextUpdateLayout03(void)
     { 192u, 0u },
     0.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -3210,6 +3229,7 @@ int UtcDaliTextUpdateLayout03(void)
     128u,
     64u,
     false,
+    DevelText::EllipsisPosition::END,
     true
   };
 
@@ -3249,11 +3269,11 @@ int UtcDaliTextLayoutEllipsis01(void)
 
   struct LineRun line01 =
   {
-    { 0u, 14u },
-    { 0u, 14u },
-    99.f,
+    { 0u, 13u },
+    { 0u, 13u },
+    93.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -3265,11 +3285,11 @@ int UtcDaliTextLayoutEllipsis01(void)
 
   float positions[] =
   {
-    0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 78.f, -0.f, 82.f, -13.f,
+    0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, 85.f, -13.f,
   };
 
   Size textArea( 100.f, 50.f );
-  Size layoutSize( 100.f, 19.f );
+  Size layoutSize( 100.f, 20.f );
 
   LayoutTextData data =
   {
@@ -3287,6 +3307,7 @@ int UtcDaliTextLayoutEllipsis01(void)
     0u,
     51u,
     true,
+    DevelText::EllipsisPosition::END,
     true
   };
 
@@ -3328,9 +3349,9 @@ int UtcDaliTextLayoutEllipsis02(void)
   {
     { 0u, 12u },
     { 0u, 12u },
-    78.f,
+    81.f,
     15.f,
-    -4.f,
+    -5.f,
     4.f,
     0.f,
     0.f,
@@ -3341,9 +3362,9 @@ int UtcDaliTextLayoutEllipsis02(void)
   {
     { 12u, 12u },
     { 12u, 12u },
-    93.f,
+    95.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -3356,12 +3377,12 @@ int UtcDaliTextLayoutEllipsis02(void)
 
   float positions[] =
   {
-    0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 78.f, -0.f,
-    0.f, -13.f,  9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -13.f, 52.f, -9.f, 61.f, -13.f, 65.f, -13.f, 68.f, -9.f, 77.f, -0.f, 81.f, -9.f,
+    0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f,
+    0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -0.f, 46.f, -13.f, 54.f, -9.f, 64.f, -13.f, 68.f, -13.f, 71.f, -9.f, 80.f, -0.f, 84.f, -9.f,
   };
 
   Size textArea( 100.f, 50.f );
-  Size layoutSize( 100.f, 38.f );
+  Size layoutSize( 100.f, 40.f );
 
   LayoutTextData data =
   {
@@ -3379,6 +3400,7 @@ int UtcDaliTextLayoutEllipsis02(void)
     0u,
     51u,
     true,
+    DevelText::EllipsisPosition::END,
     true
   };
 
@@ -3484,11 +3506,11 @@ int UtcDaliTextLayoutEllipsis03(void)
 
   struct LineRun line01 =
   {
-    { 0u, 17u },
-    { 0u, 17u },
-    100.f,
+    { 0u, 14u },
+    { 0u, 14u },
+    98.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -3500,11 +3522,11 @@ int UtcDaliTextLayoutEllipsis03(void)
 
   float positions[] =
   {
-    91.f, -10.f, 83.f, -13.f, 78.f, -10.f, 70.f, -10.f, 65.f, -0.f, 57.f, -10.f, 52.f, -10.f, 45.f, -13.f, 36.f, -10.f, 31.f, -0.f, 24.f, -8.f, 19.f, -6.f, 12.f, -8.f, 9.f, -7.f, 8.f, -11.f, 4.f, -0.f,
+    87.f, -10.f, 79.f, -13.f, 74.f, -10.f, 65.f, -10.f, 60.f, -0.f, 51.f, -10.f, 47.f, -10.f, 38.f, -13.f, 29.f, -10.f, 24.f, -0.f, 17.f, -8.f, 12.f, -6.f, 4.f, -8.f, 0.f, -7.f, 78.f, -11.f, 73.f, -0.f,
   };
 
   Size textArea( 100.f, 50.f );
-  Size layoutSize( 100.f, 19.f );
+  Size layoutSize( 100.f, 20.f );
 
   LayoutTextData data =
   {
@@ -3522,6 +3544,7 @@ int UtcDaliTextLayoutEllipsis03(void)
     0u,
     72u,
     true,
+    DevelText::EllipsisPosition::END,
     true
   };
 
@@ -3627,12 +3650,12 @@ int UtcDaliTextLayoutEllipsis04(void)
 
   struct LineRun line01 =
   {
-    { 0u, 16u },
-    { 0u, 16u },
-    92.f,
+    { 0u, 10u },
+    { 0u, 10u },
+    70.f,
     15.f,
-    -4.f,
-    3.f,
+    -5.f,
+    5.f,
     0.f,
     0.f,
     false,
@@ -3640,12 +3663,12 @@ int UtcDaliTextLayoutEllipsis04(void)
   };
   struct LineRun line02 =
   {
-    { 16u, 18u },
-    { 16u, 18u },
-    95.f,
+    { 10u, 19u },
+    { 10u, 19u },
+    99.f,
     15.f,
-    -4.f,
-    4.f,
+    -5.f,
+    5.f,
     0.f,
     0.f,
     false,
@@ -3657,12 +3680,12 @@ int UtcDaliTextLayoutEllipsis04(void)
 
   float positions[] =
   {
-    86.f, -10.f, 78.f, -13.f, 73.f, -10.f, 65.f, -10.f, 60.f, -0.f, 52.f, -10.f, 47.f, -10.f, 40.f, -13.f, 31.f, -10.f, 26.f, -0.f, 19.f, -8.f, 14.f, -6.f, 7.f, -8.f, 4.f, -7.f, 3.f, -11.f, 0.f, -0.f,
-    95.f, -7.f, 94.f, -11.f, 89.f, -11.f, 83.f, -8.f, 82.f, -11.f, 77.f, -11.f, 72.f, -8.f, 69.f, -0.f, 59.f, -10.f, 51.f, -13.f, 46.f, -10.f, 38.f, -10.f, 33.f, -0.f, 25.f, -10.f, 20.f, -10.f, 13.f, -13.f, 4.f, -10.f, 0.f, -0.f,
+    63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 41.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f, 96.f, -8.f, 91.f, -6.f, 83.f, -8.f, 79.f, -7.f, 78.f, -11.f, 73.f, -0.f,
+    68.f, -7.f, 67.f, -11.f, 61.f, -11.f, 55.f, -8.f, 53.f, -11.f, 47.f, -11.f, 42.f, -8.f, 38.f, -0.f, 27.f, -10.f, 18.f, -13.f, 14.f, -10.f, 4.f, -10.f, 0.f, -0.f, 92.f, -10.f, 88.f, -10.f, 79.f, -13.f, 70.f, -10.f, 65.f, -0.f,
   };
 
   Size textArea( 100.f, 50.f );
-  Size layoutSize( 100.f, 38.f );
+  Size layoutSize( 100.f, 40.f );
 
   LayoutTextData data =
   {
@@ -3680,6 +3703,7 @@ int UtcDaliTextLayoutEllipsis04(void)
     0u,
     72u,
     true,
+    DevelText::EllipsisPosition::END,
     true
   };
 
@@ -3719,14 +3743,14 @@ int UtcDaliTextLayoutEllipsis05(void)
   {
     { 0u, 11u },
     { 0u, 11u },
-    78.f,
+    80.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
     false,
-    false
+    true
   };
   Vector<LineRun> lines;
   lines.PushBack( line01 );
@@ -3737,7 +3761,7 @@ int UtcDaliTextLayoutEllipsis05(void)
   };
 
   Size textArea( 100.f, 19.f );
-  Size layoutSize( 78.f, 19.f );
+  Size layoutSize( 100.f, 20.f );
 
   LayoutTextData data =
   {
@@ -3755,6 +3779,7 @@ int UtcDaliTextLayoutEllipsis05(void)
     0u,
     11u,
     true,
+    DevelText::EllipsisPosition::END,
     true
   };
 
@@ -3980,7 +4005,7 @@ int UtcDaliTextAlign02(void)
   fontDescriptionRuns.PushBack( fontDescriptionRun05 );
   fontDescriptionRuns.PushBack( fontDescriptionRun06 );
 
-  float positions[] = { 0.f, 0.f, 4.f, 61.f, 0.f, 0.f };
+  float positions[] = { 0.f, 0.f, 33.f, 19.f, 0.f, 0.f };
 
   Size textArea( 100.f, 300.f );
   AlignData data =
@@ -4222,7 +4247,7 @@ int UtcDaliTextAlign04(void)
   fontDescriptionRuns.PushBack( fontDescriptionRun05 );
   fontDescriptionRuns.PushBack( fontDescriptionRun06 );
 
-  float positions[] = { 11.f, 18.f, 0.f, 0.f, 0.f, 0.f };
+  float positions[] = { 9.f, 15.f, 0.f, 0.f, 0.f, 0.f };
 
   Size textArea( 100.f, 300.f );
   AlignData data =
@@ -4343,7 +4368,7 @@ int UtcDaliTextAlign05(void)
   fontDescriptionRuns.PushBack( fontDescriptionRun05 );
   fontDescriptionRuns.PushBack( fontDescriptionRun06 );
 
-  float positions[] = { 0.f, 0.f, 0.f, 30.f, 0.f, 0.f };
+  float positions[] = { 0.f, 0.f, 14.f, 9.f, 0.f, 0.f };
 
   Size textArea( 100.f, 300.f );
   AlignData data =
@@ -4464,7 +4489,7 @@ int UtcDaliTextAlign06(void)
   fontDescriptionRuns.PushBack( fontDescriptionRun05 );
   fontDescriptionRuns.PushBack( fontDescriptionRun06 );
 
-  float positions[] = { 0.f, 0.f, 0.f, 0.f, 11.f, 21.f };
+  float positions[] = { 0.f, 0.f, 0.f, 0.f, 9.f, 16.f };
 
   Size textArea( 100.f, 300.f );
   AlignData data =
@@ -4585,7 +4610,7 @@ int UtcDaliTextAlign07(void)
   fontDescriptionRuns.PushBack( fontDescriptionRun05 );
   fontDescriptionRuns.PushBack( fontDescriptionRun06 );
 
-  float positions[] = { 22.f, 36.f, 0.f, 0.f, 0.f, 0.f };
+  float positions[] = { 19.f, 30.f, 0.f, 0.f, 0.f, 0.f };
 
   Size textArea( 100.f, 300.f );
   AlignData data =
@@ -4827,7 +4852,7 @@ int UtcDaliTextAlign09(void)
   fontDescriptionRuns.PushBack( fontDescriptionRun05 );
   fontDescriptionRuns.PushBack( fontDescriptionRun06 );
 
-  float positions[] = { 0.f, 0.f, 0.f, 0.f, 22.f, 43.f };
+  float positions[] = { 0.f, 0.f, 0.f, 0.f, 19.f, 33.f };
 
   Size textArea( 100.f, 300.f );
   AlignData data =
@@ -5069,7 +5094,7 @@ int UtcDaliTextAlign11(void)
   fontDescriptionRuns.PushBack( fontDescriptionRun05 );
   fontDescriptionRuns.PushBack( fontDescriptionRun06 );
 
-  float positions[] = { 22.f, 36.f, 4.f, 0.f, 0.f, 0.f };
+  float positions[] = { 19.f, 30.f, 33.f, 0.f, 0.f, 0.f };
 
   Size textArea( 100.f, 300.f );
   AlignData data =
@@ -5303,7 +5328,7 @@ int UtcDaliTextLayoutGetGlyphMetrics(void)
     { 0u, 1u },
     11.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -5313,18 +5338,18 @@ int UtcDaliTextLayoutGetGlyphMetrics(void)
   Vector<LineRun> lines01;
   lines01.PushBack( line01 );
 
-  Size layoutSize01 = Vector2(11.f, 19.f);
+  Size layoutSize01 = Vector2(11.f, 20.f);
 
   // Group: second glyph doesn't exceed the width of the first glyph
-  float positions02[] = { 0.f, -11.f , 7.f, -15.f };
+  float positions02[] = { 0.f, -11.f, 7.f, -15.f, };
 
   struct LineRun line02 =
   {
     { 0u, 2u },
     { 0u, 2u },
+    16.f,
     15.f,
-    15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -5334,7 +5359,7 @@ int UtcDaliTextLayoutGetGlyphMetrics(void)
   Vector<LineRun> lines02;
   lines02.PushBack( line02 );
 
-  Size layoutSize02 = Vector2(15.f, 19.f);
+  Size layoutSize02 = Vector2(16.f, 20.f);
 
   // Group: second glyph doesn't exceed the width of the first glyph
   float positions03[] = { 0.f, -11.f , 2.f, -15.f };
@@ -5345,7 +5370,7 @@ int UtcDaliTextLayoutGetGlyphMetrics(void)
     { 0u, 2u },
     11.f,
     15.f,
-    -4.f,
+    -5.f,
     0.f,
     0.f,
     0.f,
@@ -5355,7 +5380,7 @@ int UtcDaliTextLayoutGetGlyphMetrics(void)
   Vector<LineRun> lines03;
   lines03.PushBack( line03 );
 
-  Size layoutSize03 = Vector2(11.f, 19.f);
+  Size layoutSize03 = Vector2(11.f, 20.f);
 
  /////////////////////////////
 
@@ -5376,6 +5401,7 @@ int UtcDaliTextLayoutGetGlyphMetrics(void)
       0u,
       1u,
       false,
+      DevelText::EllipsisPosition::END,
       true
     },
     {
@@ -5393,6 +5419,7 @@ int UtcDaliTextLayoutGetGlyphMetrics(void)
       0u,
       2u,
       false,
+      DevelText::EllipsisPosition::END,
       true
     },
    {
@@ -5410,6 +5437,7 @@ int UtcDaliTextLayoutGetGlyphMetrics(void)
       0u,
       2u,
       false,
+      DevelText::EllipsisPosition::END,
       true
     }
   };