Merge "Added IGNORE_SPACES_AFTER_TEXT property" into devel/master
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit-internal / utc-Dali-Text-Layout.cpp
index d849430..ab15b46 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * Copyright (c) 2016 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2017 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.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -24,7 +24,7 @@
 #include <dali-toolkit/internal/text/text-run-container.h>
 #include <dali-toolkit-test-suite-utils.h>
 #include <dali-toolkit/dali-toolkit.h>
 #include <dali-toolkit/internal/text/text-run-container.h>
 #include <dali-toolkit-test-suite-utils.h>
 #include <dali-toolkit/dali-toolkit.h>
-#include <toolkit-text-model.h>
+#include <toolkit-text-utils.h>
 
 using namespace Dali;
 using namespace Toolkit;
 
 using namespace Dali;
 using namespace Toolkit;
@@ -51,7 +51,7 @@ struct LayoutTextData
   float*               positions;
   unsigned int         numberOfLines;
   LineRun*             lines;
   float*               positions;
   unsigned int         numberOfLines;
   LineRun*             lines;
-  LayoutEngine::Layout layout;
+  Layout::Engine::Type layout;
   unsigned int         startIndex;
   unsigned int         numberOfGlyphs;
   bool                 ellipsis:1;
   unsigned int         startIndex;
   unsigned int         numberOfGlyphs;
   bool                 ellipsis:1;
@@ -86,8 +86,9 @@ bool LayoutTextTest( const LayoutTextData& data )
   fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
 
   // 1) Create the model.
   fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
 
   // 1) Create the model.
-  LogicalModelPtr logicalModel = LogicalModel::New();
-  VisualModelPtr visualModel = VisualModel::New();
+  LogicalModelPtr logicalModel;
+  VisualModelPtr visualModel;
+  MetricsPtr metrics;
   Size layoutSize;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
   Size layoutSize;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
@@ -107,7 +108,9 @@ bool LayoutTextTest( const LayoutTextData& data )
                    options,
                    layoutSize,
                    logicalModel,
                    options,
                    layoutSize,
                    logicalModel,
-                   visualModel );
+                   visualModel,
+                   metrics,
+                   false );
 
   // 2) Clear the layout.
   Vector<LineRun>& lines = visualModel->mLines;
 
   // 2) Clear the layout.
   Vector<LineRun>& lines = visualModel->mLines;
@@ -150,26 +153,28 @@ bool LayoutTextTest( const LayoutTextData& data )
                         glyphPositions.Begin() + data.startIndex + data.numberOfGlyphs );
 
   // 3) Layout
                         glyphPositions.Begin() + data.startIndex + data.numberOfGlyphs );
 
   // 3) Layout
-  MetricsPtr metrics = Metrics::New( fontClient );
-
-  LayoutEngine engine;
+  Layout::Engine engine;
   engine.SetMetrics( metrics );
   engine.SetMetrics( metrics );
-  engine.SetTextEllipsisEnabled( data.ellipsis );
   engine.SetLayout( data.layout );
 
   const Length totalNumberOfGlyphs = visualModel->mGlyphs.Count();
   engine.SetLayout( data.layout );
 
   const Length totalNumberOfGlyphs = visualModel->mGlyphs.Count();
-
-  LayoutParameters layoutParameters( data.textArea,
-                                     logicalModel->mText.Begin(),
-                                     logicalModel->mLineBreakInfo.Begin(),
-                                     logicalModel->mWordBreakInfo.Begin(),
-                                     ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
-                                     visualModel->mGlyphs.Begin(),
-                                     visualModel->mGlyphsToCharacters.Begin(),
-                                     visualModel->mCharactersPerGlyph.Begin(),
-                                     visualModel->mCharactersToGlyph.Begin(),
-                                     visualModel->mGlyphsPerCharacter.Begin(),
-                                     totalNumberOfGlyphs );
+  float outlineWidth = visualModel->GetOutlineWidth();
+
+  Layout::Parameters layoutParameters( data.textArea,
+                                       logicalModel->mText.Begin(),
+                                       logicalModel->mLineBreakInfo.Begin(),
+                                       logicalModel->mWordBreakInfo.Begin(),
+                                       ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
+                                       visualModel->mGlyphs.Begin(),
+                                       visualModel->mGlyphsToCharacters.Begin(),
+                                       visualModel->mCharactersPerGlyph.Begin(),
+                                       visualModel->mCharactersToGlyph.Begin(),
+                                       visualModel->mGlyphsPerCharacter.Begin(),
+                                       totalNumberOfGlyphs,
+                                       Text::HorizontalAlignment::BEGIN,
+                                       Text::LineWrap::WORD,
+                                       outlineWidth,
+                                       true );
 
   layoutParameters.isLastNewParagraph = isLastNewParagraph;
 
 
   layoutParameters.isLastNewParagraph = isLastNewParagraph;
 
@@ -177,13 +182,15 @@ bool LayoutTextTest( const LayoutTextData& data )
   layoutParameters.startGlyphIndex = data.startIndex;
   layoutParameters.numberOfGlyphs = data.numberOfGlyphs;
   layoutParameters.startLineIndex = startRemoveIndex;
   layoutParameters.startGlyphIndex = data.startIndex;
   layoutParameters.numberOfGlyphs = data.numberOfGlyphs;
   layoutParameters.startLineIndex = startRemoveIndex;
+  layoutParameters.estimatedNumberOfLines = logicalModel->mParagraphInfo.Count();
 
   layoutSize = Vector2::ZERO;
 
   const bool updated = engine.LayoutText( layoutParameters,
                                           glyphPositions,
                                           lines,
 
   layoutSize = Vector2::ZERO;
 
   const bool updated = engine.LayoutText( layoutParameters,
                                           glyphPositions,
                                           lines,
-                                          layoutSize );
+                                          layoutSize,
+                                          data.ellipsis );
 
   // 4) Compare the results.
 
 
   // 4) Compare the results.
 
@@ -342,8 +349,9 @@ bool ReLayoutRightToLeftLinesTest( const ReLayoutRightToLeftLinesData& data )
   fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
 
   // 1) Create the model.
   fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
 
   // 1) Create the model.
-  LogicalModelPtr logicalModel = LogicalModel::New();
-  VisualModelPtr visualModel = VisualModel::New();
+  LogicalModelPtr logicalModel;
+  VisualModelPtr visualModel;
+  MetricsPtr metrics;
   Size layoutSize;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
   Size layoutSize;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
@@ -363,25 +371,30 @@ bool ReLayoutRightToLeftLinesTest( const ReLayoutRightToLeftLinesData& data )
                    options,
                    layoutSize,
                    logicalModel,
                    options,
                    layoutSize,
                    logicalModel,
-                   visualModel );
+                   visualModel,
+                   metrics,
+                   false );
 
   // 2) Call the ReLayoutRightToLeftLines() method.
 
   // 2) Call the ReLayoutRightToLeftLines() method.
-  MetricsPtr metrics = Metrics::New( fontClient );
-
-  LayoutEngine engine;
+  Layout::Engine engine;
   engine.SetMetrics( metrics );
 
   engine.SetMetrics( metrics );
 
-  LayoutParameters layoutParameters( data.textArea,
-                                     logicalModel->mText.Begin(),
-                                     logicalModel->mLineBreakInfo.Begin(),
-                                     logicalModel->mWordBreakInfo.Begin(),
-                                     ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
-                                     visualModel->mGlyphs.Begin(),
-                                     visualModel->mGlyphsToCharacters.Begin(),
-                                     visualModel->mCharactersPerGlyph.Begin(),
-                                     visualModel->mCharactersToGlyph.Begin(),
-                                     visualModel->mGlyphsPerCharacter.Begin(),
-                                     visualModel->mGlyphs.Count() );
+  float outlineWidth = visualModel->GetOutlineWidth();
+  Layout::Parameters layoutParameters( data.textArea,
+                                       logicalModel->mText.Begin(),
+                                       logicalModel->mLineBreakInfo.Begin(),
+                                       logicalModel->mWordBreakInfo.Begin(),
+                                       ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
+                                       visualModel->mGlyphs.Begin(),
+                                       visualModel->mGlyphsToCharacters.Begin(),
+                                       visualModel->mCharactersPerGlyph.Begin(),
+                                       visualModel->mCharactersToGlyph.Begin(),
+                                       visualModel->mGlyphsPerCharacter.Begin(),
+                                       visualModel->mGlyphs.Count(),
+                                       Text::HorizontalAlignment::BEGIN,
+                                       Text::LineWrap::WORD,
+                                       outlineWidth,
+                                       true );
 
   layoutParameters.numberOfBidirectionalInfoRuns = logicalModel->mBidirectionalLineInfo.Count();
   layoutParameters.lineBidirectionalInfoRunsBuffer = logicalModel->mBidirectionalLineInfo.Begin();
 
   layoutParameters.numberOfBidirectionalInfoRuns = logicalModel->mBidirectionalLineInfo.Count();
   layoutParameters.lineBidirectionalInfoRunsBuffer = logicalModel->mBidirectionalLineInfo.Begin();
@@ -428,8 +441,8 @@ struct AlignData
   Size                              textArea;
   unsigned int                      numberOfFonts;
   FontDescriptionRun*               fontDescriptions;
   Size                              textArea;
   unsigned int                      numberOfFonts;
   FontDescriptionRun*               fontDescriptions;
-  LayoutEngine::HorizontalAlignment horizontalAlignment;
-  LayoutEngine::VerticalAlignment   verticalAlignment;
+  Text::HorizontalAlignment::Type   horizontalAlignment;
+  Text::VerticalAlignment::Type     verticalAlignment;
   unsigned int                      startIndex;
   unsigned int                      numberOfCharacters;
   unsigned int                      numberOfLines;
   unsigned int                      startIndex;
   unsigned int                      numberOfCharacters;
   unsigned int                      numberOfLines;
@@ -451,8 +464,9 @@ bool AlignTest( const AlignData& data )
   fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
 
   // 1) Create the model.
   fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
 
   // 1) Create the model.
-  LogicalModelPtr logicalModel = LogicalModel::New();
-  VisualModelPtr visualModel = VisualModel::New();
+  LogicalModelPtr logicalModel;
+  VisualModelPtr visualModel;
+  MetricsPtr metrics;
   Size layoutSize;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
   Size layoutSize;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
@@ -471,21 +485,21 @@ bool AlignTest( const AlignData& data )
                    options,
                    layoutSize,
                    logicalModel,
                    options,
                    layoutSize,
                    logicalModel,
-                   visualModel );
+                   visualModel,
+                   metrics,
+                   false );
 
   // Call the Align method.
 
   // Call the Align method.
-  MetricsPtr metrics = Metrics::New( fontClient );
-
-  LayoutEngine engine;
+  Layout::Engine engine;
   engine.SetMetrics( metrics );
 
   engine.SetMetrics( metrics );
 
-  engine.SetHorizontalAlignment( data.horizontalAlignment );
-  engine.SetVerticalAlignment( data.verticalAlignment );
-
+  float alignmentOffset = 0.f;
   engine.Align( data.textArea,
                 data.startIndex,
                 data.numberOfCharacters,
   engine.Align( data.textArea,
                 data.startIndex,
                 data.numberOfCharacters,
-                visualModel->mLines );
+                data.horizontalAlignment,
+                visualModel->mLines,
+                alignmentOffset );
 
   // Compare results.
   if( data.numberOfLines != visualModel->mLines.Count() )
 
   // Compare results.
   if( data.numberOfLines != visualModel->mLines.Count() )
@@ -555,61 +569,12 @@ int UtcDaliTextLayoutSetGetLayout(void)
   ToolkitTestApplication application;
   tet_infoline(" UtcDaliTextLayoutSetGetLayout");
 
   ToolkitTestApplication application;
   tet_infoline(" UtcDaliTextLayoutSetGetLayout");
 
-  LayoutEngine engine;
-
-  DALI_TEST_CHECK( LayoutEngine::SINGLE_LINE_BOX == engine.GetLayout() );
-
-  engine.SetLayout( LayoutEngine::MULTI_LINE_BOX );
-  DALI_TEST_CHECK( LayoutEngine::MULTI_LINE_BOX == engine.GetLayout() );
-
-  tet_result(TET_PASS);
-  END_TEST;
-}
-
-int UtcDaliTextLayoutSetGetTextEllipsisEnabled(void)
-{
-  ToolkitTestApplication application;
-  tet_infoline(" UtcDaliTextLayoutSetGetTextEllipsisEnabled");
-
-  LayoutEngine engine;
+  Layout::Engine engine;
 
 
-  DALI_TEST_CHECK( !engine.GetTextEllipsisEnabled() );
-
-  engine.SetTextEllipsisEnabled( true );
-  DALI_TEST_CHECK( engine.GetTextEllipsisEnabled() );
-
-  tet_result(TET_PASS);
-  END_TEST;
-}
-
-int UtcDaliTextLayoutSetGetHorizontalAlignment(void)
-{
-  ToolkitTestApplication application;
-  tet_infoline(" ");
-
-  LayoutEngine engine;
-
-  DALI_TEST_CHECK( LayoutEngine::HORIZONTAL_ALIGN_BEGIN == engine.GetHorizontalAlignment() );
-
-  engine.SetHorizontalAlignment( LayoutEngine::HORIZONTAL_ALIGN_END );
-  DALI_TEST_CHECK( LayoutEngine::HORIZONTAL_ALIGN_END == engine.GetHorizontalAlignment() );
-
-  tet_result(TET_PASS);
-  END_TEST;
-}
-
-int UtcDaliTextLayoutSetGetVerticalAlignment(void)
-{
-  ToolkitTestApplication application;
-  tet_infoline(" UtcDaliTextLayoutSetGetVerticalAlignment");
-
-  LayoutEngine engine;
-
-  DALI_TEST_CHECK( LayoutEngine::VERTICAL_ALIGN_TOP == engine.GetVerticalAlignment() );
-
-  engine.SetVerticalAlignment( LayoutEngine::VERTICAL_ALIGN_TOP );
-  DALI_TEST_CHECK( LayoutEngine::VERTICAL_ALIGN_TOP == engine.GetVerticalAlignment() );
+  DALI_TEST_CHECK( Layout::Engine::SINGLE_LINE_BOX == engine.GetLayout() );
 
 
+  engine.SetLayout( Layout::Engine::MULTI_LINE_BOX );
+  DALI_TEST_CHECK( Layout::Engine::MULTI_LINE_BOX == engine.GetLayout() );
 
   tet_result(TET_PASS);
   END_TEST;
 
   tet_result(TET_PASS);
   END_TEST;
@@ -620,7 +585,7 @@ int UtcDaliTextLayoutSetGetCursorWidth(void)
   ToolkitTestApplication application;
   tet_infoline(" ");
 
   ToolkitTestApplication application;
   tet_infoline(" ");
 
-  LayoutEngine engine;
+  Layout::Engine engine;
 
   DALI_TEST_EQUALS( 1, engine.GetCursorWidth(), TEST_LOCATION );
 
 
   DALI_TEST_EQUALS( 1, engine.GetCursorWidth(), TEST_LOCATION );
 
@@ -650,7 +615,7 @@ int UtcDaliTextLayoutNoText(void)
     NULL,
     0u,
     NULL,
     NULL,
     0u,
     NULL,
-    LayoutEngine::MULTI_LINE_BOX,
+    Layout::Engine::MULTI_LINE_BOX,
     0u,
     0u,
     false,
     0u,
     0u,
     false,
@@ -704,7 +669,7 @@ int UtcDaliTextLayoutSmallTextArea01(void)
     NULL,
     0u,
     NULL,
     NULL,
     0u,
     NULL,
-    LayoutEngine::MULTI_LINE_BOX,
+    Layout::Engine::MULTI_LINE_BOX,
     0u,
     11u,
     false,
     0u,
     11u,
     false,
@@ -746,7 +711,7 @@ int UtcDaliTextLayoutSmallTextArea02(void)
   fontDescriptionRuns.PushBack( fontDescriptionRun );
   Size textArea(1.f, 1.f);
   Size layoutSize(80.f, 20.f);
   fontDescriptionRuns.PushBack( fontDescriptionRun );
   Size textArea(1.f, 1.f);
   Size layoutSize(80.f, 20.f);
-  float positions[] = { 1.f, 3.f, 12.f, 6.f, 20.f, 2.f, 24.f, 2.f, 27.f, 6.f, 36.f, 15.f, 40.f, 6.f, 51.f, 6.f, 61.f, 6.f, 67.f, 2.f, 70.f, 2.f };
+  float positions[] = { 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f };
   struct LineRun line =
   {
     { 0u, 11u },
   struct LineRun line =
   {
     { 0u, 11u },
@@ -756,6 +721,7 @@ int UtcDaliTextLayoutSmallTextArea02(void)
     -5.f,
     0.f,
     0.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -774,7 +740,7 @@ int UtcDaliTextLayoutSmallTextArea02(void)
     positions,
     1u,
     lines.Begin(),
     positions,
     1u,
     lines.Begin(),
-    LayoutEngine::SINGLE_LINE_BOX,
+    Layout::Engine::SINGLE_LINE_BOX,
     0u,
     11u,
     false,
     0u,
     11u,
     false,
@@ -831,20 +797,21 @@ int UtcDaliTextLayoutMultilineText01(void)
   Size layoutSize(95.f, 97.f);
   float positions[] =
   {
   Size layoutSize(95.f, 97.f);
   float positions[] =
   {
-    1.f, 3.f, 12.f, 6.f, 20.f, 2.f, 24.f, 2.f, 27.f, 6.f, 36.f, 15.f, 40.f, 6.f, 51.f, 6.f, 61.f, 6.f, 67.f, 2.f, 70.f, 2.f, 79.f, 15.f,
-    0.f, 22.f, 10.f, 26.f, 18.f, 26.f, 30.f, 26.f, 39.f, 32.f, 42.f, 23.f,
-    1.f, 43.f, 9.f, 46.f, 17.f, 46.f, 27.f, 46.f, 36.f, 46.f, 45.f, 44.f, 51.f, 55.f,
-    1.f, 62.f, 11.f, 62.f, 15.f, 62.f, 26.f, 65.f, 35.f, 65.f, 41.f, 65.f, 50.f, 65.f, 59.f, 63.f, 65.f, 74.f,
-    1.f, 81.f, 5.f, 81.f, 9.f, 84.f, 19.f, 84.f, 28.f, 84.f, 35.f, 93.f, 41.f, 84.f, 50.f, 81.f, 54.f, 93.f, 59.f, 82.f, 66.f, 84.f, 75.f, 84.f, 83.f, 82.f, 91.f, 91.f
+    1.f, -12.f, 11.f,  -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f,  -0.f, 40.f, -9.f, 51.f,  -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.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,
+    1.f, -12.f,  9.f,  -9.f, 17.f,  -9.f, 27.f,  -9.f, 36.f, -9.f, 45.f, -11.f, 51.f, -0.f,
+    1.f, -12.f, 11.f, -12.f, 15.f, -12.f, 26.f,  -9.f, 35.f, -9.f, 41.f,  -9.f, 50.f, -9.f, 59.f, -11.f, 65.f, -0.f,
+    1.f, -12.f,  5.f, -12.f,  9.f,  -9.f, 19.f,  -9.f, 28.f, -9.f, 35.f,  -0.f, 41.f, -9.f, 50.f, -12.f, 54.f, -0.f, 59.f, -11.f, 66.f,  -9.f, 75.f, -9.f, 83.f, -11.f, 91.f, -2.f
   };
   struct LineRun line0 =
   {
     { 0u, 12u },
     { 0u, 12u },
   };
   struct LineRun line0 =
   {
     { 0u, 12u },
     { 0u, 12u },
-    81.f,
+    80.f,
     15.f,
     -5.f,
     15.f,
     -5.f,
-    3.f,
+    4.f,
+    0.f,
     0.f,
     false,
     false
     0.f,
     false,
     false
@@ -858,6 +825,7 @@ int UtcDaliTextLayoutMultilineText01(void)
     -5.f,
     0.f,
     0.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -870,6 +838,7 @@ int UtcDaliTextLayoutMultilineText01(void)
     -4.f,
     5.f,
     0.f,
     -4.f,
     5.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -882,6 +851,7 @@ int UtcDaliTextLayoutMultilineText01(void)
     -4.f,
     5.f,
     0.f,
     -4.f,
     5.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -894,6 +864,7 @@ int UtcDaliTextLayoutMultilineText01(void)
     -4.f,
     0.f,
     0.f,
     -4.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -917,7 +888,7 @@ int UtcDaliTextLayoutMultilineText01(void)
     positions,
     5u,
     lines.Begin(),
     positions,
     5u,
     lines.Begin(),
-    LayoutEngine::MULTI_LINE_BOX,
+    Layout::Engine::MULTI_LINE_BOX,
     0u,
     48u,
     false,
     0u,
     48u,
     false,
@@ -960,7 +931,7 @@ int UtcDaliTextLayoutMultilineText02(void)
   // Set a known font description
   FontDescriptionRun fontDescriptionRun2;
   fontDescriptionRun2.characterRun.characterIndex = 17u;
   // Set a known font description
   FontDescriptionRun fontDescriptionRun2;
   fontDescriptionRun2.characterRun.characterIndex = 17u;
-  fontDescriptionRun2.characterRun.numberOfCharacters = 11u;
+  fontDescriptionRun2.characterRun.numberOfCharacters = 9u;
   fontDescriptionRun2.familyLength = fontFamily2.size();
   fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
   memcpy( fontDescriptionRun2.familyName, fontFamily2.c_str(), fontDescriptionRun2.familyLength );
   fontDescriptionRun2.familyLength = fontFamily2.size();
   fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
   memcpy( fontDescriptionRun2.familyName, fontFamily2.c_str(), fontDescriptionRun2.familyLength );
@@ -970,12 +941,12 @@ int UtcDaliTextLayoutMultilineText02(void)
   fontDescriptionRun2.slantDefined = false;
   fontDescriptionRun2.sizeDefined = false;
 
   fontDescriptionRun2.slantDefined = false;
   fontDescriptionRun2.sizeDefined = false;
 
-  const std::string fontFamily3( "TizenSansHebrew" );
+  const std::string fontFamily3( "TizenSans" );
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun3;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun3;
-  fontDescriptionRun3.characterRun.characterIndex = 28u;
-  fontDescriptionRun3.characterRun.numberOfCharacters = 10u;
+  fontDescriptionRun3.characterRun.characterIndex = 26u;
+  fontDescriptionRun3.characterRun.numberOfCharacters = 2u;
   fontDescriptionRun3.familyLength = fontFamily3.size();
   fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
   memcpy( fontDescriptionRun3.familyName, fontFamily3.c_str(), fontDescriptionRun3.familyLength );
   fontDescriptionRun3.familyLength = fontFamily3.size();
   fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
   memcpy( fontDescriptionRun3.familyName, fontFamily3.c_str(), fontDescriptionRun3.familyLength );
@@ -985,12 +956,12 @@ int UtcDaliTextLayoutMultilineText02(void)
   fontDescriptionRun3.slantDefined = false;
   fontDescriptionRun3.sizeDefined = false;
 
   fontDescriptionRun3.slantDefined = false;
   fontDescriptionRun3.sizeDefined = false;
 
-  const std::string fontFamily4( "TizenSans" );
+  const std::string fontFamily4( "TizenSansHebrew" );
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun4;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun4;
-  fontDescriptionRun4.characterRun.characterIndex = 38u;
-  fontDescriptionRun4.characterRun.numberOfCharacters = 17u;
+  fontDescriptionRun4.characterRun.characterIndex = 28u;
+  fontDescriptionRun4.characterRun.numberOfCharacters = 10u;
   fontDescriptionRun4.familyLength = fontFamily4.size();
   fontDescriptionRun4.familyName = new char[fontDescriptionRun4.familyLength];
   memcpy( fontDescriptionRun4.familyName, fontFamily4.c_str(), fontDescriptionRun4.familyLength );
   fontDescriptionRun4.familyLength = fontFamily4.size();
   fontDescriptionRun4.familyName = new char[fontDescriptionRun4.familyLength];
   memcpy( fontDescriptionRun4.familyName, fontFamily4.c_str(), fontDescriptionRun4.familyLength );
@@ -1000,30 +971,47 @@ int UtcDaliTextLayoutMultilineText02(void)
   fontDescriptionRun4.slantDefined = false;
   fontDescriptionRun4.sizeDefined = false;
 
   fontDescriptionRun4.slantDefined = false;
   fontDescriptionRun4.sizeDefined = false;
 
+  const std::string fontFamily5( "TizenSans" );
+
+  // Set a known font description
+  FontDescriptionRun fontDescriptionRun5;
+  fontDescriptionRun5.characterRun.characterIndex = 38u;
+  fontDescriptionRun5.characterRun.numberOfCharacters = 17u;
+  fontDescriptionRun5.familyLength = fontFamily5.size();
+  fontDescriptionRun5.familyName = new char[fontDescriptionRun5.familyLength];
+  memcpy( fontDescriptionRun5.familyName, fontFamily5.c_str(), fontDescriptionRun5.familyLength );
+  fontDescriptionRun5.familyDefined = true;
+  fontDescriptionRun5.weightDefined = false;
+  fontDescriptionRun5.widthDefined = false;
+  fontDescriptionRun5.slantDefined = false;
+  fontDescriptionRun5.sizeDefined = false;
+
   Vector<FontDescriptionRun> fontDescriptionRuns;
   fontDescriptionRuns.PushBack( fontDescriptionRun1 );
   fontDescriptionRuns.PushBack( fontDescriptionRun2 );
   fontDescriptionRuns.PushBack( fontDescriptionRun3 );
   fontDescriptionRuns.PushBack( fontDescriptionRun4 );
   Vector<FontDescriptionRun> fontDescriptionRuns;
   fontDescriptionRuns.PushBack( fontDescriptionRun1 );
   fontDescriptionRuns.PushBack( fontDescriptionRun2 );
   fontDescriptionRuns.PushBack( fontDescriptionRun3 );
   fontDescriptionRuns.PushBack( fontDescriptionRun4 );
+  fontDescriptionRuns.PushBack( fontDescriptionRun5 );
   Size textArea(100.f, 300.f);
   Size textArea(100.f, 300.f);
-  Size layoutSize(81.f, 120.f);
+  Size layoutSize(80.f, 120.f);
   float positions[] =
   {
   float positions[] =
   {
-    1.f, 3.f, 12.f, 6.f, 20.f, 2.f, 24.f, 2.f, 27.f, 6.f, 36.f, 15.f, 40.f, 6.f, 51.f, 6.f, 61.f, 6.f, 67.f, 2.f, 70.f, 2.f, 79.f, 15.f,
-    0.f, 22.f, 10.f, 26.f, 18.f, 26.f, 30.f, 26.f, 39.f, 35.f, 44.f, 25.f, 55.f, 22.f, 62.f, 25.f, 67.f, 25.f, 75.f, 35.f,
-    1.f, 45.f, 9.f, 45.f, 14.f, 42.f, 22.f, 45.f, 32.f, 53.f, 35.f, 44.f,
-    1.f, 65.f, 12.f, 62.f, 19.f, 65.f, 24.f, 65.f, 32.f, 75.f, 37.f, 65.f, 45.f, 65.f, 50.f, 62.f, 58.f, 65.f, 66.f, 75.f,
-    1.f, 82.f, 10.f, 86.f, 18.f, 82.f, 22.f, 82.f, 25.f, 86.f, 34.f, 95.f, 38.f, 86.f, 49.f, 86.f, 59.f, 86.f, 65.f, 82.f, 68.f, 82.f, 77.f, 95.f,
-    0.f, 102.f, 10.f, 106.f, 18.f, 106.f, 30.f, 106.f, 39.f, 112.f
+    1.f, -12.f, 11.f,  -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f,  -0.f, 40.f,  -9.f, 51.f,  -9.f, 61.f,  -9.f, 67.f, -13.f, 70.f, -13.f, 79.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, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f,  -0.f,
+    1.f, -10.f,  9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
+    1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f,  -0.f,
+    1.f, -13.f,  9.f,  -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f,  -0.f, 38.f,  -9.f, 49.f,  -9.f, 59.f,  -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
+    0.f, -13.f,  9.f,  -9.f, 18.f,  -9.f, 30.f,  -9.f, 39.f, -2.f,
   };
   struct LineRun line0 =
   {
     { 0u, 12u },
     { 0u, 12u },
   };
   struct LineRun line0 =
   {
     { 0u, 12u },
     { 0u, 12u },
-    81.f,
+    80.f,
     15.f,
     -5.f,
     15.f,
     -5.f,
-    3.f,
+    4.f,
+    0.f,
     0.f,
     false,
     false
     0.f,
     false,
     false
@@ -1037,6 +1025,7 @@ int UtcDaliTextLayoutMultilineText02(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -1044,11 +1033,12 @@ int UtcDaliTextLayoutMultilineText02(void)
   {
     { 22u, 6u },
     { 22u, 6u },
   {
     { 22u, 6u },
     { 22u, 6u },
-    36.f,
+    34.f,
     15.f,
     -5.f,
     0.f,
     0.f,
     15.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -1061,6 +1051,7 @@ int UtcDaliTextLayoutMultilineText02(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -1068,10 +1059,11 @@ int UtcDaliTextLayoutMultilineText02(void)
   {
     { 38u, 12u },
     { 38u, 12u },
   {
     { 38u, 12u },
     { 38u, 12u },
-    79.f,
+    78.f,
     15.f,
     -5.f,
     15.f,
     -5.f,
-    3.f,
+    4.f,
+    0.f,
     0.f,
     false,
     false
     0.f,
     false,
     false
@@ -1085,6 +1077,7 @@ int UtcDaliTextLayoutMultilineText02(void)
     -5.f,
     0.f,
     0.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -1102,14 +1095,14 @@ int UtcDaliTextLayoutMultilineText02(void)
     "Hello world demo שלום עולם.\n"
     "שלום עולם hello world demo.",
     textArea,
     "Hello world demo שלום עולם.\n"
     "שלום עולם hello world demo.",
     textArea,
-    4u,
+    5u,
     fontDescriptionRuns.Begin(),
     layoutSize,
     55u,
     positions,
     6u,
     lines.Begin(),
     fontDescriptionRuns.Begin(),
     layoutSize,
     55u,
     positions,
     6u,
     lines.Begin(),
-    LayoutEngine::MULTI_LINE_BOX,
+    Layout::Engine::MULTI_LINE_BOX,
     0u,
     55u,
     false,
     0u,
     55u,
     false,
@@ -1153,19 +1146,20 @@ int UtcDaliTextLayoutMultilineText03(void)
   Size layoutSize(96.f, 60.f);
   float positions[] =
   {
   Size layoutSize(96.f, 60.f);
   float positions[] =
   {
-    1.f, 3.f, 12.f, 6.f, 20.f, 2.f, 24.f, 2.f, 27.f, 6.f, 36.f, 6.f, 47.f, 6.f, 57.f, 6.f, 63.f, 2.f, 66.f, 2.f, 75.f, 2.f, 85.f, 6.f,
-    1.f, 26.f, 13.f, 26.f, 23.f, 22.f, 32.f, 26.f, 40.f, 22.f, 44.f, 22.f, 47.f, 26.f, 56.f, 26.f, 67.f, 26.f, 77.f, 26.f, 83.f, 22.f, 86.f, 22.f,
-    0.f, 42.f, 10.f, 46.f, 18.f, 46.f, 30.f, 46.f, 39.f, 52.f
+    1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f,  -9.f, 36.f,  -9.f, 47.f, -9.f, 57.f, -9.f, 63.f, -13.f, 66.f, -13.f, 75.f, -13.f, 84.f,  -9.f,
+    1.f,  -9.f, 13.f, -9.f, 23.f, -13.f, 31.f,  -9.f, 40.f, -13.f, 44.f, -13.f, 47.f, -9.f, 56.f, -9.f, 67.f,  -9.f, 77.f,  -9.f, 83.f, -13.f, 86.f, -13.f,
+    0.f, -13.f,  9.f, -9.f, 18.f,  -9.f, 30.f,  -9.f, 39.f,  -2.f,
   };
   struct LineRun line0 =
   {
     { 0u, 12u },
     { 0u, 12u },
   };
   struct LineRun line0 =
   {
     { 0u, 12u },
     { 0u, 12u },
-    94.f,
+    93.f,
     15.f,
     -5.f,
     0.f,
     0.f,
     15.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -1178,6 +1172,7 @@ int UtcDaliTextLayoutMultilineText03(void)
     -5.f,
     0.f,
     0.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -1190,6 +1185,7 @@ int UtcDaliTextLayoutMultilineText03(void)
     -5.f,
     0.f,
     0.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -1210,7 +1206,7 @@ int UtcDaliTextLayoutMultilineText03(void)
     positions,
     3u,
     lines.Begin(),
     positions,
     3u,
     lines.Begin(),
-    LayoutEngine::MULTI_LINE_BOX,
+    Layout::Engine::MULTI_LINE_BOX,
     0u,
     29u,
     false,
     0u,
     29u,
     false,
@@ -1254,7 +1250,7 @@ int UtcDaliTextLayoutMultilineText04(void)
   Size layoutSize(83.f, 40.f);
   float positions[] =
   {
   Size layoutSize(83.f, 40.f);
   float positions[] =
   {
-    1.f, 3.f, 12.f, 6.f, 20.f, 2.f, 24.f, 2.f, 27.f, 6.f, 36.f, 15.f, 40.f, 6.f, 51.f, 6.f, 61.f, 6.f, 67.f, 2.f, 70.f, 2.f, 79.f, 12.f, 82.f, 3.f
+    1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -2.f, 82.f, -12.f
   };
   struct LineRun line0 =
   {
   };
   struct LineRun line0 =
   {
@@ -1277,6 +1273,7 @@ int UtcDaliTextLayoutMultilineText04(void)
     -5.f,
     0.f,
     0.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -1296,7 +1293,7 @@ int UtcDaliTextLayoutMultilineText04(void)
     positions,
     2u,
     lines.Begin(),
     positions,
     2u,
     lines.Begin(),
-    LayoutEngine::MULTI_LINE_BOX,
+    Layout::Engine::MULTI_LINE_BOX,
     0u,
     13u,
     false,
     0u,
     13u,
     false,
@@ -1367,8 +1364,8 @@ int UtcDaliTextLayoutMultilineText05(void)
   Size layoutSize(88.f, 53.f);
   float positions[] =
   {
   Size layoutSize(88.f, 53.f);
   float positions[] =
   {
-    1.f, 13.f, 12.f, 16.f, 20.f, 12.f, 24.f, 12.f, 27.f, 16.f, 36.f, 25.f, 40.f, 11.f, 59.f, 16.f, 69.f, 16.f, 75.f, 12.f, 78.f, 12.f, 87.f, 25.f,
-    0.f, 35.f, 10.f, 39.f, 18.f, 39.f, 30.f, 39.f, 39.f, 45.f
+    1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.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
   };
   struct LineRun line0 =
   {
   };
   struct LineRun line0 =
   {
@@ -1379,6 +1376,7 @@ int UtcDaliTextLayoutMultilineText05(void)
     -8.f,
     4.f,
     0.f,
     -8.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -1391,6 +1389,7 @@ int UtcDaliTextLayoutMultilineText05(void)
     -5.f,
     0.f,
     0.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -1410,7 +1409,7 @@ int UtcDaliTextLayoutMultilineText05(void)
     positions,
     2u,
     lines.Begin(),
     positions,
     2u,
     lines.Begin(),
-    LayoutEngine::MULTI_LINE_BOX,
+    Layout::Engine::MULTI_LINE_BOX,
     0u,
     17u,
     false,
     0u,
     17u,
     false,
@@ -1453,7 +1452,7 @@ int UtcDaliTextUpdateLayout01(void)
   // Set a known font description
   FontDescriptionRun fontDescriptionRun02;
   fontDescriptionRun02.characterRun.characterIndex = 17u;
   // Set a known font description
   FontDescriptionRun fontDescriptionRun02;
   fontDescriptionRun02.characterRun.characterIndex = 17u;
-  fontDescriptionRun02.characterRun.numberOfCharacters = 11u;
+  fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
   fontDescriptionRun02.familyLength = fontHebrew.size();
   fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
   memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
   fontDescriptionRun02.familyLength = fontHebrew.size();
   fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
   memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
@@ -1465,11 +1464,11 @@ int UtcDaliTextUpdateLayout01(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun03;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun03;
-  fontDescriptionRun03.characterRun.characterIndex = 28u;
-  fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun03.familyLength = fontArabic.size();
+  fontDescriptionRun03.characterRun.characterIndex = 26u;
+  fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
+  fontDescriptionRun03.familyLength = fontLatin.size();
   fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
   fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
-  memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
+  memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
   fontDescriptionRun03.familyDefined = true;
   fontDescriptionRun03.weightDefined = false;
   fontDescriptionRun03.widthDefined = false;
   fontDescriptionRun03.familyDefined = true;
   fontDescriptionRun03.weightDefined = false;
   fontDescriptionRun03.widthDefined = false;
@@ -1478,11 +1477,11 @@ int UtcDaliTextUpdateLayout01(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun04;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun04;
-  fontDescriptionRun04.characterRun.characterIndex = 42u;
-  fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun04.familyLength = fontLatin.size();
+  fontDescriptionRun04.characterRun.characterIndex = 28u;
+  fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
+  fontDescriptionRun04.familyLength = fontArabic.size();
   fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
   fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
-  memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
+  memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
   fontDescriptionRun04.familyDefined = true;
   fontDescriptionRun04.weightDefined = false;
   fontDescriptionRun04.widthDefined = false;
   fontDescriptionRun04.familyDefined = true;
   fontDescriptionRun04.weightDefined = false;
   fontDescriptionRun04.widthDefined = false;
@@ -1491,11 +1490,11 @@ int UtcDaliTextUpdateLayout01(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun05;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun05;
-  fontDescriptionRun05.characterRun.characterIndex = 54u;
-  fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun05.familyLength = fontHebrew.size();
+  fontDescriptionRun05.characterRun.characterIndex = 42u;
+  fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
+  fontDescriptionRun05.familyLength = fontLatin.size();
   fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
   fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
-  memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
+  memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
   fontDescriptionRun05.familyDefined = true;
   fontDescriptionRun05.weightDefined = false;
   fontDescriptionRun05.widthDefined = false;
   fontDescriptionRun05.familyDefined = true;
   fontDescriptionRun05.weightDefined = false;
   fontDescriptionRun05.widthDefined = false;
@@ -1504,7 +1503,7 @@ int UtcDaliTextUpdateLayout01(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun06;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun06;
-  fontDescriptionRun06.characterRun.characterIndex = 64u;
+  fontDescriptionRun06.characterRun.characterIndex = 54u;
   fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
   fontDescriptionRun06.familyLength = fontHebrew.size();
   fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
   fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
   fontDescriptionRun06.familyLength = fontHebrew.size();
   fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
@@ -1517,11 +1516,11 @@ int UtcDaliTextUpdateLayout01(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun07;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun07;
-  fontDescriptionRun07.characterRun.characterIndex = 74u;
-  fontDescriptionRun07.characterRun.numberOfCharacters = 18u;
-  fontDescriptionRun07.familyLength = fontLatin.size();
+  fontDescriptionRun07.characterRun.characterIndex = 64u;
+  fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
+  fontDescriptionRun07.familyLength = fontHebrew.size();
   fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
   fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
-  memcpy( fontDescriptionRun07.familyName, fontLatin.c_str(), fontDescriptionRun07.familyLength );
+  memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
   fontDescriptionRun07.familyDefined = true;
   fontDescriptionRun07.weightDefined = false;
   fontDescriptionRun07.widthDefined = false;
   fontDescriptionRun07.familyDefined = true;
   fontDescriptionRun07.weightDefined = false;
   fontDescriptionRun07.widthDefined = false;
@@ -1530,8 +1529,8 @@ int UtcDaliTextUpdateLayout01(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun08;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun08;
-  fontDescriptionRun08.characterRun.characterIndex = 92u;
-  fontDescriptionRun08.characterRun.numberOfCharacters = 12u;
+  fontDescriptionRun08.characterRun.characterIndex = 74u;
+  fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
   fontDescriptionRun08.familyLength = fontLatin.size();
   fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
   memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
   fontDescriptionRun08.familyLength = fontLatin.size();
   fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
   memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
@@ -1543,11 +1542,11 @@ int UtcDaliTextUpdateLayout01(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun09;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun09;
-  fontDescriptionRun09.characterRun.characterIndex = 104u;
-  fontDescriptionRun09.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun09.familyLength = fontArabic.size();
+  fontDescriptionRun09.characterRun.characterIndex = 92u;
+  fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
+  fontDescriptionRun09.familyLength = fontLatin.size();
   fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
   fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
-  memcpy( fontDescriptionRun09.familyName, fontArabic.c_str(), fontDescriptionRun09.familyLength );
+  memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
   fontDescriptionRun09.familyDefined = true;
   fontDescriptionRun09.weightDefined = false;
   fontDescriptionRun09.widthDefined = false;
   fontDescriptionRun09.familyDefined = true;
   fontDescriptionRun09.weightDefined = false;
   fontDescriptionRun09.widthDefined = false;
@@ -1556,11 +1555,11 @@ int UtcDaliTextUpdateLayout01(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun10;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun10;
-  fontDescriptionRun10.characterRun.characterIndex = 118u;
-  fontDescriptionRun10.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun10.familyLength = fontHebrew.size();
+  fontDescriptionRun10.characterRun.characterIndex = 104u;
+  fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
+  fontDescriptionRun10.familyLength = fontArabic.size();
   fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
   fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
-  memcpy( fontDescriptionRun10.familyName, fontHebrew.c_str(), fontDescriptionRun10.familyLength );
+  memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
   fontDescriptionRun10.familyDefined = true;
   fontDescriptionRun10.weightDefined = false;
   fontDescriptionRun10.widthDefined = false;
   fontDescriptionRun10.familyDefined = true;
   fontDescriptionRun10.weightDefined = false;
   fontDescriptionRun10.widthDefined = false;
@@ -1569,11 +1568,11 @@ int UtcDaliTextUpdateLayout01(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun11;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun11;
-  fontDescriptionRun11.characterRun.characterIndex = 128u;
-  fontDescriptionRun11.characterRun.numberOfCharacters = 17u;
-  fontDescriptionRun11.familyLength = fontLatin.size();
+  fontDescriptionRun11.characterRun.characterIndex = 118u;
+  fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
+  fontDescriptionRun11.familyLength = fontHebrew.size();
   fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
   fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
-  memcpy( fontDescriptionRun11.familyName, fontLatin.c_str(), fontDescriptionRun11.familyLength );
+  memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
   fontDescriptionRun11.familyDefined = true;
   fontDescriptionRun11.weightDefined = false;
   fontDescriptionRun11.widthDefined = false;
   fontDescriptionRun11.familyDefined = true;
   fontDescriptionRun11.weightDefined = false;
   fontDescriptionRun11.widthDefined = false;
@@ -1582,11 +1581,11 @@ int UtcDaliTextUpdateLayout01(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun12;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun12;
-  fontDescriptionRun12.characterRun.characterIndex = 145u;
-  fontDescriptionRun12.characterRun.numberOfCharacters = 11u;
-  fontDescriptionRun12.familyLength = fontHebrew.size();
+  fontDescriptionRun12.characterRun.characterIndex = 128u;
+  fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
+  fontDescriptionRun12.familyLength = fontLatin.size();
   fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
   fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
-  memcpy( fontDescriptionRun12.familyName, fontHebrew.c_str(), fontDescriptionRun12.familyLength );
+  memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
   fontDescriptionRun12.familyDefined = true;
   fontDescriptionRun12.weightDefined = false;
   fontDescriptionRun12.widthDefined = false;
   fontDescriptionRun12.familyDefined = true;
   fontDescriptionRun12.weightDefined = false;
   fontDescriptionRun12.widthDefined = false;
@@ -1595,8 +1594,8 @@ int UtcDaliTextUpdateLayout01(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun13;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun13;
-  fontDescriptionRun13.characterRun.characterIndex = 156u;
-  fontDescriptionRun13.characterRun.numberOfCharacters = 10u;
+  fontDescriptionRun13.characterRun.characterIndex = 145u;
+  fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
   fontDescriptionRun13.familyLength = fontHebrew.size();
   fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
   memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
   fontDescriptionRun13.familyLength = fontHebrew.size();
   fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
   memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
@@ -1608,8 +1607,8 @@ int UtcDaliTextUpdateLayout01(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun14;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun14;
-  fontDescriptionRun14.characterRun.characterIndex = 166u;
-  fontDescriptionRun14.characterRun.numberOfCharacters = 12u;
+  fontDescriptionRun14.characterRun.characterIndex = 154u;
+  fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
   fontDescriptionRun14.familyLength = fontLatin.size();
   fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
   memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
   fontDescriptionRun14.familyLength = fontLatin.size();
   fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
   memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
@@ -1621,17 +1620,43 @@ int UtcDaliTextUpdateLayout01(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun15;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun15;
-  fontDescriptionRun15.characterRun.characterIndex = 178u;
-  fontDescriptionRun15.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun15.familyLength = fontArabic.size();
+  fontDescriptionRun15.characterRun.characterIndex = 156u;
+  fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
+  fontDescriptionRun15.familyLength = fontHebrew.size();
   fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
   fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
-  memcpy( fontDescriptionRun15.familyName, fontArabic.c_str(), fontDescriptionRun15.familyLength );
+  memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
   fontDescriptionRun15.familyDefined = true;
   fontDescriptionRun15.weightDefined = false;
   fontDescriptionRun15.widthDefined = false;
   fontDescriptionRun15.slantDefined = false;
   fontDescriptionRun15.sizeDefined = false;
 
   fontDescriptionRun15.familyDefined = true;
   fontDescriptionRun15.weightDefined = false;
   fontDescriptionRun15.widthDefined = false;
   fontDescriptionRun15.slantDefined = false;
   fontDescriptionRun15.sizeDefined = false;
 
+  // Set a known font description
+  FontDescriptionRun fontDescriptionRun16;
+  fontDescriptionRun16.characterRun.characterIndex = 166u;
+  fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
+  fontDescriptionRun16.familyLength = fontLatin.size();
+  fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
+  memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
+  fontDescriptionRun16.familyDefined = true;
+  fontDescriptionRun16.weightDefined = false;
+  fontDescriptionRun16.widthDefined = false;
+  fontDescriptionRun16.slantDefined = false;
+  fontDescriptionRun16.sizeDefined = false;
+
+  // Set a known font description
+  FontDescriptionRun fontDescriptionRun17;
+  fontDescriptionRun17.characterRun.characterIndex = 178u;
+  fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
+  fontDescriptionRun17.familyLength = fontArabic.size();
+  fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
+  memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
+  fontDescriptionRun17.familyDefined = true;
+  fontDescriptionRun17.weightDefined = false;
+  fontDescriptionRun17.widthDefined = false;
+  fontDescriptionRun17.slantDefined = false;
+  fontDescriptionRun17.sizeDefined = false;
+
   Vector<FontDescriptionRun> fontDescriptionRuns;
   fontDescriptionRuns.PushBack( fontDescriptionRun01 );
   fontDescriptionRuns.PushBack( fontDescriptionRun02 );
   Vector<FontDescriptionRun> fontDescriptionRuns;
   fontDescriptionRuns.PushBack( fontDescriptionRun01 );
   fontDescriptionRuns.PushBack( fontDescriptionRun02 );
@@ -1648,37 +1673,41 @@ int UtcDaliTextUpdateLayout01(void)
   fontDescriptionRuns.PushBack( fontDescriptionRun13 );
   fontDescriptionRuns.PushBack( fontDescriptionRun14 );
   fontDescriptionRuns.PushBack( fontDescriptionRun15 );
   fontDescriptionRuns.PushBack( fontDescriptionRun13 );
   fontDescriptionRuns.PushBack( fontDescriptionRun14 );
   fontDescriptionRuns.PushBack( fontDescriptionRun15 );
+  fontDescriptionRuns.PushBack( fontDescriptionRun16 );
+  fontDescriptionRuns.PushBack( fontDescriptionRun17 );
   Size textArea(100.f, 300.f);
   Size layoutSize(92.f, 380.f);
   float positions[] =
   {
   Size textArea(100.f, 300.f);
   Size layoutSize(92.f, 380.f);
   float positions[] =
   {
-    1.f, 3.f, 12.f, 6.f, 20.f, 2.f, 24.f, 2.f, 27.f, 6.f, 36.f, 15.f, 40.f, 6.f, 51.f, 6.f, 61.f, 6.f, 67.f, 2.f, 70.f, 2.f, 79.f, 15.f,
-    0.f, 22.f, 10.f, 26.f, 18.f, 26.f, 30.f, 26.f, 39.f, 35.f, 44.f, 25.f, 55.f, 22.f, 62.f, 25.f, 67.f, 25.f, 75.f, 35.f,
-    1.f, 45.f, 9.f, 45.f, 14.f, 42.f, 22.f, 45.f, 32.f, 53.f, 35.f, 44.f,
-    0.f, 67.f, 7.f, 69.f, 12.f, 68.f, 18.f, 68.f, 23.f, 64.f, 25.f, 75.f, 27.f, 68.f, 32.f, 64.f, 33.f, 64.f, 37.f, 67.f, 44.f, 64.f, 45.f, 64.f, 49.f, 67.f, 55.f, 75.f, 59.f, 62.f, 68.f, 66.f, 76.f, 62.f, 80.f, 62.f, 83.f, 66.f, 92.f, 75.f,
-    0.f, 86.f, 11.f, 86.f, 21.f, 86.f, 27.f, 82.f, 30.f, 82.f, 39.f, 95.f, 44.f, 85.f, 55.f, 82.f, 62.f, 85.f, 67.f, 85.f, 75.f, 95.f,
-    1.f, 105.f, 9.f, 105.f, 14.f, 102.f, 22.f, 105.f, 30.f, 115.f,
-    1.f, 125.f, 12.f, 122.f, 19.f, 125.f, 24.f, 125.f, 32.f, 135.f, 37.f, 125.f, 45.f, 125.f, 50.f, 122.f, 58.f, 125.f, 66.f, 135.f,
-    1.f, 142.f, 10.f, 146.f, 18.f, 142.f, 22.f, 142.f, 25.f, 146.f, 34.f, 155.f, 38.f, 146.f, 49.f, 146.f, 59.f, 146.f, 65.f, 142.f, 68.f, 142.f, 77.f, 155.f,
-    0.f, 162.f, 10.f, 166.f, 18.f, 166.f, 30.f, 166.f, 39.f, 172.f, 42.f, 163.f,
-    1.f, 182.f, 10.f, 186.f, 18.f, 182.f, 22.f, 182.f, 25.f, 186.f, 34.f, 195.f, 38.f, 186.f, 49.f, 186.f, 59.f, 186.f, 65.f, 182.f, 68.f, 182.f, 77.f, 195.f,
-    0.f, 207.f, 7.f, 209.f, 12.f, 208.f, 18.f, 208.f, 23.f, 204.f, 25.f, 215.f, 27.f, 208.f, 32.f, 204.f, 33.f, 204.f, 37.f, 207.f, 44.f, 204.f, 45.f, 204.f, 49.f, 207.f, 55.f, 215.f, 59.f, 205.f, 70.f, 202.f, 77.f, 205.f, 82.f, 205.f, 90.f, 215.f,
-    1.f, 225.f, 9.f, 225.f, 14.f, 222.f, 22.f, 225.f, 30.f, 235.f,
-    1.f, 243.f, 12.f, 246.f, 20.f, 242.f, 24.f, 242.f, 27.f, 246.f, 36.f, 255.f, 40.f, 246.f, 51.f, 246.f, 61.f, 246.f, 67.f, 242.f, 70.f, 242.f, 79.f, 255.f,
-    0.f, 262.f, 10.f, 266.f, 18.f, 266.f, 30.f, 266.f, 39.f, 275.f, 44.f, 265.f, 55.f, 262.f, 62.f, 265.f, 67.f, 265.f, 75.f, 275.f,
-    1.f, 285.f, 9.f, 285.f, 14.f, 282.f, 22.f, 285.f, 32.f, 293.f, 35.f, 284.f,
-    1.f, 305.f, 12.f, 302.f, 19.f, 305.f, 24.f, 305.f, 32.f, 315.f, 37.f, 305.f, 45.f, 305.f, 50.f, 302.f, 58.f, 305.f, 66.f, 315.f,
-    1.f, 322.f, 10.f, 326.f, 18.f, 322.f, 22.f, 322.f, 25.f, 326.f, 34.f, 335.f, 38.f, 326.f, 49.f, 326.f, 59.f, 326.f, 65.f, 322.f, 68.f, 322.f, 77.f, 335.f,
-    0.f, 347.f, 7.f, 349.f, 12.f, 348.f, 18.f, 348.f, 23.f, 344.f, 25.f, 355.f, 27.f, 348.f, 32.f, 344.f, 33.f, 344.f, 37.f, 347.f, 44.f, 344.f, 45.f, 344.f, 49.f, 347.f, 55.f, 355.f,
+    1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.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, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
+    1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
+    0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 67.f, -9.f, 76.f, -13.f, 80.f, -13.f, 83.f, -9.f, 92.f, -0.f,
+    0.f, -9.f, 11.f, -9.f, 21.f, -9.f, 27.f, -13.f, 30.f, -13.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
+    1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
+    1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f,
+    1.f, -13.f,  9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.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,
+    1.f, -13.f,  9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
+    0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f,
+    1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
+    1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.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, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
+    1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
+    1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f,
+    1.f, -13.f,  9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
+    0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f,
   };
   };
+
   struct LineRun line01 =
   {
     { 0u, 12u },
     { 0u, 12u },
   struct LineRun line01 =
   {
     { 0u, 12u },
     { 0u, 12u },
-    81.f,
+    80.f,
     15.f,
     -5.f,
     15.f,
     -5.f,
-    3.f,
+    4.f,
+    0.f,
     0.f,
     false,
     false
     0.f,
     false,
     false
@@ -1692,6 +1721,7 @@ int UtcDaliTextUpdateLayout01(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -1699,11 +1729,12 @@ int UtcDaliTextUpdateLayout01(void)
   {
     { 22u, 6u },
     { 22u, 6u },
   {
     { 22u, 6u },
     { 22u, 6u },
-    36.f,
+    34.f,
     15.f,
     -5.f,
     0.f,
     0.f,
     15.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -1716,6 +1747,7 @@ int UtcDaliTextUpdateLayout01(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -1728,6 +1760,7 @@ int UtcDaliTextUpdateLayout01(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -1740,6 +1773,7 @@ int UtcDaliTextUpdateLayout01(void)
     -5.f,
     0.f,
     0.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -1752,6 +1786,7 @@ int UtcDaliTextUpdateLayout01(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -1759,10 +1794,11 @@ int UtcDaliTextUpdateLayout01(void)
   {
     { 74u, 12u },
     { 74u, 12u },
   {
     { 74u, 12u },
     { 74u, 12u },
-    79.f,
+    78.f,
     15.f,
     -5.f,
     15.f,
     -5.f,
-    3.f,
+    4.f,
+    1.f,
     0.f,
     false,
     false
     0.f,
     false,
     false
@@ -1776,6 +1812,7 @@ int UtcDaliTextUpdateLayout01(void)
     -5.f,
     0.f,
     0.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -1788,6 +1825,7 @@ int UtcDaliTextUpdateLayout01(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -1800,6 +1838,7 @@ int UtcDaliTextUpdateLayout01(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -1812,6 +1851,7 @@ int UtcDaliTextUpdateLayout01(void)
     -5.f,
     0.f,
     0.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -1819,10 +1859,11 @@ int UtcDaliTextUpdateLayout01(void)
   {
     { 128u, 12u },
     { 128u, 12u },
   {
     { 128u, 12u },
     { 128u, 12u },
-    81.f,
+    80.f,
     15.f,
     -5.f,
     15.f,
     -5.f,
-    3.f,
+    4.f,
+    0.f,
     0.f,
     false,
     false
     0.f,
     false,
     false
@@ -1836,6 +1877,7 @@ int UtcDaliTextUpdateLayout01(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -1843,11 +1885,12 @@ int UtcDaliTextUpdateLayout01(void)
   {
     { 150u, 6u },
     { 150u, 6u },
   {
     { 150u, 6u },
     { 150u, 6u },
-    36.f,
+    34.f,
     15.f,
     -5.f,
     0.f,
     0.f,
     15.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -1860,6 +1903,7 @@ int UtcDaliTextUpdateLayout01(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -1872,6 +1916,7 @@ int UtcDaliTextUpdateLayout01(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -1884,6 +1929,7 @@ int UtcDaliTextUpdateLayout01(void)
     -5.f,
     0.f,
     0.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -1896,6 +1942,7 @@ int UtcDaliTextUpdateLayout01(void)
     -5.f,
     0.f,
     0.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -1930,14 +1977,14 @@ int UtcDaliTextUpdateLayout01(void)
     "Hello world demo שלום עולם.\n"
     "שלום עולם hello world مرحبا بالعالم\n",
     textArea,
     "Hello world demo שלום עולם.\n"
     "שלום עולם hello world مرحبا بالعالم\n",
     textArea,
-    15u,
+    17u,
     fontDescriptionRuns.Begin(),
     layoutSize,
     192u,
     positions,
     19u,
     lines.Begin(),
     fontDescriptionRuns.Begin(),
     layoutSize,
     192u,
     positions,
     19u,
     lines.Begin(),
-    LayoutEngine::MULTI_LINE_BOX,
+    Layout::Engine::MULTI_LINE_BOX,
     0u,
     64u,
     false,
     0u,
     64u,
     false,
@@ -1980,7 +2027,7 @@ int UtcDaliTextUpdateLayout02(void)
   // Set a known font description
   FontDescriptionRun fontDescriptionRun02;
   fontDescriptionRun02.characterRun.characterIndex = 17u;
   // Set a known font description
   FontDescriptionRun fontDescriptionRun02;
   fontDescriptionRun02.characterRun.characterIndex = 17u;
-  fontDescriptionRun02.characterRun.numberOfCharacters = 11u;
+  fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
   fontDescriptionRun02.familyLength = fontHebrew.size();
   fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
   memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
   fontDescriptionRun02.familyLength = fontHebrew.size();
   fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
   memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
@@ -1992,11 +2039,11 @@ int UtcDaliTextUpdateLayout02(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun03;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun03;
-  fontDescriptionRun03.characterRun.characterIndex = 28u;
-  fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun03.familyLength = fontArabic.size();
+  fontDescriptionRun03.characterRun.characterIndex = 26u;
+  fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
+  fontDescriptionRun03.familyLength = fontLatin.size();
   fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
   fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
-  memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
+  memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
   fontDescriptionRun03.familyDefined = true;
   fontDescriptionRun03.weightDefined = false;
   fontDescriptionRun03.widthDefined = false;
   fontDescriptionRun03.familyDefined = true;
   fontDescriptionRun03.weightDefined = false;
   fontDescriptionRun03.widthDefined = false;
@@ -2005,11 +2052,11 @@ int UtcDaliTextUpdateLayout02(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun04;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun04;
-  fontDescriptionRun04.characterRun.characterIndex = 42u;
-  fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun04.familyLength = fontLatin.size();
+  fontDescriptionRun04.characterRun.characterIndex = 28u;
+  fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
+  fontDescriptionRun04.familyLength = fontArabic.size();
   fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
   fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
-  memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
+  memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
   fontDescriptionRun04.familyDefined = true;
   fontDescriptionRun04.weightDefined = false;
   fontDescriptionRun04.widthDefined = false;
   fontDescriptionRun04.familyDefined = true;
   fontDescriptionRun04.weightDefined = false;
   fontDescriptionRun04.widthDefined = false;
@@ -2018,11 +2065,11 @@ int UtcDaliTextUpdateLayout02(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun05;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun05;
-  fontDescriptionRun05.characterRun.characterIndex = 54u;
-  fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun05.familyLength = fontHebrew.size();
+  fontDescriptionRun05.characterRun.characterIndex = 42u;
+  fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
+  fontDescriptionRun05.familyLength = fontLatin.size();
   fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
   fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
-  memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
+  memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
   fontDescriptionRun05.familyDefined = true;
   fontDescriptionRun05.weightDefined = false;
   fontDescriptionRun05.widthDefined = false;
   fontDescriptionRun05.familyDefined = true;
   fontDescriptionRun05.weightDefined = false;
   fontDescriptionRun05.widthDefined = false;
@@ -2031,7 +2078,7 @@ int UtcDaliTextUpdateLayout02(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun06;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun06;
-  fontDescriptionRun06.characterRun.characterIndex = 64u;
+  fontDescriptionRun06.characterRun.characterIndex = 54u;
   fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
   fontDescriptionRun06.familyLength = fontHebrew.size();
   fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
   fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
   fontDescriptionRun06.familyLength = fontHebrew.size();
   fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
@@ -2044,11 +2091,11 @@ int UtcDaliTextUpdateLayout02(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun07;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun07;
-  fontDescriptionRun07.characterRun.characterIndex = 74u;
-  fontDescriptionRun07.characterRun.numberOfCharacters = 18u;
-  fontDescriptionRun07.familyLength = fontLatin.size();
+  fontDescriptionRun07.characterRun.characterIndex = 64u;
+  fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
+  fontDescriptionRun07.familyLength = fontHebrew.size();
   fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
   fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
-  memcpy( fontDescriptionRun07.familyName, fontLatin.c_str(), fontDescriptionRun07.familyLength );
+  memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
   fontDescriptionRun07.familyDefined = true;
   fontDescriptionRun07.weightDefined = false;
   fontDescriptionRun07.widthDefined = false;
   fontDescriptionRun07.familyDefined = true;
   fontDescriptionRun07.weightDefined = false;
   fontDescriptionRun07.widthDefined = false;
@@ -2057,8 +2104,8 @@ int UtcDaliTextUpdateLayout02(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun08;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun08;
-  fontDescriptionRun08.characterRun.characterIndex = 92u;
-  fontDescriptionRun08.characterRun.numberOfCharacters = 12u;
+  fontDescriptionRun08.characterRun.characterIndex = 74u;
+  fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
   fontDescriptionRun08.familyLength = fontLatin.size();
   fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
   memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
   fontDescriptionRun08.familyLength = fontLatin.size();
   fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
   memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
@@ -2070,11 +2117,11 @@ int UtcDaliTextUpdateLayout02(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun09;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun09;
-  fontDescriptionRun09.characterRun.characterIndex = 104u;
-  fontDescriptionRun09.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun09.familyLength = fontArabic.size();
+  fontDescriptionRun09.characterRun.characterIndex = 92u;
+  fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
+  fontDescriptionRun09.familyLength = fontLatin.size();
   fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
   fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
-  memcpy( fontDescriptionRun09.familyName, fontArabic.c_str(), fontDescriptionRun09.familyLength );
+  memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
   fontDescriptionRun09.familyDefined = true;
   fontDescriptionRun09.weightDefined = false;
   fontDescriptionRun09.widthDefined = false;
   fontDescriptionRun09.familyDefined = true;
   fontDescriptionRun09.weightDefined = false;
   fontDescriptionRun09.widthDefined = false;
@@ -2083,11 +2130,11 @@ int UtcDaliTextUpdateLayout02(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun10;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun10;
-  fontDescriptionRun10.characterRun.characterIndex = 118u;
-  fontDescriptionRun10.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun10.familyLength = fontHebrew.size();
+  fontDescriptionRun10.characterRun.characterIndex = 104u;
+  fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
+  fontDescriptionRun10.familyLength = fontArabic.size();
   fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
   fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
-  memcpy( fontDescriptionRun10.familyName, fontHebrew.c_str(), fontDescriptionRun10.familyLength );
+  memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
   fontDescriptionRun10.familyDefined = true;
   fontDescriptionRun10.weightDefined = false;
   fontDescriptionRun10.widthDefined = false;
   fontDescriptionRun10.familyDefined = true;
   fontDescriptionRun10.weightDefined = false;
   fontDescriptionRun10.widthDefined = false;
@@ -2096,11 +2143,11 @@ int UtcDaliTextUpdateLayout02(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun11;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun11;
-  fontDescriptionRun11.characterRun.characterIndex = 128u;
-  fontDescriptionRun11.characterRun.numberOfCharacters = 17u;
-  fontDescriptionRun11.familyLength = fontLatin.size();
+  fontDescriptionRun11.characterRun.characterIndex = 118u;
+  fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
+  fontDescriptionRun11.familyLength = fontHebrew.size();
   fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
   fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
-  memcpy( fontDescriptionRun11.familyName, fontLatin.c_str(), fontDescriptionRun11.familyLength );
+  memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
   fontDescriptionRun11.familyDefined = true;
   fontDescriptionRun11.weightDefined = false;
   fontDescriptionRun11.widthDefined = false;
   fontDescriptionRun11.familyDefined = true;
   fontDescriptionRun11.weightDefined = false;
   fontDescriptionRun11.widthDefined = false;
@@ -2109,11 +2156,11 @@ int UtcDaliTextUpdateLayout02(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun12;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun12;
-  fontDescriptionRun12.characterRun.characterIndex = 145u;
-  fontDescriptionRun12.characterRun.numberOfCharacters = 11u;
-  fontDescriptionRun12.familyLength = fontHebrew.size();
+  fontDescriptionRun12.characterRun.characterIndex = 128u;
+  fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
+  fontDescriptionRun12.familyLength = fontLatin.size();
   fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
   fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
-  memcpy( fontDescriptionRun12.familyName, fontHebrew.c_str(), fontDescriptionRun12.familyLength );
+  memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
   fontDescriptionRun12.familyDefined = true;
   fontDescriptionRun12.weightDefined = false;
   fontDescriptionRun12.widthDefined = false;
   fontDescriptionRun12.familyDefined = true;
   fontDescriptionRun12.weightDefined = false;
   fontDescriptionRun12.widthDefined = false;
@@ -2122,8 +2169,8 @@ int UtcDaliTextUpdateLayout02(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun13;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun13;
-  fontDescriptionRun13.characterRun.characterIndex = 156u;
-  fontDescriptionRun13.characterRun.numberOfCharacters = 10u;
+  fontDescriptionRun13.characterRun.characterIndex = 145u;
+  fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
   fontDescriptionRun13.familyLength = fontHebrew.size();
   fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
   memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
   fontDescriptionRun13.familyLength = fontHebrew.size();
   fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
   memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
@@ -2135,8 +2182,8 @@ int UtcDaliTextUpdateLayout02(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun14;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun14;
-  fontDescriptionRun14.characterRun.characterIndex = 166u;
-  fontDescriptionRun14.characterRun.numberOfCharacters = 12u;
+  fontDescriptionRun14.characterRun.characterIndex = 154u;
+  fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
   fontDescriptionRun14.familyLength = fontLatin.size();
   fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
   memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
   fontDescriptionRun14.familyLength = fontLatin.size();
   fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
   memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
@@ -2148,17 +2195,43 @@ int UtcDaliTextUpdateLayout02(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun15;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun15;
-  fontDescriptionRun15.characterRun.characterIndex = 178u;
-  fontDescriptionRun15.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun15.familyLength = fontArabic.size();
+  fontDescriptionRun15.characterRun.characterIndex = 156u;
+  fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
+  fontDescriptionRun15.familyLength = fontHebrew.size();
   fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
   fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
-  memcpy( fontDescriptionRun15.familyName, fontArabic.c_str(), fontDescriptionRun15.familyLength );
+  memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
   fontDescriptionRun15.familyDefined = true;
   fontDescriptionRun15.weightDefined = false;
   fontDescriptionRun15.widthDefined = false;
   fontDescriptionRun15.slantDefined = false;
   fontDescriptionRun15.sizeDefined = false;
 
   fontDescriptionRun15.familyDefined = true;
   fontDescriptionRun15.weightDefined = false;
   fontDescriptionRun15.widthDefined = false;
   fontDescriptionRun15.slantDefined = false;
   fontDescriptionRun15.sizeDefined = false;
 
+  // Set a known font description
+  FontDescriptionRun fontDescriptionRun16;
+  fontDescriptionRun16.characterRun.characterIndex = 166u;
+  fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
+  fontDescriptionRun16.familyLength = fontLatin.size();
+  fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
+  memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
+  fontDescriptionRun16.familyDefined = true;
+  fontDescriptionRun16.weightDefined = false;
+  fontDescriptionRun16.widthDefined = false;
+  fontDescriptionRun16.slantDefined = false;
+  fontDescriptionRun16.sizeDefined = false;
+
+  // Set a known font description
+  FontDescriptionRun fontDescriptionRun17;
+  fontDescriptionRun17.characterRun.characterIndex = 178u;
+  fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
+  fontDescriptionRun17.familyLength = fontArabic.size();
+  fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
+  memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
+  fontDescriptionRun17.familyDefined = true;
+  fontDescriptionRun17.weightDefined = false;
+  fontDescriptionRun17.widthDefined = false;
+  fontDescriptionRun17.slantDefined = false;
+  fontDescriptionRun17.sizeDefined = false;
+
   Vector<FontDescriptionRun> fontDescriptionRuns;
   fontDescriptionRuns.PushBack( fontDescriptionRun01 );
   fontDescriptionRuns.PushBack( fontDescriptionRun02 );
   Vector<FontDescriptionRun> fontDescriptionRuns;
   fontDescriptionRuns.PushBack( fontDescriptionRun01 );
   fontDescriptionRuns.PushBack( fontDescriptionRun02 );
@@ -2175,37 +2248,41 @@ int UtcDaliTextUpdateLayout02(void)
   fontDescriptionRuns.PushBack( fontDescriptionRun13 );
   fontDescriptionRuns.PushBack( fontDescriptionRun14 );
   fontDescriptionRuns.PushBack( fontDescriptionRun15 );
   fontDescriptionRuns.PushBack( fontDescriptionRun13 );
   fontDescriptionRuns.PushBack( fontDescriptionRun14 );
   fontDescriptionRuns.PushBack( fontDescriptionRun15 );
+  fontDescriptionRuns.PushBack( fontDescriptionRun16 );
+  fontDescriptionRuns.PushBack( fontDescriptionRun17 );
   Size textArea(100.f, 300.f);
   Size layoutSize(92.f, 380.f);
   float positions[] =
   {
   Size textArea(100.f, 300.f);
   Size layoutSize(92.f, 380.f);
   float positions[] =
   {
-    1.f, 3.f, 12.f, 6.f, 20.f, 2.f, 24.f, 2.f, 27.f, 6.f, 36.f, 15.f, 40.f, 6.f, 51.f, 6.f, 61.f, 6.f, 67.f, 2.f, 70.f, 2.f, 79.f, 15.f,
-    0.f, 22.f, 10.f, 26.f, 18.f, 26.f, 30.f, 26.f, 39.f, 35.f, 44.f, 25.f, 55.f, 22.f, 62.f, 25.f, 67.f, 25.f, 75.f, 35.f,
-    1.f, 45.f, 9.f, 45.f, 14.f, 42.f, 22.f, 45.f, 32.f, 53.f, 35.f, 44.f,
-    0.f, 67.f, 7.f, 69.f, 12.f, 68.f, 18.f, 68.f, 23.f, 64.f, 25.f, 75.f, 27.f, 68.f, 32.f, 64.f, 33.f, 64.f, 37.f, 67.f, 44.f, 64.f, 45.f, 64.f, 49.f, 67.f, 55.f, 75.f, 59.f, 62.f, 68.f, 66.f, 76.f, 62.f, 80.f, 62.f, 83.f, 66.f, 92.f, 75.f,
-    0.f, 86.f, 11.f, 86.f, 21.f, 86.f, 27.f, 82.f, 30.f, 82.f, 39.f, 95.f, 44.f, 85.f, 55.f, 82.f, 62.f, 85.f, 67.f, 85.f, 75.f, 95.f,
-    1.f, 105.f, 9.f, 105.f, 14.f, 102.f, 22.f, 105.f, 30.f, 115.f,
-    1.f, 125.f, 12.f, 122.f, 19.f, 125.f, 24.f, 125.f, 32.f, 135.f, 37.f, 125.f, 45.f, 125.f, 50.f, 122.f, 58.f, 125.f, 66.f, 135.f,
-    1.f, 142.f, 10.f, 146.f, 18.f, 142.f, 22.f, 142.f, 25.f, 146.f, 34.f, 155.f, 38.f, 146.f, 49.f, 146.f, 59.f, 146.f, 65.f, 142.f, 68.f, 142.f, 77.f, 155.f,
-    0.f, 162.f, 10.f, 166.f, 18.f, 166.f, 30.f, 166.f, 39.f, 172.f, 42.f, 163.f,
-    1.f, 182.f, 10.f, 186.f, 18.f, 182.f, 22.f, 182.f, 25.f, 186.f, 34.f, 195.f, 38.f, 186.f, 49.f, 186.f, 59.f, 186.f, 65.f, 182.f, 68.f, 182.f, 77.f, 195.f,
-    0.f, 207.f, 7.f, 209.f, 12.f, 208.f, 18.f, 208.f, 23.f, 204.f, 25.f, 215.f, 27.f, 208.f, 32.f, 204.f, 33.f, 204.f, 37.f, 207.f, 44.f, 204.f, 45.f, 204.f, 49.f, 207.f, 55.f, 215.f, 59.f, 205.f, 70.f, 202.f, 77.f, 205.f, 82.f, 205.f, 90.f, 215.f,
-    1.f, 225.f, 9.f, 225.f, 14.f, 222.f, 22.f, 225.f, 30.f, 235.f,
-    1.f, 243.f, 12.f, 246.f, 20.f, 242.f, 24.f, 242.f, 27.f, 246.f, 36.f, 255.f, 40.f, 246.f, 51.f, 246.f, 61.f, 246.f, 67.f, 242.f, 70.f, 242.f, 79.f, 255.f,
-    0.f, 262.f, 10.f, 266.f, 18.f, 266.f, 30.f, 266.f, 39.f, 275.f, 44.f, 265.f, 55.f, 262.f, 62.f, 265.f, 67.f, 265.f, 75.f, 275.f,
-    1.f, 285.f, 9.f, 285.f, 14.f, 282.f, 22.f, 285.f, 32.f, 293.f, 35.f, 284.f,
-    1.f, 305.f, 12.f, 302.f, 19.f, 305.f, 24.f, 305.f, 32.f, 315.f, 37.f, 305.f, 45.f, 305.f, 50.f, 302.f, 58.f, 305.f, 66.f, 315.f,
-    1.f, 322.f, 10.f, 326.f, 18.f, 322.f, 22.f, 322.f, 25.f, 326.f, 34.f, 335.f, 38.f, 326.f, 49.f, 326.f, 59.f, 326.f, 65.f, 322.f, 68.f, 322.f, 77.f, 335.f,
-    0.f, 347.f, 7.f, 349.f, 12.f, 348.f, 18.f, 348.f, 23.f, 344.f, 25.f, 355.f, 27.f, 348.f, 32.f, 344.f, 33.f, 344.f, 37.f, 347.f, 44.f, 344.f, 45.f, 344.f, 49.f, 347.f, 55.f, 355.f,
+    1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.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, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
+    1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
+    0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 67.f, -9.f, 76.f, -13.f, 80.f, -13.f, 83.f, -9.f, 92.f, -0.f,
+    0.f, -9.f, 11.f, -9.f, 21.f, -9.f, 27.f, -13.f, 30.f, -13.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
+    1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
+    1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f,
+    1.f, -13.f,  9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.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,
+    1.f, -13.f,  9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
+    0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f,
+    1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
+    1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.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, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
+    1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
+    1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f,
+    1.f, -13.f,  9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
+    0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f,
   };
   };
+
   struct LineRun line01 =
   {
     { 0u, 12u },
     { 0u, 12u },
   struct LineRun line01 =
   {
     { 0u, 12u },
     { 0u, 12u },
-    81.f,
+    80.f,
     15.f,
     -5.f,
     15.f,
     -5.f,
-    3.f,
+    4.f,
+    0.f,
     0.f,
     false,
     false
     0.f,
     false,
     false
@@ -2219,6 +2296,7 @@ int UtcDaliTextUpdateLayout02(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2226,11 +2304,12 @@ int UtcDaliTextUpdateLayout02(void)
   {
     { 22u, 6u },
     { 22u, 6u },
   {
     { 22u, 6u },
     { 22u, 6u },
-    36.f,
+    34.f,
     15.f,
     -5.f,
     0.f,
     0.f,
     15.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2243,6 +2322,7 @@ int UtcDaliTextUpdateLayout02(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2255,6 +2335,7 @@ int UtcDaliTextUpdateLayout02(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2267,6 +2348,7 @@ int UtcDaliTextUpdateLayout02(void)
     -5.f,
     0.f,
     0.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2279,6 +2361,7 @@ int UtcDaliTextUpdateLayout02(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2286,10 +2369,11 @@ int UtcDaliTextUpdateLayout02(void)
   {
     { 74u, 12u },
     { 74u, 12u },
   {
     { 74u, 12u },
     { 74u, 12u },
-    79.f,
+    78.f,
     15.f,
     -5.f,
     15.f,
     -5.f,
-    3.f,
+    4.f,
+    1.f,
     0.f,
     false,
     false
     0.f,
     false,
     false
@@ -2303,6 +2387,7 @@ int UtcDaliTextUpdateLayout02(void)
     -5.f,
     0.f,
     0.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2315,6 +2400,7 @@ int UtcDaliTextUpdateLayout02(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2327,6 +2413,7 @@ int UtcDaliTextUpdateLayout02(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2339,6 +2426,7 @@ int UtcDaliTextUpdateLayout02(void)
     -5.f,
     0.f,
     0.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2346,10 +2434,11 @@ int UtcDaliTextUpdateLayout02(void)
   {
     { 128u, 12u },
     { 128u, 12u },
   {
     { 128u, 12u },
     { 128u, 12u },
-    81.f,
+    80.f,
     15.f,
     -5.f,
     15.f,
     -5.f,
-    3.f,
+    4.f,
+    0.f,
     0.f,
     false,
     false
     0.f,
     false,
     false
@@ -2363,6 +2452,7 @@ int UtcDaliTextUpdateLayout02(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2370,11 +2460,12 @@ int UtcDaliTextUpdateLayout02(void)
   {
     { 150u, 6u },
     { 150u, 6u },
   {
     { 150u, 6u },
     { 150u, 6u },
-    36.f,
+    34.f,
     15.f,
     -5.f,
     0.f,
     0.f,
     15.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2387,6 +2478,7 @@ int UtcDaliTextUpdateLayout02(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2399,6 +2491,7 @@ int UtcDaliTextUpdateLayout02(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2411,6 +2504,7 @@ int UtcDaliTextUpdateLayout02(void)
     -5.f,
     0.f,
     0.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2423,6 +2517,7 @@ int UtcDaliTextUpdateLayout02(void)
     -5.f,
     0.f,
     0.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2457,14 +2552,14 @@ int UtcDaliTextUpdateLayout02(void)
     "Hello world demo שלום עולם.\n"
     "שלום עולם hello world مرحبا بالعالم\n",
     textArea,
     "Hello world demo שלום עולם.\n"
     "שלום עולם hello world مرحبا بالعالم\n",
     textArea,
-    15u,
+    17u,
     fontDescriptionRuns.Begin(),
     layoutSize,
     192u,
     positions,
     19u,
     lines.Begin(),
     fontDescriptionRuns.Begin(),
     layoutSize,
     192u,
     positions,
     19u,
     lines.Begin(),
-    LayoutEngine::MULTI_LINE_BOX,
+    Layout::Engine::MULTI_LINE_BOX,
     64u,
     64u,
     false,
     64u,
     64u,
     false,
@@ -2507,7 +2602,7 @@ int UtcDaliTextUpdateLayout03(void)
   // Set a known font description
   FontDescriptionRun fontDescriptionRun02;
   fontDescriptionRun02.characterRun.characterIndex = 17u;
   // Set a known font description
   FontDescriptionRun fontDescriptionRun02;
   fontDescriptionRun02.characterRun.characterIndex = 17u;
-  fontDescriptionRun02.characterRun.numberOfCharacters = 11u;
+  fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
   fontDescriptionRun02.familyLength = fontHebrew.size();
   fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
   memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
   fontDescriptionRun02.familyLength = fontHebrew.size();
   fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
   memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
@@ -2519,11 +2614,11 @@ int UtcDaliTextUpdateLayout03(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun03;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun03;
-  fontDescriptionRun03.characterRun.characterIndex = 28u;
-  fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun03.familyLength = fontArabic.size();
+  fontDescriptionRun03.characterRun.characterIndex = 26u;
+  fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
+  fontDescriptionRun03.familyLength = fontLatin.size();
   fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
   fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
-  memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
+  memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
   fontDescriptionRun03.familyDefined = true;
   fontDescriptionRun03.weightDefined = false;
   fontDescriptionRun03.widthDefined = false;
   fontDescriptionRun03.familyDefined = true;
   fontDescriptionRun03.weightDefined = false;
   fontDescriptionRun03.widthDefined = false;
@@ -2532,11 +2627,11 @@ int UtcDaliTextUpdateLayout03(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun04;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun04;
-  fontDescriptionRun04.characterRun.characterIndex = 42u;
-  fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun04.familyLength = fontLatin.size();
+  fontDescriptionRun04.characterRun.characterIndex = 28u;
+  fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
+  fontDescriptionRun04.familyLength = fontArabic.size();
   fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
   fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
-  memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
+  memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
   fontDescriptionRun04.familyDefined = true;
   fontDescriptionRun04.weightDefined = false;
   fontDescriptionRun04.widthDefined = false;
   fontDescriptionRun04.familyDefined = true;
   fontDescriptionRun04.weightDefined = false;
   fontDescriptionRun04.widthDefined = false;
@@ -2545,11 +2640,11 @@ int UtcDaliTextUpdateLayout03(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun05;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun05;
-  fontDescriptionRun05.characterRun.characterIndex = 54u;
-  fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun05.familyLength = fontHebrew.size();
+  fontDescriptionRun05.characterRun.characterIndex = 42u;
+  fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
+  fontDescriptionRun05.familyLength = fontLatin.size();
   fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
   fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
-  memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
+  memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
   fontDescriptionRun05.familyDefined = true;
   fontDescriptionRun05.weightDefined = false;
   fontDescriptionRun05.widthDefined = false;
   fontDescriptionRun05.familyDefined = true;
   fontDescriptionRun05.weightDefined = false;
   fontDescriptionRun05.widthDefined = false;
@@ -2558,7 +2653,7 @@ int UtcDaliTextUpdateLayout03(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun06;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun06;
-  fontDescriptionRun06.characterRun.characterIndex = 64u;
+  fontDescriptionRun06.characterRun.characterIndex = 54u;
   fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
   fontDescriptionRun06.familyLength = fontHebrew.size();
   fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
   fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
   fontDescriptionRun06.familyLength = fontHebrew.size();
   fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
@@ -2571,11 +2666,11 @@ int UtcDaliTextUpdateLayout03(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun07;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun07;
-  fontDescriptionRun07.characterRun.characterIndex = 74u;
-  fontDescriptionRun07.characterRun.numberOfCharacters = 18u;
-  fontDescriptionRun07.familyLength = fontLatin.size();
+  fontDescriptionRun07.characterRun.characterIndex = 64u;
+  fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
+  fontDescriptionRun07.familyLength = fontHebrew.size();
   fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
   fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
-  memcpy( fontDescriptionRun07.familyName, fontLatin.c_str(), fontDescriptionRun07.familyLength );
+  memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
   fontDescriptionRun07.familyDefined = true;
   fontDescriptionRun07.weightDefined = false;
   fontDescriptionRun07.widthDefined = false;
   fontDescriptionRun07.familyDefined = true;
   fontDescriptionRun07.weightDefined = false;
   fontDescriptionRun07.widthDefined = false;
@@ -2584,8 +2679,8 @@ int UtcDaliTextUpdateLayout03(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun08;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun08;
-  fontDescriptionRun08.characterRun.characterIndex = 92u;
-  fontDescriptionRun08.characterRun.numberOfCharacters = 12u;
+  fontDescriptionRun08.characterRun.characterIndex = 74u;
+  fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
   fontDescriptionRun08.familyLength = fontLatin.size();
   fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
   memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
   fontDescriptionRun08.familyLength = fontLatin.size();
   fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
   memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
@@ -2597,11 +2692,11 @@ int UtcDaliTextUpdateLayout03(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun09;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun09;
-  fontDescriptionRun09.characterRun.characterIndex = 104u;
-  fontDescriptionRun09.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun09.familyLength = fontArabic.size();
+  fontDescriptionRun09.characterRun.characterIndex = 92u;
+  fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
+  fontDescriptionRun09.familyLength = fontLatin.size();
   fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
   fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
-  memcpy( fontDescriptionRun09.familyName, fontArabic.c_str(), fontDescriptionRun09.familyLength );
+  memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
   fontDescriptionRun09.familyDefined = true;
   fontDescriptionRun09.weightDefined = false;
   fontDescriptionRun09.widthDefined = false;
   fontDescriptionRun09.familyDefined = true;
   fontDescriptionRun09.weightDefined = false;
   fontDescriptionRun09.widthDefined = false;
@@ -2610,11 +2705,11 @@ int UtcDaliTextUpdateLayout03(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun10;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun10;
-  fontDescriptionRun10.characterRun.characterIndex = 118u;
-  fontDescriptionRun10.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun10.familyLength = fontHebrew.size();
+  fontDescriptionRun10.characterRun.characterIndex = 104u;
+  fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
+  fontDescriptionRun10.familyLength = fontArabic.size();
   fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
   fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
-  memcpy( fontDescriptionRun10.familyName, fontHebrew.c_str(), fontDescriptionRun10.familyLength );
+  memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
   fontDescriptionRun10.familyDefined = true;
   fontDescriptionRun10.weightDefined = false;
   fontDescriptionRun10.widthDefined = false;
   fontDescriptionRun10.familyDefined = true;
   fontDescriptionRun10.weightDefined = false;
   fontDescriptionRun10.widthDefined = false;
@@ -2623,11 +2718,11 @@ int UtcDaliTextUpdateLayout03(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun11;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun11;
-  fontDescriptionRun11.characterRun.characterIndex = 128u;
-  fontDescriptionRun11.characterRun.numberOfCharacters = 17u;
-  fontDescriptionRun11.familyLength = fontLatin.size();
+  fontDescriptionRun11.characterRun.characterIndex = 118u;
+  fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
+  fontDescriptionRun11.familyLength = fontHebrew.size();
   fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
   fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
-  memcpy( fontDescriptionRun11.familyName, fontLatin.c_str(), fontDescriptionRun11.familyLength );
+  memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
   fontDescriptionRun11.familyDefined = true;
   fontDescriptionRun11.weightDefined = false;
   fontDescriptionRun11.widthDefined = false;
   fontDescriptionRun11.familyDefined = true;
   fontDescriptionRun11.weightDefined = false;
   fontDescriptionRun11.widthDefined = false;
@@ -2636,11 +2731,11 @@ int UtcDaliTextUpdateLayout03(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun12;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun12;
-  fontDescriptionRun12.characterRun.characterIndex = 145u;
-  fontDescriptionRun12.characterRun.numberOfCharacters = 11u;
-  fontDescriptionRun12.familyLength = fontHebrew.size();
+  fontDescriptionRun12.characterRun.characterIndex = 128u;
+  fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
+  fontDescriptionRun12.familyLength = fontLatin.size();
   fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
   fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
-  memcpy( fontDescriptionRun12.familyName, fontHebrew.c_str(), fontDescriptionRun12.familyLength );
+  memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
   fontDescriptionRun12.familyDefined = true;
   fontDescriptionRun12.weightDefined = false;
   fontDescriptionRun12.widthDefined = false;
   fontDescriptionRun12.familyDefined = true;
   fontDescriptionRun12.weightDefined = false;
   fontDescriptionRun12.widthDefined = false;
@@ -2649,8 +2744,8 @@ int UtcDaliTextUpdateLayout03(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun13;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun13;
-  fontDescriptionRun13.characterRun.characterIndex = 156u;
-  fontDescriptionRun13.characterRun.numberOfCharacters = 10u;
+  fontDescriptionRun13.characterRun.characterIndex = 145u;
+  fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
   fontDescriptionRun13.familyLength = fontHebrew.size();
   fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
   memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
   fontDescriptionRun13.familyLength = fontHebrew.size();
   fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
   memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
@@ -2662,8 +2757,8 @@ int UtcDaliTextUpdateLayout03(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun14;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun14;
-  fontDescriptionRun14.characterRun.characterIndex = 166u;
-  fontDescriptionRun14.characterRun.numberOfCharacters = 12u;
+  fontDescriptionRun14.characterRun.characterIndex = 154u;
+  fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
   fontDescriptionRun14.familyLength = fontLatin.size();
   fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
   memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
   fontDescriptionRun14.familyLength = fontLatin.size();
   fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
   memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
@@ -2675,17 +2770,43 @@ int UtcDaliTextUpdateLayout03(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun15;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun15;
-  fontDescriptionRun15.characterRun.characterIndex = 178u;
-  fontDescriptionRun15.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun15.familyLength = fontArabic.size();
+  fontDescriptionRun15.characterRun.characterIndex = 156u;
+  fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
+  fontDescriptionRun15.familyLength = fontHebrew.size();
   fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
   fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
-  memcpy( fontDescriptionRun15.familyName, fontArabic.c_str(), fontDescriptionRun15.familyLength );
+  memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
   fontDescriptionRun15.familyDefined = true;
   fontDescriptionRun15.weightDefined = false;
   fontDescriptionRun15.widthDefined = false;
   fontDescriptionRun15.slantDefined = false;
   fontDescriptionRun15.sizeDefined = false;
 
   fontDescriptionRun15.familyDefined = true;
   fontDescriptionRun15.weightDefined = false;
   fontDescriptionRun15.widthDefined = false;
   fontDescriptionRun15.slantDefined = false;
   fontDescriptionRun15.sizeDefined = false;
 
+  // Set a known font description
+  FontDescriptionRun fontDescriptionRun16;
+  fontDescriptionRun16.characterRun.characterIndex = 166u;
+  fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
+  fontDescriptionRun16.familyLength = fontLatin.size();
+  fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
+  memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
+  fontDescriptionRun16.familyDefined = true;
+  fontDescriptionRun16.weightDefined = false;
+  fontDescriptionRun16.widthDefined = false;
+  fontDescriptionRun16.slantDefined = false;
+  fontDescriptionRun16.sizeDefined = false;
+
+  // Set a known font description
+  FontDescriptionRun fontDescriptionRun17;
+  fontDescriptionRun17.characterRun.characterIndex = 178u;
+  fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
+  fontDescriptionRun17.familyLength = fontArabic.size();
+  fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
+  memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
+  fontDescriptionRun17.familyDefined = true;
+  fontDescriptionRun17.weightDefined = false;
+  fontDescriptionRun17.widthDefined = false;
+  fontDescriptionRun17.slantDefined = false;
+  fontDescriptionRun17.sizeDefined = false;
+
   Vector<FontDescriptionRun> fontDescriptionRuns;
   fontDescriptionRuns.PushBack( fontDescriptionRun01 );
   fontDescriptionRuns.PushBack( fontDescriptionRun02 );
   Vector<FontDescriptionRun> fontDescriptionRuns;
   fontDescriptionRuns.PushBack( fontDescriptionRun01 );
   fontDescriptionRuns.PushBack( fontDescriptionRun02 );
@@ -2702,37 +2823,41 @@ int UtcDaliTextUpdateLayout03(void)
   fontDescriptionRuns.PushBack( fontDescriptionRun13 );
   fontDescriptionRuns.PushBack( fontDescriptionRun14 );
   fontDescriptionRuns.PushBack( fontDescriptionRun15 );
   fontDescriptionRuns.PushBack( fontDescriptionRun13 );
   fontDescriptionRuns.PushBack( fontDescriptionRun14 );
   fontDescriptionRuns.PushBack( fontDescriptionRun15 );
+  fontDescriptionRuns.PushBack( fontDescriptionRun16 );
+  fontDescriptionRuns.PushBack( fontDescriptionRun17 );
   Size textArea(100.f, 300.f);
   Size layoutSize(92.f, 380.f);
   float positions[] =
   {
   Size textArea(100.f, 300.f);
   Size layoutSize(92.f, 380.f);
   float positions[] =
   {
-    1.f, 3.f, 12.f, 6.f, 20.f, 2.f, 24.f, 2.f, 27.f, 6.f, 36.f, 15.f, 40.f, 6.f, 51.f, 6.f, 61.f, 6.f, 67.f, 2.f, 70.f, 2.f, 79.f, 15.f,
-    0.f, 22.f, 10.f, 26.f, 18.f, 26.f, 30.f, 26.f, 39.f, 35.f, 44.f, 25.f, 55.f, 22.f, 62.f, 25.f, 67.f, 25.f, 75.f, 35.f,
-    1.f, 45.f, 9.f, 45.f, 14.f, 42.f, 22.f, 45.f, 32.f, 53.f, 35.f, 44.f,
-    0.f, 67.f, 7.f, 69.f, 12.f, 68.f, 18.f, 68.f, 23.f, 64.f, 25.f, 75.f, 27.f, 68.f, 32.f, 64.f, 33.f, 64.f, 37.f, 67.f, 44.f, 64.f, 45.f, 64.f, 49.f, 67.f, 55.f, 75.f, 59.f, 62.f, 68.f, 66.f, 76.f, 62.f, 80.f, 62.f, 83.f, 66.f, 92.f, 75.f,
-    0.f, 86.f, 11.f, 86.f, 21.f, 86.f, 27.f, 82.f, 30.f, 82.f, 39.f, 95.f, 44.f, 85.f, 55.f, 82.f, 62.f, 85.f, 67.f, 85.f, 75.f, 95.f,
-    1.f, 105.f, 9.f, 105.f, 14.f, 102.f, 22.f, 105.f, 30.f, 115.f,
-    1.f, 125.f, 12.f, 122.f, 19.f, 125.f, 24.f, 125.f, 32.f, 135.f, 37.f, 125.f, 45.f, 125.f, 50.f, 122.f, 58.f, 125.f, 66.f, 135.f,
-    1.f, 142.f, 10.f, 146.f, 18.f, 142.f, 22.f, 142.f, 25.f, 146.f, 34.f, 155.f, 38.f, 146.f, 49.f, 146.f, 59.f, 146.f, 65.f, 142.f, 68.f, 142.f, 77.f, 155.f,
-    0.f, 162.f, 10.f, 166.f, 18.f, 166.f, 30.f, 166.f, 39.f, 172.f, 42.f, 163.f,
-    1.f, 182.f, 10.f, 186.f, 18.f, 182.f, 22.f, 182.f, 25.f, 186.f, 34.f, 195.f, 38.f, 186.f, 49.f, 186.f, 59.f, 186.f, 65.f, 182.f, 68.f, 182.f, 77.f, 195.f,
-    0.f, 207.f, 7.f, 209.f, 12.f, 208.f, 18.f, 208.f, 23.f, 204.f, 25.f, 215.f, 27.f, 208.f, 32.f, 204.f, 33.f, 204.f, 37.f, 207.f, 44.f, 204.f, 45.f, 204.f, 49.f, 207.f, 55.f, 215.f, 59.f, 205.f, 70.f, 202.f, 77.f, 205.f, 82.f, 205.f, 90.f, 215.f,
-    1.f, 225.f, 9.f, 225.f, 14.f, 222.f, 22.f, 225.f, 30.f, 235.f,
-    1.f, 243.f, 12.f, 246.f, 20.f, 242.f, 24.f, 242.f, 27.f, 246.f, 36.f, 255.f, 40.f, 246.f, 51.f, 246.f, 61.f, 246.f, 67.f, 242.f, 70.f, 242.f, 79.f, 255.f,
-    0.f, 262.f, 10.f, 266.f, 18.f, 266.f, 30.f, 266.f, 39.f, 275.f, 44.f, 265.f, 55.f, 262.f, 62.f, 265.f, 67.f, 265.f, 75.f, 275.f,
-    1.f, 285.f, 9.f, 285.f, 14.f, 282.f, 22.f, 285.f, 32.f, 293.f, 35.f, 284.f,
-    1.f, 305.f, 12.f, 302.f, 19.f, 305.f, 24.f, 305.f, 32.f, 315.f, 37.f, 305.f, 45.f, 305.f, 50.f, 302.f, 58.f, 305.f, 66.f, 315.f,
-    1.f, 322.f, 10.f, 326.f, 18.f, 322.f, 22.f, 322.f, 25.f, 326.f, 34.f, 335.f, 38.f, 326.f, 49.f, 326.f, 59.f, 326.f, 65.f, 322.f, 68.f, 322.f, 77.f, 335.f,
-    0.f, 347.f, 7.f, 349.f, 12.f, 348.f, 18.f, 348.f, 23.f, 344.f, 25.f, 355.f, 27.f, 348.f, 32.f, 344.f, 33.f, 344.f, 37.f, 347.f, 44.f, 344.f, 45.f, 344.f, 49.f, 347.f, 55.f, 355.f,
+    1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.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, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
+    1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
+    0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 67.f, -9.f, 76.f, -13.f, 80.f, -13.f, 83.f, -9.f, 92.f, -0.f,
+    0.f, -9.f, 11.f, -9.f, 21.f, -9.f, 27.f, -13.f, 30.f, -13.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
+    1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
+    1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f,
+    1.f, -13.f,  9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.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,
+    1.f, -13.f,  9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
+    0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f,
+    1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
+    1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.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, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
+    1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
+    1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f,
+    1.f, -13.f,  9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
+    0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f,
   };
   };
+
   struct LineRun line01 =
   {
     { 0u, 12u },
     { 0u, 12u },
   struct LineRun line01 =
   {
     { 0u, 12u },
     { 0u, 12u },
-    81.f,
+    80.f,
     15.f,
     -5.f,
     15.f,
     -5.f,
-    3.f,
+    4.f,
+    0.f,
     0.f,
     false,
     false
     0.f,
     false,
     false
@@ -2746,6 +2871,7 @@ int UtcDaliTextUpdateLayout03(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2753,11 +2879,12 @@ int UtcDaliTextUpdateLayout03(void)
   {
     { 22u, 6u },
     { 22u, 6u },
   {
     { 22u, 6u },
     { 22u, 6u },
-    36.f,
+    34.f,
     15.f,
     -5.f,
     0.f,
     0.f,
     15.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2770,6 +2897,7 @@ int UtcDaliTextUpdateLayout03(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2782,6 +2910,7 @@ int UtcDaliTextUpdateLayout03(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2794,6 +2923,7 @@ int UtcDaliTextUpdateLayout03(void)
     -5.f,
     0.f,
     0.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2806,6 +2936,7 @@ int UtcDaliTextUpdateLayout03(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2813,10 +2944,11 @@ int UtcDaliTextUpdateLayout03(void)
   {
     { 74u, 12u },
     { 74u, 12u },
   {
     { 74u, 12u },
     { 74u, 12u },
-    79.f,
+    78.f,
     15.f,
     -5.f,
     15.f,
     -5.f,
-    3.f,
+    4.f,
+    1.f,
     0.f,
     false,
     false
     0.f,
     false,
     false
@@ -2830,6 +2962,7 @@ int UtcDaliTextUpdateLayout03(void)
     -5.f,
     0.f,
     0.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2842,6 +2975,7 @@ int UtcDaliTextUpdateLayout03(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2854,6 +2988,7 @@ int UtcDaliTextUpdateLayout03(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2866,6 +3001,7 @@ int UtcDaliTextUpdateLayout03(void)
     -5.f,
     0.f,
     0.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2873,10 +3009,11 @@ int UtcDaliTextUpdateLayout03(void)
   {
     { 128u, 12u },
     { 128u, 12u },
   {
     { 128u, 12u },
     { 128u, 12u },
-    81.f,
+    80.f,
     15.f,
     -5.f,
     15.f,
     -5.f,
-    3.f,
+    4.f,
+    0.f,
     0.f,
     false,
     false
     0.f,
     false,
     false
@@ -2890,6 +3027,7 @@ int UtcDaliTextUpdateLayout03(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2897,11 +3035,12 @@ int UtcDaliTextUpdateLayout03(void)
   {
     { 150u, 6u },
     { 150u, 6u },
   {
     { 150u, 6u },
     { 150u, 6u },
-    36.f,
+    34.f,
     15.f,
     -5.f,
     0.f,
     0.f,
     15.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2914,6 +3053,7 @@ int UtcDaliTextUpdateLayout03(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2926,6 +3066,7 @@ int UtcDaliTextUpdateLayout03(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2938,6 +3079,7 @@ int UtcDaliTextUpdateLayout03(void)
     -5.f,
     0.f,
     0.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2950,6 +3092,7 @@ int UtcDaliTextUpdateLayout03(void)
     -5.f,
     0.f,
     0.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -2984,14 +3127,14 @@ int UtcDaliTextUpdateLayout03(void)
     "Hello world demo שלום עולם.\n"
     "שלום עולם hello world مرحبا بالعالم\n",
     textArea,
     "Hello world demo שלום עולם.\n"
     "שלום עולם hello world مرحبا بالعالم\n",
     textArea,
-    15u,
+    17u,
     fontDescriptionRuns.Begin(),
     layoutSize,
     192u,
     positions,
     19u,
     lines.Begin(),
     fontDescriptionRuns.Begin(),
     layoutSize,
     192u,
     positions,
     19u,
     lines.Begin(),
-    LayoutEngine::MULTI_LINE_BOX,
+    Layout::Engine::MULTI_LINE_BOX,
     128u,
     64u,
     false,
     128u,
     64u,
     false,
@@ -3041,6 +3184,7 @@ int UtcDaliTextLayoutEllipsis01(void)
     -5.f,
     0.f,
     0.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     true
   };
     false,
     true
   };
@@ -3049,7 +3193,7 @@ int UtcDaliTextLayoutEllipsis01(void)
 
   float positions[] =
   {
 
   float positions[] =
   {
-    1.f, 3.f, 12.f, 6.f, 20.f, 2.f, 24.f, 2.f, 27.f, 6.f, 36.f, 15.f, 40.f, 6.f, 51.f, 6.f, 61.f, 6.f, 67.f, 2.f, 70.f, 2.f, 79.f, 15.f, 83.f, 2.f
+    1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, 83.f, -13.f,
   };
 
   Size textArea( 100.f, 50.f );
   };
 
   Size textArea( 100.f, 50.f );
@@ -3067,7 +3211,7 @@ int UtcDaliTextLayoutEllipsis01(void)
     positions,
     1u,
     lines.Begin(),
     positions,
     1u,
     lines.Begin(),
-    LayoutEngine::SINGLE_LINE_BOX,
+    Layout::Engine::SINGLE_LINE_BOX,
     0u,
     51u,
     true,
     0u,
     51u,
     true,
@@ -3112,10 +3256,11 @@ int UtcDaliTextLayoutEllipsis02(void)
   {
     { 0u, 12u },
     { 0u, 12u },
   {
     { 0u, 12u },
     { 0u, 12u },
-    81.f,
+    80.f,
     15.f,
     -5.f,
     15.f,
     -5.f,
-    3.f,
+    4.f,
+    0.f,
     0.f,
     false,
     false
     0.f,
     false,
     false
@@ -3129,6 +3274,7 @@ int UtcDaliTextLayoutEllipsis02(void)
     -5.f,
     0.f,
     0.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     true
   };
     false,
     true
   };
@@ -3138,12 +3284,12 @@ int UtcDaliTextLayoutEllipsis02(void)
 
   float positions[] =
   {
 
   float positions[] =
   {
-    1.f,  3.f, 12.f,  6.f, 20.f,  2.f, 24.f,  2.f, 27.f,  6.f, 36.f, 15.f, 40.f,  6.f, 51.f,  6.f, 61.f,  6.f, 67.f,  2.f, 70.f,  2.f, 79.f, 15.f,
-    0.f, 22.f, 10.f, 26.f, 18.f, 26.f, 30.f, 26.f, 39.f, 35.f, 44.f, 22.f, 53.f, 26.f, 61.f, 22.f, 65.f, 22.f, 68.f, 26.f, 77.f, 35.f, 81.f, 26.f
+    1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.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,
   };
 
   Size textArea( 100.f, 50.f );
   };
 
   Size textArea( 100.f, 50.f );
-  Size layoutSize( 100.f, 60.f );
+  Size layoutSize( 100.f, 40.f );
 
   LayoutTextData data =
   {
 
   LayoutTextData data =
   {
@@ -3157,7 +3303,7 @@ int UtcDaliTextLayoutEllipsis02(void)
     positions,
     2u,
     lines.Begin(),
     positions,
     2u,
     lines.Begin(),
-    LayoutEngine::MULTI_LINE_BOX,
+    Layout::Engine::MULTI_LINE_BOX,
     0u,
     51u,
     true,
     0u,
     51u,
     true,
@@ -3273,6 +3419,7 @@ int UtcDaliTextLayoutEllipsis03(void)
     -5.f,
     0.f,
     0.f,
     -5.f,
     0.f,
     0.f,
+    0.f,
     false,
     true
   };
     false,
     true
   };
@@ -3281,7 +3428,7 @@ int UtcDaliTextLayoutEllipsis03(void)
 
   float positions[] =
   {
 
   float positions[] =
   {
-    1.f, 5.f, 12.f, 2.f, 19.f, 5.f, 24.f, 5.f, 32.f, 15.f, 37.f, 5.f, 45.f, 5.f, 50.f, 2.f, 58.f, 5.f, 66.f, 15.f, 69.f, 7.f, 76.f, 9.f, 81.f, 8.f, 87.f, 8.f, 92.f, 4.f, 94.f, 15.f,
+    1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
   };
 
   Size textArea( 100.f, 50.f );
   };
 
   Size textArea( 100.f, 50.f );
@@ -3299,7 +3446,7 @@ int UtcDaliTextLayoutEllipsis03(void)
     positions,
     1u,
     lines.Begin(),
     positions,
     1u,
     lines.Begin(),
-    LayoutEngine::SINGLE_LINE_BOX,
+    Layout::Engine::SINGLE_LINE_BOX,
     0u,
     72u,
     true,
     0u,
     72u,
     true,
@@ -3415,6 +3562,7 @@ int UtcDaliTextLayoutEllipsis04(void)
     -5.f,
     3.f,
     0.f,
     -5.f,
     3.f,
     0.f,
+    0.f,
     false,
     false
   };
     false,
     false
   };
@@ -3427,6 +3575,7 @@ int UtcDaliTextLayoutEllipsis04(void)
     -5.f,
     4.f,
     0.f,
     -5.f,
     4.f,
     0.f,
+    0.f,
     false,
     true
   };
     false,
     true
   };
@@ -3436,12 +3585,12 @@ int UtcDaliTextLayoutEllipsis04(void)
 
   float positions[] =
   {
 
   float positions[] =
   {
-    1.f,  5.f, 12.f,  2.f, 19.f,  5.f, 24.f,  5.f, 32.f, 15.f, 37.f,  5.f, 45.f,  5.f, 50.f,  2.f, 58.f,  5.f, 66.f, 15.f, 69.f,  7.f, 76.f,  9.f, 81.f,  8.f, 87.f,  8.f, 92.f,  4.f, 94.f, 15.f,
-    0.f, 28.f,  5.f, 24.f,  6.f, 24.f, 10.f, 27.f, 17.f, 24.f, 18.f, 24.f, 22.f, 27.f, 28.f, 35.f, 32.f, 25.f, 43.f, 22.f, 50.f, 25.f, 55.f, 25.f, 63.f, 35.f, 68.f, 25.f, 76.f, 25.f, 81.f, 22.f, 89.f, 25.f, 97.f, 35.f
+    1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
+    0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 9.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 28.f, -0.f, 32.f, -10.f, 43.f, -13.f, 50.f, -10.f, 55.f, -10.f, 63.f, -0.f, 68.f, -10.f, 76.f, -10.f, 81.f, -13.f, 89.f, -10.f, 97.f, -0.f,
   };
 
   Size textArea( 100.f, 50.f );
   };
 
   Size textArea( 100.f, 50.f );
-  Size layoutSize( 100.f, 60.f );
+  Size layoutSize( 100.f, 40.f );
 
   LayoutTextData data =
   {
 
   LayoutTextData data =
   {
@@ -3455,7 +3604,7 @@ int UtcDaliTextLayoutEllipsis04(void)
     positions,
     2u,
     lines.Begin(),
     positions,
     2u,
     lines.Begin(),
-    LayoutEngine::MULTI_LINE_BOX,
+    Layout::Engine::MULTI_LINE_BOX,
     0u,
     72u,
     true,
     0u,
     72u,
     true,
@@ -3471,6 +3620,81 @@ int UtcDaliTextLayoutEllipsis04(void)
   END_TEST;
 }
 
   END_TEST;
 }
 
+int UtcDaliTextLayoutEllipsis05(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliTextLayoutEllipsis05");
+
+  const std::string fontLatin( "TizenSans" );
+
+  // Set a known font description
+  FontDescriptionRun fontDescriptionRun01;
+  fontDescriptionRun01.characterRun.characterIndex = 0u;
+  fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
+  fontDescriptionRun01.familyLength = fontLatin.size();
+  fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
+  memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
+  fontDescriptionRun01.familyDefined = true;
+  fontDescriptionRun01.weightDefined = false;
+  fontDescriptionRun01.widthDefined = false;
+  fontDescriptionRun01.slantDefined = false;
+  fontDescriptionRun01.sizeDefined = false;
+
+  Vector<FontDescriptionRun> fontDescriptionRuns;
+  fontDescriptionRuns.PushBack( fontDescriptionRun01 );
+
+  struct LineRun line01 =
+  {
+    { 0u, 11u },
+    { 0u, 11u },
+    80.f,
+    15.f,
+    -5.f,
+    0.f,
+    0.f,
+    0.f,
+    false,
+    true
+  };
+  Vector<LineRun> lines;
+  lines.PushBack( line01 );
+
+  float positions[] =
+  {
+    1.f, -12.f
+  };
+
+  Size textArea( 100.f, 19.f );
+  Size layoutSize( 100.f, 20.f );
+
+  LayoutTextData data =
+  {
+    "Not enough height.",
+    "Hello world",
+    textArea,
+    1u,
+    fontDescriptionRuns.Begin(),
+    layoutSize,
+    1u,
+    positions,
+    1u,
+    lines.Begin(),
+    Layout::Engine::MULTI_LINE_BOX,
+    0u,
+    11u,
+    true,
+    true
+  };
+
+  if( !LayoutTextTest( data ) )
+  {
+    tet_result(TET_FAIL);
+  }
+
+  tet_result(TET_PASS);
+  END_TEST;
+}
+
 int UtcDaliTextReorderLayout01(void)
 {
   ToolkitTestApplication application;
 int UtcDaliTextReorderLayout01(void)
 {
   ToolkitTestApplication application;
@@ -3498,7 +3722,7 @@ int UtcDaliTextReorderLayout01(void)
 
   float positions[] =
   {
 
   float positions[] =
   {
-    1.f, 3.f, 12.f, 6.f, 20.f, 2.f, 24.f, 2.f, 27.f, 6.f, 36.f, 15.f, 40.f, 6.f, 51.f, 6.f, 61.f, 6.f, 67.f, 2.f, 70.f, 2.f
+    1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f,
   };
 
   Size textArea( 100.f, 300.f );
   };
 
   Size textArea( 100.f, 300.f );
@@ -3618,12 +3842,12 @@ int UtcDaliTextReorderLayout02(void)
 
   float positions[] =
   {
 
   float positions[] =
   {
-    87.f,  5.f, 79.f,  2.f, 74.f,  5.f, 66.f,  5.f, 61.f, 15.f, 53.f,  5.f, 48.f,  5.f, 41.f,  2.f, 32.f,  5.f, 27.f, 15.f, 20.f,  7.f, 15.f,  9.f,  8.f,  8.f,  5.f,  8.f,  4.f,  4.f,  0.f, 15.f,
-    23.f, 28.f, 22.f, 24.f, 17.f, 24.f, 12.f, 27.f, 10.f, 24.f,  5.f, 24.f,  0.f, 27.f,  0.f, 35.f,
-    0.f, 47.f, 7.f, 49.f, 12.f, 48.f, 18.f, 48.f, 23.f, 44.f, 25.f, 55.f, 27.f, 48.f, 32.f, 44.f, 33.f, 44.f, 37.f, 47.f, 44.f, 44.f, 45.f, 44.f, 49.f, 47.f, 55.f, 55.f, 59.f, 45.f, 70.f, 42.f, 77.f, 45.f, 82.f, 45.f, 90.f, 55.f,
-    1.f, 65.f, 9.f, 65.f, 14.f, 62.f, 22.f, 65.f, 30.f, 75.f,
-    1.f, 85.f, 12.f, 82.f, 19.f, 85.f, 24.f, 85.f, 32.f, 95.f, 37.f, 85.f, 45.f, 85.f, 50.f, 82.f, 58.f, 85.f, 66.f, 95.f, 69.f, 87.f, 76.f, 89.f, 81.f, 88.f, 87.f, 88.f, 92.f, 84.f, 94.f, 95.f,
-    0.f, 108.f, 5.f, 104.f, 6.f, 104.f, 10.f, 107.f, 17.f, 104.f, 18.f, 104.f, 22.f, 107.f, 30.f, 113.f
+    87.f, -10.f, 79.f, -13.f, 74.f, -10.f, 66.f, -10.f, 61.f, -0.f, 53.f, -10.f, 48.f, -10.f, 41.f, -13.f, 32.f, -10.f, 27.f, -0.f, 20.f, -8.f, 15.f, -6.f, 8.f, -8.f, 5.f, -7.f, 4.f, -11.f, 0.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,
+    0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f,
+    1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
+    1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
+    0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 9.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 30.f, -2.f,
   };
 
   Size textArea( 100.f, 300.f );
   };
 
   Size textArea( 100.f, 300.f );
@@ -3745,12 +3969,12 @@ int UtcDaliTextReorderLayout03(void)
 
   float positions[] =
   {
 
   float positions[] =
   {
-    1.f,  5.f, 12.f,  2.f, 19.f,  5.f, 24.f,  5.f, 32.f, 15.f, 37.f,  5.f, 45.f,  5.f, 50.f,  2.f, 58.f,  5.f, 66.f, 15.f, 69.f,  7.f, 76.f,  9.f, 81.f,  8.f, 87.f,  8.f, 92.f, 4.f, 94.f, 15.f,
-    0.f, 28.f,  5.f, 24.f,  6.f, 24.f, 10.f, 27.f, 17.f, 24.f, 18.f, 24.f, 22.f, 27.f, 28.f, 35.f,
-    86.f, 47.f, 81.f, 49.f, 74.f, 48.f, 71.f, 48.f, 70.f, 44.f, 66.f, 55.f, 62.f, 48.f, 61.f, 44.f, 56.f, 44.f, 51.f, 47.f, 49.f, 44.f, 44.f, 44.f, 39.f, 47.f, 36.f, 55.f, 26.f, 45.f, 18.f, 42.f, 13.f, 45.f,  5.f, 45.f,  0.f, 55.f,
-    22.f, 65.f, 17.f, 65.f, 10.f, 62.f,  1.f, 65.f,  0.f, 75.f,
-    1.f, 85.f, 12.f, 82.f, 19.f, 85.f, 24.f, 85.f, 32.f, 95.f, 37.f, 85.f, 45.f, 85.f, 50.f, 82.f, 58.f, 85.f, 66.f, 95.f, 69.f, 87.f, 76.f, 89.f, 81.f, 88.f, 87.f, 88.f, 92.f, 84.f, 94.f, 95.f,
-    0.f, 108.f,  5.f, 104.f,  6.f, 104.f, 10.f, 107.f, 17.f, 104.f, 18.f, 104.f, 22.f, 107.f, 30.f, 113.f
+    1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
+    0.f, -7.f,  5.f, -11.f, 6.f, -11.f, 9.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 28.f, -0.f,
+    86.f, -8.f, 81.f, -6.f, 74.f, -8.f, 71.f, -7.f, 70.f, -11.f, 66.f, -0.f, 62.f, -7.f, 61.f, -11.f, 56.f, -11.f, 50.f, -8.f, 49.f, -11.f, 44.f, -11.f, 39.f, -8.f, 36.f, -0.f, 26.f, -10.f, 18.f, -13.f, 13.f, -10.f, 5.f, -10.f, 0.f, -0.f,
+    22.f, -10.f, 17.f, -10.f, 10.f, -13.f, 1.f, -10.f, 0.f, -0.f,
+    1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
+    0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 9.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 30.f, -2.f,
   };
 
   Size textArea( 100.f, 300.f );
   };
 
   Size textArea( 100.f, 300.f );
@@ -3872,12 +4096,12 @@ int UtcDaliTextReorderLayout04(void)
 
   float positions[] =
   {
 
   float positions[] =
   {
-    1.f,  5.f, 12.f,  2.f, 19.f,  5.f, 24.f,  5.f, 32.f, 15.f, 37.f,  5.f, 45.f,  5.f, 50.f,  2.f, 58.f,  5.f, 66.f, 15.f, 69.f,  7.f, 76.f,  9.f, 81.f,  8.f, 87.f,  8.f, 92.f, 4.f, 94.f, 15.f,
-    0.f, 28.f,  5.f, 24.f,  6.f, 24.f, 10.f, 27.f, 17.f, 24.f, 18.f, 24.f, 22.f, 27.f, 28.f, 35.f,
-    0.f, 47.f,  7.f, 49.f, 12.f, 48.f, 18.f, 48.f, 23.f, 44.f, 25.f, 55.f, 27.f, 48.f, 32.f, 44.f, 33.f, 44.f, 37.f, 47.f, 44.f, 44.f, 45.f, 44.f, 49.f, 47.f, 55.f, 55.f, 59.f, 45.f, 70.f, 42.f, 77.f, 45.f, 82.f, 45.f, 90.f, 55.f,
-    1.f, 65.f,  9.f, 65.f, 14.f, 62.f, 22.f, 65.f, 30.f, 75.f,
-    87.f, 85.f, 79.f, 82.f, 74.f, 85.f, 66.f, 85.f, 61.f, 95.f, 53.f, 85.f, 48.f, 85.f, 41.f, 82.f, 32.f, 85.f, 27.f, 95.f, 20.f, 87.f, 15.f, 89.f,  8.f, 88.f,  5.f, 88.f,  4.f, 84.f,  0.f, 95.f,
-    28.f, 108.f, 27.f, 104.f, 22.f, 104.f, 17.f, 107.f, 15.f, 104.f, 10.f, 104.f,  5.f, 107.f,  2.f, 113.f
+    1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
+    0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 9.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 28.f, -0.f,
+    0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f,
+    1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
+    87.f, -10.f, 79.f, -13.f, 74.f, -10.f, 66.f, -10.f, 61.f, -0.f, 53.f, -10.f, 48.f, -10.f, 41.f, -13.f, 32.f, -10.f, 27.f, -0.f, 20.f, -8.f, 15.f, -6.f, 8.f, -8.f, 5.f, -7.f, 4.f, -11.f, 0.f, -0.f,
+    28.f, -7.f, 27.f, -11.f, 22.f, -11.f, 16.f, -8.f, 15.f, -11.f, 10.f, -11.f, 5.f, -8.f, 2.f, -2.f,
   };
 
   Size textArea( 100.f, 300.f );
   };
 
   Size textArea( 100.f, 300.f );
@@ -4008,8 +4232,8 @@ int UtcDaliTextAlign01(void)
     textArea,
     6u,
     fontDescriptionRuns.Begin(),
     textArea,
     6u,
     fontDescriptionRuns.Begin(),
-    LayoutEngine::HORIZONTAL_ALIGN_BEGIN,
-    LayoutEngine::VERTICAL_ALIGN_TOP,
+    Text::HorizontalAlignment::BEGIN,
+    Text::VerticalAlignment::TOP,
     0u,
     22u,
     6u,
     0u,
     22u,
     6u,
@@ -4127,8 +4351,8 @@ int UtcDaliTextAlign02(void)
     textArea,
     6u,
     fontDescriptionRuns.Begin(),
     textArea,
     6u,
     fontDescriptionRuns.Begin(),
-    LayoutEngine::HORIZONTAL_ALIGN_BEGIN,
-    LayoutEngine::VERTICAL_ALIGN_TOP,
+    Text::HorizontalAlignment::BEGIN,
+    Text::VerticalAlignment::TOP,
     22u,
     26u,
     6u,
     22u,
     26u,
     6u,
@@ -4246,8 +4470,8 @@ int UtcDaliTextAlign03(void)
     textArea,
     6u,
     fontDescriptionRuns.Begin(),
     textArea,
     6u,
     fontDescriptionRuns.Begin(),
-    LayoutEngine::HORIZONTAL_ALIGN_BEGIN,
-    LayoutEngine::VERTICAL_ALIGN_TOP,
+    Text::HorizontalAlignment::BEGIN,
+    Text::VerticalAlignment::TOP,
     48u,
     26u,
     6u,
     48u,
     26u,
     6u,
@@ -4365,8 +4589,8 @@ int UtcDaliTextAlign04(void)
     textArea,
     6u,
     fontDescriptionRuns.Begin(),
     textArea,
     6u,
     fontDescriptionRuns.Begin(),
-    LayoutEngine::HORIZONTAL_ALIGN_CENTER,
-    LayoutEngine::VERTICAL_ALIGN_TOP,
+    Text::HorizontalAlignment::CENTER,
+    Text::VerticalAlignment::TOP,
     0u,
     22u,
     6u,
     0u,
     22u,
     6u,
@@ -4484,8 +4708,8 @@ int UtcDaliTextAlign05(void)
     textArea,
     6u,
     fontDescriptionRuns.Begin(),
     textArea,
     6u,
     fontDescriptionRuns.Begin(),
-    LayoutEngine::HORIZONTAL_ALIGN_CENTER,
-    LayoutEngine::VERTICAL_ALIGN_TOP,
+    Text::HorizontalAlignment::CENTER,
+    Text::VerticalAlignment::TOP,
     22u,
     26u,
     6u,
     22u,
     26u,
     6u,
@@ -4603,8 +4827,8 @@ int UtcDaliTextAlign06(void)
     textArea,
     6u,
     fontDescriptionRuns.Begin(),
     textArea,
     6u,
     fontDescriptionRuns.Begin(),
-    LayoutEngine::HORIZONTAL_ALIGN_CENTER,
-    LayoutEngine::VERTICAL_ALIGN_TOP,
+    Text::HorizontalAlignment::CENTER,
+    Text::VerticalAlignment::TOP,
     48u,
     26u,
     6u,
     48u,
     26u,
     6u,
@@ -4722,8 +4946,8 @@ int UtcDaliTextAlign07(void)
     textArea,
     6u,
     fontDescriptionRuns.Begin(),
     textArea,
     6u,
     fontDescriptionRuns.Begin(),
-    LayoutEngine::HORIZONTAL_ALIGN_END,
-    LayoutEngine::VERTICAL_ALIGN_TOP,
+    Text::HorizontalAlignment::END,
+    Text::VerticalAlignment::TOP,
     0u,
     22u,
     6u,
     0u,
     22u,
     6u,
@@ -4841,8 +5065,8 @@ int UtcDaliTextAlign08(void)
     textArea,
     6u,
     fontDescriptionRuns.Begin(),
     textArea,
     6u,
     fontDescriptionRuns.Begin(),
-    LayoutEngine::HORIZONTAL_ALIGN_END,
-    LayoutEngine::VERTICAL_ALIGN_TOP,
+    Text::HorizontalAlignment::END,
+    Text::VerticalAlignment::TOP,
     22u,
     26u,
     6u,
     22u,
     26u,
     6u,
@@ -4960,8 +5184,8 @@ int UtcDaliTextAlign09(void)
     textArea,
     6u,
     fontDescriptionRuns.Begin(),
     textArea,
     6u,
     fontDescriptionRuns.Begin(),
-    LayoutEngine::HORIZONTAL_ALIGN_END,
-    LayoutEngine::VERTICAL_ALIGN_TOP,
+    Text::HorizontalAlignment::END,
+    Text::VerticalAlignment::TOP,
     48u,
     26u,
     6u,
     48u,
     26u,
     6u,
@@ -4976,3 +5200,18 @@ int UtcDaliTextAlign09(void)
   tet_result(TET_PASS);
   END_TEST;
 }
   tet_result(TET_PASS);
   END_TEST;
 }
+
+int UtcDaliTextLayoutSetGetDefaultLineSpacing(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliTextLayoutSetGetDefaultLineSpacing");
+
+  Layout::Engine engine;
+  DALI_TEST_EQUALS( 0.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
+
+  engine.SetDefaultLineSpacing( 10.f );
+  DALI_TEST_EQUALS( 10.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
+
+  tet_result(TET_PASS);
+  END_TEST;
+}