Adding Character Spacing 90/260890/78
authorSara Samara <sara.samara@samsung.com>
Tue, 6 Jul 2021 08:48:26 +0000 (11:48 +0300)
committerssabah <s.sabah@samsung.com>
Mon, 24 Jan 2022 14:56:03 +0000 (16:56 +0200)
***********************************************************
Description:
Adding the CHARACTER_SPACING for text-editor, text-field and text-label.
CHARACTER_SPACING determines the spaces between characters.
A positive value will make the characters far apart (expanded) and a negative value will bring them closer (condensed).
The sample code below can be used to test the CHARACTER_SPACING.
***********************************************************

using namespace Dali;
using namespace Dali::Toolkit;

class SimpleApp : public ConnectionTracker
{
public:
  SimpleApp(Application &application)
      : mApplication(application)
  {
    mApplication.InitSignal().Connect(this, &SimpleApp::Create);
  }

  void Create(Application &application)
  {
    Window window = application.GetWindow();
    window.SetBackgroundColor(Vector4(0.04f, 0.345f, 0.392f, 1.0f));

    mEditor = TextEditor::New();
    mEditor.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_CENTER);
    mEditor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_CENTER);
    mEditor.SetProperty(Actor::Property::POSITION, Vector3(0.f, 0.0f, 0.f));
    mEditor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 100.0f));
    mEditor.SetBackgroundColor(Vector4(0.04f, 0.345f, 0.392f, 1.0f));
    mEditor.SetProperty(TextEditor::Property::TEXT, "A long text that exceeds the editor's width.");
    mEditor.SetProperty(DevelTextEditor::Property::CHARACTER_SPACING, 15.0f);

    // mLabel = TextLabel::New();
    // mLabel.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_CENTER);
    // mLabel.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_CENTER);
    // mLabel.SetProperty(Actor::Property::POSITION, Vector3(0.f, 0.0f, 0.f));
    // mLabel.SetProperty(Actor::Property::SIZE, Vector2(400.f, 200.0f));
    // mLabel.SetProperty(TextLabel::Property::TEXT_COLOR, Color::BLACK);
    // mLabel.SetProperty(TextLabel::Property::TEXT, "A long text text text that exceeds the label's width.");
    // mLabel.SetProperty(DevelTextLabel::Property::CHARACTER_SPACING, 10.0f);
    // mLabel.SetProperty(TextLabel::Property::ELLIPSIS, false);

    // mField = TextField::New();
    // mField.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_CENTER);
    // mField.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_CENTER);
    // mField.SetProperty(Actor::Property::POSITION, Vector3(0.f, 0.0f, 0.f));
    // mField.SetProperty(Actor::Property::SIZE, Vector2(200.f, 100.0f));
    // mField.SetProperty(TextField::Property::TEXT, "A long text text text that exceeds the field's width.");
    // mField.SetProperty(DevelTextField::Property::CHARACTER_SPACING, 10.0f);
    // mField.SetProperty(TextField::Property::ELLIPSIS, false);

    //window.Add(mLabel);
    window.Add(mEditor);
    //window.Add(mField);

  }

  bool OnButtonClicked(Button button)
  {
    if (button == mButton)
    {
      Vector3 originalSize = mEditor.GetNaturalSize();
    }
    return true;
  }

private:
  Application &mApplication;
  TextEditor mEditor;
  PushButton mButton;
  TextField mField;
  TextLabel mLabel;
};

int DALI_EXPORT_API main(int argc, char **argv)
{
  Application application = Application::New(&argc, &argv);
  SimpleApp test(application);
  application.MainLoop();

  return 0;
}

Change-Id: Ibd89f1398e391dc56e3a230c7a136cfe07edc37a

50 files changed:
automated-tests/src/dali-toolkit-internal/CMakeLists.txt
automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/toolkit-text-utils.cpp
automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/toolkit-text-utils.h
automated-tests/src/dali-toolkit-internal/utc-Dali-BidirectionalSupport.cpp
automated-tests/src/dali-toolkit-internal/utc-Dali-LogicalModel.cpp
automated-tests/src/dali-toolkit-internal/utc-Dali-Text-CharacterSpacing.cpp [new file with mode: 0644]
automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Cursor.cpp
automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Hyphen-Wrapping.cpp
automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Layout.cpp
automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Shaping.cpp
automated-tests/src/dali-toolkit-internal/utc-Dali-VisualModel.cpp
automated-tests/src/dali-toolkit/utc-Dali-TextEditor.cpp
automated-tests/src/dali-toolkit/utc-Dali-TextField.cpp
automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp
dali-toolkit/devel-api/controls/text-controls/text-editor-devel.h
dali-toolkit/devel-api/controls/text-controls/text-field-devel.h
dali-toolkit/devel-api/controls/text-controls/text-label-devel.h
dali-toolkit/devel-api/text/text-utils-devel.cpp
dali-toolkit/devel-api/visuals/text-visual-properties-devel.h
dali-toolkit/internal/controls/text-controls/text-editor-impl.cpp
dali-toolkit/internal/controls/text-controls/text-editor-property-handler.cpp
dali-toolkit/internal/controls/text-controls/text-field-impl.cpp
dali-toolkit/internal/controls/text-controls/text-field-property-handler.cpp
dali-toolkit/internal/controls/text-controls/text-label-impl.cpp
dali-toolkit/internal/file.list
dali-toolkit/internal/text/cursor-helper-functions.cpp
dali-toolkit/internal/text/glyph-metrics-helper.cpp
dali-toolkit/internal/text/glyph-metrics-helper.h
dali-toolkit/internal/text/layouts/layout-engine-helper-functions.cpp [new file with mode: 0644]
dali-toolkit/internal/text/layouts/layout-engine-helper-functions.h [new file with mode: 0644]
dali-toolkit/internal/text/layouts/layout-engine.cpp
dali-toolkit/internal/text/rendering/atlas/text-atlas-renderer.cpp
dali-toolkit/internal/text/rendering/text-typesetter.cpp
dali-toolkit/internal/text/rendering/view-model.cpp
dali-toolkit/internal/text/rendering/view-model.h
dali-toolkit/internal/text/text-controller-background-actor.cpp
dali-toolkit/internal/text/text-controller-background-actor.h
dali-toolkit/internal/text/text-controller-impl.cpp
dali-toolkit/internal/text/text-controller-impl.h
dali-toolkit/internal/text/text-controller.cpp
dali-toolkit/internal/text/text-controller.h
dali-toolkit/internal/text/text-model-interface.h
dali-toolkit/internal/text/text-model.cpp
dali-toolkit/internal/text/text-model.h
dali-toolkit/internal/text/text-selection-handle-controller.cpp
dali-toolkit/internal/text/text-view-interface.h
dali-toolkit/internal/text/text-view.cpp
dali-toolkit/internal/text/text-view.h
dali-toolkit/internal/text/visual-model-impl.cpp
dali-toolkit/internal/text/visual-model-impl.h

index c1b0ae6..6ea7182 100755 (executable)
@@ -38,6 +38,7 @@ SET(TC_SOURCES
  utc-Dali-VisualUrl.cpp
  utc-Dali-Text-Hyphen-Wrapping.cpp
  utc-Dali-Text-Ellipsis.cpp
+ utc-Dali-Text-CharacterSpacing.cpp
 )
 
 IF(ELDBUS_AVAILABLE)
index e9d0ef0..065e5fd 100644 (file)
@@ -102,7 +102,8 @@ void CreateTextModel(const std::string&                text,
                      LineWrap::Mode                    wrapMode,
                      bool                              ellipsisEnabled,
                      DevelText::EllipsisPosition::Type ellipsisPosition,
-                     float                             lineSpacing)
+                     float                             lineSpacing,
+                     float                             characterSpacing)
 {
   textModel                    = Model::New(); ///< Pointer to the text's model.
   LogicalModelPtr logicalModel = textModel->mLogicalModel;
@@ -299,6 +300,8 @@ void CreateTextModel(const std::string&                text,
   visualModel->CreateGlyphsPerCharacterTable(0u, 0u, characterCount);
   visualModel->CreateCharacterToGlyphTable(0u, 0u, characterCount);
 
+  visualModel->SetCharacterSpacing(characterSpacing);
+
   const Length numberOfGlyphs = glyphs.Count();
 
   // 8) Get the glyph metrics
index 389d72d..00bf3d5 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_TOOLKIT_TEXT_UTILS_H
 
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
 
 namespace Dali
 {
-
 namespace Toolkit
 {
-
 namespace Text
 {
-
 /**
  * @brief Some layout options.
  */
 struct LayoutOptions
 {
   LayoutOptions()
-  : align{ true }
-  {}
+  : align{true}
+  {
+  }
 
-  bool align   : 1; ///< Whether to align the lines.
+  bool align : 1; ///< Whether to align the lines.
 };
 
 /**
@@ -60,41 +58,42 @@ struct LayoutOptions
  * @param[in] ellipsisEnabled Whether the ellipsis layout option is enabled.
  * @param[in] ellipsisPosition Where is the location the text elide.
  * @param[in] lineSpacing The height of the line in points.
+ * @param[in] characterSpacing The spacing between the characters.
  */
-void CreateTextModel( const std::string& text,
-                      const Size& textArea,
-                      const Vector<FontDescriptionRun>& fontDescriptions,
-                      const LayoutOptions& options,
-                      Size& layoutSize,
-                      ModelPtr& textModel,
-                      MetricsPtr& metrics,
-                      bool markupProcessorEnabled,
-                      LineWrap::Mode wrapMode,
-                      bool ellipsisEnabled,
-                      DevelText::EllipsisPosition::Type ellipsisPosition,
-                      float lineSpacing);
+void CreateTextModel(const std::string&                text,
+                     const Size&                       textArea,
+                     const Vector<FontDescriptionRun>& fontDescriptions,
+                     const LayoutOptions&              options,
+                     Size&                             layoutSize,
+                     ModelPtr&                         textModel,
+                     MetricsPtr&                       metrics,
+                     bool                              markupProcessorEnabled,
+                     LineWrap::Mode                    wrapMode,
+                     bool                              ellipsisEnabled,
+                     DevelText::EllipsisPosition::Type ellipsisPosition,
+                     float                             lineSpacing,
+                     float                             characterSpacing);
 
 /**
  * @brief Configures the text @p controller similarly to the one configured by the text-label.
  *
  * @param[in,out] The text controller to configure.
  */
-void ConfigureTextLabel( ControllerPtr controller );
+void ConfigureTextLabel(ControllerPtr controller);
 
 /**
  * @brief Configures the text @p controller similarly to the one configured by the text-field.
  *
  * @param[in,out] The text controller to configure.
  */
-void ConfigureTextField( ControllerPtr controller );
+void ConfigureTextField(ControllerPtr controller);
 
 /**
  * @brief Configures the text @p controller similarly to the one configured by the text-editor.
  *
  * @param[in,out] The text controller to configure.
  */
-void ConfigureTextEditor( ControllerPtr controller );
-
+void ConfigureTextEditor(ControllerPtr controller);
 
 /**
  * @brief Creates one FontDescriptionRun then add it to FontDescription list.
@@ -114,17 +113,17 @@ void ConfigureTextEditor( ControllerPtr controller );
 * @return vector contains one FontDescriptionRun.
  */
 Vector<FontDescriptionRun> CreateSingleFontDescription(
-                    const CharacterRun&         characterRun,
-                    const std::string           fontFamilyName,
-                    const FontWeight            weight,
-                    const FontWidth             width,
-                    const FontSlant             slant,
-                    const PointSize26Dot6       size,
-                    const bool                  familyDefined,
-                    const bool                  weightDefined,
-                    const bool                  widthDefined,
-                    const bool                  slantDefined,
-                    const bool                  sizeDefined);
+  const CharacterRun&   characterRun,
+  const std::string     fontFamilyName,
+  const FontWeight      weight,
+  const FontWidth       width,
+  const FontSlant       slant,
+  const PointSize26Dot6 size,
+  const bool            familyDefined,
+  const bool            weightDefined,
+  const bool            widthDefined,
+  const bool            slantDefined,
+  const bool            sizeDefined);
 
 } // namespace Text
 
index 9f1d5da..a20c4bb 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
  *
  */
 
-#include <iostream>
 #include <stdlib.h>
+#include <iostream>
 
-#include <dali/devel-api/text-abstraction/bidirectional-support.h>
+#include <dali-toolkit-test-suite-utils.h>
+#include <dali-toolkit/dali-toolkit.h>
 #include <dali-toolkit/internal/text/bidirectional-support.h>
 #include <dali-toolkit/internal/text/character-set-conversion.h>
 #include <dali-toolkit/internal/text/text-run-container.h>
-#include <dali-toolkit-test-suite-utils.h>
-#include <dali-toolkit/dali-toolkit.h>
+#include <dali/devel-api/text-abstraction/bidirectional-support.h>
 #include <toolkit-text-utils.h>
 
 using namespace Dali;
@@ -54,7 +54,6 @@ using namespace Text;
 
 namespace
 {
-
 struct SetBidirectionalInfoData
 {
   std::string   description;                 ///< Description of the test.
@@ -93,66 +92,68 @@ struct GetCharactersDirectionData
   bool         markupProcessorEnabled; ///< Enable markup processor to use markup text.
 };
 
-bool SetBidirectionalInfoTest( const SetBidirectionalInfoData& data )
+bool SetBidirectionalInfoTest(const SetBidirectionalInfoData& data)
 {
   // 1) Create the model.
-  ModelPtr textModel;
+  ModelPtr   textModel;
   MetricsPtr metrics;
-  Size textArea(100.f, 60.f);
-  Size layoutSize;
+  Size       textArea(100.f, 60.f);
+  Size       layoutSize;
 
   // Create the model.
   const Vector<FontDescriptionRun> fontDescriptions;
-  const LayoutOptions options;
-  CreateTextModel( data.text,
-                   textArea,
-                   fontDescriptions,
-                   options,
-                   layoutSize,
-                   textModel,
-                   metrics,
-                   false,
-                   LineWrap::WORD,
-                   false,
-                   Toolkit::DevelText::EllipsisPosition::END,
-                   0.f );
+  const LayoutOptions              options;
+  CreateTextModel(data.text,
+                  textArea,
+                  fontDescriptions,
+                  options,
+                  layoutSize,
+                  textModel,
+                  metrics,
+                  false,
+                  LineWrap::WORD,
+                  false,
+                  Toolkit::DevelText::EllipsisPosition::END,
+                  0.0f, // lineSpacing
+                  0.0f  // characterSpacing
+  );
 
   LogicalModelPtr logicalModel = textModel->mLogicalModel;
-  VisualModelPtr visualModel = textModel->mVisualModel;
+  VisualModelPtr  visualModel  = textModel->mVisualModel;
 
   // 2) Clear the bidirectional paragraph info data.
   Vector<BidirectionalParagraphInfoRun>& bidirectionalInfo = logicalModel->mBidirectionalParagraphInfo;
-  if( 0u != data.numberOfCharacters )
+  if(0u != data.numberOfCharacters)
   {
-    ClearCharacterRuns( data.startIndex,
-                        data.startIndex + data.numberOfCharacters - 1u,
-                        bidirectionalInfo );
+    ClearCharacterRuns(data.startIndex,
+                       data.startIndex + data.numberOfCharacters - 1u,
+                       bidirectionalInfo);
   }
 
   // 3) Call the SetBidirectionalInfo() function.
-  SetBidirectionalInfo( logicalModel->mText,
-                        logicalModel->mScriptRuns,
-                        logicalModel->mLineBreakInfo,
-                        data.startIndex,
-                        data.numberOfCharacters,
-                        bidirectionalInfo );
+  SetBidirectionalInfo(logicalModel->mText,
+                       logicalModel->mScriptRuns,
+                       logicalModel->mLineBreakInfo,
+                       data.startIndex,
+                       data.numberOfCharacters,
+                       bidirectionalInfo);
 
   // 4) Compare with the expected results.
   TextAbstraction::BidirectionalSupport bidirectionalSupport = TextAbstraction::BidirectionalSupport::Get();
 
-  if( data.numberOfParagraphs != bidirectionalInfo.Count() )
+  if(data.numberOfParagraphs != bidirectionalInfo.Count())
   {
     // Different number of expected bidirectional paragraphs.
     std::cout << "  Different number of bidi paragraphs : " << bidirectionalInfo.Count() << ", expected : " << data.numberOfParagraphs << std::endl;
     return false;
   }
 
-  for( unsigned int index = 0u; index < data.numberOfParagraphs; ++index )
+  for(unsigned int index = 0u; index < data.numberOfParagraphs; ++index)
   {
     const BidirectionalParagraphInfoRun& run = bidirectionalInfo[index];
 
-    const CharacterDirection direction = bidirectionalSupport.GetParagraphDirection( run.bidirectionalInfoIndex );
-    if( direction != data.directions[index] )
+    const CharacterDirection direction = bidirectionalSupport.GetParagraphDirection(run.bidirectionalInfoIndex);
+    if(direction != data.directions[index])
     {
       std::cout << "  Different direction" << std::endl;
       std::cout << "        paragraph : " << index << std::endl;
@@ -161,7 +162,7 @@ bool SetBidirectionalInfoTest( const SetBidirectionalInfoData& data )
       return false;
     }
 
-    if( run.characterRun.characterIndex != data.indices[index] )
+    if(run.characterRun.characterIndex != data.indices[index])
     {
       std::cout << "  Different index" << std::endl;
       std::cout << "        paragraph : " << index << std::endl;
@@ -169,7 +170,7 @@ bool SetBidirectionalInfoTest( const SetBidirectionalInfoData& data )
       std::cout << "  expected, index : " << data.indices[index] << ", num chars : " << data.numberOfParagraphCharacters[index] << ", direction : " << data.directions[index] << std::endl;
       return false;
     }
-    if( run.characterRun.numberOfCharacters != data.numberOfParagraphCharacters[index] )
+    if(run.characterRun.numberOfCharacters != data.numberOfParagraphCharacters[index])
     {
       std::cout << "  Different number of characters" << std::endl;
       std::cout << "        paragraph : " << index << std::endl;
@@ -182,60 +183,62 @@ bool SetBidirectionalInfoTest( const SetBidirectionalInfoData& data )
   return true;
 }
 
-bool GetMirroredTextTest( const GetMirroredTextData& data )
+bool GetMirroredTextTest(const GetMirroredTextData& data)
 {
   // 1) Create the model.
-  ModelPtr textModel;
+  ModelPtr   textModel;
   MetricsPtr metrics;
-  Size textArea(100.f, 60.f);
-  Size layoutSize;
+  Size       textArea(100.f, 60.f);
+  Size       layoutSize;
 
   // Create the model.
   const Vector<FontDescriptionRun> fontDescriptions;
-  const LayoutOptions options;
-  CreateTextModel( data.text,
-                   textArea,
-                   fontDescriptions,
-                   options,
-                   layoutSize,
-                   textModel,
-                   metrics,
-                   false,
-                   LineWrap::WORD,
-                   false,
-                   Toolkit::DevelText::EllipsisPosition::END,
-                   0.f );
+  const LayoutOptions              options;
+  CreateTextModel(data.text,
+                  textArea,
+                  fontDescriptions,
+                  options,
+                  layoutSize,
+                  textModel,
+                  metrics,
+                  false,
+                  LineWrap::WORD,
+                  false,
+                  Toolkit::DevelText::EllipsisPosition::END,
+                  0.0f, // lineSpacing
+                  0.0f  // characterSpacing
+  );
 
   LogicalModelPtr logicalModel = textModel->mLogicalModel;
-  VisualModelPtr visualModel = textModel->mVisualModel;
+  VisualModelPtr  visualModel  = textModel->mVisualModel;
 
   // 2) Call the GetMirroredText() function for the whole text
   Vector<Character> mirroredText;
-  bool mirrored = false;
-  mirrored = GetMirroredText( logicalModel->mText,
-                              logicalModel->mCharacterDirections,
-                              logicalModel->mBidirectionalParagraphInfo,
-                              0u,
-                              logicalModel->mText.Count(),
-                              mirroredText );
+  bool              mirrored = false;
+  mirrored                   = GetMirroredText(logicalModel->mText,
+                             logicalModel->mCharacterDirections,
+                             logicalModel->mBidirectionalParagraphInfo,
+                             0u,
+                             logicalModel->mText.Count(),
+                             mirroredText);
 
   // 3) Call the GetMirroredText() function for the given index + number of characters
-  mirrored = GetMirroredText( logicalModel->mText,
-                              logicalModel->mCharacterDirections,
-                              logicalModel->mBidirectionalParagraphInfo,
-                              data.startIndex,
-                              data.numberOfCharacters,
-                              mirroredText );
+  mirrored = GetMirroredText(logicalModel->mText,
+                             logicalModel->mCharacterDirections,
+                             logicalModel->mBidirectionalParagraphInfo,
+                             data.startIndex,
+                             data.numberOfCharacters,
+                             mirroredText);
 
   // 4) Compare the results.
 
   // Convert to utf8
   std::string mirroredString;
-  Utf32ToUtf8( mirroredText.Begin(),
-               mirroredText.Count(),
-               mirroredString );
+  Utf32ToUtf8(mirroredText.Begin(),
+              mirroredText.Count(),
+              mirroredString);
 
-  if( !mirrored && ( mirroredString != data.text ) )
+  if(!mirrored && (mirroredString != data.text))
   {
     std::cout << "  No mirrored text and mirroredString != data.text." << std::endl;
     std::cout << "  mirrored string : [" << mirroredString << "]" << std::endl;
@@ -243,7 +246,7 @@ bool GetMirroredTextTest( const GetMirroredTextData& data )
     return false;
   }
 
-  if( mirrored && ( mirroredString == data.text ) )
+  if(mirrored && (mirroredString == data.text))
   {
     std::cout << "  Mirrored text and mirroredString == data.text." << std::endl;
     std::cout << "  mirrored string : [" << mirroredString << "]" << std::endl;
@@ -251,7 +254,7 @@ bool GetMirroredTextTest( const GetMirroredTextData& data )
     return false;
   }
 
-  if( mirrored && ( mirroredString != data.mirroredText ) )
+  if(mirrored && (mirroredString != data.mirroredText))
   {
     std::cout << "  Mirrored text and mirroredString != data.mirroredText." << std::endl;
     std::cout << "  mirrored string : [" << mirroredString << "]" << std::endl;
@@ -262,55 +265,57 @@ bool GetMirroredTextTest( const GetMirroredTextData& data )
   return true;
 }
 
-bool GetCharactersDirectionTest( const GetCharactersDirectionData& data )
+bool GetCharactersDirectionTest(const GetCharactersDirectionData& data)
 {
   // 1) Create the model.
-  ModelPtr textModel;
+  ModelPtr   textModel;
   MetricsPtr metrics;
-  Size textArea(100.f, 60.f);
-  Size layoutSize;
+  Size       textArea(100.f, 60.f);
+  Size       layoutSize;
 
   // Create the model.
   const Vector<FontDescriptionRun> fontDescriptions;
-  const LayoutOptions options;
-  CreateTextModel( data.text,
-                   textArea,
-                   fontDescriptions,
-                   options,
-                   layoutSize,
-                   textModel,
-                   metrics,
-                   data.markupProcessorEnabled,
-                   LineWrap::WORD,
-                   false,
-                   Toolkit::DevelText::EllipsisPosition::END,
-                   0.f );
+  const LayoutOptions              options;
+  CreateTextModel(data.text,
+                  textArea,
+                  fontDescriptions,
+                  options,
+                  layoutSize,
+                  textModel,
+                  metrics,
+                  data.markupProcessorEnabled,
+                  LineWrap::WORD,
+                  false,
+                  Toolkit::DevelText::EllipsisPosition::END,
+                  0.0f, // lineSpacing
+                  0.0f  // characterSpacing
+  );
 
   LogicalModelPtr logicalModel = textModel->mLogicalModel;
-  VisualModelPtr visualModel = textModel->mVisualModel;
+  VisualModelPtr  visualModel  = textModel->mVisualModel;
 
   Vector<BidirectionalParagraphInfoRun>& bidirectionalInfo = logicalModel->mBidirectionalParagraphInfo;
 
   // 2) Clear the direction info data.
   Vector<CharacterDirection>& directions = logicalModel->mCharacterDirections;
 
-  if( directions.Count() >= data.startIndex + data.numberOfCharacters )
+  if(directions.Count() >= data.startIndex + data.numberOfCharacters)
   {
-    directions.Erase( directions.Begin() + data.startIndex,
-                      directions.Begin() + data.startIndex + data.numberOfCharacters );
+    directions.Erase(directions.Begin() + data.startIndex,
+                     directions.Begin() + data.startIndex + data.numberOfCharacters);
   }
 
   // 3) Call GetCharactersDirection() function.
 
-  GetCharactersDirection( bidirectionalInfo,
-                          logicalModel->mText.Count(),
-                          data.startIndex,
-                          data.numberOfCharacters,
-                          directions );
+  GetCharactersDirection(bidirectionalInfo,
+                         logicalModel->mText.Count(),
+                         data.startIndex,
+                         data.numberOfCharacters,
+                         directions);
 
-  for( unsigned int index = 0u; index < logicalModel->mText.Count(); ++index )
+  for(unsigned int index = 0u; index < logicalModel->mText.Count(); ++index)
   {
-    if( data.directions[index] != directions[index] )
+    if(data.directions[index] != directions[index])
     {
       return false;
     }
@@ -327,140 +332,129 @@ int UtcDaliSetBidirectionalInfo(void)
 {
   tet_infoline(" UtcDaliSetBidirectionalInfo");
 
-  unsigned int indices01[] = {};
+  unsigned int indices01[]            = {};
   unsigned int numberOfCharacters01[] = {};
-  bool         direction01[] = {};
-  unsigned int indices02[] = {};
+  bool         direction01[]          = {};
+  unsigned int indices02[]            = {};
   unsigned int numberOfCharacters02[] = {};
-  bool         direction02[] = {};
-  unsigned int indices03[] = { 17u, 48u };
-  unsigned int numberOfCharacters03[] = { 14u, 14u };
-  bool         direction03[] = { true, true };
-  unsigned int indices04[] = { 17u, 31u, 79u };
-  unsigned int numberOfCharacters04[] = { 14u, 48u, 31u };
-  bool         direction04[] = { true, false, true };
-  unsigned int indices05[] = { 17u, 41u, 117u };
-  unsigned int numberOfCharacters05[] = { 24u, 76u, 49u };
-  bool         direction05[] = { true, false, true };
-  unsigned int indices06[] = { 17u, 48u };
-  unsigned int numberOfCharacters06[] = { 14u, 14u };
-  bool         direction06[] = { true, true };
-  unsigned int indices07[] = { 17u, 31u, 79u };
-  unsigned int numberOfCharacters07[] = { 14u, 48u, 31u };
-  bool         direction07[] = { true, false, true };
-  unsigned int indices08[] = { 17u, 41u, 117u };
-  unsigned int numberOfCharacters08[] = { 24u, 76u, 49u };
-  bool         direction08[] = { true, false, true };
+  bool         direction02[]          = {};
+  unsigned int indices03[]            = {17u, 48u};
+  unsigned int numberOfCharacters03[] = {14u, 14u};
+  bool         direction03[]          = {true, true};
+  unsigned int indices04[]            = {17u, 31u, 79u};
+  unsigned int numberOfCharacters04[] = {14u, 48u, 31u};
+  bool         direction04[]          = {true, false, true};
+  unsigned int indices05[]            = {17u, 41u, 117u};
+  unsigned int numberOfCharacters05[] = {24u, 76u, 49u};
+  bool         direction05[]          = {true, false, true};
+  unsigned int indices06[]            = {17u, 48u};
+  unsigned int numberOfCharacters06[] = {14u, 14u};
+  bool         direction06[]          = {true, true};
+  unsigned int indices07[]            = {17u, 31u, 79u};
+  unsigned int numberOfCharacters07[] = {14u, 48u, 31u};
+  bool         direction07[]          = {true, false, true};
+  unsigned int indices08[]            = {17u, 41u, 117u};
+  unsigned int numberOfCharacters08[] = {24u, 76u, 49u};
+  bool         direction08[]          = {true, false, true};
 
   struct SetBidirectionalInfoData data[] =
-  {
     {
-      "Zero characters",
-      "",
-      0u,
-      0u,
-      0u,
-      indices01,
-      numberOfCharacters01,
-      direction01
-    },
-    {
-      "Some left to right paragraphs",
-      "Hello world\ndemo\n\n",
-      0u,
-      18u,
-      0u,
-      indices02,
-      numberOfCharacters02,
-      direction02
-    },
-    {
-      "A mix of left to right and right to left paragraphs.",
-      "Hello world demo\nمرحبا بالعالم\nhello world demo\nمرحبا بالعالم\nhello world demo",
-      0u,
-      78u,
-      2u,
-      indices03,
-      numberOfCharacters03,
-      direction03
-    },
-    {
-      "A mix of left to right and right to left paragraphs. Paragraphs also contain a mix of bidirectional text.",
-      "Hello world demo\nمرحبا بالعالم\nhello world demo مرحبا بالعالم hello world demo\nمرحبا hello world demo بالعالم\nhello world demo",
-      0u,
-      126u,
-      3u,
-      indices04,
-      numberOfCharacters04,
-      direction04
-    },
-    {
-      "A mix of left to right and right to left paragraphs. Paragraphs also contain a mix of bidirectional text and a mix of right to left scripts.",
-      "Hello world demo\nمرحبا שלום עולם بالعالم\nhello world שלום بالعالم עולם demo مرحبا שלום עולם بالعالم hello world demo\nمرحبا hello שלום بالعالم עולם world demo بالعالم\nhello world demo",
-      0u,
-      182u,
-      3u,
-      indices05,
-      numberOfCharacters05,
-      direction05
-    },
-    {
-      "A mix of left to right and right to left paragraphs. Updates a left to right paragraph.",
-      "Hello world demo\nمرحبا بالعالم\nhello world demo\nمرحبا بالعالم\nhello world demo",
-      31u,
-      17u,
-      2u,
-      indices06,
-      numberOfCharacters06,
-      direction06
-    },
-    {
-      "A mix of left to right and right to left paragraphs. Paragraphs also contain a mix of bidirectional text.",
-      "Hello world demo\nمرحبا بالعالم\nhello world demo مرحبا بالعالم hello world demo\nمرحبا hello world demo بالعالم\nhello world demo",
-      0u,
-      126u,
-      3u,
-      indices07,
-      numberOfCharacters07,
-      direction07
-    },
-    {
-      "A mix of left to right and right to left paragraphs. Paragraphs also contain a mix of bidirectional text and a mix of right to left scripts. Updates initial paragraphs.",
-      "Hello world demo\nمرحبا שלום עולם بالعالم\nhello world שלום بالعالم עולם demo مرحبا שלום עולם بالعالم hello world demo\nمرحبا hello שלום بالعالم עולם world demo بالعالم\nhello world demo",
-      0u,
-      41u,
-      3u,
-      indices08,
-      numberOfCharacters08,
-      direction08
-    },
-    {
-      "A mix of left to right and right to left paragraphs. Paragraphs also contain a mix of bidirectional text and a mix of right to left scripts. Updates mid paragraphs.",
-      "Hello world demo\nمرحبا שלום עולם بالعالم\nhello world שלום بالعالم עולם demo مرحبا שלום עולם بالعالم hello world demo\nمرحبا hello שלום بالعالم עולם world demo بالعالم\nhello world demo",
-      41u,
-      76u,
-      3u,
-      indices08,
-      numberOfCharacters08,
-      direction08
-    },
-    {
-      "A mix of left to right and right to left paragraphs. Paragraphs also contain a mix of bidirectional text and a mix of right to left scripts. Updates from character 85",
-      "Hello world demo\nمرحبا שלום עולם بالعالم\nhello world שלום بالعالم עולם demo مرحبا שלום עולם بالعالم hello world demo\nمرحبا hello שלום بالعالم עולם world demo بالعالم\nhello world demo",
-      117u,
-      65u,
-      3u,
-      indices08,
-      numberOfCharacters08,
-      direction08
-    },
-  };
+      {"Zero characters",
+       "",
+       0u,
+       0u,
+       0u,
+       indices01,
+       numberOfCharacters01,
+       direction01},
+
+      {"Some left to right paragraphs",
+       "Hello world\ndemo\n\n",
+       0u,
+       18u,
+       0u,
+       indices02,
+       numberOfCharacters02,
+       direction02},
+
+      {"A mix of left to right and right to left paragraphs.",
+       "Hello world demo\nمرحبا بالعالم\nhello world demo\nمرحبا بالعالم\nhello world demo",
+       0u,
+       78u,
+       2u,
+       indices03,
+       numberOfCharacters03,
+       direction03},
+
+      {"A mix of left to right and right to left paragraphs. Paragraphs also contain a mix of bidirectional text.",
+       "Hello world demo\nمرحبا بالعالم\nhello world demo مرحبا بالعالم hello world demo\nمرحبا hello world demo بالعالم\nhello world demo",
+       0u,
+       126u,
+       3u,
+       indices04,
+       numberOfCharacters04,
+       direction04},
+
+      {"A mix of left to right and right to left paragraphs. Paragraphs also contain a mix of bidirectional text and a mix of right to left scripts.",
+       "Hello world demo\nمرحبا שלום עולם بالعالم\nhello world שלום بالعالم עולם demo مرحبا שלום עולם بالعالم hello world demo\nمرحبا hello שלום بالعالم עולם world demo بالعالم\nhello world demo",
+       0u,
+       182u,
+       3u,
+       indices05,
+       numberOfCharacters05,
+       direction05},
+
+      {"A mix of left to right and right to left paragraphs. Updates a left to right paragraph.",
+       "Hello world demo\nمرحبا بالعالم\nhello world demo\nمرحبا بالعالم\nhello world demo",
+       31u,
+       17u,
+       2u,
+       indices06,
+       numberOfCharacters06,
+       direction06},
+
+      {"A mix of left to right and right to left paragraphs. Paragraphs also contain a mix of bidirectional text.",
+       "Hello world demo\nمرحبا بالعالم\nhello world demo مرحبا بالعالم hello world demo\nمرحبا hello world demo بالعالم\nhello world demo",
+       0u,
+       126u,
+       3u,
+       indices07,
+       numberOfCharacters07,
+       direction07},
+
+      {"A mix of left to right and right to left paragraphs. Paragraphs also contain a mix of bidirectional text and a mix of right to left scripts. Updates initial paragraphs.",
+       "Hello world demo\nمرحبا שלום עולם بالعالم\nhello world שלום بالعالم עולם demo مرحبا שלום עולם بالعالم hello world demo\nمرحبا hello שלום بالعالم עולם world demo بالعالم\nhello world demo",
+       0u,
+       41u,
+       3u,
+       indices08,
+       numberOfCharacters08,
+       direction08},
+
+      {"A mix of left to right and right to left paragraphs. Paragraphs also contain a mix of bidirectional text and a mix of right to left scripts. Updates mid paragraphs.",
+       "Hello world demo\nمرحبا שלום עולם بالعالم\nhello world שלום بالعالم עולם demo مرحبا שלום עולם بالعالم hello world demo\nمرحبا hello שלום بالعالم עולם world demo بالعالم\nhello world demo",
+       41u,
+       76u,
+       3u,
+       indices08,
+       numberOfCharacters08,
+       direction08},
+
+      {"A mix of left to right and right to left paragraphs. Paragraphs also contain a mix of bidirectional text and a mix of right to left scripts. Updates from character 85",
+       "Hello world demo\nمرحبا שלום עולם بالعالم\nhello world שלום بالعالم עולם demo مرحبا שלום עולם بالعالم hello world demo\nمرحبا hello שלום بالعالم עולם world demo بالعالم\nhello world demo",
+       117u,
+       65u,
+       3u,
+       indices08,
+       numberOfCharacters08,
+       direction08},
+    };
   const unsigned int numberOfTests = 10u;
 
-  for( unsigned int index = 0u; index < numberOfTests; ++index )
+  for(unsigned int index = 0u; index < numberOfTests; ++index)
   {
     ToolkitTestApplication application;
-    if( !SetBidirectionalInfoTest( data[index] ) )
+    if(!SetBidirectionalInfoTest(data[index]))
     {
       tet_result(TET_FAIL);
     }
@@ -475,76 +469,67 @@ int UtcDaliGetMirroredText(void)
   tet_infoline(" UtcDaliGetMirroredText");
 
   struct GetMirroredTextData data[] =
-  {
     {
-      "Zero characters.",
-      "",
-      0u,
-      0u,
-      ""
-    },
-    {
-      "Left to right characters only.",
-      "Hello world\nhello world demo.",
-      0u,
-      29u,
-      "Hello world\nhello world demo."
-    },
-    {
-      "Right to left characters but with no characters to mirror.",
-      "שלום עולם\nمرحبا بالعالم",
-      0u,
-      23u,
-      "שלום עולם\nمرحبا بالعالم"
-    },
-    {
-      "Right to left characters with some characters to mirror.",
-      "שלום עולם\n(مرحبا بالعالم)",
-      0u,
-      25u,
-      "שלום עולם\n)مرحبا بالعالم("
-    },
-    {
-      "Right to left characters with some characters to mirror. Update last paragraph.",
-      "שלום עולם\n(مرحبا بالعالم)",
-      10u,
-      15u,
-      "שלום עולם\n)مرحبا بالعالم("
-    },
-    {
-      "Mix of bidirectional text. With more paragraphs.",
-      "Hello world demo\nhello world\nhello world (مرحبا بالعالم שלום) עולם\nשלום مرحبا بالعالم עולם (hello) مرحبا بالعالم world"
-      " مرحبا بالعالم שלום עולם hello world hello world\nبالعالم שלום (hello) world demo (עולם)\nשלום (مرحبا بالعالم עולם) (hello)",
-      0u,
-      239u,
-      "Hello world demo\nhello world\nhello world (مرحبا بالعالم שלום( עולם\nשלום مرحبا بالعالم עולם )hello( مرحبا بالعالم world"
-      " مرحبا بالعالم שלום עולם hello world hello world\nبالعالم שלום )hello) world demo )עולם(\nשלום )مرحبا بالعالم עולם( )hello("
-    },
-    {
-      "Mix of bidirectional text. With more paragraphs. Update middle paragraphs.",
-      "Hello world demo\nhello world\nhello world (مرحبا بالعالم שלום) עולם\nשלום مرحبا بالعالم עולם (hello) مرحبا بالعالم world"
-      " مرحبا بالعالم שלום עולם hello world hello world\nبالعالم שלום (hello) world demo (עולם)\nשלום (مرحبا بالعالم עולם) (hello)",
-      29u,
-      38u,
-      "Hello world demo\nhello world\nhello world (مرحبا بالعالم שלום( עולם\nשלום مرحبا بالعالم עולם (hello) مرحبا بالعالم world"
-      " مرحبا بالعالم שלום עולם hello world hello world\nبالعالم שלום (hello) world demo (עולם)\nשלום (مرحبا بالعالم עולם) (hello)"
-    },
-    {
-      "Mix of bidirectional text. With more paragraphs. Update middle paragraphs (2).",
-      "Hello world demo\nhello world\nhello world (مرحبا بالعالم שלום) עולם\nשלום مرحبا بالعالم עולם (hello) مرحبا بالعالم world"
-      " مرحبا بالعالم שלום עולם hello world hello world\nبالعالم שלום (hello) world demo (עולם)\nשלום (مرحبا بالعالم עולם) (hello)",
-      67u,
-      100u,
-      "Hello world demo\nhello world\nhello world (مرحبا بالعالم שלום) עולם\nשלום مرحبا بالعالم עולם )hello( مرحبا بالعالم world"
-      " مرحبا بالعالم שלום עולם hello world hello world\nبالعالم שלום (hello) world demo (עולם)\nשלום (مرحبا بالعالم עולם) (hello)"
-    },
-  };
+      {"Zero characters.",
+       "",
+       0u,
+       0u,
+       ""},
+
+      {"Left to right characters only.",
+       "Hello world\nhello world demo.",
+       0u,
+       29u,
+       "Hello world\nhello world demo."},
+
+      {"Right to left characters but with no characters to mirror.",
+       "שלום עולם\nمرحبا بالعالم",
+       0u,
+       23u,
+       "שלום עולם\nمرحبا بالعالم"},
+
+      {"Right to left characters with some characters to mirror.",
+       "שלום עולם\n(مرحبا بالعالم)",
+       0u,
+       25u,
+       "שלום עולם\n)مرحبا بالعالم("},
+
+      {"Right to left characters with some characters to mirror. Update last paragraph.",
+       "שלום עולם\n(مرحبا بالعالم)",
+       10u,
+       15u,
+       "שלום עולם\n)مرحبا بالعالم("},
+
+      {"Mix of bidirectional text. With more paragraphs.",
+       "Hello world demo\nhello world\nhello world (مرحبا بالعالم שלום) עולם\nשלום مرحبا بالعالم עולם (hello) مرحبا بالعالم world"
+       " مرحبا بالعالم שלום עולם hello world hello world\nبالعالم שלום (hello) world demo (עולם)\nשלום (مرحبا بالعالم עולם) (hello)",
+       0u,
+       239u,
+       "Hello world demo\nhello world\nhello world (مرحبا بالعالم שלום( עולם\nשלום مرحبا بالعالم עולם )hello( مرحبا بالعالم world"
+       " مرحبا بالعالم שלום עולם hello world hello world\nبالعالم שלום )hello) world demo )עולם(\nשלום )مرحبا بالعالم עולם( )hello("},
+
+      {"Mix of bidirectional text. With more paragraphs. Update middle paragraphs.",
+       "Hello world demo\nhello world\nhello world (مرحبا بالعالم שלום) עולם\nשלום مرحبا بالعالم עולם (hello) مرحبا بالعالم world"
+       " مرحبا بالعالم שלום עולם hello world hello world\nبالعالم שלום (hello) world demo (עולם)\nשלום (مرحبا بالعالم עולם) (hello)",
+       29u,
+       38u,
+       "Hello world demo\nhello world\nhello world (مرحبا بالعالم שלום( עולם\nשלום مرحبا بالعالم עולם (hello) مرحبا بالعالم world"
+       " مرحبا بالعالم שלום עולם hello world hello world\nبالعالم שלום (hello) world demo (עולם)\nשלום (مرحبا بالعالم עולם) (hello)"},
+
+      {"Mix of bidirectional text. With more paragraphs. Update middle paragraphs (2).",
+       "Hello world demo\nhello world\nhello world (مرحبا بالعالم שלום) עולם\nשלום مرحبا بالعالم עולם (hello) مرحبا بالعالم world"
+       " مرحبا بالعالم שלום עולם hello world hello world\nبالعالم שלום (hello) world demo (עולם)\nשלום (مرحبا بالعالم עולם) (hello)",
+       67u,
+       100u,
+       "Hello world demo\nhello world\nhello world (مرحبا بالعالم שלום) עולם\nשלום مرحبا بالعالم עולם )hello( مرحبا بالعالم world"
+       " مرحبا بالعالم שלום עולם hello world hello world\nبالعالم שלום (hello) world demo (עולם)\nשלום (مرحبا بالعالم עולם) (hello)"},
+    };
   const unsigned int numberOfTests = 8u;
 
-  for( unsigned int index = 0u; index < numberOfTests; ++index )
+  for(unsigned int index = 0u; index < numberOfTests; ++index)
   {
     ToolkitTestApplication application;
-    if( !GetMirroredTextTest( data[index] ) )
+    if(!GetMirroredTextTest(data[index]))
     {
       tet_result(TET_FAIL);
     }
@@ -560,134 +545,92 @@ int UtcDaliGetCharactersDirection(void)
 
   bool directions01[] = {};
   bool directions02[] = {
-    false, false, false, false, false, false, false, false, false, false,
-    false, false, false, false, false, false, false, false, false, false,
-    false, false, false, false, false, false, false, false };
+    false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false};
   bool directions03[] = {
-    true,  true,  true,  true,  true,  true,  true,  true,  true,  true,
-    true,  true,  true,  true,  true,  true,  true,  true,  true };
+    true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true};
   bool directions04[] = {
-    false, false, false, false, false, false, false, false, false, false,
-    false, false, false, false, false, false, false, false, false, false,
-    false, false, false, false, true,  true,  true,  true,  true,  true,
-    true,  true,  true,  false, true,  true,  true,  true,  true,  true,
-    true,  true,  true,  true,  false, false, false, false, false, false,
-    false, false, false, false, false };
+    false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false};
   bool directions05[] = {
-    false, false, false, false, false, false, false, false, false, false,
-    false, false, false, false, false, false, false, false, false, false,
-    false, false, false, false, false, false, false, false, false, false,
-    false, false, false, false, false, false, false, false, false, false,
-    false, true,  true,  true,  true,  true,  true,  true,  true,  true,
-    true,  true,  true,  true,  true,  true,  true,  true,  true,  true,
-    true,  true,  true,  true,  false, true,  true,  true,  true,  true,
-    true,  true,  true,  true,  true,  true,  true,  true,  true,  true,
-    true,  true,  true,  true,  true,  true,  true,  true,  true,  false,
-    false, false, false, false, true,  true,  true,  true,  true,  true,
-    true,  true,  true,  true,  true,  true,  true,  true,  true,  false,
-    false, false, false, false, true,  true,  true,  true,  true,  true,
-    true,  true,  true,  true,  true,  true,  true,  true,  true,  true,
-    true,  true,  true,  true,  true,  true,  true,  true,  true,  false,
-    false, false, false, false, false, false, false, false, false, false,
-    false, false, false, false, false, false, false, false, false, false,
-    false, false, true,  true,  true,  true,  true,  true,  true,  true,
-    true,  true,  true,  true,  true,  true,  false, false, false, false,
-    false, false, false, false, false, false, false, false, false, false,
-    false, false, true,  true,  true,  true,  true,  true,  true,  true,
-    true,  true,  true,  true,  true,  true,  true,  true,  true,  true,
-    true,  true,  true,  true,  true,  true,  true,  true,  true,  true,
-    true,  true,  false, false, false, false, false };
-
-    bool directions06[] = {
-    true,  true,  true,  true,  true,  true,  true,  true,  true, true,
-    false, false, false, false, false, false, false, false, false, false,
-    false, false, false, false, false, false };
+    false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false};
+
+  bool directions06[] = {
+    true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false};
 
   struct GetCharactersDirectionData data[] =
-  {
-    {
-      "Zero characters",
-      "",
-      0u,
-      0u,
-      directions01,
-      false
-    },
     {
-      "Left to right characters only",
-      "Hello world\nhello world demo",
-      0u,
-      28u,
-      directions02,
-      false
-    },
-    {
-      "Right to left characters only",
-      "שלום עולם\nשלום עולם",
-      0u,
-      19u,
-      directions03,
-      false
-    },
-    {
-      "Mix of bidirectional text",
-      "Hello world\nhello world שלום עולם\nשלום עולם hello world",
-      0u,
-      55u,
-      directions04,
-      false
-    },
-    {
-      "Mix of bidirectional text. With more paragraphs.",
-      "Hello world demo\nhello world\nhello world مرحبا بالعالم שלום עולם\nשלום مرحبا بالعالم עולם hello مرحبا بالعالم world"
-      " مرحبا بالعالم שלום עולם hello world hello world\nبالعالم שלום hello world demo עולם\nשלום مرحبا بالعالم עולם hello",
-      0u,
-      227u,
-      directions05,
-      false
-    },
-    {
-      "Mix of bidirectional text. With more paragraphs. Update first paragraph.",
-      "Hello world demo\nhello world\nhello world مرحبا بالعالم שלום עולם\nשלום مرحبا بالعالم עולם hello مرحبا بالعالم world"
-      " مرحبا بالعالم שלום עולם hello world hello world\nبالعالم שלום hello world demo עולם\nשלום مرحبا بالعالم עולם hello",
-      0u,
-      17u,
-      directions05,
-      false
-    },
-    {
-      "Mix of bidirectional text. With more paragraphs. Update from character 29",
-      "Hello world demo\nhello world\nhello world مرحبا بالعالم שלום עולם\nשלום مرحبا بالعالم עולם hello مرحبا بالعالم world"
-      " مرحبا بالعالم שלום עולם hello world hello world\nبالعالم שלום hello world demo עולם\nשלום مرحبا بالعالم עולם hello",
-      29u,
-      134u,
-      directions05,
-      false
-    },
-    {
-      "Mix of bidirectional text. With more paragraphs. Update from character 163",
-      "Hello world demo\nhello world\nhello world مرحبا بالعالم שלום עולם\nשלום مرحبا بالعالم עולם hello مرحبا بالعالم world"
-      " مرحبا بالعالم שלום עולם hello world hello world\nبالعالم שלום hello world demo עולם\nשלום مرحبا بالعالم עולם hello",
-      163u,
-      35u,
-      directions05,
-      false
-    },
-    {
-      "Mix of bidirectional text. With brackets and LRM",
-      "שלום עולם &lrm;(hello)[world]&lrm;",
-      0u,
-      26u,
-      directions06,
-      true
-    }
-  };
+      {"Zero characters",
+       "",
+       0u,
+       0u,
+       directions01,
+       false},
+
+      {"Left to right characters only",
+       "Hello world\nhello world demo",
+       0u,
+       28u,
+       directions02,
+       false},
+
+      {"Right to left characters only",
+       "שלום עולם\nשלום עולם",
+       0u,
+       19u,
+       directions03,
+       false},
+
+      {"Mix of bidirectional text",
+       "Hello world\nhello world שלום עולם\nשלום עולם hello world",
+       0u,
+       55u,
+       directions04,
+       false},
+
+      {"Mix of bidirectional text. With more paragraphs.",
+       "Hello world demo\nhello world\nhello world مرحبا بالعالم שלום עולם\nשלום مرحبا بالعالم עולם hello مرحبا بالعالم world"
+       " مرحبا بالعالم שלום עולם hello world hello world\nبالعالم שלום hello world demo עולם\nשלום مرحبا بالعالم עולם hello",
+       0u,
+       227u,
+       directions05,
+       false},
+
+      {"Mix of bidirectional text. With more paragraphs. Update first paragraph.",
+       "Hello world demo\nhello world\nhello world مرحبا بالعالم שלום עולם\nשלום مرحبا بالعالم עולם hello مرحبا بالعالم world"
+       " مرحبا بالعالم שלום עולם hello world hello world\nبالعالم שלום hello world demo עולם\nשלום مرحبا بالعالم עולם hello",
+       0u,
+       17u,
+       directions05,
+       false},
+
+      {"Mix of bidirectional text. With more paragraphs. Update from character 29",
+       "Hello world demo\nhello world\nhello world مرحبا بالعالم שלום עולם\nשלום مرحبا بالعالم עולם hello مرحبا بالعالم world"
+       " مرحبا بالعالم שלום עולם hello world hello world\nبالعالم שלום hello world demo עולם\nשלום مرحبا بالعالم עולם hello",
+       29u,
+       134u,
+       directions05,
+       false},
+
+      {"Mix of bidirectional text. With more paragraphs. Update from character 163",
+       "Hello world demo\nhello world\nhello world مرحبا بالعالم שלום עולם\nשלום مرحبا بالعالم עולם hello مرحبا بالعالم world"
+       " مرحبا بالعالم שלום עולם hello world hello world\nبالعالم שלום hello world demo עולם\nשלום مرحبا بالعالم עולם hello",
+       163u,
+       35u,
+       directions05,
+       false},
+
+      {"Mix of bidirectional text. With brackets and LRM",
+       "שלום עולם &lrm;(hello)[world]&lrm;",
+       0u,
+       26u,
+       directions06,
+       true}};
+
   const unsigned int numberOfTests = 9u;
 
-  for( unsigned int index = 0u; index < numberOfTests; ++index )
+  for(unsigned int index = 0u; index < numberOfTests; ++index)
   {
     ToolkitTestApplication application;
-    if( !GetCharactersDirectionTest( data[index] ) )
+    if(!GetCharactersDirectionTest(data[index]))
     {
       tet_result(TET_FAIL);
     }
index 8b15ad3..ca775c0 100755 (executable)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
  *
  */
 
-#include <iostream>
 #include <stdlib.h>
 #include <unistd.h>
+#include <iostream>
 
 #include <dali-toolkit-test-suite-utils.h>
-#include <dali-toolkit/internal/text/text-run-container.h>
 #include <dali-toolkit/dali-toolkit.h>
+#include <dali-toolkit/internal/text/text-run-container.h>
 #include <toolkit-text-utils.h>
 
-
 using namespace Dali;
 using namespace Toolkit;
 using namespace Text;
@@ -44,7 +43,7 @@ using namespace Text;
 
 namespace
 {
-const std::string DEFAULT_FONT_DIR( "/resources/fonts" );
+const std::string DEFAULT_FONT_DIR("/resources/fonts");
 
 struct CreateParagraphData
 {
@@ -79,12 +78,12 @@ struct FetchBidirectionalLineInfoData
 
 struct GetLogicalCharacterIndexData
 {
-  std::string   description;        ///< Description of the test.
-  std::string   text;               ///< Input text.
-  Size          textArea;           ///< The text area.
-  unsigned int  numberOfIndices;    ///< The number of characters to set.
-  unsigned int* visualToLogical;    ///< The expected visual to logical conversion table.
-  unsigned int* cachedBidiLine;     ///< The cached bidi line index for each character.
+  std::string   description;     ///< Description of the test.
+  std::string   text;            ///< Input text.
+  Size          textArea;        ///< The text area.
+  unsigned int  numberOfIndices; ///< The number of characters to set.
+  unsigned int* visualToLogical; ///< The expected visual to logical conversion table.
+  unsigned int* cachedBidiLine;  ///< The cached bidi line index for each character.
 };
 
 struct GetLogicalCursorIndexData
@@ -101,63 +100,65 @@ struct GetLogicalCursorIndexData
   unsigned int*       cachedBidiLine;     ///< The cached bidi line index for each character.
 };
 
-bool CreateParagraphTest( const CreateParagraphData& data )
+bool CreateParagraphTest(const CreateParagraphData& data)
 {
   // 1) Create the model.
-  ModelPtr textModel;
+  ModelPtr   textModel;
   MetricsPtr metrics;
-  Size textArea(100.f, 60.f);
-  Size layoutSize;
+  Size       textArea(100.f, 60.f);
+  Size       layoutSize;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  LayoutOptions options;
-  CreateTextModel( data.text,
-                   textArea,
-                   fontDescriptionRuns,
-                   options,
-                   layoutSize,
-                   textModel,
-                   metrics,
-                   false,
-                   LineWrap::WORD,
-                   false,
-                   Toolkit::DevelText::EllipsisPosition::END,
-                   0.f );
+  LayoutOptions              options;
+  CreateTextModel(data.text,
+                  textArea,
+                  fontDescriptionRuns,
+                  options,
+                  layoutSize,
+                  textModel,
+                  metrics,
+                  false,
+                  LineWrap::WORD,
+                  false,
+                  Toolkit::DevelText::EllipsisPosition::END,
+                  0.0f, // lineSpacing
+                  0.0f  // characterSpacing
+  );
 
   LogicalModelPtr logicalModel = textModel->mLogicalModel;
-  VisualModelPtr visualModel = textModel->mVisualModel;
+  VisualModelPtr  visualModel  = textModel->mVisualModel;
 
   // 2) Clear the paragraphs.
   Vector<ParagraphRun>& paragraphs = logicalModel->mParagraphInfo;
-  ClearCharacterRuns( data.index,
-                      data.index + data.numberOfCharacters - 1u,
-                      paragraphs );
+  ClearCharacterRuns(data.index,
+                     data.index + data.numberOfCharacters - 1u,
+                     paragraphs);
 
   // 3) Call the LogicalModel::CreateParagraphInfo() method
-  logicalModel->CreateParagraphInfo( data.index,
-                                     data.numberOfCharacters );
+  logicalModel->CreateParagraphInfo(data.index,
+                                    data.numberOfCharacters);
 
   // 4) Compare the results.
-  if( data.numberOfParagraphs != paragraphs.Count() )
+  if(data.numberOfParagraphs != paragraphs.Count())
   {
     std::cout << "  Different number of paragraphs : " << paragraphs.Count() << ", expected : " << data.numberOfParagraphs << std::endl;
     return false;
   }
 
   unsigned int index = 0u;
-  for( Vector<ParagraphRun>::ConstIterator it = paragraphs.Begin(),
-         endIt = paragraphs.End();
-       it != endIt;
-       ++it, ++index )
+  for(Vector<ParagraphRun>::ConstIterator it    = paragraphs.Begin(),
+                                          endIt = paragraphs.End();
+      it != endIt;
+      ++it, ++index)
   {
-    const ParagraphRun& paragraph( *it );
+    const ParagraphRun& paragraph(*it);
 
-    if( data.indices[index] != paragraph.characterRun.characterIndex )
+    if(data.indices[index] != paragraph.characterRun.characterIndex)
     {
       std::cout << "  Different character index for paragraph : " << index << ", " << paragraph.characterRun.characterIndex << ", expected : " << data.indices[index] << std::endl;
       return false;
     }
-    if( data.numberOfCharactersPerParagraph[index] != paragraph.characterRun.numberOfCharacters )
+    if(data.numberOfCharactersPerParagraph[index] != paragraph.characterRun.numberOfCharacters)
     {
       std::cout << "  Different number of characters for paragraph : " << index << ", " << paragraph.characterRun.numberOfCharacters << ", expected : " << data.numberOfCharactersPerParagraph[index] << std::endl;
       return false;
@@ -167,51 +168,53 @@ bool CreateParagraphTest( const CreateParagraphData& data )
   return true;
 }
 
-bool FindParagraphTest( const FindParagraphData& data )
+bool FindParagraphTest(const FindParagraphData& data)
 {
   // 1) Create the model.
-  ModelPtr textModel;
+  ModelPtr   textModel;
   MetricsPtr metrics;
-  Size textArea(100.f, 60.f);
-  Size layoutSize;
+  Size       textArea(100.f, 60.f);
+  Size       layoutSize;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  LayoutOptions options;
-  CreateTextModel( data.text,
-                   textArea,
-                   fontDescriptionRuns,
-                   options,
-                   layoutSize,
-                   textModel,
-                   metrics,
-                   false,
-                   LineWrap::WORD,
-                   false,
-                   Toolkit::DevelText::EllipsisPosition::END,
-                   0.f );
+  LayoutOptions              options;
+  CreateTextModel(data.text,
+                  textArea,
+                  fontDescriptionRuns,
+                  options,
+                  layoutSize,
+                  textModel,
+                  metrics,
+                  false,
+                  LineWrap::WORD,
+                  false,
+                  Toolkit::DevelText::EllipsisPosition::END,
+                  0.0f, // lineSpacing
+                  0.0f  // characterSpacing
+  );
 
   LogicalModelPtr logicalModel = textModel->mLogicalModel;
-  VisualModelPtr visualModel = textModel->mVisualModel;
+  VisualModelPtr  visualModel  = textModel->mVisualModel;
 
   // 2) Find the paragraphs.
   Vector<ParagraphRunIndex> paragraphs;
-  logicalModel->FindParagraphs( data.index, data.numberOfCharacters, paragraphs );
+  logicalModel->FindParagraphs(data.index, data.numberOfCharacters, paragraphs);
 
   // 3) compare the results.
-  if( data.numberOfParagraphs != paragraphs.Count() )
+  if(data.numberOfParagraphs != paragraphs.Count())
   {
     return false;
   }
 
   unsigned int index = 0u;
-  for( Vector<ParagraphRunIndex>::ConstIterator it = paragraphs.Begin(),
-         endIt = paragraphs.End();
-       it != endIt;
-       ++it, ++index )
+  for(Vector<ParagraphRunIndex>::ConstIterator it    = paragraphs.Begin(),
+                                               endIt = paragraphs.End();
+      it != endIt;
+      ++it, ++index)
   {
     const ParagraphRunIndex paragraphIndex = *it;
 
-    if( paragraphIndex != data.paragraphs[index] )
+    if(paragraphIndex != data.paragraphs[index])
     {
       return false;
     }
@@ -220,47 +223,49 @@ bool FindParagraphTest( const FindParagraphData& data )
   return true;
 }
 
-bool FetchBidirectionalLineInfoTest( const FetchBidirectionalLineInfoData& data )
+bool FetchBidirectionalLineInfoTest(const FetchBidirectionalLineInfoData& data)
 {
   std::cout << "  testing : " << data.description << std::endl;
   // Create the model.
-  ModelPtr textModel;
+  ModelPtr   textModel;
   MetricsPtr metrics;
-  Size textArea( 100.f, 300.f );
-  Size layoutSize;
+  Size       textArea(100.f, 300.f);
+  Size       layoutSize;
 
   // Create the model with the whole text.
   const Vector<FontDescriptionRun> fontDescriptions;
-  const LayoutOptions options;
-  CreateTextModel( data.text,
-                   textArea,
-                   fontDescriptions,
-                   options,
-                   layoutSize,
-                   textModel,
-                   metrics,
-                   false,
-                   LineWrap::WORD,
-                   false,
-                   Toolkit::DevelText::EllipsisPosition::END,
-                   0.f );
+  const LayoutOptions              options;
+  CreateTextModel(data.text,
+                  textArea,
+                  fontDescriptions,
+                  options,
+                  layoutSize,
+                  textModel,
+                  metrics,
+                  false,
+                  LineWrap::WORD,
+                  false,
+                  Toolkit::DevelText::EllipsisPosition::END,
+                  0.0f, // lineSpacing
+                  0.0f  // characterSpacing
+  );
 
   LogicalModelPtr logicalModel = textModel->mLogicalModel;
-  VisualModelPtr visualModel = textModel->mVisualModel;
+  VisualModelPtr  visualModel  = textModel->mVisualModel;
 
-  for( unsigned int index = 0; index < data.numberOfTests; ++index )
+  for(unsigned int index = 0; index < data.numberOfTests; ++index)
   {
-    const bool fetched = logicalModel->FetchBidirectionalLineInfo( data.characterIndex[index] );
+    const bool fetched = logicalModel->FetchBidirectionalLineInfo(data.characterIndex[index]);
 
-    if( fetched != data.fetched[index] )
+    if(fetched != data.fetched[index])
     {
       std::cout << "  Different fetched result : " << fetched << ", expected : " << data.fetched[index] << std::endl;
       return false;
     }
 
-    if( fetched )
+    if(fetched)
     {
-      if( logicalModel->mBidirectionalLineIndex != data.bidiLineIndex[index] )
+      if(logicalModel->mBidirectionalLineIndex != data.bidiLineIndex[index])
       {
         std::cout << "  Different bidi line index : " << logicalModel->mBidirectionalLineIndex << ", expected : " << data.bidiLineIndex << std::endl;
         return false;
@@ -271,46 +276,48 @@ bool FetchBidirectionalLineInfoTest( const FetchBidirectionalLineInfoData& data
   return true;
 }
 
-bool GetLogicalCharacterIndexTest( const GetLogicalCharacterIndexData& data )
+bool GetLogicalCharacterIndexTest(const GetLogicalCharacterIndexData& data)
 {
   std::cout << "  testing : " << data.description << std::endl;
   // Create the model.
-  ModelPtr textModel;
+  ModelPtr   textModel;
   MetricsPtr metrics;
-  Size layoutSize;
+  Size       layoutSize;
 
   // Create the model with the whole text.
   const Vector<FontDescriptionRun> fontDescriptions;
-  const LayoutOptions options;
-  CreateTextModel( data.text,
-                   data.textArea,
-                   fontDescriptions,
-                   options,
-                   layoutSize,
-                   textModel,
-                   metrics,
-                   false,
-                   LineWrap::WORD,
-                   false,
-                   Toolkit::DevelText::EllipsisPosition::END,
-                   0.f );
+  const LayoutOptions              options;
+  CreateTextModel(data.text,
+                  data.textArea,
+                  fontDescriptions,
+                  options,
+                  layoutSize,
+                  textModel,
+                  metrics,
+                  false,
+                  LineWrap::WORD,
+                  false,
+                  Toolkit::DevelText::EllipsisPosition::END,
+                  0.0f, // lineSpacing
+                  0.0f  // characterSpacing
+  );
 
   LogicalModelPtr logicalModel = textModel->mLogicalModel;
-  VisualModelPtr visualModel = textModel->mVisualModel;
+  VisualModelPtr  visualModel  = textModel->mVisualModel;
 
-  for( unsigned int index = 0u; index < data.numberOfIndices; ++index )
+  for(unsigned int index = 0u; index < data.numberOfIndices; ++index)
   {
     // Check the current cached bidi line index. (Check it before call the GetLogicalCharacterIndex() method )
-    if( data.cachedBidiLine[index] != logicalModel->mBidirectionalLineIndex )
+    if(data.cachedBidiLine[index] != logicalModel->mBidirectionalLineIndex)
     {
       std::cout << "  index : " << index << ", different cached bidi index : " << logicalModel->mBidirectionalLineIndex << ", expected : " << data.cachedBidiLine[index] << std::endl;
       return false;
     }
 
-    const bool fetched = logicalModel->FetchBidirectionalLineInfo( index );
-    const Character logicalIndex = fetched ? logicalModel->GetLogicalCharacterIndex( index ) : index;
+    const bool      fetched      = logicalModel->FetchBidirectionalLineInfo(index);
+    const Character logicalIndex = fetched ? logicalModel->GetLogicalCharacterIndex(index) : index;
 
-    if( data.visualToLogical[index] != logicalIndex )
+    if(data.visualToLogical[index] != logicalIndex)
     {
       std::cout << "  visual index : " << index << ", different logical index : " << logicalIndex << ", expected : " << data.visualToLogical[index] << std::endl;
       return false;
@@ -319,70 +326,72 @@ bool GetLogicalCharacterIndexTest( const GetLogicalCharacterIndexData& data )
   return true;
 }
 
-bool GetLogicalCursorIndexTest( const GetLogicalCursorIndexData& data )
+bool GetLogicalCursorIndexTest(const GetLogicalCursorIndexData& data)
 {
-  tet_printf( "  testing : %s\n", data.description.c_str() );
+  tet_printf("  testing : %s\n", data.description.c_str());
 
   // Load some fonts.
   TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
-  fontClient.SetDpi( 96u, 96u );
+  fontClient.SetDpi(96u, 96u);
 
-  char* pathNamePtr = get_current_dir_name();
-  const std::string pathName( pathNamePtr );
-  free( pathNamePtr );
+  char*             pathNamePtr = get_current_dir_name();
+  const std::string pathName(pathNamePtr);
+  free(pathNamePtr);
 
-  fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
-  fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
+  fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf");
+  fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf");
 
   // Create the model.
-  ModelPtr textModel;
+  ModelPtr   textModel;
   MetricsPtr metrics;
-  Size layoutSize;
+  Size       layoutSize;
 
   // Create the model with the whole text.
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  if( 0u != data.numberOfFonts )
+  if(0u != data.numberOfFonts)
   {
-    fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
-                                data.fontDescriptions,
-                                data.fontDescriptions + data.numberOfFonts );
+    fontDescriptionRuns.Insert(fontDescriptionRuns.End(),
+                               data.fontDescriptions,
+                               data.fontDescriptions + data.numberOfFonts);
   }
 
   const LayoutOptions options;
-  CreateTextModel( data.text,
-                   data.textArea,
-                   fontDescriptionRuns,
-                   options,
-                   layoutSize,
-                   textModel,
-                   metrics,
-                   false,
-                   LineWrap::WORD,
-                   false,
-                   Toolkit::DevelText::EllipsisPosition::END,
-                   0.f );
+  CreateTextModel(data.text,
+                  data.textArea,
+                  fontDescriptionRuns,
+                  options,
+                  layoutSize,
+                  textModel,
+                  metrics,
+                  false,
+                  LineWrap::WORD,
+                  false,
+                  Toolkit::DevelText::EllipsisPosition::END,
+                  0.0f, // lineSpacing
+                  0.0f  // characterSpacing
+  );
 
   LogicalModelPtr logicalModel = textModel->mLogicalModel;
-  VisualModelPtr visualModel = textModel->mVisualModel;
+  VisualModelPtr  visualModel  = textModel->mVisualModel;
 
-  for( unsigned int index = 0u; index < data.numberOfIndices; ++index )
+  for(unsigned int index = 0u; index < data.numberOfIndices; ++index)
   {
-    const bool fetched = logicalModel->FetchBidirectionalLineInfo( data.characterIndex[index] );
-    tet_printf("  fetched %d, line index %d, expected line index %d\n", fetched, logicalModel->mBidirectionalLineIndex, data.cachedBidiLine[index] );
+    const bool fetched = logicalModel->FetchBidirectionalLineInfo(data.characterIndex[index]);
+    tet_printf("  fetched %d, line index %d, expected line index %d\n", fetched, logicalModel->mBidirectionalLineIndex, data.cachedBidiLine[index]);
 
-    if( logicalModel->mBidirectionalLineIndex != data.cachedBidiLine[index] )
+    if(logicalModel->mBidirectionalLineIndex != data.cachedBidiLine[index])
     {
-      tet_printf( "  test : %d, different cached line index : %d, expected : %d\n", index, logicalModel->mBidirectionalLineIndex, data.cachedBidiLine[index] );
+      tet_printf("  test : %d, different cached line index : %d, expected : %d\n", index, logicalModel->mBidirectionalLineIndex, data.cachedBidiLine[index]);
       return false;
     }
 
     const CharacterIndex visualCharacterIndex = data.visualCursorIndex[index];
-    const CharacterIndex logicalCursorIndex = fetched ? logicalModel->GetLogicalCursorIndex( visualCharacterIndex ) : visualCharacterIndex;
+    const CharacterIndex logicalCursorIndex   = fetched ? logicalModel->GetLogicalCursorIndex(visualCharacterIndex) : visualCharacterIndex;
     tet_printf("  visual index %d, logical index %d\n", visualCharacterIndex, logicalCursorIndex);
 
-    if( logicalCursorIndex != data.logicalCursorIndex[index] )
+    if(logicalCursorIndex != data.logicalCursorIndex[index])
     {
-      tet_printf( "  test : %d, visual index : %d, different logical cursor index :%d, expected : %d\n", index, visualCharacterIndex, logicalCursorIndex, data.logicalCursorIndex[index] );
+      tet_printf("  test : %d, visual index : %d, different logical cursor index :%d, expected : %d\n", index, visualCharacterIndex, logicalCursorIndex, data.logicalCursorIndex[index]);
       return false;
     }
   }
@@ -406,67 +415,67 @@ int UtcDaliCreateParagraph(void)
 {
   tet_infoline(" UtcDaliCreateParagraph");
 
-  unsigned int paragraphsIndices01[] = { 0u };
-  unsigned int paragraphsNumberOfCharacters01[] = { 0u };
-  unsigned int paragraphsIndices02[] = { 0u, 12u, 17u };
-  unsigned int paragraphsNumberOfCharacters02[] = { 12u, 5u, 1u };
-  unsigned int paragraphsIndices03[] = { 0u, 12u, 17u, 34u };
-  unsigned int paragraphsNumberOfCharacters03[] = { 12u, 5u, 17u ,1u };
+  unsigned int paragraphsIndices01[]            = {0u};
+  unsigned int paragraphsNumberOfCharacters01[] = {0u};
+  unsigned int paragraphsIndices02[]            = {0u, 12u, 17u};
+  unsigned int paragraphsNumberOfCharacters02[] = {12u, 5u, 1u};
+  unsigned int paragraphsIndices03[]            = {0u, 12u, 17u, 34u};
+  unsigned int paragraphsNumberOfCharacters03[] = {12u, 5u, 17u, 1u};
 
   struct CreateParagraphData data[] =
-  {
-    {
-      "Zero characters",
-      "",
-      0u,
-      0u,
-      0u,
-      paragraphsIndices01,
-      paragraphsNumberOfCharacters01,
-    },
     {
-      "Some paragraphs",
-      "Hello world\ndemo\n\n",
-      0u,
-      18u,
-      3u,
-      paragraphsIndices02,
-      paragraphsNumberOfCharacters02,
-    },
-    {
-      "Some paragraphs. Update the initial paragraphs.",
-      "Hello world\ndemo\nhello world demo\n\n",
-      0u,
-      17u,
-      4u,
-      paragraphsIndices03,
-      paragraphsNumberOfCharacters03,
-    },
-    {
-      "Some paragraphs. Update the mid paragraphs.",
-      "Hello world\ndemo\nhello world demo\n\n",
-      12u,
-      5u,
-      4u,
-      paragraphsIndices03,
-      paragraphsNumberOfCharacters03,
-    },
-    {
-      "Some paragraphs. Update the final paragraphs.",
-      "Hello world\ndemo\nhello world demo\n\n",
-      17u,
-      18u,
-      4u,
-      paragraphsIndices03,
-      paragraphsNumberOfCharacters03,
-    },
-  };
+      {
+        "Zero characters",
+        "",
+        0u,
+        0u,
+        0u,
+        paragraphsIndices01,
+        paragraphsNumberOfCharacters01,
+      },
+      {
+        "Some paragraphs",
+        "Hello world\ndemo\n\n",
+        0u,
+        18u,
+        3u,
+        paragraphsIndices02,
+        paragraphsNumberOfCharacters02,
+      },
+      {
+        "Some paragraphs. Update the initial paragraphs.",
+        "Hello world\ndemo\nhello world demo\n\n",
+        0u,
+        17u,
+        4u,
+        paragraphsIndices03,
+        paragraphsNumberOfCharacters03,
+      },
+      {
+        "Some paragraphs. Update the mid paragraphs.",
+        "Hello world\ndemo\nhello world demo\n\n",
+        12u,
+        5u,
+        4u,
+        paragraphsIndices03,
+        paragraphsNumberOfCharacters03,
+      },
+      {
+        "Some paragraphs. Update the final paragraphs.",
+        "Hello world\ndemo\nhello world demo\n\n",
+        17u,
+        18u,
+        4u,
+        paragraphsIndices03,
+        paragraphsNumberOfCharacters03,
+      },
+    };
   const unsigned int numberOfTests = 5u;
 
-  for( unsigned int index = 0u; index < numberOfTests; ++index )
+  for(unsigned int index = 0u; index < numberOfTests; ++index)
   {
     ToolkitTestApplication application;
-    if( !CreateParagraphTest( data[index] ) )
+    if(!CreateParagraphTest(data[index]))
     {
       tet_result(TET_FAIL);
     }
@@ -481,60 +490,52 @@ int UtcDaliFindParagraph(void)
   tet_infoline(" UtcDaliFindParagraph");
 
   unsigned int paragraphs01[] = {};
-  unsigned int paragraphs02[] = { 0u, 1u, 2u };
-  unsigned int paragraphs03[] = { 0u };
-  unsigned int paragraphs04[] = { 1u };
-  unsigned int paragraphs05[] = { 0u, 1u, 2u };
+  unsigned int paragraphs02[] = {0u, 1u, 2u};
+  unsigned int paragraphs03[] = {0u};
+  unsigned int paragraphs04[] = {1u};
+  unsigned int paragraphs05[] = {0u, 1u, 2u};
 
   struct FindParagraphData data[] =
-  {
-    {
-      "Zero characters",
-      "",
-      0u,
-      100u,
-      0u,
-      paragraphs01,
-    },
-    {
-      "Some paragraphs",
-      "Hello world\ndemo\n\n",
-      0u,
-      18u,
-      3u,
-      paragraphs02
-    },
     {
-      "Some paragraphs",
-      "Hello world\ndemo\n\n",
-      0u,
-      12u,
-      1u,
-      paragraphs03
-    },
-    {
-      "Some paragraphs",
-      "Hello world\ndemo\n\n",
-      12u,
-      5u,
-      1u,
-      paragraphs04
-    },
-    {
-      "Some paragraphs",
-      "Hello world\ndemo\n\n",
-      3u,
-      15u,
-      3u,
-      paragraphs05
-    },
-  };
+      {
+        "Zero characters",
+        "",
+        0u,
+        100u,
+        0u,
+        paragraphs01,
+      },
+      {"Some paragraphs",
+       "Hello world\ndemo\n\n",
+       0u,
+       18u,
+       3u,
+       paragraphs02},
+      {"Some paragraphs",
+       "Hello world\ndemo\n\n",
+       0u,
+       12u,
+       1u,
+       paragraphs03},
+      {"Some paragraphs",
+       "Hello world\ndemo\n\n",
+       12u,
+       5u,
+       1u,
+       paragraphs04},
+      {"Some paragraphs",
+       "Hello world\ndemo\n\n",
+       3u,
+       15u,
+       3u,
+       paragraphs05},
+    };
   const unsigned int numberOfTests = 5u;
 
-  for( unsigned int index = 0u; index < numberOfTests; ++index )
+  for(unsigned int index = 0u; index < numberOfTests; ++index)
   {
     ToolkitTestApplication application;
-    if( !FindParagraphTest( data[index] ) )
+    if(!FindParagraphTest(data[index]))
     {
       tet_result(TET_FAIL);
     }
@@ -548,51 +549,44 @@ int UtcDaliFetchBidirectionalLineInfo(void)
 {
   tet_infoline(" UtcDaliFetchBidirectionalLineInfo");
 
-  unsigned int logicalIndex01[] = { 0u };
-  bool fetched01[] = { false };
-  unsigned int bidiLine01[] = { 0u };
+  unsigned int logicalIndex01[] = {0u};
+  bool         fetched01[]      = {false};
+  unsigned int bidiLine01[]     = {0u};
 
-  unsigned int logicalIndex02[] = { 3u };
-  bool fetched02[] = { false };
-  unsigned int bidiLine02[] = { 0u };
+  unsigned int logicalIndex02[] = {3u};
+  bool         fetched02[]      = {false};
+  unsigned int bidiLine02[]     = {0u};
 
-  unsigned int logicalIndex03[] = { 0u, 11u, 12u, 21u, 22u, 33u, 34u, 43u, 44u, 54u};
-  bool fetched03[] = { false, false, true, true, false, false, true, true, false, false };
-  unsigned int bidiLine03[] = { 0u, 0u, 0u, 0u, 0u, 0u, 1u, 1u, 0u, 0u };
+  unsigned int logicalIndex03[] = {0u, 11u, 12u, 21u, 22u, 33u, 34u, 43u, 44u, 54u};
+  bool         fetched03[]      = {false, false, true, true, false, false, true, true, false, false};
+  unsigned int bidiLine03[]     = {0u, 0u, 0u, 0u, 0u, 0u, 1u, 1u, 0u, 0u};
 
   struct FetchBidirectionalLineInfoData data[] =
-  {
-    {
-      "Void text",
-      "",
-      1u,
-      logicalIndex01,
-      fetched01,
-      bidiLine01
-    },
     {
-      "LTR text",
-      "Hello world",
-      1u,
-      logicalIndex02,
-      fetched02,
-      bidiLine02
-    },
-    {
-      "Bidi text",
-      "Hello world\nשלום עולם\nhello world\nשלום עולם\nhello world",
-      10u,
-      logicalIndex03,
-      fetched03,
-      bidiLine03
-    }
-  };
+      {"Void text",
+       "",
+       1u,
+       logicalIndex01,
+       fetched01,
+       bidiLine01},
+      {"LTR text",
+       "Hello world",
+       1u,
+       logicalIndex02,
+       fetched02,
+       bidiLine02},
+      {"Bidi text",
+       "Hello world\nשלום עולם\nhello world\nשלום עולם\nhello world",
+       10u,
+       logicalIndex03,
+       fetched03,
+       bidiLine03}};
   const unsigned int numberOfTests = 3u;
 
-  for( unsigned int index = 0u; index < numberOfTests; ++index )
+  for(unsigned int index = 0u; index < numberOfTests; ++index)
   {
     ToolkitTestApplication application;
-    if( !FetchBidirectionalLineInfoTest( data[index] ) )
+    if(!FetchBidirectionalLineInfoTest(data[index]))
     {
       tet_result(TET_FAIL);
     }
@@ -607,183 +601,159 @@ int UtcDaliGetLogicalCharacterIndex(void)
   tet_infoline(" UtcDaliSetVisualToLogicalMap");
 
   unsigned int visualToLogical01[] = {};
-  unsigned int  cachedBidiLine01[] = {};
-  unsigned int visualToLogical02[] = { 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 9u, 10u };
-  unsigned int  cachedBidiLine02[] = { 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,  0u };
-  unsigned int visualToLogical03[] = { 12u, 11u, 10u, 9u, 8u, 7u, 6u, 5u, 4u, 3u, 2u, 1u, 0u };
-  unsigned int  cachedBidiLine03[] = {  0u,  0u,  0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u };
-
-  unsigned int visualToLogical04[] = { 0u,  1u,  2u,  3u,  4u,  5u,  6u,  7u,  8u,  9u, 10u, 11u, 12u, 25u, 24u, 23u, 22u, 21u, 20u, 19u, 18u, 17u, 16u, 15u, 14u, 13u, 26u, 27u, 28u, 29u, 30u, 31u, 32u, 33u, 34u, 35u, 36u, 37u, 38u, 39u, 81u, 80u, 79u, 78u, 77u, 76u, 75u, 74u, 73u, 72u, 71u, 70u, 69u, 68u, 67u, 66u, 55u, 56u, 57u, 58u, 59u, 60u, 61u, 62u, 63u, 64u, 65u, 54u, 53u, 52u, 51u, 50u, 49u, 48u, 47u, 46u, 45u, 44u, 43u, 42u, 41u, 40u, 95u, 94u, 93u, 92u, 91u, 90u, 89u, 88u, 87u, 86u, 85u, 84u, 83u, 82u, 96u, 97u, 98u, 99u, 100u, 101u, 102u, 103u, 104u, 105u, 106u };
-  unsigned int  cachedBidiLine04[] = { 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
-                                       0u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u,
-                                       1u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u };
-
-// size 300, 300
-// LO   H  e  l  l  o  _  w  o  r  l  d  ,  _  م  ر  ح  ب   ا  _  ب  ا  ل  ع   ا  ل  م  ,   _  h  e  l  l  o  _  w  o  r  l  d \n
-//      0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
-// VO   H  e  l  l  o  _  w  o  r  l  d  ,  _  م  ل  ا  ع   ل  ا  ب  _  ا   ب  ح  ر  م  ,   _  h  e  l  l  o  _  w  o  r  l  d \n
-//      0  1  2  3  4  5  6  7  8  9 10 11 12 25 24 23 22 21 20 19 18 17 16 15 14 13 26 27 28 29 30 31 32 33 34 35 36 37 38 39
-
-// LO   م  ر  ح  ب   ا  _  ب  ا  ل  ع   ا  ل  م  ,  _  h  e  l  l  o  _  w  o  r  l  d   ,  _  م  ر  ح  ب   ا  _  ب  ا  ل  ع   ا  ل  م  \n
-//     40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
-// VO  \n  م  ل  ا   ع  ل  ا  ب  _  ا   ب  ح  ر  م  _  ,  h  e  l  l  o  _  w  o  r  l  d   _  ,  م  ل  ا   ع  ل  ا  ب  _  ا   ب  ح  ر  م
-//     81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 55 56 57 58 59 60 61 62 63 64 65 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40
-
-// LO   م  ر  ح  ب   ا  _  ب  ا  ل  ع   ا  ل  م  \n
-//     82 83 84 85 86 87 88 89 90 91 92 93 94 95
-// VO  \n  م  ل  ا  ع  ل   ا  ب  _  ا   ب  ح  ر  م
-//     95 94 93 92 91 90 89 88 87 86 85 84 83 82
-
-
-// LO   h   e   l   l   o   _   w   o   r   l   d
-//     96  97  98  99 100 101 102 103 104 105 106
-// VO   h   e   l   l   o   _   w   o   r   l   d
-//     96  97  98  99 100 101 102 103 104 105 106
-
-  unsigned int visualToLogical05[] = { 0u,  1u,  2u,  3u,  4u,  5u,  6u,  7u,  8u,  9u, 10u, 11u, 12u, 25u, 24u, 23u, 22u, 21u, 20u, 19u, 18u, 17u, 16u, 15u, 14u, 13u, 26u, 27u, 28u, 29u, 30u, 31u, 32u, 33u, 34u, 35u, 36u, 37u, 38u, 39u, 67u, 66u, 55u, 56u, 57u, 58u, 59u, 60u, 61u, 62u, 63u, 64u, 65u, 54u, 53u, 52u, 51u, 50u, 49u, 48u, 47u, 46u, 45u, 44u, 43u, 42u, 41u, 40u, 81u, 80u, 79u, 78u, 77u, 76u, 75u, 74u, 73u, 72u, 71u, 70u, 69u, 68u, 95u, 94u, 93u, 92u, 91u, 90u, 89u, 88u, 87u, 86u, 85u, 84u, 83u, 82u, 96u, 97u, 98u, 99u, 100u, 101u, 102u, 103u, 104u, 105u, 106u };
-  unsigned int  cachedBidiLine05[] = { 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u };
-
-// size 300, 300
-// LO   H  e  l  l  o  _  w  o  r  l  d  ,  _  م  ر  ح  ب   ا  _  ب  ا  ل  ع   ا  ل  م  ,   _
-//      0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
-// VO   H  e  l  l  o  _  w  o  r  l  d  ,  _  م  ل  ا  ع   ل  ا  ب  _  ا   ب  ح  ر  م  ,   _
-//      0  1  2  3  4  5  6  7  8  9 10 11 12 25 24 23 22 21 20 19 18 17 16 15 14 13 26 27
-
-// LO    h  e  l  l  o  _  w  o  r  l  d \n
-//      28 29 30 31 32 33 34 35 36 37 38 39
-// VO    h  e  l  l  o  _  w  o  r  l  d \n
-//      28 29 30 31 32 33 34 35 36 37 38 39
-
-// LO   م  ر  ح  ب   ا  _  ب  ا  ل  ع   ا  ل  م  ,  _  h  e  l  l  o  _  w  o  r  l  d   ,  _
-//     40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
-// VO  _  ,  h  e  l  l  o  _  w  o  r  l  d   _  ,  م  ل  ا   ع  ل  ا  ب  _  ا   ب  ح  ر  م
-//     67 66 55 56 57 58 59 60 61 62 63 64 65 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40
-
-// LO   م  ر  ح  ب   ا  _  ب  ا  ل  ع   ا  ل  م  \n
-//     68 69 70 71 72 73 74 75 76 77 78 79 80 81
-// VO  \n  م  ل  ا   ع  ل  ا  ب  _  ا   ب  ح  ر  م
-//     81 80 79 78 77 76 75 74 73 72 71 70 69 68
-
-// LO   م  ر  ح  ب   ا  _  ب  ا  ل  ع   ا  ل  م  \n
-//     82 83 84 85 86 87 88 89 90 91 92 93 94 95
-// VO  \n  م  ل  ا  ع  ل   ا  ب  _  ا   ب  ح  ر  م
-//     95 94 93 92 91 90 89 88 87 86 85 84 83 82
-
-
-// LO   h   e   l   l   o   _   w   o   r   l   d
-//     96  97  98  99 100 101 102 103 104 105 106
-// VO   h   e   l   l   o   _   w   o   r   l   d
-//     96  97  98  99 100 101 102 103 104 105 106
-
-  unsigned int visualToLogical06[] = { 0u,  1u,  2u,  3u,  4u,  5u,  6u,  7u,  8u,  9u, 10u, 11u, 12u, 25u, 24u, 23u, 22u, 21u, 20u, 19u, 18u, 17u, 16u, 15u, 14u, 13u, 26u, 27u, 28u, 29u, 30u, 31u, 32u, 33u, 34u, 35u, 36u, 37u, 38u, 39u, 54u, 53u, 52u, 51u, 50u, 49u, 48u, 47u, 46u, 45u, 44u, 43u, 42u, 41u, 40u, 67u, 66u, 55u, 56u, 57u, 58u, 59u, 60u, 61u, 62u, 63u, 64u, 65u, 81u, 80u, 79u, 78u, 77u, 76u, 75u, 74u, 73u, 72u, 71u, 70u, 69u, 68u, 95u, 94u, 93u, 92u, 91u, 90u, 89u, 88u, 87u, 86u, 85u, 84u, 83u, 82u, 96u, 97u, 98u, 99u, 100u, 101u, 102u, 103u, 104u, 105u, 106u };
-  unsigned int  cachedBidiLine06[] = { 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
-                                       0u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u,
-                                       1u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u,
-                                       2u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u,
-                                       3u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u,
-                                       4u, 5u, 5u, 5u, 5u, 5u, 5u, 5u, 5u, 5u, 5u, 5u, 5u, 5u,
-                                       5u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u,
-                                       6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u };
-
-// size 100, 600
-// LO   H  e  l  l  o  _  w  o  r  l  d  ,  _
-//      0  1  2  3  4  5  6  7  8  9 10 11 12
-// VO   H  e  l  l  o  _  w  o  r  l  d  ,  _
-//      0  1  2  3  4  5  6  7  8  9 10 11 12
-
-// LO    م  ر  ح  ب   ا  _  ب  ا  ل  ع   ا  ل  م  ,   _
-//      13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
-// VO    م  ل  ا  ع   ل  ا  ب  _  ا   ب  ح  ر  م  ,   _
-//      25 24 23 22 21 20 19 18 17 16 15 14 13 26 27
-
-// LO    h  e  l  l  o  _  w  o  r  l  d \n
-//      28 29 30 31 32 33 34 35 36 37 38 39
-// VO    h  e  l  l  o  _  w  o  r  l  d \n
-//      28 29 30 31 32 33 34 35 36 37 38 39
-
-// LO   م  ر  ح  ب   ا  _  ب  ا  ل  ع   ا  ل  م  ,  _
-//     40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
-// VO   _  ,  م  ل  ا   ع  ل  ا  ب  _  ا   ب  ح  ر  م
-//     54 53 52 51 50 49 48 47 46 45 44 43 42 41 40
-
-// LO   h  e  l  l  o  _  w  o  r  l  d   ,  _
-//     55 56 57 58 59 60 61 62 63 64 65 66 67
-// VO   _  ,  h  e  l  l  o  _  w  o  r  l  d
-//     67 66 55 56 57 58 59 60 61 62 63 64 65
-
-// LO   م  ر  ح  ب   ا  _  ب  ا  ل  ع   ا  ل  م  \n
-//     68 69 70 71 72 73 74 75 76 77 78 79 80 81
-// VO  \n  م  ل  ا   ع  ل  ا  ب  _  ا   ب  ح  ر  م
-//     81 80 79 78 77 76 75 74 73 72 71 70 69 68
-
-// LO   م  ر  ح  ب   ا  _  ب  ا  ل  ع   ا  ل  م  \n
-//     82 83 84 85 86 87 88 89 90 91 92 93 94 95
-// VO  \n  م  ل  ا  ع  ل   ا  ب  _  ا   ب  ح  ر  م
-//     95 94 93 92 91 90 89 88 87 86 85 84 83 82
-
-
-// LO   h   e   l   l   o   _   w   o   r   l   d
-//     96  97  98  99 100 101 102 103 104 105 106
-// VO   h   e   l   l   o   _   w   o   r   l   d
-//     96  97  98  99 100 101 102 103 104 105 106
+  unsigned int cachedBidiLine01[]  = {};
+  unsigned int visualToLogical02[] = {0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 9u, 10u};
+  unsigned int cachedBidiLine02[]  = {0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u};
+  unsigned int visualToLogical03[] = {12u, 11u, 10u, 9u, 8u, 7u, 6u, 5u, 4u, 3u, 2u, 1u, 0u};
+  unsigned int cachedBidiLine03[]  = {0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u};
+
+  unsigned int visualToLogical04[] = {0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 9u, 10u, 11u, 12u, 25u, 24u, 23u, 22u, 21u, 20u, 19u, 18u, 17u, 16u, 15u, 14u, 13u, 26u, 27u, 28u, 29u, 30u, 31u, 32u, 33u, 34u, 35u, 36u, 37u, 38u, 39u, 81u, 80u, 79u, 78u, 77u, 76u, 75u, 74u, 73u, 72u, 71u, 70u, 69u, 68u, 67u, 66u, 55u, 56u, 57u, 58u, 59u, 60u, 61u, 62u, 63u, 64u, 65u, 54u, 53u, 52u, 51u, 50u, 49u, 48u, 47u, 46u, 45u, 44u, 43u, 42u, 41u, 40u, 95u, 94u, 93u, 92u, 91u, 90u, 89u, 88u, 87u, 86u, 85u, 84u, 83u, 82u, 96u, 97u, 98u, 99u, 100u, 101u, 102u, 103u, 104u, 105u, 106u};
+  unsigned int cachedBidiLine04[]  = {0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u};
+
+  // size 300, 300
+  // LO   H  e  l  l  o  _  w  o  r  l  d  ,  _  م  ر  ح  ب   ا  _  ب  ا  ل  ع   ا  ل  م  ,   _  h  e  l  l  o  _  w  o  r  l  d \n
+  //      0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
+  // VO   H  e  l  l  o  _  w  o  r  l  d  ,  _  م  ل  ا  ع   ل  ا  ب  _  ا   ب  ح  ر  م  ,   _  h  e  l  l  o  _  w  o  r  l  d \n
+  //      0  1  2  3  4  5  6  7  8  9 10 11 12 25 24 23 22 21 20 19 18 17 16 15 14 13 26 27 28 29 30 31 32 33 34 35 36 37 38 39
+
+  // LO   م  ر  ح  ب   ا  _  ب  ا  ل  ع   ا  ل  م  ,  _  h  e  l  l  o  _  w  o  r  l  d   ,  _  م  ر  ح  ب   ا  _  ب  ا  ل  ع   ا  ل  م  \n
+  //     40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
+  // VO  \n  م  ل  ا   ع  ل  ا  ب  _  ا   ب  ح  ر  م  _  ,  h  e  l  l  o  _  w  o  r  l  d   _  ,  م  ل  ا   ع  ل  ا  ب  _  ا   ب  ح  ر  م
+  //     81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 55 56 57 58 59 60 61 62 63 64 65 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40
+
+  // LO   م  ر  ح  ب   ا  _  ب  ا  ل  ع   ا  ل  م  \n
+  //     82 83 84 85 86 87 88 89 90 91 92 93 94 95
+  // VO  \n  م  ل  ا  ع  ل   ا  ب  _  ا   ب  ح  ر  م
+  //     95 94 93 92 91 90 89 88 87 86 85 84 83 82
+
+  // LO   h   e   l   l   o   _   w   o   r   l   d
+  //     96  97  98  99 100 101 102 103 104 105 106
+  // VO   h   e   l   l   o   _   w   o   r   l   d
+  //     96  97  98  99 100 101 102 103 104 105 106
+
+  unsigned int visualToLogical05[] = {0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 9u, 10u, 11u, 12u, 25u, 24u, 23u, 22u, 21u, 20u, 19u, 18u, 17u, 16u, 15u, 14u, 13u, 26u, 27u, 28u, 29u, 30u, 31u, 32u, 33u, 34u, 35u, 36u, 37u, 38u, 39u, 67u, 66u, 55u, 56u, 57u, 58u, 59u, 60u, 61u, 62u, 63u, 64u, 65u, 54u, 53u, 52u, 51u, 50u, 49u, 48u, 47u, 46u, 45u, 44u, 43u, 42u, 41u, 40u, 81u, 80u, 79u, 78u, 77u, 76u, 75u, 74u, 73u, 72u, 71u, 70u, 69u, 68u, 95u, 94u, 93u, 92u, 91u, 90u, 89u, 88u, 87u, 86u, 85u, 84u, 83u, 82u, 96u, 97u, 98u, 99u, 100u, 101u, 102u, 103u, 104u, 105u, 106u};
+  unsigned int cachedBidiLine05[]  = {0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u};
+
+  // size 300, 300
+  // LO   H  e  l  l  o  _  w  o  r  l  d  ,  _  م  ر  ح  ب   ا  _  ب  ا  ل  ع   ا  ل  م  ,   _
+  //      0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
+  // VO   H  e  l  l  o  _  w  o  r  l  d  ,  _  م  ل  ا  ع   ل  ا  ب  _  ا   ب  ح  ر  م  ,   _
+  //      0  1  2  3  4  5  6  7  8  9 10 11 12 25 24 23 22 21 20 19 18 17 16 15 14 13 26 27
+
+  // LO    h  e  l  l  o  _  w  o  r  l  d \n
+  //      28 29 30 31 32 33 34 35 36 37 38 39
+  // VO    h  e  l  l  o  _  w  o  r  l  d \n
+  //      28 29 30 31 32 33 34 35 36 37 38 39
+
+  // LO   م  ر  ح  ب   ا  _  ب  ا  ل  ع   ا  ل  م  ,  _  h  e  l  l  o  _  w  o  r  l  d   ,  _
+  //     40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
+  // VO  _  ,  h  e  l  l  o  _  w  o  r  l  d   _  ,  م  ل  ا   ع  ل  ا  ب  _  ا   ب  ح  ر  م
+  //     67 66 55 56 57 58 59 60 61 62 63 64 65 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40
+
+  // LO   م  ر  ح  ب   ا  _  ب  ا  ل  ع   ا  ل  م  \n
+  //     68 69 70 71 72 73 74 75 76 77 78 79 80 81
+  // VO  \n  م  ل  ا   ع  ل  ا  ب  _  ا   ب  ح  ر  م
+  //     81 80 79 78 77 76 75 74 73 72 71 70 69 68
+
+  // LO   م  ر  ح  ب   ا  _  ب  ا  ل  ع   ا  ل  م  \n
+  //     82 83 84 85 86 87 88 89 90 91 92 93 94 95
+  // VO  \n  م  ل  ا  ع  ل   ا  ب  _  ا   ب  ح  ر  م
+  //     95 94 93 92 91 90 89 88 87 86 85 84 83 82
+
+  // LO   h   e   l   l   o   _   w   o   r   l   d
+  //     96  97  98  99 100 101 102 103 104 105 106
+  // VO   h   e   l   l   o   _   w   o   r   l   d
+  //     96  97  98  99 100 101 102 103 104 105 106
+
+  unsigned int visualToLogical06[] = {0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 9u, 10u, 11u, 12u, 25u, 24u, 23u, 22u, 21u, 20u, 19u, 18u, 17u, 16u, 15u, 14u, 13u, 26u, 27u, 28u, 29u, 30u, 31u, 32u, 33u, 34u, 35u, 36u, 37u, 38u, 39u, 54u, 53u, 52u, 51u, 50u, 49u, 48u, 47u, 46u, 45u, 44u, 43u, 42u, 41u, 40u, 67u, 66u, 55u, 56u, 57u, 58u, 59u, 60u, 61u, 62u, 63u, 64u, 65u, 81u, 80u, 79u, 78u, 77u, 76u, 75u, 74u, 73u, 72u, 71u, 70u, 69u, 68u, 95u, 94u, 93u, 92u, 91u, 90u, 89u, 88u, 87u, 86u, 85u, 84u, 83u, 82u, 96u, 97u, 98u, 99u, 100u, 101u, 102u, 103u, 104u, 105u, 106u};
+  unsigned int cachedBidiLine06[]  = {0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 5u, 5u, 5u, 5u, 5u, 5u, 5u, 5u, 5u, 5u, 5u, 5u, 5u, 5u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u};
+
+  // size 100, 600
+  // LO   H  e  l  l  o  _  w  o  r  l  d  ,  _
+  //      0  1  2  3  4  5  6  7  8  9 10 11 12
+  // VO   H  e  l  l  o  _  w  o  r  l  d  ,  _
+  //      0  1  2  3  4  5  6  7  8  9 10 11 12
+
+  // LO    م  ر  ح  ب   ا  _  ب  ا  ل  ع   ا  ل  م  ,   _
+  //      13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
+  // VO    م  ل  ا  ع   ل  ا  ب  _  ا   ب  ح  ر  م  ,   _
+  //      25 24 23 22 21 20 19 18 17 16 15 14 13 26 27
+
+  // LO    h  e  l  l  o  _  w  o  r  l  d \n
+  //      28 29 30 31 32 33 34 35 36 37 38 39
+  // VO    h  e  l  l  o  _  w  o  r  l  d \n
+  //      28 29 30 31 32 33 34 35 36 37 38 39
+
+  // LO   م  ر  ح  ب   ا  _  ب  ا  ل  ع   ا  ل  م  ,  _
+  //     40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
+  // VO   _  ,  م  ل  ا   ع  ل  ا  ب  _  ا   ب  ح  ر  م
+  //     54 53 52 51 50 49 48 47 46 45 44 43 42 41 40
+
+  // LO   h  e  l  l  o  _  w  o  r  l  d   ,  _
+  //     55 56 57 58 59 60 61 62 63 64 65 66 67
+  // VO   _  ,  h  e  l  l  o  _  w  o  r  l  d
+  //     67 66 55 56 57 58 59 60 61 62 63 64 65
+
+  // LO   م  ر  ح  ب   ا  _  ب  ا  ل  ع   ا  ل  م  \n
+  //     68 69 70 71 72 73 74 75 76 77 78 79 80 81
+  // VO  \n  م  ل  ا   ع  ل  ا  ب  _  ا   ب  ح  ر  م
+  //     81 80 79 78 77 76 75 74 73 72 71 70 69 68
+
+  // LO   م  ر  ح  ب   ا  _  ب  ا  ل  ع   ا  ل  م  \n
+  //     82 83 84 85 86 87 88 89 90 91 92 93 94 95
+  // VO  \n  م  ل  ا  ع  ل   ا  ب  _  ا   ب  ح  ر  م
+  //     95 94 93 92 91 90 89 88 87 86 85 84 83 82
+
+  // LO   h   e   l   l   o   _   w   o   r   l   d
+  //     96  97  98  99 100 101 102 103 104 105 106
+  // VO   h   e   l   l   o   _   w   o   r   l   d
+  //     96  97  98  99 100 101 102 103 104 105 106
 
   struct GetLogicalCharacterIndexData data[] =
-  {
-    {
-      "Zero characters text",
-      "",
-      Size( 300.f, 300.f ),
-      0u,
-      visualToLogical01,
-      cachedBidiLine01
-    },
-    {
-      "Left to right text only",
-      "Hello world",
-      Size( 300.f, 300.f ),
-      11u,
-      visualToLogical02,
-      cachedBidiLine02
-    },
     {
-      "Right to left text only",
-      "مرحبا بالعالم",
-      Size( 300.f, 300.f ),
-      13u,
-      visualToLogical03,
-      cachedBidiLine03
-    },
-    {
-      "Mix of left to right and right to left text.",
-      "Hello world, مرحبا بالعالم, hello world\nمرحبا بالعالم, hello world, مرحبا بالعالم\nمرحبا بالعالم\nhello world",
-      Size( 300.f, 300.f ),
-      107u,
-      visualToLogical04,
-      cachedBidiLine04
-    },
-    {
-      "Mix of left to right and right to left text.",
-      "Hello world, مرحبا بالعالم, hello world\nمرحبا بالعالم, hello world, مرحبا بالعالم\nمرحبا بالعالم\nhello world",
-      Size( 200.f, 400.f ),
-      107u,
-      visualToLogical05,
-      cachedBidiLine05
-    },
-    {
-      "Mix of left to right and right to left text.",
-      "Hello world, مرحبا بالعالم, hello world\nمرحبا بالعالم, hello world, مرحبا بالعالم\nمرحبا بالعالم\nhello world",
-      Size( 100.f, 600.f ),
-      107u,
-      visualToLogical06,
-      cachedBidiLine06
-    },
-  };
+      {"Zero characters text",
+       "",
+       Size(300.f, 300.f),
+       0u,
+       visualToLogical01,
+       cachedBidiLine01},
+      {"Left to right text only",
+       "Hello world",
+       Size(300.f, 300.f),
+       11u,
+       visualToLogical02,
+       cachedBidiLine02},
+      {"Right to left text only",
+       "مرحبا بالعالم",
+       Size(300.f, 300.f),
+       13u,
+       visualToLogical03,
+       cachedBidiLine03},
+      {"Mix of left to right and right to left text.",
+       "Hello world, مرحبا بالعالم, hello world\nمرحبا بالعالم, hello world, مرحبا بالعالم\nمرحبا بالعالم\nhello world",
+       Size(300.f, 300.f),
+       107u,
+       visualToLogical04,
+       cachedBidiLine04},
+      {"Mix of left to right and right to left text.",
+       "Hello world, مرحبا بالعالم, hello world\nمرحبا بالعالم, hello world, مرحبا بالعالم\nمرحبا بالعالم\nhello world",
+       Size(200.f, 400.f),
+       107u,
+       visualToLogical05,
+       cachedBidiLine05},
+      {"Mix of left to right and right to left text.",
+       "Hello world, مرحبا بالعالم, hello world\nمرحبا بالعالم, hello world, مرحبا بالعالم\nمرحبا بالعالم\nhello world",
+       Size(100.f, 600.f),
+       107u,
+       visualToLogical06,
+       cachedBidiLine06},
+    };
   const unsigned int numberOfTests = 6u;
 
-  for( unsigned int index = 0u; index < numberOfTests; ++index )
+  for(unsigned int index = 0u; index < numberOfTests; ++index)
   {
     ToolkitTestApplication application;
-    if( !GetLogicalCharacterIndexTest( data[index] ) )
+    if(!GetLogicalCharacterIndexTest(data[index]))
     {
       tet_result(TET_FAIL);
     }
@@ -797,15 +767,13 @@ int UtcDaliGetLogicalCursorIndex(void)
 {
   tet_infoline(" UtcDaliGetLogicalCursorIndex");
 
-  const std::string fontFamily( "TizenSans" );
-  const std::string fontFamilyHebrew( "TizenSansHebrew" );
+  const std::string fontFamily("TizenSans");
+  const std::string fontFamilyHebrew("TizenSansHebrew");
 
-
-
-  unsigned int visualIndex01[] = { 10u };
-  unsigned int characterIndex01[] = { 0u };
-  unsigned int logicalIndex01[] = { 10u };
-  unsigned int bidirectionalLineIndex01[] = { 0u };
+  unsigned int visualIndex01[]            = {10u};
+  unsigned int characterIndex01[]         = {0u};
+  unsigned int logicalIndex01[]           = {10u};
+  unsigned int bidirectionalLineIndex01[] = {0u};
 
   //  0           11
   //   Hello world  \n
@@ -814,390 +782,374 @@ int UtcDaliGetLogicalCursorIndex(void)
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun02;
-  fontDescriptionRun02.characterRun.characterIndex = 0u;
+  fontDescriptionRun02.characterRun.characterIndex     = 0u;
   fontDescriptionRun02.characterRun.numberOfCharacters = 11u;
-  fontDescriptionRun02.familyLength = fontFamily.size();
-  fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
-  memcpy( fontDescriptionRun02.familyName, fontFamily.c_str(), fontDescriptionRun02.familyLength );
+  fontDescriptionRun02.familyLength                    = fontFamily.size();
+  fontDescriptionRun02.familyName                      = new char[fontDescriptionRun02.familyLength];
+  memcpy(fontDescriptionRun02.familyName, fontFamily.c_str(), fontDescriptionRun02.familyLength);
   fontDescriptionRun02.familyDefined = true;
   fontDescriptionRun02.weightDefined = false;
-  fontDescriptionRun02.widthDefined = false;
-  fontDescriptionRun02.slantDefined = false;
-  fontDescriptionRun02.sizeDefined = false;
+  fontDescriptionRun02.widthDefined  = false;
+  fontDescriptionRun02.slantDefined  = false;
+  fontDescriptionRun02.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns02;
-  fontDescriptionRuns02.PushBack( fontDescriptionRun02 );
+  fontDescriptionRuns02.PushBack(fontDescriptionRun02);
 
-  unsigned int visualIndex02[] = { 0u, 16u, 11u, 12u };
-  unsigned int characterIndex02[] = { 0u, 0u, 0u, 0u };
-  unsigned int logicalIndex02[] = { 0u, 16u, 11u, 12u };
-  unsigned int bidirectionalLineIndex02[] = { 0u, 0u, 0u, 0u };
+  unsigned int visualIndex02[]            = {0u, 16u, 11u, 12u};
+  unsigned int characterIndex02[]         = {0u, 0u, 0u, 0u};
+  unsigned int logicalIndex02[]           = {0u, 16u, 11u, 12u};
+  unsigned int bidirectionalLineIndex02[] = {0u, 0u, 0u, 0u};
 
-// LO     H  e  l  l  o  _  w  o  r  l  d  \n
-//       0  1  2  3  4  5  6  7  8  9 10 11  12
-// VO     H  e  l  l  o  _  w  o  r  l  d  \n
+  // LO     H  e  l  l  o  _  w  o  r  l  d  \n
+  //       0  1  2  3  4  5  6  7  8  9 10 11  12
+  // VO     H  e  l  l  o  _  w  o  r  l  d  \n
 
-// LO         ש  ל  ו  ם  _  ע  ו  ל  ם \n
-//          12 13 14 15 16 17 18 19 20 21  22
-// VO     \n  ם  ל  ו  ע _  ם  ו  ל  ש
+  // LO         ש  ל  ו  ם  _  ע  ו  ל  ם \n
+  //          12 13 14 15 16 17 18 19 20 21  22
+  // VO     \n  ם  ל  ו  ע _  ם  ו  ל  ש
 
-// LO      h  e  l  l  o  _  w  o  r  l  d  _  ש  ל  ו  ם  _  ע ו  ל  ם  \n
-//       22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43  44
-// VO      h  e  l  l  o  _  w  o  r  l  d  _  ם  ל  ו  ע  _  ם  ו  ל  ש  \n
-
-// LO      ש  ל  ו  ם  _  ע  ו  ל  ם  _  h  e  l  l  o  _  w  o  r   l  d \n
-//       44 45 46 47 48 49 50 51  52 52 54 55 56 57 58 59 60 61 62 63  64 65 66
-// VO      \n h  e  l  l  o  _  w   o  r  l  d  _  ם  ל  ו  ע  _  ם  ו  ל  ש
+  // LO      h  e  l  l  o  _  w  o  r  l  d  _  ש  ל  ו  ם  _  ע ו  ל  ם  \n
+  //       22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43  44
+  // VO      h  e  l  l  o  _  w  o  r  l  d  _  ם  ל  ו  ע  _  ם  ו  ל  ש  \n
 
+  // LO      ש  ל  ו  ם  _  ע  ו  ל  ם  _  h  e  l  l  o  _  w  o  r   l  d \n
+  //       44 45 46 47 48 49 50 51  52 52 54 55 56 57 58 59 60 61 62 63  64 65 66
+  // VO      \n h  e  l  l  o  _  w   o  r  l  d  _  ם  ל  ו  ע  _  ם  ו  ל  ש
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun0301;
-  fontDescriptionRun0301.characterRun.characterIndex = 0u;
+  fontDescriptionRun0301.characterRun.characterIndex     = 0u;
   fontDescriptionRun0301.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun0301.familyLength = fontFamily.size();
-  fontDescriptionRun0301.familyName = new char[fontDescriptionRun0301.familyLength];
-  memcpy( fontDescriptionRun0301.familyName, fontFamily.c_str(), fontDescriptionRun0301.familyLength );
+  fontDescriptionRun0301.familyLength                    = fontFamily.size();
+  fontDescriptionRun0301.familyName                      = new char[fontDescriptionRun0301.familyLength];
+  memcpy(fontDescriptionRun0301.familyName, fontFamily.c_str(), fontDescriptionRun0301.familyLength);
   fontDescriptionRun0301.familyDefined = true;
   fontDescriptionRun0301.weightDefined = false;
-  fontDescriptionRun0301.widthDefined = false;
-  fontDescriptionRun0301.slantDefined = false;
-  fontDescriptionRun0301.sizeDefined = false;
+  fontDescriptionRun0301.widthDefined  = false;
+  fontDescriptionRun0301.slantDefined  = false;
+  fontDescriptionRun0301.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun0302;
-  fontDescriptionRun0302.characterRun.characterIndex = 12u;
+  fontDescriptionRun0302.characterRun.characterIndex     = 12u;
   fontDescriptionRun0302.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun0302.familyLength = fontFamilyHebrew.size();
-  fontDescriptionRun0302.familyName = new char[fontDescriptionRun0302.familyLength];
-  memcpy( fontDescriptionRun0302.familyName, fontFamilyHebrew.c_str(), fontDescriptionRun0302.familyLength );
+  fontDescriptionRun0302.familyLength                    = fontFamilyHebrew.size();
+  fontDescriptionRun0302.familyName                      = new char[fontDescriptionRun0302.familyLength];
+  memcpy(fontDescriptionRun0302.familyName, fontFamilyHebrew.c_str(), fontDescriptionRun0302.familyLength);
   fontDescriptionRun0302.familyDefined = true;
   fontDescriptionRun0302.weightDefined = false;
-  fontDescriptionRun0302.widthDefined = false;
-  fontDescriptionRun0302.slantDefined = false;
-  fontDescriptionRun0302.sizeDefined = false;
+  fontDescriptionRun0302.widthDefined  = false;
+  fontDescriptionRun0302.slantDefined  = false;
+  fontDescriptionRun0302.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun0303;
-  fontDescriptionRun0303.characterRun.characterIndex = 22u;
+  fontDescriptionRun0303.characterRun.characterIndex     = 22u;
   fontDescriptionRun0303.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun0303.familyLength = fontFamily.size();
-  fontDescriptionRun0303.familyName = new char[fontDescriptionRun0303.familyLength];
-  memcpy( fontDescriptionRun0303.familyName, fontFamily.c_str(), fontDescriptionRun0303.familyLength );
+  fontDescriptionRun0303.familyLength                    = fontFamily.size();
+  fontDescriptionRun0303.familyName                      = new char[fontDescriptionRun0303.familyLength];
+  memcpy(fontDescriptionRun0303.familyName, fontFamily.c_str(), fontDescriptionRun0303.familyLength);
   fontDescriptionRun0303.familyDefined = true;
   fontDescriptionRun0303.weightDefined = false;
-  fontDescriptionRun0303.widthDefined = false;
-  fontDescriptionRun0303.slantDefined = false;
-  fontDescriptionRun0303.sizeDefined = false;
+  fontDescriptionRun0303.widthDefined  = false;
+  fontDescriptionRun0303.slantDefined  = false;
+  fontDescriptionRun0303.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun0304;
-  fontDescriptionRun0304.characterRun.characterIndex = 34u;
+  fontDescriptionRun0304.characterRun.characterIndex     = 34u;
   fontDescriptionRun0304.characterRun.numberOfCharacters = 20u;
-  fontDescriptionRun0304.familyLength = fontFamilyHebrew.size();
-  fontDescriptionRun0304.familyName = new char[fontDescriptionRun0304.familyLength];
-  memcpy( fontDescriptionRun0304.familyName, fontFamilyHebrew.c_str(), fontDescriptionRun0304.familyLength );
+  fontDescriptionRun0304.familyLength                    = fontFamilyHebrew.size();
+  fontDescriptionRun0304.familyName                      = new char[fontDescriptionRun0304.familyLength];
+  memcpy(fontDescriptionRun0304.familyName, fontFamilyHebrew.c_str(), fontDescriptionRun0304.familyLength);
   fontDescriptionRun0304.familyDefined = true;
   fontDescriptionRun0304.weightDefined = false;
-  fontDescriptionRun0304.widthDefined = false;
-  fontDescriptionRun0304.slantDefined = false;
-  fontDescriptionRun0304.sizeDefined = false;
+  fontDescriptionRun0304.widthDefined  = false;
+  fontDescriptionRun0304.slantDefined  = false;
+  fontDescriptionRun0304.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun0305;
-  fontDescriptionRun0305.characterRun.characterIndex = 54u;
+  fontDescriptionRun0305.characterRun.characterIndex     = 54u;
   fontDescriptionRun0305.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun0305.familyLength = fontFamily.size();
-  fontDescriptionRun0305.familyName = new char[fontDescriptionRun0305.familyLength];
-  memcpy( fontDescriptionRun0305.familyName, fontFamily.c_str(), fontDescriptionRun0305.familyLength );
+  fontDescriptionRun0305.familyLength                    = fontFamily.size();
+  fontDescriptionRun0305.familyName                      = new char[fontDescriptionRun0305.familyLength];
+  memcpy(fontDescriptionRun0305.familyName, fontFamily.c_str(), fontDescriptionRun0305.familyLength);
   fontDescriptionRun0305.familyDefined = true;
   fontDescriptionRun0305.weightDefined = false;
-  fontDescriptionRun0305.widthDefined = false;
-  fontDescriptionRun0305.slantDefined = false;
-  fontDescriptionRun0305.sizeDefined = false;
+  fontDescriptionRun0305.widthDefined  = false;
+  fontDescriptionRun0305.slantDefined  = false;
+  fontDescriptionRun0305.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns03;
-  fontDescriptionRuns03.PushBack( fontDescriptionRun0301 );
-  fontDescriptionRuns03.PushBack( fontDescriptionRun0302 );
-  fontDescriptionRuns03.PushBack( fontDescriptionRun0303 );
-  fontDescriptionRuns03.PushBack( fontDescriptionRun0304 );
-  fontDescriptionRuns03.PushBack( fontDescriptionRun0305 );
-
-  unsigned int visualIndex03[] = {  0u,  1u,  2u,  3u,  4u,  5u,  6u,  7u,  8u,  9u, 10u, 11u,
-                                   13u, 14u, 15u, 16u, 17u, 18u, 19u, 20u, 21u, 22u,
-                                   22u, 23u, 24u, 25u, 26u, 27u, 28u, 29u, 30u, 31u, 32u, 33u, 34u, 35u, 36u, 37u, 38u, 39u, 40u, 41u, 42u, 43u,
-                                   45u, 46u, 47u, 48u, 49u, 50u, 51u, 52u, 53u, 54u, 55u, 56u, 57u, 58u, 59u, 60u, 61u, 62u, 63u, 64u, 65u, 66u };
+  fontDescriptionRuns03.PushBack(fontDescriptionRun0301);
+  fontDescriptionRuns03.PushBack(fontDescriptionRun0302);
+  fontDescriptionRuns03.PushBack(fontDescriptionRun0303);
+  fontDescriptionRuns03.PushBack(fontDescriptionRun0304);
+  fontDescriptionRuns03.PushBack(fontDescriptionRun0305);
 
-  unsigned int characterIndex03[] = {  0u,  0u,  0u,  0u,  0u,  0u,  0u,  0u,  0u,  0u,  0u,  0u,
-                                      12u, 12u, 12u, 12u, 12u, 12u, 12u, 12u, 12u, 12u,
-                                      22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u,
-                                      44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u};
+  unsigned int visualIndex03[] = {0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 9u, 10u, 11u, 13u, 14u, 15u, 16u, 17u, 18u, 19u, 20u, 21u, 22u, 22u, 23u, 24u, 25u, 26u, 27u, 28u, 29u, 30u, 31u, 32u, 33u, 34u, 35u, 36u, 37u, 38u, 39u, 40u, 41u, 42u, 43u, 45u, 46u, 47u, 48u, 49u, 50u, 51u, 52u, 53u, 54u, 55u, 56u, 57u, 58u, 59u, 60u, 61u, 62u, 63u, 64u, 65u, 66u};
 
-  unsigned int logicalIndex03[] = {  0u,  1u,  2u,  3u,  4u,  5u,  6u,  7u,  8u,  9u, 10u, 11u,
-                                    21u, 20u, 19u, 18u, 17u, 16u, 15u, 14u, 13u, 12u,
-                                    22u, 23u, 24u, 25u, 26u, 27u, 28u, 29u, 30u, 31u, 32u, 33u, 34u, 42u, 41u, 40u, 39u, 38u, 37u, 36u, 35u, 43u,
-                                    65u, 55u, 56u, 57u, 58u, 59u, 60u, 61u, 62u, 63u, 64u, 54u, 53u, 52u, 51u, 50u, 49u, 48u, 47u, 46u, 45u, 44u };
+  unsigned int characterIndex03[] = {0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 12u, 12u, 12u, 12u, 12u, 12u, 12u, 12u, 12u, 12u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u};
 
-  unsigned int bidirectionalLineIndex03[] = { 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
-                                              0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
-                                              1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u,
-                                              2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u };
+  unsigned int logicalIndex03[] = {0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 9u, 10u, 11u, 21u, 20u, 19u, 18u, 17u, 16u, 15u, 14u, 13u, 12u, 22u, 23u, 24u, 25u, 26u, 27u, 28u, 29u, 30u, 31u, 32u, 33u, 34u, 42u, 41u, 40u, 39u, 38u, 37u, 36u, 35u, 43u, 65u, 55u, 56u, 57u, 58u, 59u, 60u, 61u, 62u, 63u, 64u, 54u, 53u, 52u, 51u, 50u, 49u, 48u, 47u, 46u, 45u, 44u};
 
+  unsigned int bidirectionalLineIndex03[] = {0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u};
 
-// LO     ש  ל  ו  ם  _  ע  ו  ל  ם \n
-//       0  1  2  3  4  5  6  7  8  9 10
-// VO  \n ם  ל  ו  ע  _  ם  ו  ל  ש
+  // LO     ש  ל  ו  ם  _  ע  ו  ל  ם \n
+  //       0  1  2  3  4  5  6  7  8  9 10
+  // VO  \n ם  ל  ו  ע  _  ם  ו  ל  ש
 
-//      h  e  l  l  o  _  w  o  r  l  d  \n
-// LO 10 11 12 13 14 15 16 17 18 19 20 21 22
-//      h  e  l  l  o  _  w  o  r  l  d  \n
+  //      h  e  l  l  o  _  w  o  r  l  d  \n
+  // LO 10 11 12 13 14 15 16 17 18 19 20 21 22
+  //      h  e  l  l  o  _  w  o  r  l  d  \n
 
-//         ש  ל  ו  ם  _  ע  ו  ל  ם _  h  e  l  l  o  _  w  o  r  l  d  \n
-// LO    22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
-//     \n  h  e  l  l  o  _  w  o  r  l  d  _  ם  ל  ו  ע  _  ם  ו  ל  ש
+  //         ש  ל  ו  ם  _  ע  ו  ל  ם _  h  e  l  l  o  _  w  o  r  l  d  \n
+  // LO    22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
+  //     \n  h  e  l  l  o  _  w  o  r  l  d  _  ם  ל  ו  ע  _  ם  ו  ל  ש
 
-//      h  e  l  l  o  _  w  o  r  l  d  _  ש  ל  ו  ם  _  ע  ו  ל  ם \n
-// LO 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
-//      h  e  l  l  o  _  w  o  r  l  d  _  ם  ל  ו  ע  _  ם  ו  ל  ש \n
+  //      h  e  l  l  o  _  w  o  r  l  d  _  ש  ל  ו  ם  _  ע  ו  ל  ם \n
+  // LO 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
+  //      h  e  l  l  o  _  w  o  r  l  d  _  ם  ל  ו  ע  _  ם  ו  ל  ש \n
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun0401;
-  fontDescriptionRun0401.characterRun.characterIndex = 0u;
+  fontDescriptionRun0401.characterRun.characterIndex     = 0u;
   fontDescriptionRun0401.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun0401.familyLength = fontFamilyHebrew.size();
-  fontDescriptionRun0401.familyName = new char[fontDescriptionRun0401.familyLength];
-  memcpy( fontDescriptionRun0401.familyName, fontFamilyHebrew.c_str(), fontDescriptionRun0401.familyLength );
+  fontDescriptionRun0401.familyLength                    = fontFamilyHebrew.size();
+  fontDescriptionRun0401.familyName                      = new char[fontDescriptionRun0401.familyLength];
+  memcpy(fontDescriptionRun0401.familyName, fontFamilyHebrew.c_str(), fontDescriptionRun0401.familyLength);
   fontDescriptionRun0401.familyDefined = true;
   fontDescriptionRun0401.weightDefined = false;
-  fontDescriptionRun0401.widthDefined = false;
-  fontDescriptionRun0401.slantDefined = false;
-  fontDescriptionRun0401.sizeDefined = false;
+  fontDescriptionRun0401.widthDefined  = false;
+  fontDescriptionRun0401.slantDefined  = false;
+  fontDescriptionRun0401.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun0402;
-  fontDescriptionRun0402.characterRun.characterIndex = 10u;
+  fontDescriptionRun0402.characterRun.characterIndex     = 10u;
   fontDescriptionRun0402.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun0402.familyLength = fontFamily.size();
-  fontDescriptionRun0402.familyName = new char[fontDescriptionRun0402.familyLength];
-  memcpy( fontDescriptionRun0402.familyName, fontFamily.c_str(), fontDescriptionRun0402.familyLength );
+  fontDescriptionRun0402.familyLength                    = fontFamily.size();
+  fontDescriptionRun0402.familyName                      = new char[fontDescriptionRun0402.familyLength];
+  memcpy(fontDescriptionRun0402.familyName, fontFamily.c_str(), fontDescriptionRun0402.familyLength);
   fontDescriptionRun0402.familyDefined = true;
   fontDescriptionRun0402.weightDefined = false;
-  fontDescriptionRun0402.widthDefined = false;
-  fontDescriptionRun0402.slantDefined = false;
-  fontDescriptionRun0402.sizeDefined = false;
+  fontDescriptionRun0402.widthDefined  = false;
+  fontDescriptionRun0402.slantDefined  = false;
+  fontDescriptionRun0402.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun0403;
-  fontDescriptionRun0403.characterRun.characterIndex = 22u;
+  fontDescriptionRun0403.characterRun.characterIndex     = 22u;
   fontDescriptionRun0403.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun0403.familyLength = fontFamilyHebrew.size();
-  fontDescriptionRun0403.familyName = new char[fontDescriptionRun0403.familyLength];
-  memcpy( fontDescriptionRun0403.familyName, fontFamilyHebrew.c_str(), fontDescriptionRun0403.familyLength );
+  fontDescriptionRun0403.familyLength                    = fontFamilyHebrew.size();
+  fontDescriptionRun0403.familyName                      = new char[fontDescriptionRun0403.familyLength];
+  memcpy(fontDescriptionRun0403.familyName, fontFamilyHebrew.c_str(), fontDescriptionRun0403.familyLength);
   fontDescriptionRun0403.familyDefined = true;
   fontDescriptionRun0403.weightDefined = false;
-  fontDescriptionRun0403.widthDefined = false;
-  fontDescriptionRun0403.slantDefined = false;
-  fontDescriptionRun0403.sizeDefined = false;
+  fontDescriptionRun0403.widthDefined  = false;
+  fontDescriptionRun0403.slantDefined  = false;
+  fontDescriptionRun0403.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun0404;
-  fontDescriptionRun0404.characterRun.characterIndex = 32u;
+  fontDescriptionRun0404.characterRun.characterIndex     = 32u;
   fontDescriptionRun0404.characterRun.numberOfCharacters = 24u;
-  fontDescriptionRun0404.familyLength = fontFamily.size();
-  fontDescriptionRun0404.familyName = new char[fontDescriptionRun0404.familyLength];
-  memcpy( fontDescriptionRun0404.familyName, fontFamily.c_str(), fontDescriptionRun0404.familyLength );
+  fontDescriptionRun0404.familyLength                    = fontFamily.size();
+  fontDescriptionRun0404.familyName                      = new char[fontDescriptionRun0404.familyLength];
+  memcpy(fontDescriptionRun0404.familyName, fontFamily.c_str(), fontDescriptionRun0404.familyLength);
   fontDescriptionRun0404.familyDefined = true;
   fontDescriptionRun0404.weightDefined = false;
-  fontDescriptionRun0404.widthDefined = false;
-  fontDescriptionRun0404.slantDefined = false;
-  fontDescriptionRun0404.sizeDefined = false;
+  fontDescriptionRun0404.widthDefined  = false;
+  fontDescriptionRun0404.slantDefined  = false;
+  fontDescriptionRun0404.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun0405;
-  fontDescriptionRun0405.characterRun.characterIndex = 56u;
+  fontDescriptionRun0405.characterRun.characterIndex     = 56u;
   fontDescriptionRun0405.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun0405.familyLength = fontFamilyHebrew.size();
-  fontDescriptionRun0405.familyName = new char[fontDescriptionRun0405.familyLength];
-  memcpy( fontDescriptionRun0405.familyName, fontFamilyHebrew.c_str(), fontDescriptionRun0405.familyLength );
+  fontDescriptionRun0405.familyLength                    = fontFamilyHebrew.size();
+  fontDescriptionRun0405.familyName                      = new char[fontDescriptionRun0405.familyLength];
+  memcpy(fontDescriptionRun0405.familyName, fontFamilyHebrew.c_str(), fontDescriptionRun0405.familyLength);
   fontDescriptionRun0405.familyDefined = true;
   fontDescriptionRun0405.weightDefined = false;
-  fontDescriptionRun0405.widthDefined = false;
-  fontDescriptionRun0405.slantDefined = false;
-  fontDescriptionRun0405.sizeDefined = false;
+  fontDescriptionRun0405.widthDefined  = false;
+  fontDescriptionRun0405.slantDefined  = false;
+  fontDescriptionRun0405.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns04;
-  fontDescriptionRuns04.PushBack( fontDescriptionRun0401 );
-  fontDescriptionRuns04.PushBack( fontDescriptionRun0402 );
-  fontDescriptionRuns04.PushBack( fontDescriptionRun0403 );
-  fontDescriptionRuns04.PushBack( fontDescriptionRun0404 );
-  fontDescriptionRuns04.PushBack( fontDescriptionRun0405 );
-
-  unsigned int  visualIndex04[] = {  1u,  2u,  3u,  4u,  5u,  6u,  7u,  8u,  9u, 10u,
-                                    10u, 12u, 13u, 14u, 15u, 16u, 17u, 18u, 19u, 20u, 21u,
-                                    23u, 24u, 25u, 26u, 27u, 28u, 29u, 30u, 31u, 32u, 33u, 34u, 35u, 36u, 37u, 38u, 39u, 40u, 41u, 42u, 43u, 44u,
-                                    44u, 45u, 46u, 47u, 48u, 49u, 50u, 51u, 52u, 53u, 54u, 55u, 56u, 57u, 58u, 59u, 60u, 61u, 62u, 63u, 64u, 65u };
-
-  unsigned int characterIndex04[] = {  0u,  0u,  0u,  0u,  0u,  0u,  0u,  0u,  0u,  0u,
-                                      10u, 10u, 10u, 10u, 10u, 10u, 10u, 10u, 10u, 10u, 10u,
-                                      22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u,
-                                      44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u };
-
-  unsigned int logicalIndex04[] = {  9u,  8u,  7u,  6u,  5u,  4u,  3u,  2u,  1u,  0u,
-                                    10u, 12u, 13u, 14u, 15u, 16u, 17u, 18u, 19u, 20u, 21u,
-                                    43u, 33u, 34u, 35u, 36u, 37u, 38u, 39u, 40u, 41u, 42u, 32u, 31u, 30u, 29u, 28u, 27u, 26u, 25u, 24u, 23u, 22u,
-                                    44u, 45u, 46u, 47u, 48u, 49u, 50u, 51u, 52u, 53u, 54u, 55u, 56u, 64u, 63u, 62u, 61u, 60u, 59u, 58u, 57u, 65u };
-
-  unsigned int bidirectionalLineIndex04[] = { 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
-                                              0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
-                                              1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u,
-                                              2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u };
-
-// LO   A  B  C  D  E  F  G  H  I  J  K
-//     0  1  2  3  4  5  6  7  8  9 10 11
-// LO   L  M  N
-//    11 12 13 14
+  fontDescriptionRuns04.PushBack(fontDescriptionRun0401);
+  fontDescriptionRuns04.PushBack(fontDescriptionRun0402);
+  fontDescriptionRuns04.PushBack(fontDescriptionRun0403);
+  fontDescriptionRuns04.PushBack(fontDescriptionRun0404);
+  fontDescriptionRuns04.PushBack(fontDescriptionRun0405);
+
+  unsigned int visualIndex04[] = {1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 9u, 10u, 10u, 12u, 13u, 14u, 15u, 16u, 17u, 18u, 19u, 20u, 21u, 23u, 24u, 25u, 26u, 27u, 28u, 29u, 30u, 31u, 32u, 33u, 34u, 35u, 36u, 37u, 38u, 39u, 40u, 41u, 42u, 43u, 44u, 44u, 45u, 46u, 47u, 48u, 49u, 50u, 51u, 52u, 53u, 54u, 55u, 56u, 57u, 58u, 59u, 60u, 61u, 62u, 63u, 64u, 65u};
+
+  unsigned int characterIndex04[] = {0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 10u, 10u, 10u, 10u, 10u, 10u, 10u, 10u, 10u, 10u, 10u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 22u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u, 44u};
+
+  unsigned int logicalIndex04[] = {9u, 8u, 7u, 6u, 5u, 4u, 3u, 2u, 1u, 0u, 10u, 12u, 13u, 14u, 15u, 16u, 17u, 18u, 19u, 20u, 21u, 43u, 33u, 34u, 35u, 36u, 37u, 38u, 39u, 40u, 41u, 42u, 32u, 31u, 30u, 29u, 28u, 27u, 26u, 25u, 24u, 23u, 22u, 44u, 45u, 46u, 47u, 48u, 49u, 50u, 51u, 52u, 53u, 54u, 55u, 56u, 64u, 63u, 62u, 61u, 60u, 59u, 58u, 57u, 65u};
+
+  unsigned int bidirectionalLineIndex04[] = {0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u};
+
+  // LO   A  B  C  D  E  F  G  H  I  J  K
+  //     0  1  2  3  4  5  6  7  8  9 10 11
+  // LO   L  M  N
+  //    11 12 13 14
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun0501;
-  fontDescriptionRun0501.characterRun.characterIndex = 0u;
+  fontDescriptionRun0501.characterRun.characterIndex     = 0u;
   fontDescriptionRun0501.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun0501.familyLength = fontFamily.size();
-  fontDescriptionRun0501.familyName = new char[fontDescriptionRun0501.familyLength];
-  memcpy( fontDescriptionRun0501.familyName, fontFamily.c_str(), fontDescriptionRun0501.familyLength );
+  fontDescriptionRun0501.familyLength                    = fontFamily.size();
+  fontDescriptionRun0501.familyName                      = new char[fontDescriptionRun0501.familyLength];
+  memcpy(fontDescriptionRun0501.familyName, fontFamily.c_str(), fontDescriptionRun0501.familyLength);
   fontDescriptionRun0501.familyDefined = true;
   fontDescriptionRun0501.weightDefined = false;
-  fontDescriptionRun0501.widthDefined = false;
-  fontDescriptionRun0501.slantDefined = false;
-  fontDescriptionRun0501.sizeDefined = false;
+  fontDescriptionRun0501.widthDefined  = false;
+  fontDescriptionRun0501.slantDefined  = false;
+  fontDescriptionRun0501.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns05;
-  fontDescriptionRuns05.PushBack( fontDescriptionRun0501 );
-
-  unsigned int  visualIndex05[] = {  0u,  1u,  2u,  3u,  4u,  5u,  6u,  7u,  8u,  9u, 10u,
-                                    11u, 12u, 13u, 14u };
+  fontDescriptionRuns05.PushBack(fontDescriptionRun0501);
 
-  unsigned int characterIndex05[] = { 0u,  0u,  0u,  0u,  0u,  0u,  0u,  0u,  0u,  0u,  0u,
-                                      11u, 11u, 11u, 11u };
+  unsigned int visualIndex05[] = {0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 9u, 10u, 11u, 12u, 13u, 14u};
 
-  unsigned int logicalIndex05[] = { 0u,  1u,  2u,  3u,  4u,  5u,  6u,  7u,  8u,  9u, 10u,
-                                    11u, 12u, 13u, 14u };
+  unsigned int characterIndex05[] = {0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 11u, 11u, 11u, 11u};
 
-  unsigned int bidirectionalLineIndex05[] = { 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
-                                              0u, 0u, 0u, 0u };
+  unsigned int logicalIndex05[] = {0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 9u, 10u, 11u, 12u, 13u, 14u};
 
-// LO      ק  ר  א  ט  ו  ן  ם  פ  ש  ד  ג  כ
-//        0  1  2  3  4  5  6  7  8  9  10 11 12
-// VO      כ  ג  ד  ש  פ  ם  ן  ו  ט  א  ר  ק
+  unsigned int bidirectionalLineIndex05[] = {0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u};
 
-// LO      ע  י  ח  ל
-//       12 13 14 15 16
-// VO      ל  ח  י  ע
+  // LO      ק  ר  א  ט  ו  ן  ם  פ  ש  ד  ג  כ
+  //        0  1  2  3  4  5  6  7  8  9  10 11 12
+  // VO      כ  ג  ד  ש  פ  ם  ן  ו  ט  א  ר  ק
 
+  // LO      ע  י  ח  ל
+  //       12 13 14 15 16
+  // VO      ל  ח  י  ע
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun0601;
-  fontDescriptionRun0601.characterRun.characterIndex = 0u;
+  fontDescriptionRun0601.characterRun.characterIndex     = 0u;
   fontDescriptionRun0601.characterRun.numberOfCharacters = 16u;
-  fontDescriptionRun0601.familyLength = fontFamilyHebrew.size();
-  fontDescriptionRun0601.familyName = new char[fontDescriptionRun0601.familyLength];
-  memcpy( fontDescriptionRun0601.familyName, fontFamilyHebrew.c_str(), fontDescriptionRun0601.familyLength );
+  fontDescriptionRun0601.familyLength                    = fontFamilyHebrew.size();
+  fontDescriptionRun0601.familyName                      = new char[fontDescriptionRun0601.familyLength];
+  memcpy(fontDescriptionRun0601.familyName, fontFamilyHebrew.c_str(), fontDescriptionRun0601.familyLength);
   fontDescriptionRun0601.familyDefined = true;
   fontDescriptionRun0601.weightDefined = false;
-  fontDescriptionRun0601.widthDefined = false;
-  fontDescriptionRun0601.slantDefined = false;
-  fontDescriptionRun0601.sizeDefined = false;
+  fontDescriptionRun0601.widthDefined  = false;
+  fontDescriptionRun0601.slantDefined  = false;
+  fontDescriptionRun0601.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns06;
-  fontDescriptionRuns06.PushBack( fontDescriptionRun0601 );
-
-  unsigned int  visualIndex06[] = {  0u,  1u,  2u,  3u,  4u,  5u,  6u,  7u,  8u,  9u, 10u, 11u, 12u,
-                                    12u, 13u, 14u, 15u, 16u };
-
-  unsigned int characterIndex06[] = {  0u,  0u,  0u,  0u,  0u,  0u,  0u,  0u,  0u,  0u,  0u,  0u,  0u,
-                                      12u, 12u, 12u, 12u, 12u };
-
-  unsigned int logicalIndex06[] = { 12u, 11u, 10u,  9u,  8u,  7u,  6u,  5u,  4u,  3u,  2u,  1u, 0u,
-                                    16u, 15u, 14u, 13u, 12u };
-
-  unsigned int bidirectionalLineIndex06[] = { 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
-                                              1u, 1u, 1u, 1u, 1u, };
+  fontDescriptionRuns06.PushBack(fontDescriptionRun0601);
+
+  unsigned int visualIndex06[] = {0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 9u, 10u, 11u, 12u, 12u, 13u, 14u, 15u, 16u};
+
+  unsigned int characterIndex06[] = {0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 12u, 12u, 12u, 12u, 12u};
+
+  unsigned int logicalIndex06[] = {12u, 11u, 10u, 9u, 8u, 7u, 6u, 5u, 4u, 3u, 2u, 1u, 0u, 16u, 15u, 14u, 13u, 12u};
+
+  unsigned int bidirectionalLineIndex06[] = {
+    0u,
+    0u,
+    0u,
+    0u,
+    0u,
+    0u,
+    0u,
+    0u,
+    0u,
+    0u,
+    0u,
+    0u,
+    0u,
+    1u,
+    1u,
+    1u,
+    1u,
+    1u,
+  };
 
   struct GetLogicalCursorIndexData data[] =
-  {
-    {
-      "Zero characters text",
-      "",
-      Size( 300.f, 300.f ),
-      0u,
-      nullptr,
-      1u,
-      visualIndex01,
-      characterIndex01,
-      logicalIndex01,
-      bidirectionalLineIndex01,
-    },
-    {
-      "All left to right text 01.",
-      "Hello world\ndemo",
-      Size( 300.f, 300.f ),
-      1u,
-      fontDescriptionRuns02.Begin(),
-      4u,
-      visualIndex02,
-      characterIndex02,
-      logicalIndex02,
-      bidirectionalLineIndex02,
-    },
-    {
-      "bidirectional text 01.",
-      "Hello world\nשלום עולם\nhello world שלום עולם\nשלום עולם hello world\n",
-      Size( 300.f, 300.f ),
-      5u,
-      fontDescriptionRuns03.Begin(),
-      65u,
-      visualIndex03,
-      characterIndex03,
-      logicalIndex03,
-      bidirectionalLineIndex03,
-    },
-    {
-      "bidirectional text 02.",
-      "שלום עולם\nhello world\nשלום עולם hello world\nhello world שלום עולם\n",
-      Size( 300.f, 300.f ),
-      5u,
-      fontDescriptionRuns04.Begin(),
-      65u,
-      visualIndex04,
-      characterIndex04,
-      logicalIndex04,
-      bidirectionalLineIndex04,
-    },
     {
-      "long line 01.",
-      "ABCDEFGHIJKLMN",
-      Size( 100.f, 300.f ),
-      1u,
-      fontDescriptionRuns05.Begin(),
-      13u,
-      visualIndex05,
-      characterIndex05,
-      logicalIndex05,
-      bidirectionalLineIndex05,
-    },
-    {
-      "bidirectional text 03.",
-      "קראטוןםפשדגכעיחל",
-      Size( 100.f, 300.f ),
-      1u,
-      fontDescriptionRuns06.Begin(),
-      18u,
-      visualIndex06,
-      characterIndex06,
-      logicalIndex06,
-      bidirectionalLineIndex06,
-    },
-  };
+      {
+        "Zero characters text",
+        "",
+        Size(300.f, 300.f),
+        0u,
+        nullptr,
+        1u,
+        visualIndex01,
+        characterIndex01,
+        logicalIndex01,
+        bidirectionalLineIndex01,
+      },
+      {
+        "All left to right text 01.",
+        "Hello world\ndemo",
+        Size(300.f, 300.f),
+        1u,
+        fontDescriptionRuns02.Begin(),
+        4u,
+        visualIndex02,
+        characterIndex02,
+        logicalIndex02,
+        bidirectionalLineIndex02,
+      },
+      {
+        "bidirectional text 01.",
+        "Hello world\nשלום עולם\nhello world שלום עולם\nשלום עולם hello world\n",
+        Size(300.f, 300.f),
+        5u,
+        fontDescriptionRuns03.Begin(),
+        65u,
+        visualIndex03,
+        characterIndex03,
+        logicalIndex03,
+        bidirectionalLineIndex03,
+      },
+      {
+        "bidirectional text 02.",
+        "שלום עולם\nhello world\nשלום עולם hello world\nhello world שלום עולם\n",
+        Size(300.f, 300.f),
+        5u,
+        fontDescriptionRuns04.Begin(),
+        65u,
+        visualIndex04,
+        characterIndex04,
+        logicalIndex04,
+        bidirectionalLineIndex04,
+      },
+      {
+        "long line 01.",
+        "ABCDEFGHIJKLMN",
+        Size(100.f, 300.f),
+        1u,
+        fontDescriptionRuns05.Begin(),
+        13u,
+        visualIndex05,
+        characterIndex05,
+        logicalIndex05,
+        bidirectionalLineIndex05,
+      },
+      {
+        "bidirectional text 03.",
+        "קראטוןםפשדגכעיחל",
+        Size(100.f, 300.f),
+        1u,
+        fontDescriptionRuns06.Begin(),
+        18u,
+        visualIndex06,
+        characterIndex06,
+        logicalIndex06,
+        bidirectionalLineIndex06,
+      },
+    };
   const unsigned int numberOfTests = 6u;
 
-  for( unsigned int index = 0u; index < numberOfTests; ++index )
+  for(unsigned int index = 0u; index < numberOfTests; ++index)
   {
     ToolkitTestApplication application;
-    if( !GetLogicalCursorIndexTest( data[index] ) )
+    if(!GetLogicalCursorIndexTest(data[index]))
     {
       tet_printf("Test %d failed : [%s]\n", index, data[index].description.c_str());
       tet_result(TET_FAIL);
diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-CharacterSpacing.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-CharacterSpacing.cpp
new file mode 100644 (file)
index 0000000..f636a19
--- /dev/null
@@ -0,0 +1,856 @@
+/*
+ * Copyright (c) 2022 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <iostream>
+
+#include <dali-toolkit-test-suite-utils.h>
+#include <dali-toolkit/dali-toolkit.h>
+#include <dali-toolkit/internal/text/layouts/layout-engine.h>
+#include <dali-toolkit/internal/text/layouts/layout-parameters.h>
+#include <dali-toolkit/internal/text/text-run-container.h>
+#include <toolkit-text-utils.h>
+
+using namespace Dali;
+using namespace Toolkit;
+using namespace Text;
+
+// Tests the LayoutEngine methods.
+
+//////////////////////////////////////////////////////////
+
+namespace
+{
+const std::string DEFAULT_FONT_DIR("/resources/fonts");
+
+struct LayoutTextData
+{
+  std::string          description;
+  std::string          text;
+  Size                 textArea;
+  unsigned int         numberOfFonts;
+  FontDescriptionRun*  fontDescriptions;
+  Size                 layoutSize;
+  unsigned int         totalNumberOfGlyphs;
+  float*               positions;
+  unsigned int         numberOfLines;
+  LineRun*             lines;
+  Layout::Engine::Type layout;
+  unsigned int         startIndex;
+  unsigned int         numberOfGlyphs;
+  bool                 ellipsis : 1;
+  bool                 updated : 1;
+  float                characterSpacing;
+};
+
+void Print(const LineRun& line)
+{
+  std::cout << "        glyph run, index : " << line.glyphRun.glyphIndex << ", num glyphs : " << line.glyphRun.numberOfGlyphs << std::endl;
+  std::cout << "    character run, index : " << line.characterRun.characterIndex << ", num chars : " << line.characterRun.numberOfCharacters << std::endl;
+  std::cout << "                   width : " << floor(line.width) << std::endl;
+  std::cout << "                ascender : " << line.ascender << std::endl;
+  std::cout << "               descender : " << line.descender << std::endl;
+  std::cout << "             extraLength : " << line.extraLength << std::endl;
+  std::cout << "         alignmentOffset : " << line.alignmentOffset << std::endl;
+  std::cout << "               direction : " << line.direction << std::endl;
+  std::cout << "                ellipsis : " << line.ellipsis << std::endl;
+}
+
+bool LayoutTextTest(const LayoutTextData& data)
+{
+  // Load some fonts.
+  TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
+  fontClient.SetDpi(96u, 96u);
+
+  char*             pathNamePtr = get_current_dir_name();
+  const std::string pathName(pathNamePtr);
+  free(pathNamePtr);
+
+  fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf");
+  fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf");
+  fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf");
+  fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHindiRegular.ttf");
+
+  // 1) Create the model.
+  ModelPtr   textModel;
+  MetricsPtr metrics;
+  Size       layoutSize;
+
+  Vector<FontDescriptionRun> fontDescriptionRuns;
+  if(0u != data.numberOfFonts)
+  {
+    fontDescriptionRuns.Insert(fontDescriptionRuns.End(),
+                               data.fontDescriptions,
+                               data.fontDescriptions + data.numberOfFonts);
+  }
+
+  LayoutOptions options;
+  options.align = false;
+  CreateTextModel(data.text,
+                  data.textArea,
+                  fontDescriptionRuns,
+                  options,
+                  layoutSize,
+                  textModel,
+                  metrics,
+                  false,
+                  LineWrap::WORD,
+                  false,
+                  Toolkit::DevelText::EllipsisPosition::END,
+                  0.0f, // lineSpacing
+                  data.characterSpacing);
+
+  LogicalModelPtr logicalModel = textModel->mLogicalModel;
+  VisualModelPtr  visualModel  = textModel->mVisualModel;
+
+  // 2) Clear the layout.
+  Vector<LineRun>& lines = visualModel->mLines;
+
+  const Length     numberOfCharacters = logicalModel->mText.Count();
+  const bool       isLastNewParagraph = (0u == numberOfCharacters) ? false : TextAbstraction::IsNewParagraph(*(logicalModel->mText.Begin() + (numberOfCharacters - 1u)));
+  const GlyphIndex lastGlyphIndex     = data.startIndex + data.numberOfGlyphs - 1u;
+  const bool       removeLastLine     = isLastNewParagraph && (lastGlyphIndex + 1u == visualModel->mGlyphs.Count());
+
+  LineIndex startRemoveIndex = 0u;
+
+  if(0u != lines.Count())
+  {
+    startRemoveIndex         = lines.Count();
+    LineIndex endRemoveIndex = startRemoveIndex;
+    ClearGlyphRuns(data.startIndex,
+                   lastGlyphIndex + (removeLastLine ? 1u : 0u),
+                   lines,
+                   startRemoveIndex,
+                   endRemoveIndex);
+
+    // Update the character runs of the lines.
+    const CharacterIndex* const glyphsToCharactersBuffer = visualModel->mGlyphsToCharacters.Begin();
+    const Length* const         charactersPerGlyph       = visualModel->mCharactersPerGlyph.Begin();
+    const CharacterIndex        startCharacterIndex      = *(glyphsToCharactersBuffer + data.startIndex);
+    const CharacterIndex        lastCharacterIndex       = *(glyphsToCharactersBuffer + lastGlyphIndex) + *(charactersPerGlyph + lastGlyphIndex) - 1u;
+    ClearCharacterRuns(startCharacterIndex,
+                       lastCharacterIndex + (removeLastLine ? 1u : 0u),
+                       lines,
+                       startRemoveIndex,
+                       endRemoveIndex);
+
+    lines.Erase(lines.Begin() + startRemoveIndex,
+                lines.Begin() + endRemoveIndex);
+  }
+
+  Vector<Vector2>& glyphPositions = visualModel->mGlyphPositions;
+
+  glyphPositions.Erase(glyphPositions.Begin() + data.startIndex,
+                       glyphPositions.Begin() + data.startIndex + data.numberOfGlyphs);
+
+  // 3) Layout
+  Layout::Engine engine;
+  engine.SetMetrics(metrics);
+  engine.SetLayout(data.layout);
+
+  textModel->mHorizontalAlignment   = Text::HorizontalAlignment::BEGIN;
+  textModel->mLineWrapMode          = LineWrap::WORD;
+  textModel->mIgnoreSpacesAfterText = true;
+  //textModel->mMatchSystemLanguageDirection = false;
+  Layout::Parameters layoutParameters(data.textArea,
+                                      textModel);
+
+  layoutParameters.isLastNewParagraph = isLastNewParagraph;
+
+  // The initial glyph and the number of glyphs to layout.
+  layoutParameters.startGlyphIndex        = data.startIndex;
+  layoutParameters.numberOfGlyphs         = data.numberOfGlyphs;
+  layoutParameters.startLineIndex         = startRemoveIndex;
+  layoutParameters.estimatedNumberOfLines = logicalModel->mParagraphInfo.Count();
+
+  layoutSize = Vector2::ZERO;
+
+  bool       isAutoScroll = false;
+  const bool updated      = engine.LayoutText(layoutParameters,
+                                         layoutSize,
+                                         data.ellipsis,
+                                         isAutoScroll,
+                                         DevelText::EllipsisPosition::END);
+
+  // 4) Compare the results.
+
+  if(updated != data.updated)
+  {
+    std::cout << "  Different updated bool : " << updated << ", expected : " << data.updated << std::endl;
+    return false;
+  }
+
+  if(layoutSize != data.layoutSize)
+  {
+    std::cout << "  Different layout size : " << layoutSize << ", expected : " << data.layoutSize << std::endl;
+    return false;
+  }
+
+  for(unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index)
+  {
+    const Vector2& position = *(glyphPositions.Begin() + index);
+
+    if(fabsf(std::round(position.x) - std::round(*(data.positions + 2u * index))) > Math::MACHINE_EPSILON_1000)
+    {
+      std::cout << "  Different position for glyph " << index << " x : " << position.x << ", expected : " << *(data.positions + 2u * index) << std::endl;
+      return false;
+    }
+    if(fabsf(position.y - *(data.positions + 2u * index + 1u)) > Math::MACHINE_EPSILON_1000)
+    {
+      std::cout << "  Different position for glyph " << index << " y : " << position.y << ", expected : " << *(data.positions + 2u * index + 1u) << std::endl;
+      return false;
+    }
+  }
+
+  if(lines.Count() != data.numberOfLines)
+  {
+    std::cout << "  Different number of lines : " << lines.Count() << ", expected : " << data.numberOfLines << std::endl;
+    return false;
+  }
+
+  for(unsigned int index = 0u; index < data.numberOfLines; ++index)
+  {
+    const LineRun& line         = *(lines.Begin() + index);
+    const LineRun& expectedLine = *(data.lines + index);
+
+    if(line.glyphRun.glyphIndex != expectedLine.glyphRun.glyphIndex)
+    {
+      std::cout << "  Different line info for line : " << index << std::endl;
+      Print(line);
+      std::cout << "  expected" << std::endl;
+      Print(expectedLine);
+      return false;
+    }
+    if(line.glyphRun.numberOfGlyphs != expectedLine.glyphRun.numberOfGlyphs)
+    {
+      std::cout << "  Different line info for line : " << index << std::endl;
+      Print(line);
+      std::cout << "  expected" << std::endl;
+      Print(expectedLine);
+      return false;
+    }
+
+    if(line.characterRun.characterIndex != expectedLine.characterRun.characterIndex)
+    {
+      std::cout << "  Different line info for line : " << index << std::endl;
+      Print(line);
+      std::cout << "  expected" << std::endl;
+      Print(expectedLine);
+      return false;
+    }
+    if(line.characterRun.numberOfCharacters != expectedLine.characterRun.numberOfCharacters)
+    {
+      std::cout << "  Different line info for line : " << index << std::endl;
+      Print(line);
+      std::cout << "  expected" << std::endl;
+      Print(expectedLine);
+      return false;
+    }
+
+    if(fabsf(floor(line.width) - expectedLine.width) > Math::MACHINE_EPSILON_1)
+    {
+      std::cout << "  Different line info for line : " << index << std::endl;
+      Print(line);
+      std::cout << "  expected" << std::endl;
+      Print(expectedLine);
+      return false;
+    }
+
+    if(fabsf(line.ascender - expectedLine.ascender) > Math::MACHINE_EPSILON_1)
+    {
+      std::cout << "  Different line info for line : " << index << std::endl;
+      Print(line);
+      std::cout << "  expected" << std::endl;
+      Print(expectedLine);
+      return false;
+    }
+
+    if(fabsf(line.descender - expectedLine.descender) > Math::MACHINE_EPSILON_1)
+    {
+      std::cout << "  Different line info for line : " << index << std::endl;
+      Print(line);
+      std::cout << "  expected" << std::endl;
+      Print(expectedLine);
+      return false;
+    }
+
+    if(fabsf(line.extraLength - expectedLine.extraLength) > Math::MACHINE_EPSILON_1)
+    {
+      std::cout << "  Different line info for line : " << index << std::endl;
+      Print(line);
+      std::cout << "  expected" << std::endl;
+      Print(expectedLine);
+      return false;
+    }
+
+    if(line.ellipsis != expectedLine.ellipsis)
+    {
+      std::cout << "  Different line info for line : " << index << std::endl;
+      Print(line);
+      std::cout << "  expected" << std::endl;
+      Print(expectedLine);
+      return false;
+    }
+
+    // Do not compare the alignment offset as it's not calculated in the layout.
+    // Do not compare the line direction as it's not set in the layout.
+  }
+
+  return true;
+}
+
+////////////////////////////////////////////////////////
+
+} // namespace
+
+//////////////////////////////////////////////////////////
+//
+// UtcDaliTextCharacterSpacingSingleLineTextArea1
+// UtcDaliTextCharacterSpacingSingleLineTextArea2
+// UtcDaliTextCharacterSpacingSingleLineTextArea3
+// UtcDaliTextCharacterSpacingMultilineText1
+// UtcDaliTextCharacterSpacingMultilineText2
+//
+//////////////////////////////////////////////////////////
+
+int UtcDaliTextCharacterSpacingSingleLineTextArea1(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliTextCharacterSpacingSingleLineTextArea1");
+
+  // Will layout the text in single line as it can be scrolled.
+
+  const std::string fontFamily("TizenSans");
+
+  // Set a known font description
+  FontDescriptionRun fontDescriptionRun;
+  fontDescriptionRun.characterRun.characterIndex     = 0u;
+  fontDescriptionRun.characterRun.numberOfCharacters = 11u;
+  fontDescriptionRun.familyLength                    = fontFamily.size();
+  fontDescriptionRun.familyName                      = new char[fontDescriptionRun.familyLength];
+  memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
+  fontDescriptionRun.familyDefined = true;
+  fontDescriptionRun.weightDefined = false;
+  fontDescriptionRun.widthDefined  = false;
+  fontDescriptionRun.slantDefined  = false;
+  fontDescriptionRun.sizeDefined   = false;
+
+  Vector<FontDescriptionRun> fontDescriptionRuns;
+  fontDescriptionRuns.PushBack(fontDescriptionRun);
+  Size textArea(1.f, 1.f);
+
+  //******* characterSpacing = 0.0f *******//
+  float positions[] = {
+    0.f, -12.f, 10.f, -9.f, 19.875f, -13.f, 23.8906f, -13.f, 26.9062f, -9.f, 36.1875f, -0.f, 40.1875f, -9.f, 52.1562f, -9.f, 62.4375f, -9.f, 68.5f, -13.f, 71.5156f, -13.f};
+  Size layoutSize(81.f, 20.f);
+  //************************************//
+
+  struct LineRun line =
+    {
+      {0u, 11u},
+      {0u, 11u},
+      81.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
+  Vector<LineRun> lines;
+  lines.PushBack(line);
+
+  LayoutTextData data =
+    {
+      "Layout text in a small area",
+      "Hello world",
+      textArea,
+      1u,
+      fontDescriptionRuns.Begin(),
+      layoutSize,
+      11u,
+      positions,
+      1u,
+      lines.Begin(),
+      Layout::Engine::SINGLE_LINE_BOX,
+      0u,
+      11u,
+      false,
+      true,
+      0.0f};
+
+  if(!LayoutTextTest(data))
+  {
+    tet_result(TET_FAIL);
+  }
+
+  tet_result(TET_PASS);
+  END_TEST;
+}
+
+int UtcDaliTextCharacterSpacingSingleLineTextArea2(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliTextCharacterSpacingSingleLineTextArea2");
+
+  // Will layout the text in single line as it can be scrolled.
+
+  const std::string fontFamily("TizenSans");
+
+  // Set a known font description
+  FontDescriptionRun fontDescriptionRun;
+  fontDescriptionRun.characterRun.characterIndex     = 0u;
+  fontDescriptionRun.characterRun.numberOfCharacters = 11u;
+  fontDescriptionRun.familyLength                    = fontFamily.size();
+  fontDescriptionRun.familyName                      = new char[fontDescriptionRun.familyLength];
+  memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
+  fontDescriptionRun.familyDefined = true;
+  fontDescriptionRun.weightDefined = false;
+  fontDescriptionRun.widthDefined  = false;
+  fontDescriptionRun.slantDefined  = false;
+  fontDescriptionRun.sizeDefined   = false;
+
+  Vector<FontDescriptionRun> fontDescriptionRuns;
+  fontDescriptionRuns.PushBack(fontDescriptionRun);
+  Size textArea(1.f, 1.f);
+
+  //******* characterSpacing = 2.0f *******//
+  float positions[] = {
+    0.f, -12.f, 12.f, -9.f, 23.875f, -13.f, 29.8906f, -13.f, 34.9062f, -9.f, 46.1875f, -0.f, 52.1875f, -9.f, 66.1562f, -9.f, 78.4375f, -9.f, 86.5f, -13.f, 91.5156f, -13.f};
+  Size layoutSize(101.f, 20.f);
+  //************************************//
+
+  struct LineRun line =
+    {
+      {0u, 11u},
+      {0u, 11u},
+      101.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
+  Vector<LineRun> lines;
+  lines.PushBack(line);
+
+  LayoutTextData data =
+    {
+      "Layout text in a small area",
+      "Hello world",
+      textArea,
+      1u,
+      fontDescriptionRuns.Begin(),
+      layoutSize,
+      11u,
+      positions,
+      1u,
+      lines.Begin(),
+      Layout::Engine::SINGLE_LINE_BOX,
+      0u,
+      11u,
+      false,
+      true,
+      2.0f};
+
+  if(!LayoutTextTest(data))
+  {
+    tet_result(TET_FAIL);
+  }
+
+  tet_result(TET_PASS);
+  END_TEST;
+}
+
+int UtcDaliTextCharacterSpacingSingleLineTextArea3(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliTextCharacterSpacingSingleLineTextArea3");
+
+  // Will layout the text in single line as it can be scrolled.
+
+  const std::string fontFamily("TizenSans");
+
+  // Set a known font description
+  FontDescriptionRun fontDescriptionRun;
+  fontDescriptionRun.characterRun.characterIndex     = 0u;
+  fontDescriptionRun.characterRun.numberOfCharacters = 11u;
+  fontDescriptionRun.familyLength                    = fontFamily.size();
+  fontDescriptionRun.familyName                      = new char[fontDescriptionRun.familyLength];
+  memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
+  fontDescriptionRun.familyDefined = true;
+  fontDescriptionRun.weightDefined = false;
+  fontDescriptionRun.widthDefined  = false;
+  fontDescriptionRun.slantDefined  = false;
+  fontDescriptionRun.sizeDefined   = false;
+
+  Vector<FontDescriptionRun> fontDescriptionRuns;
+  fontDescriptionRuns.PushBack(fontDescriptionRun);
+  Size textArea(1.f, 1.f);
+
+  //******* characterSpacing = 4.0f *******//
+  float positions[] = {
+    0.f, -12.f, 14.f, -9.f, 27.875f, -13.f, 35.8906f, -13.f, 42.9062f, -9.f, 56.1875f, -0.f, 64.1875f, -9.f, 80.1562f, -9.f, 94.4375f, -9.f, 104.5f, -13.f, 111.5156f, -13.f};
+  Size layoutSize(121.f, 20.f);
+  //************************************//
+
+  struct LineRun line =
+    {
+      {0u, 11u},
+      {0u, 11u},
+      121.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
+  Vector<LineRun> lines;
+  lines.PushBack(line);
+
+  LayoutTextData data =
+    {
+      "Layout text in a small area",
+      "Hello world",
+      textArea,
+      1u,
+      fontDescriptionRuns.Begin(),
+      layoutSize,
+      11u,
+      positions,
+      1u,
+      lines.Begin(),
+      Layout::Engine::SINGLE_LINE_BOX,
+      0u,
+      11u,
+      false,
+      true,
+      4.0f};
+
+  if(!LayoutTextTest(data))
+  {
+    tet_result(TET_FAIL);
+  }
+
+  tet_result(TET_PASS);
+  END_TEST;
+}
+
+int UtcDaliTextCharacterSpacingMultilineText1(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliTextCharacterSpacingMultilineText1");
+
+  // Layout some lines of left to right text.
+
+  const std::string fontFamily("TizenSans");
+
+  // Set a known font description
+  FontDescriptionRun fontDescriptionRun1;
+  fontDescriptionRun1.characterRun.characterIndex     = 0u;
+  fontDescriptionRun1.characterRun.numberOfCharacters = 18u;
+  fontDescriptionRun1.familyLength                    = fontFamily.size();
+  fontDescriptionRun1.familyName                      = new char[fontDescriptionRun1.familyLength];
+  memcpy(fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength);
+  fontDescriptionRun1.familyDefined = true;
+  fontDescriptionRun1.weightDefined = false;
+  fontDescriptionRun1.widthDefined  = false;
+  fontDescriptionRun1.slantDefined  = false;
+  fontDescriptionRun1.sizeDefined   = false;
+
+  FontDescriptionRun fontDescriptionRun2;
+  fontDescriptionRun2.characterRun.characterIndex     = 18u;
+  fontDescriptionRun2.characterRun.numberOfCharacters = 31u;
+  fontDescriptionRun2.familyLength                    = fontFamily.size();
+  fontDescriptionRun2.familyName                      = new char[fontDescriptionRun2.familyLength];
+  memcpy(fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength);
+  fontDescriptionRun2.familyDefined = true;
+  fontDescriptionRun2.weightDefined = false;
+  fontDescriptionRun2.widthDefined  = false;
+  fontDescriptionRun2.slantDefined  = false;
+  fontDescriptionRun2.sizeDefined   = false;
+
+  Vector<FontDescriptionRun> fontDescriptionRuns;
+  fontDescriptionRuns.PushBack(fontDescriptionRun1);
+  fontDescriptionRuns.PushBack(fontDescriptionRun2);
+  Size  textArea(100.f, 300.f);
+  Size  layoutSize(98.f, 97.f);
+  float positions[] =
+    {
+      0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, 0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -2.f, 45.f, -12.f, 0.f, -12.f, 7.92188f, -9.f, 18.f, -9.f, 27.2031f, -9.f, 38.f, -9.f, 47.f, -11.f, 53.f, -0.f, 0.f, -12.f, 11.1562f, -12.f, 15.f, -12.f, 26.f, -9.f, 36.4844f, -9.f, 42.f, -9.f, 52.5469f, -9.f, 61.6875f, -11.f, 67.9688f, -0.f, 0.f, -12.f, 4.f, -12.f, 9.f, -9.f, 18.0469f, -9.f, 27.8906f, -9.f, 36.f, -0.f, 41.3281f, -9.f, 51.125f, -12.f, 57.f, -0.f, 62.f, -11.f, 68.1406f, -9.f, 77.7031f, -9.f, 87.f, -11.f, 94.4531f, -2.f};
+  struct LineRun line0 =
+    {
+      {0u, 12u},
+      {0u, 12u},
+      81.f,
+      15.f,
+      -5.f,
+      4.f,
+      0.f,
+      0.f,
+      false,
+      false};
+  struct LineRun line1 =
+    {
+      {12u, 6u},
+      {12u, 6u},
+      44.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
+  struct LineRun line2 =
+    {
+      {18u, 7u},
+      {18u, 7u},
+      54.f,
+      15.f,
+      -4.f,
+      6.f,
+      0.f,
+      0.f,
+      false,
+      false};
+  struct LineRun line3 =
+    {
+      {25u, 9u},
+      {25u, 10u},
+      68.f,
+      15.f,
+      -4.f,
+      6.f,
+      0.f,
+      0.f,
+      false,
+      false};
+  struct LineRun line4 =
+    {
+      {34u, 14u},
+      {35u, 14u},
+      98.f,
+      15.f,
+      -4.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
+  Vector<LineRun> lines;
+  lines.PushBack(line0);
+  lines.PushBack(line1);
+  lines.PushBack(line2);
+  lines.PushBack(line3);
+  lines.PushBack(line4);
+
+  LayoutTextData data =
+    {
+      "Layout simple multiline text",
+      "Hello world demo.\n"
+      "Layout different lines of text.",
+      textArea,
+      1u,
+      fontDescriptionRuns.Begin(),
+      layoutSize,
+      48u,
+      positions,
+      5u,
+      lines.Begin(),
+      Layout::Engine::MULTI_LINE_BOX,
+      0u,
+      48u,
+      false,
+      true,
+      0.0f};
+
+  if(!LayoutTextTest(data))
+  {
+    tet_result(TET_FAIL);
+  }
+
+  tet_result(TET_PASS);
+  END_TEST;
+}
+
+int UtcDaliTextCharacterSpacingMultilineText2(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliTextCharacterSpacingMultilineText2");
+
+  // Layout some lines of left to right text.
+
+  const std::string fontFamily("TizenSans");
+
+  // Set a known font description
+  FontDescriptionRun fontDescriptionRun1;
+  fontDescriptionRun1.characterRun.characterIndex     = 0u;
+  fontDescriptionRun1.characterRun.numberOfCharacters = 18u;
+  fontDescriptionRun1.familyLength                    = fontFamily.size();
+  fontDescriptionRun1.familyName                      = new char[fontDescriptionRun1.familyLength];
+  memcpy(fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength);
+  fontDescriptionRun1.familyDefined = true;
+  fontDescriptionRun1.weightDefined = false;
+  fontDescriptionRun1.widthDefined  = false;
+  fontDescriptionRun1.slantDefined  = false;
+  fontDescriptionRun1.sizeDefined   = false;
+
+  FontDescriptionRun fontDescriptionRun2;
+  fontDescriptionRun2.characterRun.characterIndex     = 18u;
+  fontDescriptionRun2.characterRun.numberOfCharacters = 31u;
+  fontDescriptionRun2.familyLength                    = fontFamily.size();
+  fontDescriptionRun2.familyName                      = new char[fontDescriptionRun2.familyLength];
+  memcpy(fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength);
+  fontDescriptionRun2.familyDefined = true;
+  fontDescriptionRun2.weightDefined = false;
+  fontDescriptionRun2.widthDefined  = false;
+  fontDescriptionRun2.slantDefined  = false;
+  fontDescriptionRun2.sizeDefined   = false;
+
+  Vector<FontDescriptionRun> fontDescriptionRuns;
+  fontDescriptionRuns.PushBack(fontDescriptionRun1);
+  fontDescriptionRuns.PushBack(fontDescriptionRun2);
+  Size  textArea(100.f, 300.f);
+  Size  layoutSize(82.f, 136.f);
+  float positions[] =
+    {
+      0.f, -12.f, 12.f, -9.f, 24.f, -13.f, 30.f, -13.f, 35.f, -9.f, 46.f, -0.f, 0.f, -9.f, 13.9688f, -9.f, 26.25f, -9.f, 34.3125f, -13.f, 39.3281f, -13.f, 50.6406f, -0.f, 0.f, -13.f, 11.3125f, -9.f, 22.7031f, -9.f, 37.5625, -9.f, 48.8438f, -2.f, 54.8125, -12.f, 0.f, -12.f, 9.92188f, -9.f, 21.7344, -9.f, 33.2031f, -9.f, 46.f, -9.f, 57.1406f, -11.f, 65.4219f, -0.f, 0.f, -12.f, 13.1562f, -12.f, 18.6094f, -12.f, 31.6406f, -9.f, 44.4844f, -9.f, 51.7031f, -9.f, 64.5469f, -9.f, 75.6875f, -11.f, 83.9688, -0.f, 0.f, -12.f, 6.45312f, -12.f, 12.9062f, -9.f, 24.0469f, -9.f, 35.8906f, -9.f, 46.2344f, -0.f, 53.3281f, -9.f, 65.125f, -12.f, 72.7656f, -0.f, 0.f, -11.f, 8.28125f, -9.f, 19.8438f, -9.f, 31.3125f, -11.f, 40.5938f, -2.f};
+  struct LineRun line0 =
+    {
+      {0u, 6u},
+      {0u, 6u},
+      44.f,
+      15.f,
+      -5.f,
+      6.f,
+      0.f,
+      0.f,
+      false,
+      false};
+  struct LineRun line1 =
+    {
+      {6u, 6u},
+      {6u, 6u},
+      49.f,
+      15.f,
+      -5.f,
+      6.f,
+      0.f,
+      0.f,
+      false,
+      false};
+  struct LineRun line2 =
+    {
+      {12u, 6u},
+      {12u, 6u},
+      52.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
+  struct LineRun line3 =
+    {
+      {18u, 7u},
+      {18u, 7u},
+      64.f,
+      15.f,
+      -4.f,
+      8.f,
+      0.f,
+      0.f,
+      false,
+      false};
+  struct LineRun line4 =
+    {
+      {25u, 9u},
+      {25u, 10u},
+      82.f,
+      15.f,
+      -4.f,
+      8.f,
+      0.f,
+      0.f,
+      false,
+      false};
+  struct LineRun line5 =
+    {
+      {34u, 9u},
+      {35u, 9u},
+      72.f,
+      15.f,
+      -4.f,
+      8.f,
+      0.f,
+      0.f,
+      false,
+      false};
+  struct LineRun line6 =
+    {
+      {43u, 5u},
+      {44u, 5u},
+      44.f,
+      15.f,
+      -4.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
+  Vector<LineRun> lines;
+  lines.PushBack(line0);
+  lines.PushBack(line1);
+  lines.PushBack(line2);
+  lines.PushBack(line3);
+  lines.PushBack(line4);
+  lines.PushBack(line5);
+  lines.PushBack(line6);
+
+  LayoutTextData data =
+    {
+      "Layout simple multiline text",
+      "Hello world demo.\n"
+      "Layout different lines of text.",
+      textArea,
+      1u,
+      fontDescriptionRuns.Begin(),
+      layoutSize,
+      48u,
+      positions,
+      7u,
+      lines.Begin(),
+      Layout::Engine::MULTI_LINE_BOX,
+      0u,
+      48u,
+      false,
+      true,
+      2.0f};
+
+  if(!LayoutTextTest(data))
+  {
+    tet_result(TET_FAIL);
+  }
+
+  tet_result(TET_PASS);
+  END_TEST;
+}
index 920a826..11c6343 100755 (executable)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
  *
  */
 
-#include <iostream>
 #include <stdlib.h>
 #include <unistd.h>
+#include <iostream>
 
 #include <dali-toolkit-test-suite-utils.h>
-#include <dali-toolkit/internal/text/cursor-helper-functions.h>
 #include <dali-toolkit/dali-toolkit.h>
+#include <dali-toolkit/internal/text/cursor-helper-functions.h>
 #include <toolkit-text-utils.h>
 
-
 using namespace Dali;
 using namespace Toolkit;
 using namespace Text;
@@ -46,104 +45,106 @@ using namespace Text;
 
 namespace
 {
-  const std::string DEFAULT_FONT_DIR( "/resources/fonts" );
-  const unsigned int DEFAULT_FONT_SIZE = 1152u;
+const std::string  DEFAULT_FONT_DIR("/resources/fonts");
+const unsigned int DEFAULT_FONT_SIZE = 1152u;
 
 struct GetClosestLineData
 {
-  std::string    description;                    ///< Description of the test.
-  std::string    text;                           ///< Input text.
-  unsigned int   numberOfTests;                  ///< The number of tests.
-  float*         visualY;                        ///< The visual 'y' position for each test.
-  LineIndex*     lineIndex;                      ///< The expected line index for each test.
-  bool*          isLineHit;                      ///< The expected line hit value for each test.
+  std::string  description;   ///< Description of the test.
+  std::string  text;          ///< Input text.
+  unsigned int numberOfTests; ///< The number of tests.
+  float*       visualY;       ///< The visual 'y' position for each test.
+  LineIndex*   lineIndex;     ///< The expected line index for each test.
+  bool*        isLineHit;     ///< The expected line hit value for each test.
 };
 
 struct GetClosestCursorIndexData
 {
-  std::string             description;           ///< Description of the test.
-  std::string             text;                  ///< Input text.
-  unsigned int            numberOfTests;         ///< The number of tests.
-  float*                  visualX;               ///< The visual 'x' position for each test.
-  float*                  visualY;               ///< The visual 'y' position for each test.
-  CharacterHitTest::Mode* mode;                  ///< The type of hit test.
-  CharacterIndex*         logicalIndex;          ///< The expected logical cursor index for each test.
-  bool*                   isCharacterHit;        ///< The expected character hit value for each test.
+  std::string             description;    ///< Description of the test.
+  std::string             text;           ///< Input text.
+  unsigned int            numberOfTests;  ///< The number of tests.
+  float*                  visualX;        ///< The visual 'x' position for each test.
+  float*                  visualY;        ///< The visual 'y' position for each test.
+  CharacterHitTest::Mode* mode;           ///< The type of hit test.
+  CharacterIndex*         logicalIndex;   ///< The expected logical cursor index for each test.
+  bool*                   isCharacterHit; ///< The expected character hit value for each test.
 };
 
 struct GetCursorPositionData
 {
-  std::string     description;                    ///< Description of the test.
-  std::string     text;                           ///< Input text.
-  unsigned int    numberOfTests;                  ///< The number of tests.
-  CharacterIndex* logicalIndex;                   ///< The logical cursor index for each test.
-  float*          visualX;                        ///< The expected visual 'x' position for each test.
-  float*          visualY;                        ///< The expected visual 'y' position for each test.
+  std::string     description;   ///< Description of the test.
+  std::string     text;          ///< Input text.
+  unsigned int    numberOfTests; ///< The number of tests.
+  CharacterIndex* logicalIndex;  ///< The logical cursor index for each test.
+  float*          visualX;       ///< The expected visual 'x' position for each test.
+  float*          visualY;       ///< The expected visual 'y' position for each test.
 };
 
 struct FindSelectionIndicesData
 {
-  std::string     description;                    ///< Description of the test.
-  std::string     text;                           ///< Input text.
-  unsigned int    numberOfTests;                  ///< The number of tests.
-  float*          visualX;                        ///< The visual 'x' position for each test.
-  float*          visualY;                        ///< The visual 'y' position for each test.
-  bool*           found;                          ///< Whether selection indices are found.
-  CharacterIndex* startIndex;                     ///< The expected start cursor index for each test.
-  CharacterIndex* endIndex;                       ///< The expected end cursor index for each test.
-  CharacterIndex* noTextHitIndex;                 ///< The expected character index when there is no hit.
+  std::string     description;    ///< Description of the test.
+  std::string     text;           ///< Input text.
+  unsigned int    numberOfTests;  ///< The number of tests.
+  float*          visualX;        ///< The visual 'x' position for each test.
+  float*          visualY;        ///< The visual 'y' position for each test.
+  bool*           found;          ///< Whether selection indices are found.
+  CharacterIndex* startIndex;     ///< The expected start cursor index for each test.
+  CharacterIndex* endIndex;       ///< The expected end cursor index for each test.
+  CharacterIndex* noTextHitIndex; ///< The expected character index when there is no hit.
 };
 
 struct PrimaryCursorHeightData
 {
-  std::string     description;                    ///< Description of the test.
-  std::string     text;                           ///< Input text.
-  unsigned int    numberOfTests;                  ///< The number of tests.
-  CharacterIndex* logicalIndex;                   ///< The logical cursor index for each test.
-  float*          heights;                        ///< The expected primary cursor height for each test.
+  std::string     description;   ///< Description of the test.
+  std::string     text;          ///< Input text.
+  unsigned int    numberOfTests; ///< The number of tests.
+  CharacterIndex* logicalIndex;  ///< The logical cursor index for each test.
+  float*          heights;       ///< The expected primary cursor height for each test.
 };
 
-bool GetClosestLineTest( const GetClosestLineData& data )
+bool GetClosestLineTest(const GetClosestLineData& data)
 {
   std::cout << "  testing : " << data.description << std::endl;
 
   // 1) Create the model.
-  ModelPtr textModel;
+  ModelPtr   textModel;
   MetricsPtr metrics;
-  Size textArea(400.f, 600.f);
-  Size layoutSize;
+  Size       textArea(400.f, 600.f);
+  Size       layoutSize;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  LayoutOptions options;
-  CreateTextModel( data.text,
-                   textArea,
-                   fontDescriptionRuns,
-                   options,
-                   layoutSize,
-                   textModel,
-                   metrics,
-                   false,
-                   LineWrap::WORD,
-                   false,
-                   Toolkit::DevelText::EllipsisPosition::END,
-                   0.f );
+  LayoutOptions              options;
+  CreateTextModel(data.text,
+                  textArea,
+                  fontDescriptionRuns,
+                  options,
+                  layoutSize,
+                  textModel,
+                  metrics,
+                  false,
+                  LineWrap::WORD,
+                  false,
+                  Toolkit::DevelText::EllipsisPosition::END,
+                  0.0f, // lineSpacing
+                  0.0f  // characterSpacing
+  );
 
   LogicalModelPtr logicalModel = textModel->mLogicalModel;
-  VisualModelPtr visualModel = textModel->mVisualModel;
+  VisualModelPtr  visualModel  = textModel->mVisualModel;
 
-  for( unsigned int index = 0; index < data.numberOfTests; ++index )
+  for(unsigned int index = 0; index < data.numberOfTests; ++index)
   {
-    bool isLineHit = false;
-    const LineIndex lineIndex = GetClosestLine( visualModel,
-                                                data.visualY[index],
-                                                isLineHit );
+    bool            isLineHit = false;
+    const LineIndex lineIndex = GetClosestLine(visualModel,
+                                               data.visualY[index],
+                                               isLineHit);
 
-    if( lineIndex != data.lineIndex[index] )
+    if(lineIndex != data.lineIndex[index])
     {
       std::cout << "  test " << index << " failed. Different line index : " << lineIndex << ", expected : " << data.lineIndex[index] << std::endl;
       return false;
     }
-    if( isLineHit != data.isLineHit[index] )
+    if(isLineHit != data.isLineHit[index])
     {
       std::cout << "  test " << index << " failed. Different line hit value : " << isLineHit << ", expected : " << data.isLineHit[index] << std::endl;
       return false;
@@ -153,51 +154,53 @@ bool GetClosestLineTest( const GetClosestLineData& data )
   return true;
 }
 
-bool GetClosestCursorIndexTest( const GetClosestCursorIndexData& data )
+bool GetClosestCursorIndexTest(const GetClosestCursorIndexData& data)
 {
   std::cout << "  testing : " << data.description << std::endl;
 
   // 1) Create the model.
-  ModelPtr textModel;
+  ModelPtr   textModel;
   MetricsPtr metrics;
-  Size textArea(400.f, 600.f);
-  Size layoutSize;
+  Size       textArea(400.f, 600.f);
+  Size       layoutSize;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  LayoutOptions options;
-  CreateTextModel( data.text,
-                   textArea,
-                   fontDescriptionRuns,
-                   options,
-                   layoutSize,
-                   textModel,
-                   metrics,
-                   false,
-                   LineWrap::WORD,
-                   false,
-                   Toolkit::DevelText::EllipsisPosition::END,
-                   0.f );
+  LayoutOptions              options;
+  CreateTextModel(data.text,
+                  textArea,
+                  fontDescriptionRuns,
+                  options,
+                  layoutSize,
+                  textModel,
+                  metrics,
+                  false,
+                  LineWrap::WORD,
+                  false,
+                  Toolkit::DevelText::EllipsisPosition::END,
+                  0.0f, // lineSpacing
+                  0.0f  // characterSpacing
+  );
 
   LogicalModelPtr logicalModel = textModel->mLogicalModel;
-  VisualModelPtr visualModel = textModel->mVisualModel;
+  VisualModelPtr  visualModel  = textModel->mVisualModel;
 
-  for( unsigned int index = 0; index < data.numberOfTests; ++index )
+  for(unsigned int index = 0; index < data.numberOfTests; ++index)
   {
-    bool isCharacterHit = false;
-    const CharacterIndex logicalCursorIndex = GetClosestCursorIndex( visualModel,
-                                                                     logicalModel,
-                                                                     metrics,
-                                                                     data.visualX[index],
-                                                                     data.visualY[index],
-                                                                     data.mode[index],
-                                                                     isCharacterHit );
-
-    if( logicalCursorIndex != data.logicalIndex[index] )
+    bool                 isCharacterHit     = false;
+    const CharacterIndex logicalCursorIndex = GetClosestCursorIndex(visualModel,
+                                                                    logicalModel,
+                                                                    metrics,
+                                                                    data.visualX[index],
+                                                                    data.visualY[index],
+                                                                    data.mode[index],
+                                                                    isCharacterHit);
+
+    if(logicalCursorIndex != data.logicalIndex[index])
     {
       std::cout << "  test " << index << " failed. Different logical cursor index : " << logicalCursorIndex << ", expected : " << data.logicalIndex[index] << std::endl;
       return false;
     }
-    if( isCharacterHit != data.isCharacterHit[index] )
+    if(isCharacterHit != data.isCharacterHit[index])
     {
       std::cout << "  test " << index << " failed. Different character hit value : " << isCharacterHit << ", expected : " << data.isCharacterHit[index] << std::endl;
       return false;
@@ -207,55 +210,57 @@ bool GetClosestCursorIndexTest( const GetClosestCursorIndexData& data )
   return true;
 }
 
-bool GetCursorPositionTest( const GetCursorPositionData& data )
+bool GetCursorPositionTest(const GetCursorPositionData& data)
 {
   std::cout << "  testing : " << data.description << std::endl;
 
   // 1) Create the model.
-  ModelPtr textModel;
+  ModelPtr   textModel;
   MetricsPtr metrics;
-  Size textArea(400.f, 600.f);
-  Size layoutSize;
+  Size       textArea(400.f, 600.f);
+  Size       layoutSize;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  LayoutOptions options;
-  CreateTextModel( data.text,
-                   textArea,
-                   fontDescriptionRuns,
-                   options,
-                   layoutSize,
-                   textModel,
-                   metrics,
-                   false,
-                   LineWrap::WORD,
-                   false,
-                   Toolkit::DevelText::EllipsisPosition::END,
-                   0.f );
+  LayoutOptions              options;
+  CreateTextModel(data.text,
+                  textArea,
+                  fontDescriptionRuns,
+                  options,
+                  layoutSize,
+                  textModel,
+                  metrics,
+                  false,
+                  LineWrap::WORD,
+                  false,
+                  Toolkit::DevelText::EllipsisPosition::END,
+                  0.0f, // lineSpacing
+                  0.0f  // characterSpacing
+  );
 
   LogicalModelPtr logicalModel = textModel->mLogicalModel;
-  VisualModelPtr visualModel = textModel->mVisualModel;
+  VisualModelPtr  visualModel  = textModel->mVisualModel;
 
   GetCursorPositionParameters parameters;
-  parameters.visualModel = visualModel;
+  parameters.visualModel  = visualModel;
   parameters.logicalModel = logicalModel;
-  parameters.metrics = metrics;
-  parameters.isMultiline = true;
+  parameters.metrics      = metrics;
+  parameters.isMultiline  = true;
 
-  for( unsigned int index = 0; index < data.numberOfTests; ++index )
+  for(unsigned int index = 0; index < data.numberOfTests; ++index)
   {
     CursorInfo cursorInfo;
     parameters.logical = data.logicalIndex[index];
 
-    GetCursorPosition( parameters,
-                       0.f,// Since this test case is not testing the primary cursor height, the default font line height can be set to 0.f.
-                       cursorInfo );
+    GetCursorPosition(parameters,
+                      0.f, // Since this test case is not testing the primary cursor height, the default font line height can be set to 0.f.
+                      cursorInfo);
 
-    if( floor(cursorInfo.primaryPosition.x) != data.visualX[index] )
+    if(floor(cursorInfo.primaryPosition.x) != data.visualX[index])
     {
       std::cout << "  test " << index << " failed. Different 'x' cursor position : " << cursorInfo.primaryPosition.x << ", expected : " << data.visualX[index] << std::endl;
       return false;
     }
-    if( floor(cursorInfo.primaryPosition.y) != data.visualY[index] )
+    if(floor(cursorInfo.primaryPosition.y) != data.visualY[index])
     {
       std::cout << "  test " << index << " failed. Different 'y' cursor position : " << cursorInfo.primaryPosition.y << ", expected : " << data.visualY[index] << std::endl;
       return false;
@@ -265,64 +270,66 @@ bool GetCursorPositionTest( const GetCursorPositionData& data )
   return true;
 }
 
-bool FindSelectionIndicesTest( const FindSelectionIndicesData& data )
+bool FindSelectionIndicesTest(const FindSelectionIndicesData& data)
 {
   std::cout << "  testing : " << data.description << std::endl;
 
   // 1) Create the model.
-  ModelPtr textModel;
+  ModelPtr   textModel;
   MetricsPtr metrics;
-  Size textArea(400.f, 600.f);
-  Size layoutSize;
+  Size       textArea(400.f, 600.f);
+  Size       layoutSize;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  LayoutOptions options;
-  CreateTextModel( data.text,
-                   textArea,
-                   fontDescriptionRuns,
-                   options,
-                   layoutSize,
-                   textModel,
-                   metrics,
-                   false,
-                   LineWrap::WORD,
-                   false,
-                   Toolkit::DevelText::EllipsisPosition::END,
-                   0.f );
+  LayoutOptions              options;
+  CreateTextModel(data.text,
+                  textArea,
+                  fontDescriptionRuns,
+                  options,
+                  layoutSize,
+                  textModel,
+                  metrics,
+                  false,
+                  LineWrap::WORD,
+                  false,
+                  Toolkit::DevelText::EllipsisPosition::END,
+                  0.0f, // lineSpacing
+                  0.0f  // characterSpacing
+  );
 
   LogicalModelPtr logicalModel = textModel->mLogicalModel;
-  VisualModelPtr visualModel = textModel->mVisualModel;
+  VisualModelPtr  visualModel  = textModel->mVisualModel;
 
-  for( unsigned int index = 0; index < data.numberOfTests; ++index )
+  for(unsigned int index = 0; index < data.numberOfTests; ++index)
   {
-    CharacterIndex startIndex = 0;
-    CharacterIndex endIndex = 0;
+    CharacterIndex startIndex     = 0;
+    CharacterIndex endIndex       = 0;
     CharacterIndex noTextHitIndex = 0;
-    const bool found = FindSelectionIndices( visualModel,
-                                             logicalModel,
-                                             metrics,
-                                             data.visualX[index],
-                                             data.visualY[index],
-                                             startIndex,
-                                             endIndex,
-                                             noTextHitIndex );
-
-    if( found != data.found[index] )
-    {
-      std::cout << "  test " << index << " failed. Different found value : " << found << ", expected : " <<  data.found[index] << std::endl;
+    const bool     found          = FindSelectionIndices(visualModel,
+                                            logicalModel,
+                                            metrics,
+                                            data.visualX[index],
+                                            data.visualY[index],
+                                            startIndex,
+                                            endIndex,
+                                            noTextHitIndex);
+
+    if(found != data.found[index])
+    {
+      std::cout << "  test " << index << " failed. Different found value : " << found << ", expected : " << data.found[index] << std::endl;
       return false;
     }
-    if( startIndex != data.startIndex[index] )
+    if(startIndex != data.startIndex[index])
     {
       std::cout << "  test " << index << " failed. Different start index : " << startIndex << ", expected : " << data.startIndex[index] << std::endl;
       return false;
     }
-    if( endIndex != data.endIndex[index] )
+    if(endIndex != data.endIndex[index])
     {
       std::cout << "  test " << index << " failed. Different end index : " << endIndex << ", expected : " << data.endIndex[index] << std::endl;
       return false;
     }
-    if( noTextHitIndex != data.noTextHitIndex[index] )
+    if(noTextHitIndex != data.noTextHitIndex[index])
     {
       std::cout << "  test " << index << " failed. Different no text hit index : " << noTextHitIndex << ", expected : " << data.noTextHitIndex[index] << std::endl;
       return false;
@@ -331,84 +338,86 @@ bool FindSelectionIndicesTest( const FindSelectionIndicesData& data )
   return true;
 }
 
-bool PrimaryCursorHeightTest( const PrimaryCursorHeightData& data )
+bool PrimaryCursorHeightTest(const PrimaryCursorHeightData& data)
 {
   std::cout << "  testing : " << data.description << std::endl;
 
   // 1) Create the model.
-  ModelPtr textModel;
+  ModelPtr   textModel;
   MetricsPtr metrics;
-  Size textArea(400.f, 600.f);
-  Size layoutSize;
+  Size       textArea(400.f, 600.f);
+  Size       layoutSize;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
 
-  const std::string fontFamily( "DejaVuSans" );
+  const std::string fontFamily("DejaVuSans");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun1;
-  fontDescriptionRun1.characterRun.characterIndex = 0u;
+  fontDescriptionRun1.characterRun.characterIndex     = 0u;
   fontDescriptionRun1.characterRun.numberOfCharacters = 13u;
-  fontDescriptionRun1.familyLength = fontFamily.size();
-  fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
-  memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
+  fontDescriptionRun1.familyLength                    = fontFamily.size();
+  fontDescriptionRun1.familyName                      = new char[fontDescriptionRun1.familyLength];
+  memcpy(fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength);
   fontDescriptionRun1.familyDefined = true;
   fontDescriptionRun1.weightDefined = false;
-  fontDescriptionRun1.widthDefined = false;
-  fontDescriptionRun1.slantDefined = false;
-  fontDescriptionRun1.sizeDefined = true;
-  fontDescriptionRun1.size = 768u;//Font size = 12.0f (768/64 = 12)
+  fontDescriptionRun1.widthDefined  = false;
+  fontDescriptionRun1.slantDefined  = false;
+  fontDescriptionRun1.sizeDefined   = true;
+  fontDescriptionRun1.size          = 768u; //Font size = 12.0f (768/64 = 12)
 
-  fontDescriptionRuns.PushBack( fontDescriptionRun1 );
+  fontDescriptionRuns.PushBack(fontDescriptionRun1);
 
   LayoutOptions options;
-  CreateTextModel( data.text,
-                   textArea,
-                   fontDescriptionRuns,
-                   options,
-                   layoutSize,
-                   textModel,
-                   metrics,
-                   false,
-                   LineWrap::WORD,
-                   false,
-                   Toolkit::DevelText::EllipsisPosition::END,
-                   50.f );
+  CreateTextModel(data.text,
+                  textArea,
+                  fontDescriptionRuns,
+                  options,
+                  layoutSize,
+                  textModel,
+                  metrics,
+                  false,
+                  LineWrap::WORD,
+                  false,
+                  Toolkit::DevelText::EllipsisPosition::END,
+                  50.0f, // lineSpacing
+                  50.0f  // characterSpacing
+  );
 
   LogicalModelPtr logicalModel = textModel->mLogicalModel;
-  VisualModelPtr visualModel = textModel->mVisualModel;
+  VisualModelPtr  visualModel  = textModel->mVisualModel;
 
   GetCursorPositionParameters parameters;
-  parameters.visualModel = visualModel;
+  parameters.visualModel  = visualModel;
   parameters.logicalModel = logicalModel;
-  parameters.metrics = metrics;
-  parameters.isMultiline = true;
+  parameters.metrics      = metrics;
+  parameters.isMultiline  = true;
 
-  for( unsigned int index = 0; index < data.numberOfTests; ++index )
+  for(unsigned int index = 0; index < data.numberOfTests; ++index)
   {
     CursorInfo cursorInfo;
     parameters.logical = data.logicalIndex[index];
 
     // Load some fonts.
     TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
-    fontClient.SetDpi( 93u, 93u );
+    fontClient.SetDpi(93u, 93u);
 
-    char* pathNamePtr = get_current_dir_name();
-    const std::string pathName( pathNamePtr );
-    free( pathNamePtr );
+    char*             pathNamePtr = get_current_dir_name();
+    const std::string pathName(pathNamePtr);
+    free(pathNamePtr);
 
-    FontId fontID = fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/dejavu/DejaVuSans.ttf" );
+    FontId fontID = fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/dejavu/DejaVuSans.ttf");
 
     Text::FontMetrics fontMetrics;
-    MetricsPtr mMetrics = Metrics::New(fontClient);
+    MetricsPtr        mMetrics = Metrics::New(fontClient);
     mMetrics->GetFontMetrics(fontID, fontMetrics);
     float defaultFontLineHeight = (fontMetrics.ascender - fontMetrics.descender);
 
-    GetCursorPosition( parameters,
-                       defaultFontLineHeight,
-                       cursorInfo );
+    GetCursorPosition(parameters,
+                      defaultFontLineHeight,
+                      cursorInfo);
 
-    if( floor(cursorInfo.primaryCursorHeight) != data.heights[index] )
+    if(floor(cursorInfo.primaryCursorHeight) != data.heights[index])
     {
       std::cout << "  test " << index << " failed. Different primaryCursorHeight : " << cursorInfo.primaryCursorHeight << ", expected : " << data.heights[index] << std::endl;
       return false;
@@ -434,56 +443,49 @@ int UtcDaliGetClosestLine(void)
 {
   tet_infoline(" UtcDaliGetClosestLine");
 
-  float visualY01[] = { -4.f, 3.f, 1000.f };
-  LineIndex lineIndices01[] = { 0, 0, 0 };
-  bool isLineHit01[] = { false, false, false };
+  float     visualY01[]     = {-4.f, 3.f, 1000.f};
+  LineIndex lineIndices01[] = {0, 0, 0};
+  bool      isLineHit01[]   = {false, false, false};
 
-  float visualY02[] = { -4.f, 3.f, 1000.f };
-  LineIndex lineIndices02[] = { 0, 0, 0 };
-  bool isLineHit02[] = { false, true, false };
+  float     visualY02[]     = {-4.f, 3.f, 1000.f};
+  LineIndex lineIndices02[] = {0, 0, 0};
+  bool      isLineHit02[]   = {false, true, false};
 
-  float visualY03[] = { -4.f, 11.f, 30.f, 51.f, 68.f, 87.f, 109.f, 130.f };
-  LineIndex lineIndices03[] = { 0, 0, 1u, 2u, 3u, 4u, 5u, 5u };
-  bool isLineHit03[] = { false, true, true, true, true, true, true, false };
+  float     visualY03[]     = {-4.f, 11.f, 30.f, 51.f, 68.f, 87.f, 109.f, 130.f};
+  LineIndex lineIndices03[] = {0, 0, 1u, 2u, 3u, 4u, 5u, 5u};
+  bool      isLineHit03[]   = {false, true, true, true, true, true, true, false};
 
   struct GetClosestLineData data[] =
-  {
-    {
-      "void text.",
-      "",
-      3u,
-      visualY01,
-      lineIndices01,
-      isLineHit01
-    },
-    {
-      "Single line text.",
-      "hello world",
-      3u,
-      visualY02,
-      lineIndices02,
-      isLineHit02
-    },
     {
-      "Multi-line text.",
-      "abcשנבdefגקכghiעיןjklחלךmnoצמםpqrפרףstuדאוvwxה"
-      "סתyzטזץabcשנבdefגקכghiעיןjklחלךmnoצמםpqrפרףstuד"
-      "אוvwxהסתyzטזץabcשנבdefגקכghiעיןjklחלךmnoצמםpqr"
-      "פרףstuדאוvwxהסתyzטזץabcשנבdefגקכghiעיןjklחלךmno"
-      "צמםpqrפרףstuדאוvwxהסתyzטזץabcשנבdefגקכghiעיןjkl"
-      "חלךmnoצמםpqrפרףstuדאוvwxהסתyzטזץ",
-      8u,
-      visualY03,
-      lineIndices03,
-      isLineHit03
-    }
-  };
+      {"void text.",
+       "",
+       3u,
+       visualY01,
+       lineIndices01,
+       isLineHit01},
+      {"Single line text.",
+       "hello world",
+       3u,
+       visualY02,
+       lineIndices02,
+       isLineHit02},
+      {"Multi-line text.",
+       "abcשנבdefגקכghiעיןjklחלךmnoצמםpqrפרףstuדאוvwxה"
+       "סתyzטזץabcשנבdefגקכghiעיןjklחלךmnoצמםpqrפרףstuד"
+       "אוvwxהסתyzטזץabcשנבdefגקכghiעיןjklחלךmnoצמםpqr"
+       "פרףstuדאוvwxהסתyzטזץabcשנבdefגקכghiעיןjklחלךmno"
+       "צמםpqrפרףstuדאוvwxהסתyzטזץabcשנבdefגקכghiעיןjkl"
+       "חלךmnoצמםpqrפרףstuדאוvwxהסתyzטזץ",
+       8u,
+       visualY03,
+       lineIndices03,
+       isLineHit03}};
   const unsigned int numberOfTests = 3u;
 
-  for( unsigned int index = 0; index < numberOfTests; ++index )
+  for(unsigned int index = 0; index < numberOfTests; ++index)
   {
     ToolkitTestApplication application;
-    if( !GetClosestLineTest( data[index] ) )
+    if(!GetClosestLineTest(data[index]))
     {
       tet_result(TET_FAIL);
     }
@@ -497,23 +499,23 @@ int UtcDaliGetClosestCursorIndex(void)
 {
   tet_infoline(" UtcDaliGetClosestCursorIndex");
 
-  float visualX01[] = { -100.f };
-  float visualY01[] = { -100.f };
-  CharacterHitTest::Mode mode01[] = { CharacterHitTest::TAP };
-  CharacterIndex logicalIndex01[] = { 0 };
-  bool isCharacterHit01[] = { false };
+  float                  visualX01[]        = {-100.f};
+  float                  visualY01[]        = {-100.f};
+  CharacterHitTest::Mode mode01[]           = {CharacterHitTest::TAP};
+  CharacterIndex         logicalIndex01[]   = {0};
+  bool                   isCharacterHit01[] = {false};
 
-  float visualX02[] = { -100.f, 1000.f, 60.f, 79.f, 83.f, 148.f, 99.f };
-  float visualY02[] = { -100.f, 1000.f, 12.f, 12.f, 12.f, 12.f, 12.f };
-  CharacterHitTest::Mode mode02[] = { CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP };
-  CharacterIndex logicalIndex02[] = { 0, 21u, 7u, 10u, 10u, 14u, 12u };
-  bool isCharacterHit02[] = { false, false, true, true, true, true, true  };
+  float                  visualX02[]        = {-100.f, 1000.f, 60.f, 79.f, 83.f, 148.f, 99.f};
+  float                  visualY02[]        = {-100.f, 1000.f, 12.f, 12.f, 12.f, 12.f, 12.f};
+  CharacterHitTest::Mode mode02[]           = {CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP};
+  CharacterIndex         logicalIndex02[]   = {0, 21u, 7u, 10u, 10u, 14u, 12u};
+  bool                   isCharacterHit02[] = {false, false, true, true, true, true, true};
 
-  float visualX03[] = { 19.f, 104.f, -2.f, 127.f };
-  float visualY03[] = { 12.f, 12.f, 12.f, 12.f };
-  CharacterHitTest::Mode mode03[] = { CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP };
-  CharacterIndex logicalIndex03[] = { 3u, 13u, 0, 18u };
-  bool isCharacterHit03[] = { true, true, false, false };
+  float                  visualX03[]        = {19.f, 104.f, -2.f, 127.f};
+  float                  visualY03[]        = {12.f, 12.f, 12.f, 12.f};
+  CharacterHitTest::Mode mode03[]           = {CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP};
+  CharacterIndex         logicalIndex03[]   = {3u, 13u, 0, 18u};
+  bool                   isCharacterHit03[] = {true, true, false, false};
 
   //  0     5 _ 6     11  12
   //   Hello     world  \n
@@ -521,22 +523,11 @@ int UtcDaliGetClosestCursorIndex(void)
   //   שלום       עולם  \n
   // 22         31_32      40  41
   //   different     الأربعاء  \n
-  float visualX04[] = { -100.f, 40.f, 44.f, 85.f, 500.f,
-                         500.f, 367.f, 359.f, 329.f, -100.f,
-                        -100.f, 19.f, 64.f, 72.f, 104.f, 111.f, 500.f};
-  float visualY04[] = { -100.f, 12.f, 12.f, 12.f, 12.f,
-                          30.f, 30.f, 30.f, 30.f, 30.f,
-                          50.f, 50.f, 50.f, 50.f, 50.f, 50.f, 50.f };
-  CharacterHitTest::Mode mode04[] = { CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP,
-                                      CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP,
-                                      CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP };
-  CharacterIndex logicalIndex04[] = {    0,  5u,  6u, 11u, 11u,
-                                       12u, 16u, 17u, 21u, 21u,
-                                       22u, 25u, 30u, 32u, 35u, 34u, 40u,
-                                       41u };
-  bool isCharacterHit04[] = { false, true, true, true, false,
-                              false, true, true, true, false,
-                              false, true, true, true, true, true, false };
+  float                  visualX04[]        = {-100.f, 40.f, 44.f, 85.f, 500.f, 500.f, 367.f, 359.f, 329.f, -100.f, -100.f, 19.f, 64.f, 72.f, 104.f, 111.f, 500.f};
+  float                  visualY04[]        = {-100.f, 12.f, 12.f, 12.f, 12.f, 30.f, 30.f, 30.f, 30.f, 30.f, 50.f, 50.f, 50.f, 50.f, 50.f, 50.f, 50.f};
+  CharacterHitTest::Mode mode04[]           = {CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP};
+  CharacterIndex         logicalIndex04[]   = {0, 5u, 6u, 11u, 11u, 12u, 16u, 17u, 21u, 21u, 22u, 25u, 30u, 32u, 35u, 34u, 40u, 41u};
+  bool                   isCharacterHit04[] = {false, true, true, true, false, false, true, true, true, false, false, true, true, true, true, true, false};
 
   //   0           10           20            30           40      46
   //    abcשנבdefג   קכghiעיןjk   lחלךmnoצמם   pqrפרףstuד   אוvwxה
@@ -551,36 +542,11 @@ int UtcDaliGetClosestCursorIndex(void)
   // 233        240            250           260     265
   //    חלךmnoצ    מםpqrפרףst   uדאוvwxהסת    yzטזץ
 
-  float visualX05[] = { -100.f, 96.f, 155.f, 250.f, 344.f, 500.f,
-                        -100.f, 36.f, 124.f, 190.f, 280.f, 500.f,
-                        -100.f, 56.f, 158.f, 237.f, 303.f, 500.f,
-                        -100.f, 98.f, 184.f, 261.f, 337.f, 500.f,
-                        -100.f, 40.f, 113.f, 223.f, 302.f, 500.f,
-                        -100.f, 82.f, 160.f, 253.f, 500.f };
-  float visualY05[] = { -100.f, 12.f, 12.f, 12.f, 12.f, 12.f,
-                        30.f, 30.f, 30.f, 30.f, 30.f, 30.f,
-                        50.f, 50.f, 50.f, 50.f, 50.f, 50.f,
-                        67.f, 67.f, 67.f, 67.f, 67.f, 67.f,
-                        87.f, 87.f, 87.f, 87.f, 87.f, 87.f,
-                        107.f, 107.f, 107.f, 107.f, 107.f };
-  CharacterHitTest::Mode mode05[] = { CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP,
-                                      CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP,
-                                      CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP,
-                                      CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP,
-                                      CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP,
-                                      CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP };
-  CharacterIndex logicalIndex05[] = {    0,  10u,  19u,  28u,  39u,  44u,
-                                       45u,  48u,  59u,  66u,  78u,  87u,
-                                       89u,  96u, 106u, 115u, 124u, 133u,
-                                      134u, 145u, 154u, 162u, 171u, 179u,
-                                      180u, 184u, 191u, 203u, 212u,
-                                      221u, 222u, 233u, 241u, 251u, 265u };
-  bool isCharacterHit05[] = { false, true, true, true, true, false,
-                              false, true, true, true, true, false,
-                              false, true, true, true, true, false,
-                              false, true, true, true, true, false,
-                              false, true, true, true, true, false,
-                              false, true, true, true, false };
+  float                  visualX05[]        = {-100.f, 96.f, 155.f, 250.f, 344.f, 500.f, -100.f, 36.f, 124.f, 190.f, 280.f, 500.f, -100.f, 56.f, 158.f, 237.f, 303.f, 500.f, -100.f, 98.f, 184.f, 261.f, 337.f, 500.f, -100.f, 40.f, 113.f, 223.f, 302.f, 500.f, -100.f, 82.f, 160.f, 253.f, 500.f};
+  float                  visualY05[]        = {-100.f, 12.f, 12.f, 12.f, 12.f, 12.f, 30.f, 30.f, 30.f, 30.f, 30.f, 30.f, 50.f, 50.f, 50.f, 50.f, 50.f, 50.f, 67.f, 67.f, 67.f, 67.f, 67.f, 67.f, 87.f, 87.f, 87.f, 87.f, 87.f, 87.f, 107.f, 107.f, 107.f, 107.f, 107.f};
+  CharacterHitTest::Mode mode05[]           = {CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP};
+  CharacterIndex         logicalIndex05[]   = {0, 10u, 19u, 28u, 39u, 44u, 45u, 48u, 59u, 66u, 78u, 87u, 89u, 96u, 106u, 115u, 124u, 133u, 134u, 145u, 154u, 162u, 171u, 179u, 180u, 184u, 191u, 203u, 212u, 221u, 222u, 233u, 241u, 251u, 265u};
+  bool                   isCharacterHit05[] = {false, true, true, true, true, false, false, true, true, true, true, false, false, true, true, true, true, false, false, true, true, true, true, false, false, true, true, true, true, false, false, true, true, true, false};
 
   //   0            10           20           30           40        46
   //    שנבabcגקכd    efעיןghiחל   ךjklצמםmno   פרףpqrדאוs   tuהסתv
@@ -595,150 +561,108 @@ int UtcDaliGetClosestCursorIndex(void)
   // 232         240           250           260     265
   //    ךjklצמםm   noפרףpqrדא    וstuהסתvwx   טזץyz
 
-  float visualX06[] = { 500.f, 307.f, 237.f, 148.f, 55.f, -100.f,
-                        500.f, 362.f, 276.f, 213.f, 121.f, -100.f,
-                        500.f, 344.f, 238.f, 167.f, 93.f, -100.f,
-                        500.f, 306.f, 216.f, 142.f, 58.f, -100.f,
-                        500.f, 355.f, 279.f, 182.f, 92.f, -100.f,
-                        500.f, 326.f, 238.f, 150.f, -100.f };
-  float visualY06[] = { -100.f, 12.f, 12.f, 12.f, 12.f, 12.f,
-                        30.f, 30.f, 30.f, 30.f, 30.f, 30.f,
-                        50.f, 50.f, 50.f, 50.f, 50.f, 50.f,
-                        67.f, 67.f, 67.f, 67.f, 67.f, 67.f,
-                        87.f, 87.f, 87.f, 87.f, 87.f, 87.f,
-                        107.f, 107.f, 107.f, 107.f, 107.f };
-  CharacterHitTest::Mode mode06[] = { CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP,
-                                      CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP,
-                                      CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP,
-                                      CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP,
-                                      CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP,
-                                      CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP };
-  CharacterIndex logicalIndex06[] = {    0,  11u,  19u,  28u,  39u,  44u,
-                                       45u,  48u,  57u,  65u,  78u,  87u,
-                                       89u,  96u, 107u, 114u, 124u, 133u,
-                                      134u, 144u, 154u, 162u, 171u, 178u,
-                                      179u, 185u, 192u, 203u, 212u, 221u,
-                                      222u, 232u, 240u, 251u, 265u  };
-  bool isCharacterHit06[] = { false, true, true, true, true, false,
-                              false, true, true, true, true, false,
-                              false, true, true, true, true, false,
-                              false, true, true, true, true, false,
-                              false, true, true, true, true, false,
-                              false, true, true, true, false };
-
-  float visualX07[] = { 395.f };
-  float visualY07[] = { 12.f };
-  CharacterHitTest::Mode mode07[] = { CharacterHitTest::TAP };
-  CharacterIndex logicalIndex07[] = { 1u };
-  bool isCharacterHit07[] = { true };
-
-  float visualX08[] = { 7.f };
-  float visualY08[] = { 12.f };
-  CharacterHitTest::Mode mode08[] = { CharacterHitTest::TAP };
-  CharacterIndex logicalIndex08[] = { 1u };
-  bool isCharacterHit08[] = { true };
+  float                  visualX06[]        = {500.f, 307.f, 237.f, 148.f, 55.f, -100.f, 500.f, 362.f, 276.f, 213.f, 121.f, -100.f, 500.f, 344.f, 238.f, 167.f, 93.f, -100.f, 500.f, 306.f, 216.f, 142.f, 58.f, -100.f, 500.f, 355.f, 279.f, 182.f, 92.f, -100.f, 500.f, 326.f, 238.f, 150.f, -100.f};
+  float                  visualY06[]        = {-100.f, 12.f, 12.f, 12.f, 12.f, 12.f, 30.f, 30.f, 30.f, 30.f, 30.f, 30.f, 50.f, 50.f, 50.f, 50.f, 50.f, 50.f, 67.f, 67.f, 67.f, 67.f, 67.f, 67.f, 87.f, 87.f, 87.f, 87.f, 87.f, 87.f, 107.f, 107.f, 107.f, 107.f, 107.f};
+  CharacterHitTest::Mode mode06[]           = {CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP};
+  CharacterIndex         logicalIndex06[]   = {0, 11u, 19u, 28u, 39u, 44u, 45u, 48u, 57u, 65u, 78u, 87u, 89u, 96u, 107u, 114u, 124u, 133u, 134u, 144u, 154u, 162u, 171u, 178u, 179u, 185u, 192u, 203u, 212u, 221u, 222u, 232u, 240u, 251u, 265u};
+  bool                   isCharacterHit06[] = {false, true, true, true, true, false, false, true, true, true, true, false, false, true, true, true, true, false, false, true, true, true, true, false, false, true, true, true, true, false, false, true, true, true, false};
+
+  float                  visualX07[]        = {395.f};
+  float                  visualY07[]        = {12.f};
+  CharacterHitTest::Mode mode07[]           = {CharacterHitTest::TAP};
+  CharacterIndex         logicalIndex07[]   = {1u};
+  bool                   isCharacterHit07[] = {true};
+
+  float                  visualX08[]        = {7.f};
+  float                  visualY08[]        = {12.f};
+  CharacterHitTest::Mode mode08[]           = {CharacterHitTest::TAP};
+  CharacterIndex         logicalIndex08[]   = {1u};
+  bool                   isCharacterHit08[] = {true};
 
   struct GetClosestCursorIndexData data[] =
-  {
     {
-      "Void text.",
-      "",
-      1u,
-      visualX01,
-      visualY01,
-      mode01,
-      logicalIndex01,
-      isCharacterHit01
-    },
-    {
-      "Single line text.",
-      "Hello world שלום עולם",
-      7u,
-      visualX02,
-      visualY02,
-      mode02,
-      logicalIndex02,
-      isCharacterHit02
-    },
-    {
-      "Single line with ligatures",
-      "different الأربعاء",
-      4u,
-      visualX03,
-      visualY03,
-      mode03,
-      logicalIndex03,
-      isCharacterHit03
-    },
-    {
-      "Multiline. Single line paragraphs",
-      "Hello world\n"
-      "שלום עולם\n"
-      "different الأربعاء\n",
-      17u,
-      visualX04,
-      visualY04,
-      mode04,
-      logicalIndex04,
-      isCharacterHit04
-    },
-    {
-      "Multiline. Single bidirectional paragraph, starts LTR, wrapped lines",
-      "abcשנבdefגקכghiעיןjklחלךmnoצמםpqrפרףstuדאוvwxה"
-      "סתyzטזץabcשנבdefגקכghiעיןjklחלךmnoצמםpqrפרףstuד"
-      "אוvwxהסתyzטזץabcשנבdefגקכghiעיןjklחלךmnoצמםpqr"
-      "פרףstuדאוvwxהסתyzטזץabcשנבdefגקכghiעיןjklחלךmno"
-      "צמםpqrפרףstuדאוvwxהסתyzטזץabcשנבdefגקכghiעיןjkl"
-      "חלךmnoצמםpqrפרףstuדאוvwxהסתyzטזץ",
-      35u,
-      visualX05,
-      visualY05,
-      mode05,
-      logicalIndex05,
-      isCharacterHit05
-    },
-    {
-      "Multiline. Single bidirectional paragraph, starts RTL, wrapped lines",
-      "שנבabcגקכdefעיןghiחלךjklצמםmnoפרףpqrדאוstuהסתv"
-      "wxטזץyzשנבabcגקכdefעיןghiחלךjklצמםmnoפרףpqrדאוs"
-      "tuהסתvwxטזץyzשנבabcגקכdefעיןghiחלךjklצמםmnoפרף"
-      "pqrדאוstuהסתvwxטזץyzשנבabcגקכdefעיןghiחלךjklצמם"
-      "mnoפרףpqrדאוstuהסתvwxטזץyzשנבabcגקכdefעיןghiחל"
-      "ךjklצמםmnoפרףpqrדאוstuהסתvwxטזץyz",
-      35u,
-      visualX06,
-      visualY06,
-      mode06,
-      logicalIndex06,
-      isCharacterHit06
-    },
-    {
-      "Testing complex characters. Arabic ligatures",
-      "الأَبْجَدِيَّة العَرَبِيَّة",
-      1u,
-      visualX07,
-      visualY07,
-      mode07,
-      logicalIndex07,
-      isCharacterHit07
-    },
-    {
-      "Testing complex characters. Latin ligatures",
-      "fi ligature",
-      1u,
-      visualX08,
-      visualY08,
-      mode08,
-      logicalIndex08,
-      isCharacterHit08
-    }
-  };
+      {"Void text.",
+       "",
+       1u,
+       visualX01,
+       visualY01,
+       mode01,
+       logicalIndex01,
+       isCharacterHit01},
+      {"Single line text.",
+       "Hello world שלום עולם",
+       7u,
+       visualX02,
+       visualY02,
+       mode02,
+       logicalIndex02,
+       isCharacterHit02},
+      {"Single line with ligatures",
+       "different الأربعاء",
+       4u,
+       visualX03,
+       visualY03,
+       mode03,
+       logicalIndex03,
+       isCharacterHit03},
+      {"Multiline. Single line paragraphs",
+       "Hello world\n"
+       "שלום עולם\n"
+       "different الأربعاء\n",
+       17u,
+       visualX04,
+       visualY04,
+       mode04,
+       logicalIndex04,
+       isCharacterHit04},
+      {"Multiline. Single bidirectional paragraph, starts LTR, wrapped lines",
+       "abcשנבdefגקכghiעיןjklחלךmnoצמםpqrפרףstuדאוvwxה"
+       "סתyzטזץabcשנבdefגקכghiעיןjklחלךmnoצמםpqrפרףstuד"
+       "אוvwxהסתyzטזץabcשנבdefגקכghiעיןjklחלךmnoצמםpqr"
+       "פרףstuדאוvwxהסתyzטזץabcשנבdefגקכghiעיןjklחלךmno"
+       "צמםpqrפרףstuדאוvwxהסתyzטזץabcשנבdefגקכghiעיןjkl"
+       "חלךmnoצמםpqrפרףstuדאוvwxהסתyzטזץ",
+       35u,
+       visualX05,
+       visualY05,
+       mode05,
+       logicalIndex05,
+       isCharacterHit05},
+      {"Multiline. Single bidirectional paragraph, starts RTL, wrapped lines",
+       "שנבabcגקכdefעיןghiחלךjklצמםmnoפרףpqrדאוstuהסתv"
+       "wxטזץyzשנבabcגקכdefעיןghiחלךjklצמםmnoפרףpqrדאוs"
+       "tuהסתvwxטזץyzשנבabcגקכdefעיןghiחלךjklצמםmnoפרף"
+       "pqrדאוstuהסתvwxטזץyzשנבabcגקכdefעיןghiחלךjklצמם"
+       "mnoפרףpqrדאוstuהסתvwxטזץyzשנבabcגקכdefעיןghiחל"
+       "ךjklצמםmnoפרףpqrדאוstuהסתvwxטזץyz",
+       35u,
+       visualX06,
+       visualY06,
+       mode06,
+       logicalIndex06,
+       isCharacterHit06},
+      {"Testing complex characters. Arabic ligatures",
+       "الأَبْجَدِيَّة العَرَبِيَّة",
+       1u,
+       visualX07,
+       visualY07,
+       mode07,
+       logicalIndex07,
+       isCharacterHit07},
+      {"Testing complex characters. Latin ligatures",
+       "fi ligature",
+       1u,
+       visualX08,
+       visualY08,
+       mode08,
+       logicalIndex08,
+       isCharacterHit08}};
   const unsigned int numberOfTests = 8u;
 
-  for( unsigned int index = 0; index < numberOfTests; ++index )
+  for(unsigned int index = 0; index < numberOfTests; ++index)
   {
     ToolkitTestApplication application;
-    if( !GetClosestCursorIndexTest( data[index] ) )
+    if(!GetClosestCursorIndexTest(data[index]))
     {
       tet_result(TET_FAIL);
     }
@@ -752,27 +676,26 @@ int UtcDaliGetCursorPosition(void)
 {
   tet_infoline(" UtcDaliGetCursorPosition");
 
-  float visualX08[] = { 5.f };
-  float visualY08[] = { 0.f };
-  CharacterIndex logicalIndex08[] = { 1u };
+  float          visualX08[]      = {5.f};
+  float          visualY08[]      = {0.f};
+  CharacterIndex logicalIndex08[] = {1u};
 
   struct GetCursorPositionData data[] =
-  {
     {
-      "Testing complex characters. Latin ligatures",
-      "fi ligature",
-      1u,
-      logicalIndex08,
-      visualX08,
-      visualY08,
-    }
-  };
+      {
+        "Testing complex characters. Latin ligatures",
+        "fi ligature",
+        1u,
+        logicalIndex08,
+        visualX08,
+        visualY08,
+      }};
   const unsigned int numberOfTests = 1u;
 
-  for( unsigned int index = 0; index < numberOfTests; ++index )
+  for(unsigned int index = 0; index < numberOfTests; ++index)
   {
     ToolkitTestApplication application;
-    if( !GetCursorPositionTest( data[index] ) )
+    if(!GetCursorPositionTest(data[index]))
     {
       tet_result(TET_FAIL);
     }
@@ -786,123 +709,111 @@ int UtcDaliFindSelectionIndices(void)
 {
   tet_infoline(" UtcDaliFindSelectionIndices");
 
-  float visualX01[] = { -100.f };
-  float visualY01[] = { -100.f };
-  bool found01[] = { false };
-  CharacterIndex startIndex01[] = { 0 };
-  CharacterIndex endIndex01[] = { 0 };
-  CharacterIndex noHitText01[] = { 0 };
-
-  float visualX02[] = { -100.f, 1000.f, 1000.f };
-  float visualY02[] = { -100.f, 12.f, 1000.f };
-  bool found02[] = { false, false, false };
-  CharacterIndex startIndex02[] = { 0, 6u, 6u };
-  CharacterIndex endIndex02[] = { 5u, 11u, 11u };
-  CharacterIndex noHitText02[] = { 0, 11u, 11u };
-
-  float visualX03[] = { 70.f };
-  float visualY03[] = { 12.f };
-  bool found03[] = { true };
-  CharacterIndex startIndex03[] = { 6u };
-  CharacterIndex endIndex03[] = { 11u };
-  CharacterIndex noHitText03[] = { 0u };
-
-  float visualX04[] = { 131.f };
-  float visualY04[] = { 12.f };
-  bool found04[] = { true };
-  CharacterIndex startIndex04[] = { 12u };
-  CharacterIndex endIndex04[] = { 16u };
-  CharacterIndex noHitText04[] = { 0u };
-
-  float visualX05[] = { 0.f };
-  float visualY05[] = { 12.f };
-  bool found05[] = { true };
-  CharacterIndex startIndex05[] = { 0 };
-  CharacterIndex endIndex05[] = { 1u };
-  CharacterIndex noHitText05[] = { 0 };
-
-  float visualX06[] = { 10.f };
-  float visualY06[] = { 12.f };
-  bool found06[] = { true };
-  CharacterIndex startIndex06[] = { 0 };
-  CharacterIndex endIndex06[] = { 1u };
-  CharacterIndex noHitText06[] = { 0u };
+  float          visualX01[]    = {-100.f};
+  float          visualY01[]    = {-100.f};
+  bool           found01[]      = {false};
+  CharacterIndex startIndex01[] = {0};
+  CharacterIndex endIndex01[]   = {0};
+  CharacterIndex noHitText01[]  = {0};
+
+  float          visualX02[]    = {-100.f, 1000.f, 1000.f};
+  float          visualY02[]    = {-100.f, 12.f, 1000.f};
+  bool           found02[]      = {false, false, false};
+  CharacterIndex startIndex02[] = {0, 6u, 6u};
+  CharacterIndex endIndex02[]   = {5u, 11u, 11u};
+  CharacterIndex noHitText02[]  = {0, 11u, 11u};
+
+  float          visualX03[]    = {70.f};
+  float          visualY03[]    = {12.f};
+  bool           found03[]      = {true};
+  CharacterIndex startIndex03[] = {6u};
+  CharacterIndex endIndex03[]   = {11u};
+  CharacterIndex noHitText03[]  = {0u};
+
+  float          visualX04[]    = {131.f};
+  float          visualY04[]    = {12.f};
+  bool           found04[]      = {true};
+  CharacterIndex startIndex04[] = {12u};
+  CharacterIndex endIndex04[]   = {16u};
+  CharacterIndex noHitText04[]  = {0u};
+
+  float          visualX05[]    = {0.f};
+  float          visualY05[]    = {12.f};
+  bool           found05[]      = {true};
+  CharacterIndex startIndex05[] = {0};
+  CharacterIndex endIndex05[]   = {1u};
+  CharacterIndex noHitText05[]  = {0};
+
+  float          visualX06[]    = {10.f};
+  float          visualY06[]    = {12.f};
+  bool           found06[]      = {true};
+  CharacterIndex startIndex06[] = {0};
+  CharacterIndex endIndex06[]   = {1u};
+  CharacterIndex noHitText06[]  = {0u};
 
   struct FindSelectionIndicesData data[] =
-  {
-    {
-      "void text",
-      "",
-      1u,
-      visualX01,
-      visualY01,
-      found01,
-      startIndex01,
-      endIndex01,
-      noHitText01
-    },
-    {
-      "touch out of text's boundaries",
-      "Hello world",
-      3u,
-      visualX02,
-      visualY02,
-      found02,
-      startIndex02,
-      endIndex02,
-      noHitText02
-    },
-    {
-      "touch on the text",
-      "Hello world demo",
-      1u,
-      visualX03,
-      visualY03,
-      found03,
-      startIndex03,
-      endIndex03,
-      noHitText03
-    },
     {
-      "touch on the new paragraph character at the end of line",
-      "Hello world demo\n",
-      1u,
-      visualX04,
-      visualY04,
-      found04,
-      startIndex04,
-      endIndex04,
-      noHitText04
-    },
-    {
-      "touch on a white space character. is the unique character of the line",
-      " ",
-      1u,
-      visualX05,
-      visualY05,
-      found05,
-      startIndex05,
-      endIndex05,
-      noHitText05
-    },
-    {
-      "touch on a white space character. is between two words",
-      "h ello",
-      1u,
-      visualX06,
-      visualY06,
-      found06,
-      startIndex06,
-      endIndex06,
-      noHitText06
-    },
-  };
+      {"void text",
+       "",
+       1u,
+       visualX01,
+       visualY01,
+       found01,
+       startIndex01,
+       endIndex01,
+       noHitText01},
+      {"touch out of text's boundaries",
+       "Hello world",
+       3u,
+       visualX02,
+       visualY02,
+       found02,
+       startIndex02,
+       endIndex02,
+       noHitText02},
+      {"touch on the text",
+       "Hello world demo",
+       1u,
+       visualX03,
+       visualY03,
+       found03,
+       startIndex03,
+       endIndex03,
+       noHitText03},
+      {"touch on the new paragraph character at the end of line",
+       "Hello world demo\n",
+       1u,
+       visualX04,
+       visualY04,
+       found04,
+       startIndex04,
+       endIndex04,
+       noHitText04},
+      {"touch on a white space character. is the unique character of the line",
+       " ",
+       1u,
+       visualX05,
+       visualY05,
+       found05,
+       startIndex05,
+       endIndex05,
+       noHitText05},
+      {"touch on a white space character. is between two words",
+       "h ello",
+       1u,
+       visualX06,
+       visualY06,
+       found06,
+       startIndex06,
+       endIndex06,
+       noHitText06},
+    };
   const unsigned int numberOfTests = 6u;
 
-  for( unsigned int index = 0; index < numberOfTests; ++index )
+  for(unsigned int index = 0; index < numberOfTests; ++index)
   {
     ToolkitTestApplication application;
-    if( !FindSelectionIndicesTest( data[index] ) )
+    if(!FindSelectionIndicesTest(data[index]))
     {
       tet_result(TET_FAIL);
     }
@@ -916,25 +827,24 @@ int UtcDaliPrimaryCursorHeight(void)
 {
   tet_infoline(" UtcDaliPrimaryCursorHeight");
 
-  float heights[] = { 19.f };
-  CharacterIndex logicalIndex[] = { 1u };
+  float          heights[]      = {19.f};
+  CharacterIndex logicalIndex[] = {1u};
 
   struct PrimaryCursorHeightData data[] =
-  {
     {
-      "Testing primary cursor height when line spacing is used.",
-      "Hello World",
-      1u,
-      logicalIndex,
-      heights,
-    }
-  };
+      {
+        "Testing primary cursor height when line spacing is used.",
+        "Hello World",
+        1u,
+        logicalIndex,
+        heights,
+      }};
   const unsigned int numberOfTests = 1u;
 
-  for( unsigned int index = 0; index < numberOfTests; ++index )
+  for(unsigned int index = 0; index < numberOfTests; ++index)
   {
     ToolkitTestApplication application;
-    if( !PrimaryCursorHeightTest( data[index] ) )
+    if(!PrimaryCursorHeightTest(data[index]))
     {
       tet_result(TET_FAIL);
     }
index 4f1d0f5..60781d0 100755 (executable)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
  *
  */
 
-#include <iostream>
 #include <stdlib.h>
 #include <unistd.h>
+#include <iostream>
 
+#include <dali-toolkit-test-suite-utils.h>
+#include <dali-toolkit/dali-toolkit.h>
 #include <dali-toolkit/internal/text/layouts/layout-engine.h>
 #include <dali-toolkit/internal/text/layouts/layout-parameters.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-utils.h>
 
 using namespace Dali;
 using namespace Toolkit;
 using namespace Text;
 
-
 namespace
 {
-
-const std::string DEFAULT_FONT_DIR( "/resources/fonts" );
+const std::string DEFAULT_FONT_DIR("/resources/fonts");
 
 struct LayoutTextData
 {
   std::string          text;
   Size                 textArea;
   unsigned int         numberOfFonts;
-  FontDescriptionRun  *fontDescriptions;
+  FontDescriptionRun*  fontDescriptions;
   unsigned int         numberOfLines;
   LineRun*             lines;
   Layout::Engine::Type layout;
@@ -50,81 +48,83 @@ struct LayoutTextData
   Text::LineWrap::Mode wrapMode;
 };
 
-void Print( const LineRun& line )
+void Print(const LineRun& line)
 {
   std::cout << "        glyph run, index : " << line.glyphRun.glyphIndex << ", num glyphs : " << line.glyphRun.numberOfGlyphs << std::endl;
   std::cout << "    character run, index : " << line.characterRun.characterIndex << ", num chars : " << line.characterRun.numberOfCharacters << std::endl;
 }
 
-bool LayoutTextTest( const LayoutTextData& data )
+bool LayoutTextTest(const LayoutTextData& data)
 {
   // Load some fonts.
   TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
-  fontClient.SetDpi( 96u, 96u );
+  fontClient.SetDpi(96u, 96u);
 
-  char* pathNamePtr = get_current_dir_name();
-  const std::string pathName( pathNamePtr );
-  free( pathNamePtr );
+  char*             pathNamePtr = get_current_dir_name();
+  const std::string pathName(pathNamePtr);
+  free(pathNamePtr);
 
-  fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
+  fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf");
 
   // 1) Create the model.
-  ModelPtr textModel;
+  ModelPtr   textModel;
   MetricsPtr metrics;
-  Size layoutSize;
+  Size       layoutSize;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  if( 0u != data.numberOfFonts )
+  if(0u != data.numberOfFonts)
   {
-    fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
-                                data.fontDescriptions,
-                                data.fontDescriptions + data.numberOfFonts );
+    fontDescriptionRuns.Insert(fontDescriptionRuns.End(),
+                               data.fontDescriptions,
+                               data.fontDescriptions + data.numberOfFonts);
   }
 
   LayoutOptions options;
   options.align = false;
-  CreateTextModel( data.text,
-                   data.textArea,
-                   fontDescriptionRuns,
-                   options,
-                   layoutSize,
-                   textModel,
-                   metrics,
-                   false,
-                   data.wrapMode,
-                   false,
-                   Toolkit::DevelText::EllipsisPosition::END,
-                   0.f );
+  CreateTextModel(data.text,
+                  data.textArea,
+                  fontDescriptionRuns,
+                  options,
+                  layoutSize,
+                  textModel,
+                  metrics,
+                  false,
+                  data.wrapMode,
+                  false,
+                  Toolkit::DevelText::EllipsisPosition::END,
+                  0.0f, // lineSpacing
+                  0.0f  // characterSpacing
+  );
 
   Vector<LineRun>& lines = textModel->mVisualModel->mLines;
 
   // 4) Compare the results.
 
-  if( lines.Count() != data.numberOfLines )
+  if(lines.Count() != data.numberOfLines)
   {
     std::cout << "  Different number of lines : " << lines.Count() << ", expected : " << data.numberOfLines << std::endl;
     return false;
   }
 
-  for( unsigned int index = 0u; index < data.numberOfLines; ++index )
+  for(unsigned int index = 0u; index < data.numberOfLines; ++index)
   {
-    const LineRun& line = *( lines.Begin() + index );
-    const LineRun& expectedLine = *( data.lines + index );
+    const LineRun& line         = *(lines.Begin() + index);
+    const LineRun& expectedLine = *(data.lines + index);
 
-    if( line.characterRun.characterIndex != expectedLine.characterRun.characterIndex )
+    if(line.characterRun.characterIndex != expectedLine.characterRun.characterIndex)
     {
       std::cout << "  Different line info for line : " << index << std::endl;
-      Print( line );
+      Print(line);
       std::cout << "  expected" << std::endl;
-      Print( expectedLine );
+      Print(expectedLine);
       return false;
     }
-    if( line.characterRun.numberOfCharacters != expectedLine.characterRun.numberOfCharacters )
+    if(line.characterRun.numberOfCharacters != expectedLine.characterRun.numberOfCharacters)
     {
       std::cout << "  Different line info for line : " << index << std::endl;
-      Print( line );
+      Print(line);
       std::cout << "  expected" << std::endl;
-      Print( expectedLine );
+      Print(expectedLine);
       return false;
     }
   }
@@ -134,7 +134,6 @@ bool LayoutTextTest( const LayoutTextData& data )
 
 } // namespace
 
-
 int UtcDaliTextHyphenWrapping(void)
 {
   ToolkitTestApplication application;
@@ -142,71 +141,68 @@ int UtcDaliTextHyphenWrapping(void)
 
   // Layout some lines of left to right text.
 
-  const std::string fontFamily( "TizenSans" );
+  const std::string fontFamily("TizenSans");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun1;
-  fontDescriptionRun1.characterRun.characterIndex = 0u;
+  fontDescriptionRun1.characterRun.characterIndex     = 0u;
   fontDescriptionRun1.characterRun.numberOfCharacters = 13u;
-  fontDescriptionRun1.familyLength = fontFamily.size();
-  fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
-  memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
+  fontDescriptionRun1.familyLength                    = fontFamily.size();
+  fontDescriptionRun1.familyName                      = new char[fontDescriptionRun1.familyLength];
+  memcpy(fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength);
   fontDescriptionRun1.familyDefined = true;
   fontDescriptionRun1.weightDefined = false;
-  fontDescriptionRun1.widthDefined = false;
-  fontDescriptionRun1.slantDefined = false;
-  fontDescriptionRun1.sizeDefined = false;
+  fontDescriptionRun1.widthDefined  = false;
+  fontDescriptionRun1.slantDefined  = false;
+  fontDescriptionRun1.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun1 );
+  fontDescriptionRuns.PushBack(fontDescriptionRun1);
   Size textArea(65.0f, 200.f);
 
   LineRun line1 =
-  {
-    { 0u, 5u },
-    { 0u, 5u },
-    0.f,
-    0.f,
-    0.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {0u, 5u},
+      {0u, 5u},
+      0.f,
+      0.f,
+      0.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   LineRun line2 =
-  {
-    { 5u, 8u },
-    { 5u, 8u },
-    0.f,
-    0.f,
-    0.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {5u, 8u},
+      {5u, 8u},
+      0.f,
+      0.f,
+      0.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
 
   Vector<LineRun> lines;
-  lines.PushBack( line1 );
-  lines.PushBack( line2 );
+  lines.PushBack(line1);
+  lines.PushBack(line2);
 
   LayoutTextData data =
-  {
-    "Hi Experiment",
-    textArea,
-    1u,
-    fontDescriptionRuns.Begin(),
-    2u,
-    lines.Begin(),
-    Layout::Engine::MULTI_LINE_BOX,
-    0u,
-    13u,
-    (Text::LineWrap::Mode)DevelText::LineWrap::HYPHENATION
-  };
-
-  if( !LayoutTextTest( data ) )
+    {
+      "Hi Experiment",
+      textArea,
+      1u,
+      fontDescriptionRuns.Begin(),
+      2u,
+      lines.Begin(),
+      Layout::Engine::MULTI_LINE_BOX,
+      0u,
+      13u,
+      (Text::LineWrap::Mode)DevelText::LineWrap::HYPHENATION};
+
+  if(!LayoutTextTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -222,85 +218,81 @@ int UtcDaliTextMixedWrapping(void)
 
   // Layout some lines of left to right text.
 
-  const std::string fontFamily( "DejaVuSans" );
+  const std::string fontFamily("DejaVuSans");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun1;
-  fontDescriptionRun1.characterRun.characterIndex = 0u;
+  fontDescriptionRun1.characterRun.characterIndex     = 0u;
   fontDescriptionRun1.characterRun.numberOfCharacters = 13u;
-  fontDescriptionRun1.familyLength = fontFamily.size();
-  fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
-  memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
+  fontDescriptionRun1.familyLength                    = fontFamily.size();
+  fontDescriptionRun1.familyName                      = new char[fontDescriptionRun1.familyLength];
+  memcpy(fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength);
   fontDescriptionRun1.familyDefined = true;
   fontDescriptionRun1.weightDefined = false;
-  fontDescriptionRun1.widthDefined = false;
-  fontDescriptionRun1.slantDefined = false;
-  fontDescriptionRun1.sizeDefined = false;
+  fontDescriptionRun1.widthDefined  = false;
+  fontDescriptionRun1.slantDefined  = false;
+  fontDescriptionRun1.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun1 );
+  fontDescriptionRuns.PushBack(fontDescriptionRun1);
   Size textArea(72.0f, 200.f);
 
   LineRun line1 =
-  {
-    { 0u, 3u },
-    { 0u, 3u },
-    0.f,
-    0.f,
-    0.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {0u, 3u},
+      {0u, 3u},
+      0.f,
+      0.f,
+      0.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   LineRun line2 =
-  {
-    { 3u, 6u },
-    { 3u, 6u },
-    0.f,
-    0.f,
-    0.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {3u, 6u},
+      {3u, 6u},
+      0.f,
+      0.f,
+      0.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   LineRun line3 =
-  {
-    { 9u, 4u },
-    { 9u, 4u },
-    0.f,
-    0.f,
-    0.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {9u, 4u},
+      {9u, 4u},
+      0.f,
+      0.f,
+      0.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
 
   Vector<LineRun> lines;
-  lines.PushBack( line1 );
-  lines.PushBack( line2 );
-  lines.PushBack( line3 );
+  lines.PushBack(line1);
+  lines.PushBack(line2);
+  lines.PushBack(line3);
 
   LayoutTextData data =
-  {
-    "Hi Experiment",
-    textArea,
-    1u,
-    fontDescriptionRuns.Begin(),
-    3u,
-    lines.Begin(),
-    Layout::Engine::MULTI_LINE_BOX,
-    0u,
-    13u,
-    (Text::LineWrap::Mode)DevelText::LineWrap::MIXED
-  };
-
-  if( !LayoutTextTest( data ) )
+    {
+      "Hi Experiment",
+      textArea,
+      1u,
+      fontDescriptionRuns.Begin(),
+      3u,
+      lines.Begin(),
+      Layout::Engine::MULTI_LINE_BOX,
+      0u,
+      13u,
+      (Text::LineWrap::Mode)DevelText::LineWrap::MIXED};
+
+  if(!LayoutTextTest(data))
   {
     tet_result(TET_FAIL);
   }
index b50ab83..9b71156 100755 (executable)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
  *
  */
 
-#include <iostream>
 #include <stdlib.h>
 #include <unistd.h>
+#include <iostream>
 
+#include <dali-toolkit-test-suite-utils.h>
+#include <dali-toolkit/dali-toolkit.h>
 #include <dali-toolkit/internal/text/layouts/layout-engine.h>
 #include <dali-toolkit/internal/text/layouts/layout-parameters.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-utils.h>
 
 using namespace Dali;
@@ -36,30 +36,29 @@ using namespace Text;
 
 namespace
 {
-
-const std::string DEFAULT_FONT_DIR( "/resources/fonts" );
+const std::string DEFAULT_FONT_DIR("/resources/fonts");
 
 struct LayoutTextData
 {
-  std::string                                       description;
-  std::string                                       text;
-  Size                                              textArea;
-  unsigned int                                      numberOfFonts;
-  FontDescriptionRun*                               fontDescriptions;
-  Size                                              layoutSize;
-  unsigned int                                      totalNumberOfGlyphs;
-  float*                                            positions;
-  unsigned int                                      numberOfLines;
-  LineRun*                                          lines;
-  Layout::Engine::Type                              layout;
-  unsigned int                                      startIndex;
-  unsigned int                                      numberOfGlyphs;
-  bool                                              ellipsis:1;
-  DevelText::EllipsisPosition::Type                 ellipsisPosition;
-  bool                                              updated:1;
+  std::string                       description;
+  std::string                       text;
+  Size                              textArea;
+  unsigned int                      numberOfFonts;
+  FontDescriptionRun*               fontDescriptions;
+  Size                              layoutSize;
+  unsigned int                      totalNumberOfGlyphs;
+  float*                            positions;
+  unsigned int                      numberOfLines;
+  LineRun*                          lines;
+  Layout::Engine::Type              layout;
+  unsigned int                      startIndex;
+  unsigned int                      numberOfGlyphs;
+  bool                              ellipsis : 1;
+  DevelText::EllipsisPosition::Type ellipsisPosition;
+  bool                              updated : 1;
 };
 
-void Print( const LineRun& line )
+void Print(const LineRun& line)
 {
   std::cout << "        glyph run, index : " << line.glyphRun.glyphIndex << ", num glyphs : " << line.glyphRun.numberOfGlyphs << std::endl;
   std::cout << "    character run, index : " << line.characterRun.characterIndex << ", num chars : " << line.characterRun.numberOfCharacters << std::endl;
@@ -72,237 +71,239 @@ void Print( const LineRun& line )
   std::cout << "                ellipsis : " << line.ellipsis << std::endl;
 }
 
-bool LayoutTextTest( const LayoutTextData& data )
+bool LayoutTextTest(const LayoutTextData& data)
 {
   // Load some fonts.
   TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
-  fontClient.SetDpi( 96u, 96u );
+  fontClient.SetDpi(96u, 96u);
 
-  char* pathNamePtr = get_current_dir_name();
-  const std::string pathName( pathNamePtr );
-  free( pathNamePtr );
+  char*             pathNamePtr = get_current_dir_name();
+  const std::string pathName(pathNamePtr);
+  free(pathNamePtr);
 
-  fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
-  fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
-  fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
-  fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHindiRegular.ttf" );
+  fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf");
+  fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf");
+  fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf");
+  fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHindiRegular.ttf");
 
   // 1) Create the model.
-  ModelPtr textModel;
+  ModelPtr   textModel;
   MetricsPtr metrics;
-  Size layoutSize;
+  Size       layoutSize;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  if( 0u != data.numberOfFonts )
+  if(0u != data.numberOfFonts)
   {
-    fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
-                                data.fontDescriptions,
-                                data.fontDescriptions + data.numberOfFonts );
+    fontDescriptionRuns.Insert(fontDescriptionRuns.End(),
+                               data.fontDescriptions,
+                               data.fontDescriptions + data.numberOfFonts);
   }
 
   LayoutOptions options;
   options.align = false;
-  CreateTextModel( data.text,
-                   data.textArea,
-                   fontDescriptionRuns,
-                   options,
-                   layoutSize,
-                   textModel,
-                   metrics,
-                   false,
-                   LineWrap::WORD,
-                   false,
-                   Toolkit::DevelText::EllipsisPosition::END,
-                   0.f );
+  CreateTextModel(data.text,
+                  data.textArea,
+                  fontDescriptionRuns,
+                  options,
+                  layoutSize,
+                  textModel,
+                  metrics,
+                  false,
+                  LineWrap::WORD,
+                  false,
+                  Toolkit::DevelText::EllipsisPosition::END,
+                  0.0f, // lineSpacing
+                  0.0f  // characterSpacing
+  );
 
   LogicalModelPtr logicalModel = textModel->mLogicalModel;
-  VisualModelPtr visualModel = textModel->mVisualModel;
+  VisualModelPtr  visualModel  = textModel->mVisualModel;
 
   // 2) Clear the layout.
   Vector<LineRun>& lines = visualModel->mLines;
 
-  const Length numberOfCharacters = logicalModel->mText.Count();
-  const bool isLastNewParagraph = ( 0u == numberOfCharacters ) ? false : TextAbstraction::IsNewParagraph( *( logicalModel->mText.Begin() + ( numberOfCharacters - 1u ) ) );
-  const GlyphIndex lastGlyphIndex = data.startIndex + data.numberOfGlyphs - 1u;
-  const bool removeLastLine = isLastNewParagraph && ( lastGlyphIndex + 1u == visualModel->mGlyphs.Count() );
+  const Length     numberOfCharacters = logicalModel->mText.Count();
+  const bool       isLastNewParagraph = (0u == numberOfCharacters) ? false : TextAbstraction::IsNewParagraph(*(logicalModel->mText.Begin() + (numberOfCharacters - 1u)));
+  const GlyphIndex lastGlyphIndex     = data.startIndex + data.numberOfGlyphs - 1u;
+  const bool       removeLastLine     = isLastNewParagraph && (lastGlyphIndex + 1u == visualModel->mGlyphs.Count());
 
   LineIndex startRemoveIndex = 0u;
 
-  if( 0u != lines.Count() )
+  if(0u != lines.Count())
   {
-    startRemoveIndex = lines.Count();
+    startRemoveIndex         = lines.Count();
     LineIndex endRemoveIndex = startRemoveIndex;
-    ClearGlyphRuns( data.startIndex,
-                    lastGlyphIndex + ( removeLastLine ? 1u : 0u ),
-                    lines,
-                    startRemoveIndex,
-                    endRemoveIndex );
+    ClearGlyphRuns(data.startIndex,
+                   lastGlyphIndex + (removeLastLine ? 1u : 0u),
+                   lines,
+                   startRemoveIndex,
+                   endRemoveIndex);
 
     // Update the character runs of the lines.
     const CharacterIndex* const glyphsToCharactersBuffer = visualModel->mGlyphsToCharacters.Begin();
-    const Length* const charactersPerGlyph = visualModel->mCharactersPerGlyph.Begin();
-    const CharacterIndex startCharacterIndex = *( glyphsToCharactersBuffer + data.startIndex );
-    const CharacterIndex lastCharacterIndex = *( glyphsToCharactersBuffer + lastGlyphIndex ) + *( charactersPerGlyph + lastGlyphIndex ) - 1u;
-    ClearCharacterRuns( startCharacterIndex,
-                        lastCharacterIndex + ( removeLastLine ? 1u : 0u ),
-                        lines,
-                        startRemoveIndex,
-                        endRemoveIndex );
-
-    lines.Erase( lines.Begin() + startRemoveIndex,
-                 lines.Begin() + endRemoveIndex );
+    const Length* const         charactersPerGlyph       = visualModel->mCharactersPerGlyph.Begin();
+    const CharacterIndex        startCharacterIndex      = *(glyphsToCharactersBuffer + data.startIndex);
+    const CharacterIndex        lastCharacterIndex       = *(glyphsToCharactersBuffer + lastGlyphIndex) + *(charactersPerGlyph + lastGlyphIndex) - 1u;
+    ClearCharacterRuns(startCharacterIndex,
+                       lastCharacterIndex + (removeLastLine ? 1u : 0u),
+                       lines,
+                       startRemoveIndex,
+                       endRemoveIndex);
+
+    lines.Erase(lines.Begin() + startRemoveIndex,
+                lines.Begin() + endRemoveIndex);
   }
 
   Vector<Vector2>& glyphPositions = visualModel->mGlyphPositions;
 
-  glyphPositions.Erase( glyphPositions.Begin() + data.startIndex,
-                        glyphPositions.Begin() + data.startIndex + data.numberOfGlyphs );
+  glyphPositions.Erase(glyphPositions.Begin() + data.startIndex,
+                       glyphPositions.Begin() + data.startIndex + data.numberOfGlyphs);
 
   // 3) Layout
   Layout::Engine engine;
-  engine.SetMetrics( metrics );
-  engine.SetLayout( data.layout );
+  engine.SetMetrics(metrics);
+  engine.SetLayout(data.layout);
 
-  textModel->mHorizontalAlignment = Text::HorizontalAlignment::BEGIN;
-  textModel->mLineWrapMode = LineWrap::WORD;
+  textModel->mHorizontalAlignment   = Text::HorizontalAlignment::BEGIN;
+  textModel->mLineWrapMode          = LineWrap::WORD;
   textModel->mIgnoreSpacesAfterText = true;
-  Layout::Parameters layoutParameters( data.textArea,
-                                       textModel );
+  Layout::Parameters layoutParameters(data.textArea,
+                                      textModel);
 
   layoutParameters.isLastNewParagraph = isLastNewParagraph;
 
   // The initial glyph and the number of glyphs to layout.
-  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;
 
-  bool isAutoScroll = false;
-  const bool updated = engine.LayoutText( layoutParameters,
-                                          layoutSize,
-                                          data.ellipsis,
-                                          isAutoScroll,
-                                          data.ellipsisPosition );
+  bool       isAutoScroll = false;
+  const bool updated      = engine.LayoutText(layoutParameters,
+                                         layoutSize,
+                                         data.ellipsis,
+                                         isAutoScroll,
+                                         data.ellipsisPosition);
 
   // 4) Compare the results.
 
-  if( updated != data.updated )
+  if(updated != data.updated)
   {
     std::cout << "  Different updated bool : " << updated << ", expected : " << data.updated << std::endl;
     return false;
   }
 
-  if( layoutSize != data.layoutSize )
+  if(layoutSize != data.layoutSize)
   {
     std::cout << "  Different layout size : " << layoutSize << ", expected : " << data.layoutSize << std::endl;
     return false;
   }
 
-  for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index )
+  for(unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index)
   {
-    const Vector2& position = *( glyphPositions.Begin() + index );
+    const Vector2& position = *(glyphPositions.Begin() + index);
 
-    if( fabsf( std::round( position.x ) - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
+    if(fabsf(std::round(position.x) - *(data.positions + 2u * index)) > Math::MACHINE_EPSILON_1000)
     {
-      std::cout << "  Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl;
+      std::cout << "  Different position for glyph " << index << " x : " << position.x << ", expected : " << *(data.positions + 2u * index) << std::endl;
       return false;
     }
-    if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 )
+    if(fabsf(position.y - *(data.positions + 2u * index + 1u)) > Math::MACHINE_EPSILON_1000)
     {
-      std::cout << "  Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl;
+      std::cout << "  Different position for glyph " << index << " y : " << position.y << ", expected : " << *(data.positions + 2u * index + 1u) << std::endl;
       return false;
     }
   }
 
-  if( lines.Count() != data.numberOfLines )
+  if(lines.Count() != data.numberOfLines)
   {
     std::cout << "  Different number of lines : " << lines.Count() << ", expected : " << data.numberOfLines << std::endl;
     return false;
   }
 
-  for( unsigned int index = 0u; index < data.numberOfLines; ++index )
+  for(unsigned int index = 0u; index < data.numberOfLines; ++index)
   {
-    const LineRun& line = *( lines.Begin() + index );
-    const LineRun& expectedLine = *( data.lines + index );
+    const LineRun& line         = *(lines.Begin() + index);
+    const LineRun& expectedLine = *(data.lines + index);
 
-    if( line.glyphRun.glyphIndex != expectedLine.glyphRun.glyphIndex )
+    if(line.glyphRun.glyphIndex != expectedLine.glyphRun.glyphIndex)
     {
       std::cout << "  Different line info for line : " << index << std::endl;
-      Print( line );
+      Print(line);
       std::cout << "  expected" << std::endl;
-      Print( expectedLine );
+      Print(expectedLine);
       return false;
     }
-    if( line.glyphRun.numberOfGlyphs != expectedLine.glyphRun.numberOfGlyphs )
+    if(line.glyphRun.numberOfGlyphs != expectedLine.glyphRun.numberOfGlyphs)
     {
       std::cout << "  Different line info for line : " << index << std::endl;
-      Print( line );
+      Print(line);
       std::cout << "  expected" << std::endl;
-      Print( expectedLine );
+      Print(expectedLine);
       return false;
     }
 
-    if( line.characterRun.characterIndex != expectedLine.characterRun.characterIndex )
+    if(line.characterRun.characterIndex != expectedLine.characterRun.characterIndex)
     {
       std::cout << "  Different line info for line : " << index << std::endl;
-      Print( line );
+      Print(line);
       std::cout << "  expected" << std::endl;
-      Print( expectedLine );
+      Print(expectedLine);
       return false;
     }
-    if( line.characterRun.numberOfCharacters != expectedLine.characterRun.numberOfCharacters )
+    if(line.characterRun.numberOfCharacters != expectedLine.characterRun.numberOfCharacters)
     {
       std::cout << "  Different line info for line : " << index << std::endl;
-      Print( line );
+      Print(line);
       std::cout << "  expected" << std::endl;
-      Print( expectedLine );
+      Print(expectedLine);
       return false;
     }
 
-    if( fabsf( floor( line.width ) - expectedLine.width ) > Math::MACHINE_EPSILON_1 )
+    if(fabsf(floor(line.width) - expectedLine.width) > Math::MACHINE_EPSILON_1)
     {
       std::cout << "  Different line info for line : " << index << std::endl;
-      Print( line );
+      Print(line);
       std::cout << "  expected" << std::endl;
-      Print( expectedLine );
+      Print(expectedLine);
       return false;
     }
 
-    if( fabsf( line.ascender - expectedLine.ascender ) > Math::MACHINE_EPSILON_1 )
+    if(fabsf(line.ascender - expectedLine.ascender) > Math::MACHINE_EPSILON_1)
     {
       std::cout << "  Different line info for line : " << index << std::endl;
-      Print( line );
+      Print(line);
       std::cout << "  expected" << std::endl;
-      Print( expectedLine );
+      Print(expectedLine);
       return false;
     }
 
-    if( fabsf( line.descender - expectedLine.descender ) > Math::MACHINE_EPSILON_1 )
+    if(fabsf(line.descender - expectedLine.descender) > Math::MACHINE_EPSILON_1)
     {
       std::cout << "  Different line info for line : " << index << std::endl;
-      Print( line );
+      Print(line);
       std::cout << "  expected" << std::endl;
-      Print( expectedLine );
+      Print(expectedLine);
       return false;
     }
 
-    if( fabsf( line.extraLength - expectedLine.extraLength ) > Math::MACHINE_EPSILON_1 )
+    if(fabsf(line.extraLength - expectedLine.extraLength) > Math::MACHINE_EPSILON_1)
     {
       std::cout << "  Different line info for line : " << index << std::endl;
-      Print( line );
+      Print(line);
       std::cout << "  expected" << std::endl;
-      Print( expectedLine );
+      Print(expectedLine);
       return false;
     }
 
-    if( line.ellipsis != expectedLine.ellipsis )
+    if(line.ellipsis != expectedLine.ellipsis)
     {
       std::cout << "  Different line info for line : " << index << std::endl;
-      Print( line );
+      Print(line);
       std::cout << "  expected" << std::endl;
-      Print( expectedLine );
+      Print(expectedLine);
       return false;
     }
 
@@ -317,95 +318,97 @@ bool LayoutTextTest( const LayoutTextData& data )
 
 struct AlignData
 {
-  std::string                       description;
-  std::string                       text;
-  Size                              textArea;
-  unsigned int                      numberOfFonts;
-  FontDescriptionRun*               fontDescriptions;
-  Text::HorizontalAlignment::Type   horizontalAlignment;
-  Text::VerticalAlignment::Type     verticalAlignment;
-  unsigned int                      startIndex;
-  unsigned int                      numberOfCharacters;
-  unsigned int                      numberOfLines;
-  float*                            lineOffsets;
-  Dali::LayoutDirection::Type       layoutDirection;
-  bool                              matchSystemLanguageDirection;
+  std::string                     description;
+  std::string                     text;
+  Size                            textArea;
+  unsigned int                    numberOfFonts;
+  FontDescriptionRun*             fontDescriptions;
+  Text::HorizontalAlignment::Type horizontalAlignment;
+  Text::VerticalAlignment::Type   verticalAlignment;
+  unsigned int                    startIndex;
+  unsigned int                    numberOfCharacters;
+  unsigned int                    numberOfLines;
+  float*                          lineOffsets;
+  Dali::LayoutDirection::Type     layoutDirection;
+  bool                            matchSystemLanguageDirection;
 };
 
-bool AlignTest( const AlignData& data )
+bool AlignTest(const AlignData& data)
 {
   // Load some fonts.
   TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
-  fontClient.SetDpi( 96u, 96u );
+  fontClient.SetDpi(96u, 96u);
 
-  char* pathNamePtr = get_current_dir_name();
-  const std::string pathName( pathNamePtr );
-  free( pathNamePtr );
+  char*             pathNamePtr = get_current_dir_name();
+  const std::string pathName(pathNamePtr);
+  free(pathNamePtr);
 
-  fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
-  fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
-  fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
+  fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf");
+  fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf");
+  fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf");
 
   // 1) Create the model.
-  ModelPtr textModel;
+  ModelPtr   textModel;
   MetricsPtr metrics;
-  Size layoutSize;
+  Size       layoutSize;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  if( 0u != data.numberOfFonts )
+  if(0u != data.numberOfFonts)
   {
-    fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
-                                data.fontDescriptions,
-                                data.fontDescriptions + data.numberOfFonts );
+    fontDescriptionRuns.Insert(fontDescriptionRuns.End(),
+                               data.fontDescriptions,
+                               data.fontDescriptions + data.numberOfFonts);
   }
 
   LayoutOptions options;
   options.align = false;
-  CreateTextModel( data.text,
-                   data.textArea,
-                   fontDescriptionRuns,
-                   options,
-                   layoutSize,
-                   textModel,
-                   metrics,
-                   false,
-                   LineWrap::WORD,
-                   false,
-                   Toolkit::DevelText::EllipsisPosition::END,
-                   0.f );
+  CreateTextModel(data.text,
+                  data.textArea,
+                  fontDescriptionRuns,
+                  options,
+                  layoutSize,
+                  textModel,
+                  metrics,
+                  false,
+                  LineWrap::WORD,
+                  false,
+                  Toolkit::DevelText::EllipsisPosition::END,
+                  0.0f, // lineSpacing
+                  0.0f  // characterSpacing
+  );
 
   LogicalModelPtr logicalModel = textModel->mLogicalModel;
-  VisualModelPtr visualModel = textModel->mVisualModel;
+  VisualModelPtr  visualModel  = textModel->mVisualModel;
 
   // Call the Align method.
   Layout::Engine engine;
-  engine.SetMetrics( metrics );
+  engine.SetMetrics(metrics);
 
   float alignmentOffset = 0.f;
-  engine.Align( data.textArea,
-                data.startIndex,
-                data.numberOfCharacters,
-                data.horizontalAlignment,
-                visualModel->mLines,
-                alignmentOffset,
-                data.layoutDirection,
-                data.matchSystemLanguageDirection );
+  engine.Align(data.textArea,
+               data.startIndex,
+               data.numberOfCharacters,
+               data.horizontalAlignment,
+               visualModel->mLines,
+               alignmentOffset,
+               data.layoutDirection,
+               data.matchSystemLanguageDirection);
 
   // Compare results.
-  if( data.numberOfLines != visualModel->mLines.Count() )
+  if(data.numberOfLines != visualModel->mLines.Count())
   {
     std::cout << "  Different number of lines : " << visualModel->mLines.Count() << ", expected : " << data.numberOfLines << std::endl;
     return false;
   }
 
   const LineRun* const linesBuffer = visualModel->mLines.Begin();
-  for( unsigned int index = 0u; index < data.numberOfLines; ++index )
+  for(unsigned int index = 0u; index < data.numberOfLines; ++index)
   {
-    const LineRun& line = *( linesBuffer + index );
+    const LineRun& line = *(linesBuffer + index);
 
-    if( line.alignmentOffset != *( data.lineOffsets + index ) )
+    if(line.alignmentOffset != *(data.lineOffsets + index))
     {
-      std::cout << "  different line offset for index " << index << " : " << line.alignmentOffset << ", expected : " << *( data.lineOffsets + index ) << std::endl;
+      std::cout << "  different line offset for index " << index << " : " << line.alignmentOffset << ", expected : " << *(data.lineOffsets + index) << std::endl;
       return false;
     }
   }
@@ -461,10 +464,10 @@ int UtcDaliTextLayoutSetGetLayout(void)
 
   Layout::Engine engine;
 
-  DALI_TEST_CHECK( Layout::Engine::SINGLE_LINE_BOX == engine.GetLayout() );
+  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() );
+  engine.SetLayout(Layout::Engine::MULTI_LINE_BOX);
+  DALI_TEST_CHECK(Layout::Engine::MULTI_LINE_BOX == engine.GetLayout());
 
   tet_result(TET_PASS);
   END_TEST;
@@ -477,10 +480,10 @@ int UtcDaliTextLayoutSetGetCursorWidth(void)
 
   Layout::Engine engine;
 
-  DALI_TEST_EQUALS( 0, engine.GetCursorWidth(), TEST_LOCATION );
+  DALI_TEST_EQUALS(0, engine.GetCursorWidth(), TEST_LOCATION);
 
-  engine.SetCursorWidth( 2 );
-  DALI_TEST_EQUALS( 2, engine.GetCursorWidth(), TEST_LOCATION );
+  engine.SetCursorWidth(2);
+  DALI_TEST_EQUALS(2, engine.GetCursorWidth(), TEST_LOCATION);
 
   tet_result(TET_PASS);
   END_TEST;
@@ -491,29 +494,28 @@ int UtcDaliTextLayoutNoText(void)
   ToolkitTestApplication application;
   tet_infoline(" UtcDaliTextLayoutNoText");
 
-  Size textArea(100.f, 60.f);
-  Size layoutSize = Vector2::ZERO;
+  Size           textArea(100.f, 60.f);
+  Size           layoutSize = Vector2::ZERO;
   LayoutTextData data =
-  {
-    "No text",
-    "",
-    textArea,
-    0u,
-    NULL,
-    layoutSize,
-    0u,
-    NULL,
-    0u,
-    NULL,
-    Layout::Engine::MULTI_LINE_BOX,
-    0u,
-    0u,
-    false,
-    DevelText::EllipsisPosition::END,
-    false
-  };
+    {
+      "No text",
+      "",
+      textArea,
+      0u,
+      NULL,
+      layoutSize,
+      0u,
+      NULL,
+      0u,
+      NULL,
+      Layout::Engine::MULTI_LINE_BOX,
+      0u,
+      0u,
+      false,
+      DevelText::EllipsisPosition::END,
+      false};
 
-  if( !LayoutTextTest( data ) )
+  if(!LayoutTextTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -529,46 +531,45 @@ int UtcDaliTextLayoutSmallTextArea01(void)
 
   // Won't layout the text in multi-line if the width is too small.
 
-  const std::string fontFamily( "TizenSans" );
+  const std::string fontFamily("TizenSans");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun;
-  fontDescriptionRun.characterRun.characterIndex = 0u;
+  fontDescriptionRun.characterRun.characterIndex     = 0u;
   fontDescriptionRun.characterRun.numberOfCharacters = 11u;
-  fontDescriptionRun.familyLength = fontFamily.size();
-  fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
-  memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
+  fontDescriptionRun.familyLength                    = fontFamily.size();
+  fontDescriptionRun.familyName                      = new char[fontDescriptionRun.familyLength];
+  memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
   fontDescriptionRun.familyDefined = true;
   fontDescriptionRun.weightDefined = false;
-  fontDescriptionRun.widthDefined = false;
-  fontDescriptionRun.slantDefined = false;
-  fontDescriptionRun.sizeDefined = false;
+  fontDescriptionRun.widthDefined  = false;
+  fontDescriptionRun.slantDefined  = false;
+  fontDescriptionRun.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun );
-  Size textArea(1.f, 1.f);
-  Size layoutSize = Vector2::ZERO;
+  fontDescriptionRuns.PushBack(fontDescriptionRun);
+  Size           textArea(1.f, 1.f);
+  Size           layoutSize = Vector2::ZERO;
   LayoutTextData data =
-  {
-    "Layout text in a small area",
-    "Hello world",
-    textArea,
-    1u,
-    fontDescriptionRuns.Begin(),
-    layoutSize,
-    0u,
-    NULL,
-    0u,
-    NULL,
-    Layout::Engine::MULTI_LINE_BOX,
-    0u,
-    11u,
-    false,
-    DevelText::EllipsisPosition::END,
-    false
-  };
+    {
+      "Layout text in a small area",
+      "Hello world",
+      textArea,
+      1u,
+      fontDescriptionRuns.Begin(),
+      layoutSize,
+      0u,
+      NULL,
+      0u,
+      NULL,
+      Layout::Engine::MULTI_LINE_BOX,
+      0u,
+      11u,
+      false,
+      DevelText::EllipsisPosition::END,
+      false};
 
-  if( !LayoutTextTest( data ) )
+  if(!LayoutTextTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -584,63 +585,61 @@ int UtcDaliTextLayoutSmallTextArea02(void)
 
   // Will layout the text in single line as it can be scrolled.
 
-  const std::string fontFamily( "TizenSans" );
+  const std::string fontFamily("TizenSans");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun;
-  fontDescriptionRun.characterRun.characterIndex = 0u;
+  fontDescriptionRun.characterRun.characterIndex     = 0u;
   fontDescriptionRun.characterRun.numberOfCharacters = 11u;
-  fontDescriptionRun.familyLength = fontFamily.size();
-  fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
-  memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
+  fontDescriptionRun.familyLength                    = fontFamily.size();
+  fontDescriptionRun.familyName                      = new char[fontDescriptionRun.familyLength];
+  memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
   fontDescriptionRun.familyDefined = true;
   fontDescriptionRun.weightDefined = false;
-  fontDescriptionRun.widthDefined = false;
-  fontDescriptionRun.slantDefined = false;
-  fontDescriptionRun.sizeDefined = false;
+  fontDescriptionRun.widthDefined  = false;
+  fontDescriptionRun.slantDefined  = false;
+  fontDescriptionRun.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun );
-  Size textArea(1.f, 1.f);
-  Size layoutSize(81.f, 20.f);
-  float positions[] = { 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f };
+  fontDescriptionRuns.PushBack(fontDescriptionRun);
+  Size           textArea(1.f, 1.f);
+  Size           layoutSize(81.f, 20.f);
+  float          positions[] = {0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f};
   struct LineRun line =
-  {
-    { 0u, 11u },
-    { 0u, 11u },
-    81.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {0u, 11u},
+      {0u, 11u},
+      81.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   Vector<LineRun> lines;
-  lines.PushBack( line );
+  lines.PushBack(line);
 
   LayoutTextData data =
-  {
-    "Layout text in a small area",
-    "Hello world",
-    textArea,
-    1u,
-    fontDescriptionRuns.Begin(),
-    layoutSize,
-    11u,
-    positions,
-    1u,
-    lines.Begin(),
-    Layout::Engine::SINGLE_LINE_BOX,
-    0u,
-    11u,
-    false,
-    DevelText::EllipsisPosition::END,
-    true
-  };
+    {
+      "Layout text in a small area",
+      "Hello world",
+      textArea,
+      1u,
+      fontDescriptionRuns.Begin(),
+      layoutSize,
+      11u,
+      positions,
+      1u,
+      lines.Begin(),
+      Layout::Engine::SINGLE_LINE_BOX,
+      0u,
+      11u,
+      false,
+      DevelText::EllipsisPosition::END,
+      true};
 
-  if( !LayoutTextTest( data ) )
+  if(!LayoutTextTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -656,140 +655,129 @@ int UtcDaliTextLayoutMultilineText01(void)
 
   // Layout some lines of left to right text.
 
-  const std::string fontFamily( "TizenSans" );
+  const std::string fontFamily("TizenSans");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun1;
-  fontDescriptionRun1.characterRun.characterIndex = 0u;
+  fontDescriptionRun1.characterRun.characterIndex     = 0u;
   fontDescriptionRun1.characterRun.numberOfCharacters = 18u;
-  fontDescriptionRun1.familyLength = fontFamily.size();
-  fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
-  memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
+  fontDescriptionRun1.familyLength                    = fontFamily.size();
+  fontDescriptionRun1.familyName                      = new char[fontDescriptionRun1.familyLength];
+  memcpy(fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength);
   fontDescriptionRun1.familyDefined = true;
   fontDescriptionRun1.weightDefined = false;
-  fontDescriptionRun1.widthDefined = false;
-  fontDescriptionRun1.slantDefined = false;
-  fontDescriptionRun1.sizeDefined = false;
+  fontDescriptionRun1.widthDefined  = false;
+  fontDescriptionRun1.slantDefined  = false;
+  fontDescriptionRun1.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun2;
-  fontDescriptionRun2.characterRun.characterIndex = 18u;
+  fontDescriptionRun2.characterRun.characterIndex     = 18u;
   fontDescriptionRun2.characterRun.numberOfCharacters = 31u;
-  fontDescriptionRun2.familyLength = fontFamily.size();
-  fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
-  memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
+  fontDescriptionRun2.familyLength                    = fontFamily.size();
+  fontDescriptionRun2.familyName                      = new char[fontDescriptionRun2.familyLength];
+  memcpy(fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength);
   fontDescriptionRun2.familyDefined = true;
   fontDescriptionRun2.weightDefined = false;
-  fontDescriptionRun2.widthDefined = false;
-  fontDescriptionRun2.slantDefined = false;
-  fontDescriptionRun2.sizeDefined = false;
+  fontDescriptionRun2.widthDefined  = false;
+  fontDescriptionRun2.slantDefined  = false;
+  fontDescriptionRun2.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun1 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun2 );
-  Size textArea(100.f, 300.f);
-  Size layoutSize(98.f, 97.f);
+  fontDescriptionRuns.PushBack(fontDescriptionRun1);
+  fontDescriptionRuns.PushBack(fontDescriptionRun2);
+  Size  textArea(100.f, 300.f);
+  Size  layoutSize(98.f, 97.f);
   float positions[] =
-  {
-    0.f, -12.f, 10.f,  -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f,  -0.f, 40.f, -9.f, 52.f,  -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f,
-    0.f, -13.f,  9.f,  -9.f, 19.f,  -9.f, 32.f,  -9.f, 41.f, -2.f, 45.f, -12.f,
-    0.f, -12.f,  8.f,  -9.f, 18.f,  -9.f, 27.f,  -9.f, 38.f, -9.f, 47.f, -11.f, 53.f, -0.f,
-    0.f, -12.f, 11.f, -12.f, 15.f, -12.f, 26.f,  -9.f, 36.f, -9.f, 42.f,  -9.f, 53.f, -9.f, 62.f, -11.f, 68.f, -0.f,
-    0.f, -12.f,  4.f, -12.f,  9.f,  -9.f, 18.f,  -9.f, 28.f, -9.f, 36.f,  -0.f, 41.f, -9.f, 51.f, -12.f, 57.f, -0.f, 62.f, -11.f, 68.f,  -9.f, 78.f, -9.f, 87.f, -11.f, 94.f, -2.f
-  };
+    {
+      0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, 0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -2.f, 45.f, -12.f, 0.f, -12.f, 8.f, -9.f, 18.f, -9.f, 27.f, -9.f, 38.f, -9.f, 47.f, -11.f, 53.f, -0.f, 0.f, -12.f, 11.f, -12.f, 15.f, -12.f, 26.f, -9.f, 36.f, -9.f, 42.f, -9.f, 53.f, -9.f, 62.f, -11.f, 68.f, -0.f, 0.f, -12.f, 4.f, -12.f, 9.f, -9.f, 18.f, -9.f, 28.f, -9.f, 36.f, -0.f, 41.f, -9.f, 51.f, -12.f, 57.f, -0.f, 62.f, -11.f, 68.f, -9.f, 78.f, -9.f, 87.f, -11.f, 94.f, -2.f};
   struct LineRun line0 =
-  {
-    { 0u, 12u },
-    { 0u, 12u },
-    81.f,
-    15.f,
-    -5.f,
-    4.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {0u, 12u},
+      {0u, 12u},
+      81.f,
+      15.f,
+      -5.f,
+      4.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line1 =
-  {
-    { 12u, 6u },
-    { 12u, 6u },
-    44.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {12u, 6u},
+      {12u, 6u},
+      44.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line2 =
-  {
-    { 18u, 7u },
-    { 18u, 7u },
-    54.f,
-    15.f,
-    -4.f,
-    6.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {18u, 7u},
+      {18u, 7u},
+      54.f,
+      15.f,
+      -4.f,
+      6.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line3 =
-  {
-    { 25u, 9u },
-    { 25u, 10u },
-    68.f,
-    15.f,
-    -4.f,
-    6.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {25u, 9u},
+      {25u, 10u},
+      68.f,
+      15.f,
+      -4.f,
+      6.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line4 =
-  {
-    { 34u, 14u },
-    { 35u, 14u },
-    98.f,
-    15.f,
-    -4.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {34u, 14u},
+      {35u, 14u},
+      98.f,
+      15.f,
+      -4.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   Vector<LineRun> lines;
-  lines.PushBack( line0 );
-  lines.PushBack( line1 );
-  lines.PushBack( line2 );
-  lines.PushBack( line3 );
-  lines.PushBack( line4 );
+  lines.PushBack(line0);
+  lines.PushBack(line1);
+  lines.PushBack(line2);
+  lines.PushBack(line3);
+  lines.PushBack(line4);
 
   LayoutTextData data =
-  {
-    "Layout simple multi-line text",
-    "Hello world demo.\n"
-    "Layout different lines of text.",
-    textArea,
-    1u,
-    fontDescriptionRuns.Begin(),
-    layoutSize,
-    48u,
-    positions,
-    5u,
-    lines.Begin(),
-    Layout::Engine::MULTI_LINE_BOX,
-    0u,
-    48u,
-    false,
-    DevelText::EllipsisPosition::END,
-    true
-  };
+    {
+      "Layout simple multi-line text",
+      "Hello world demo.\n"
+      "Layout different lines of text.",
+      textArea,
+      1u,
+      fontDescriptionRuns.Begin(),
+      layoutSize,
+      48u,
+      positions,
+      5u,
+      lines.Begin(),
+      Layout::Engine::MULTI_LINE_BOX,
+      0u,
+      48u,
+      false,
+      DevelText::EllipsisPosition::END,
+      true};
 
-  if( !LayoutTextTest( data ) )
+  if(!LayoutTextTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -805,206 +793,280 @@ int UtcDaliTextLayoutMultilineText02(void)
 
   // Layout some lines of bidirectional text.
 
-  const std::string fontFamily1( "TizenSans" );
+  const std::string fontFamily1("TizenSans");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun1;
-  fontDescriptionRun1.characterRun.characterIndex = 0u;
+  fontDescriptionRun1.characterRun.characterIndex     = 0u;
   fontDescriptionRun1.characterRun.numberOfCharacters = 17u;
-  fontDescriptionRun1.familyLength = fontFamily1.size();
-  fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
-  memcpy( fontDescriptionRun1.familyName, fontFamily1.c_str(), fontDescriptionRun1.familyLength );
+  fontDescriptionRun1.familyLength                    = fontFamily1.size();
+  fontDescriptionRun1.familyName                      = new char[fontDescriptionRun1.familyLength];
+  memcpy(fontDescriptionRun1.familyName, fontFamily1.c_str(), fontDescriptionRun1.familyLength);
   fontDescriptionRun1.familyDefined = true;
   fontDescriptionRun1.weightDefined = false;
-  fontDescriptionRun1.widthDefined = false;
-  fontDescriptionRun1.slantDefined = false;
-  fontDescriptionRun1.sizeDefined = false;
+  fontDescriptionRun1.widthDefined  = false;
+  fontDescriptionRun1.slantDefined  = false;
+  fontDescriptionRun1.sizeDefined   = false;
 
-  const std::string fontFamily2( "TizenSansHebrew" );
+  const std::string fontFamily2("TizenSansHebrew");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun2;
-  fontDescriptionRun2.characterRun.characterIndex = 17u;
+  fontDescriptionRun2.characterRun.characterIndex     = 17u;
   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);
   fontDescriptionRun2.familyDefined = true;
   fontDescriptionRun2.weightDefined = false;
-  fontDescriptionRun2.widthDefined = false;
-  fontDescriptionRun2.slantDefined = false;
-  fontDescriptionRun2.sizeDefined = false;
+  fontDescriptionRun2.widthDefined  = false;
+  fontDescriptionRun2.slantDefined  = false;
+  fontDescriptionRun2.sizeDefined   = false;
 
-  const std::string fontFamily3( "TizenSans" );
+  const std::string fontFamily3("TizenSans");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun3;
-  fontDescriptionRun3.characterRun.characterIndex = 26u;
+  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);
   fontDescriptionRun3.familyDefined = true;
   fontDescriptionRun3.weightDefined = false;
-  fontDescriptionRun3.widthDefined = false;
-  fontDescriptionRun3.slantDefined = false;
-  fontDescriptionRun3.sizeDefined = false;
+  fontDescriptionRun3.widthDefined  = false;
+  fontDescriptionRun3.slantDefined  = false;
+  fontDescriptionRun3.sizeDefined   = false;
 
-  const std::string fontFamily4( "TizenSansHebrew" );
+  const std::string fontFamily4("TizenSansHebrew");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun4;
-  fontDescriptionRun4.characterRun.characterIndex = 28u;
+  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);
   fontDescriptionRun4.familyDefined = true;
   fontDescriptionRun4.weightDefined = false;
-  fontDescriptionRun4.widthDefined = false;
-  fontDescriptionRun4.slantDefined = false;
-  fontDescriptionRun4.sizeDefined = false;
+  fontDescriptionRun4.widthDefined  = false;
+  fontDescriptionRun4.slantDefined  = false;
+  fontDescriptionRun4.sizeDefined   = false;
 
-  const std::string fontFamily5( "TizenSans" );
+  const std::string fontFamily5("TizenSans");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun5;
-  fontDescriptionRun5.characterRun.characterIndex = 38u;
+  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.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;
+  fontDescriptionRun5.widthDefined  = false;
+  fontDescriptionRun5.slantDefined  = false;
+  fontDescriptionRun5.sizeDefined   = false;
 
   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 layoutSize(81.f, 120.f);
+  fontDescriptionRuns.PushBack(fontDescriptionRun1);
+  fontDescriptionRuns.PushBack(fontDescriptionRun2);
+  fontDescriptionRuns.PushBack(fontDescriptionRun3);
+  fontDescriptionRuns.PushBack(fontDescriptionRun4);
+  fontDescriptionRuns.PushBack(fontDescriptionRun5);
+  Size  textArea(100.f, 300.f);
+  Size  layoutSize(81.f, 120.f);
   float positions[] =
-  {
-    0.f, -12.f, 10.f,  -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f,  -0.f, 40.f,  -9.f, 52.f,  -9.f, 62.f,  -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, //  0 .. 11
-    0.f, -13.f,  9.f,  -9.f, 19.f,  -9.f, 32.f,  -9.f, 41.f, -0.f, 68.f, -10.f, 59.f, -13.f, 54.f, -10.f, 45.f, -10.f, 79.f,  -0.f,                          // 12 .. 21
-    23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -2.f, 36.f, -12.f,                                                                              // 22 .. 27
-    63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 41.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f,  -0.f,                           // 28 .. 37
-    4.f, -13.f,  12.f,  -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f,  -0.f, 42.f,  -9.f, 54.f,  -9.f, 64.f,  -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f, // 38 .. 49
-    4.f, -13.f,  13.f,  -9.f, 23.f,  -9.f, 36.f,  -9.f, 0.f, -2.f,                                                                                           // 50 .. 54
-  };
+    {
+      0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, //  0 .. 11
+      0.f,
+      -13.f,
+      9.f,
+      -9.f,
+      19.f,
+      -9.f,
+      32.f,
+      -9.f,
+      41.f,
+      -0.f,
+      68.f,
+      -10.f,
+      59.f,
+      -13.f,
+      54.f,
+      -10.f,
+      45.f,
+      -10.f,
+      79.f,
+      -0.f, // 12 .. 21
+      23.f,
+      -10.f,
+      19.f,
+      -10.f,
+      10.f,
+      -13.f,
+      0.f,
+      -10.f,
+      32.f,
+      -2.f,
+      36.f,
+      -12.f, // 22 .. 27
+      63.f,
+      -10.f,
+      54.f,
+      -13.f,
+      50.f,
+      -10.f,
+      41.f,
+      -10.f,
+      36.f,
+      -0.f,
+      27.f,
+      -10.f,
+      23.f,
+      -10.f,
+      14.f,
+      -13.f,
+      4.f,
+      -10.f,
+      0.f,
+      -0.f, // 28 .. 37
+      4.f,
+      -13.f,
+      12.f,
+      -9.f,
+      22.f,
+      -13.f,
+      26.f,
+      -13.f,
+      29.f,
+      -9.f,
+      38.f,
+      -0.f,
+      42.f,
+      -9.f,
+      54.f,
+      -9.f,
+      64.f,
+      -9.f,
+      70.f,
+      -13.f,
+      73.f,
+      -13.f,
+      0.f,
+      -0.f, // 38 .. 49
+      4.f,
+      -13.f,
+      13.f,
+      -9.f,
+      23.f,
+      -9.f,
+      36.f,
+      -9.f,
+      0.f,
+      -2.f, // 50 .. 54
+    };
   struct LineRun line0 =
-  {
-    { 0u, 12u },
-    { 0u, 12u },
-    81.f,
-    15.f,
-    -5.f,
-    4.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {0u, 12u},
+      {0u, 12u},
+      81.f,
+      15.f,
+      -5.f,
+      4.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line1 =
-  {
-    { 12u, 10u },
-    { 12u, 10u },
-    79.f,
-    15.f,
-    -5.f,
-    5.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {12u, 10u},
+      {12u, 10u},
+      79.f,
+      15.f,
+      -5.f,
+      5.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line2 =
-  {
-    { 22u, 6u },
-    { 22u, 6u },
-    35.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {22u, 6u},
+      {22u, 6u},
+      35.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line3 =
-  {
-    { 28u, 10u },
-    { 28u, 10u },
-    70.f,
-    15.f,
-    -5.f,
-    5.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {28u, 10u},
+      {28u, 10u},
+      70.f,
+      15.f,
+      -5.f,
+      5.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line4 =
-  {
-    { 38u, 12u },
-    { 38u, 12u },
-    79.f,
-    15.f,
-    -5.f,
-    4.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {38u, 12u},
+      {38u, 12u},
+      79.f,
+      15.f,
+      -5.f,
+      4.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line5 =
-  {
-    { 50u, 5u },
-    { 50u, 5u },
-    45.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {50u, 5u},
+      {50u, 5u},
+      45.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   Vector<LineRun> lines;
-  lines.PushBack( line0 );
-  lines.PushBack( line1 );
-  lines.PushBack( line2 );
-  lines.PushBack( line3 );
-  lines.PushBack( line4 );
-  lines.PushBack( line5 );
+  lines.PushBack(line0);
+  lines.PushBack(line1);
+  lines.PushBack(line2);
+  lines.PushBack(line3);
+  lines.PushBack(line4);
+  lines.PushBack(line5);
 
   LayoutTextData data =
-  {
-    "Layout bidirectional text.",
-    "Hello world demo שלום עולם.\n"
-    "שלום עולם hello world demo.",
-    textArea,
-    5u,
-    fontDescriptionRuns.Begin(),
-    layoutSize,
-    55u,
-    positions,
-    6u,
-    lines.Begin(),
-    Layout::Engine::MULTI_LINE_BOX,
-    0u,
-    55u,
-    false,
-    DevelText::EllipsisPosition::END,
-    true
-  };
+    {
+      "Layout bidirectional text.",
+      "Hello world demo שלום עולם.\n"
+      "שלום עולם hello world demo.",
+      textArea,
+      5u,
+      fontDescriptionRuns.Begin(),
+      layoutSize,
+      55u,
+      positions,
+      6u,
+      lines.Begin(),
+      Layout::Engine::MULTI_LINE_BOX,
+      0u,
+      55u,
+      false,
+      DevelText::EllipsisPosition::END,
+      true};
 
-  if( !LayoutTextTest( data ) )
+  if(!LayoutTextTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -1020,96 +1082,147 @@ int UtcDaliTextLayoutMultilineText03(void)
 
   // Layout a long word which doesn't fit in the width of the text area.
 
-  const std::string fontFamily( "TizenSans" );
+  const std::string fontFamily("TizenSans");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun;
-  fontDescriptionRun.characterRun.characterIndex = 0u;
+  fontDescriptionRun.characterRun.characterIndex     = 0u;
   fontDescriptionRun.characterRun.numberOfCharacters = 29u;
-  fontDescriptionRun.familyLength = fontFamily.size();
-  fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
-  memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
+  fontDescriptionRun.familyLength                    = fontFamily.size();
+  fontDescriptionRun.familyName                      = new char[fontDescriptionRun.familyLength];
+  memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
   fontDescriptionRun.familyDefined = true;
   fontDescriptionRun.weightDefined = false;
-  fontDescriptionRun.widthDefined = false;
-  fontDescriptionRun.slantDefined = false;
-  fontDescriptionRun.sizeDefined = false;
+  fontDescriptionRun.widthDefined  = false;
+  fontDescriptionRun.slantDefined  = false;
+  fontDescriptionRun.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun );
-  Size textArea(100.f, 300.f);
-  Size layoutSize(98.f, 60.f);
+  fontDescriptionRuns.PushBack(fontDescriptionRun);
+  Size  textArea(100.f, 300.f);
+  Size  layoutSize(98.f, 60.f);
   float positions[] =
-  {
-    0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f,  -9.f, 36.f,  -9.f, 48.f, -9.f, 58.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -13.f, 86.f,  -9.f,
-    0.f,  -9.f, 13.f, -9.f, 23.f, -13.f, 31.f,  -9.f, 41.f, -13.f, 45.f, -13.f, 48.f, -9.f, 57.f, -9.f, 69.f,  -9.f, 79.f,  -9.f, 85.f, -13.f, 88.f, -13.f,
-    0.f, -13.f,  9.f, -9.f, 19.f,  -9.f, 32.f,  -9.f, 41.f,  -2.f,
-  };
+    {
+      0.f,
+      -12.f,
+      10.f,
+      -9.f,
+      20.f,
+      -13.f,
+      24.f,
+      -13.f,
+      27.f,
+      -9.f,
+      36.f,
+      -9.f,
+      48.f,
+      -9.f,
+      58.f,
+      -9.f,
+      65.f,
+      -13.f,
+      68.f,
+      -13.f,
+      77.f,
+      -13.f,
+      86.f,
+      -9.f,
+      0.f,
+      -9.f,
+      13.f,
+      -9.f,
+      23.f,
+      -13.f,
+      31.f,
+      -9.f,
+      41.f,
+      -13.f,
+      45.f,
+      -13.f,
+      48.f,
+      -9.f,
+      57.f,
+      -9.f,
+      69.f,
+      -9.f,
+      79.f,
+      -9.f,
+      85.f,
+      -13.f,
+      88.f,
+      -13.f,
+      0.f,
+      -13.f,
+      9.f,
+      -9.f,
+      19.f,
+      -9.f,
+      32.f,
+      -9.f,
+      41.f,
+      -2.f,
+    };
   struct LineRun line0 =
-  {
-    { 0u, 12u },
-    { 0u, 12u },
-    95.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {0u, 12u},
+      {0u, 12u},
+      95.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line1 =
-  {
-    { 12u, 12u },
-    { 12u, 12u },
-    98.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {12u, 12u},
+      {12u, 12u},
+      98.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line2 =
-  {
-    { 24u, 5u },
-    { 24u, 5u },
-    44.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {24u, 5u},
+      {24u, 5u},
+      44.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   Vector<LineRun> lines;
-  lines.PushBack( line0 );
-  lines.PushBack( line1 );
-  lines.PushBack( line2 );
+  lines.PushBack(line0);
+  lines.PushBack(line1);
+  lines.PushBack(line2);
 
   LayoutTextData data =
-  {
-    "Layout a long word which doesn't fit in the width of the text area.",
-    "Helloworlddemohelloworlddemo.",
-    textArea,
-    1u,
-    fontDescriptionRuns.Begin(),
-    layoutSize,
-    29u,
-    positions,
-    3u,
-    lines.Begin(),
-    Layout::Engine::MULTI_LINE_BOX,
-    0u,
-    29u,
-    false,
-    DevelText::EllipsisPosition::END,
-    true
-  };
+    {
+      "Layout a long word which doesn't fit in the width of the text area.",
+      "Helloworlddemohelloworlddemo.",
+      textArea,
+      1u,
+      fontDescriptionRuns.Begin(),
+      layoutSize,
+      29u,
+      positions,
+      3u,
+      lines.Begin(),
+      Layout::Engine::MULTI_LINE_BOX,
+      0u,
+      29u,
+      false,
+      DevelText::EllipsisPosition::END,
+      true};
 
-  if( !LayoutTextTest( data ) )
+  if(!LayoutTextTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -1125,79 +1238,75 @@ int UtcDaliTextLayoutMultilineText04(void)
 
   // Layout simple text ending with a \n. It has to add a void line at the end.
 
-  const std::string fontFamily( "TizenSans" );
+  const std::string fontFamily("TizenSans");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun;
-  fontDescriptionRun.characterRun.characterIndex = 0u;
+  fontDescriptionRun.characterRun.characterIndex     = 0u;
   fontDescriptionRun.characterRun.numberOfCharacters = 13u;
-  fontDescriptionRun.familyLength = fontFamily.size();
-  fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
-  memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
+  fontDescriptionRun.familyLength                    = fontFamily.size();
+  fontDescriptionRun.familyName                      = new char[fontDescriptionRun.familyLength];
+  memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
   fontDescriptionRun.familyDefined = true;
   fontDescriptionRun.weightDefined = false;
-  fontDescriptionRun.widthDefined = false;
-  fontDescriptionRun.slantDefined = false;
-  fontDescriptionRun.sizeDefined = false;
+  fontDescriptionRun.widthDefined  = false;
+  fontDescriptionRun.slantDefined  = false;
+  fontDescriptionRun.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun );
-  Size textArea(100.f, 300.f);
-  Size layoutSize(84.f, 40.f);
+  fontDescriptionRuns.PushBack(fontDescriptionRun);
+  Size  textArea(100.f, 300.f);
+  Size  layoutSize(84.f, 40.f);
   float positions[] =
-  {
-    0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -2.f, 85.f, -12.f
-  };
+    {
+      0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -2.f, 85.f, -12.f};
   struct LineRun line0 =
-  {
-    { 0u, 13u },
-    { 0u, 13u },
-    84.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {0u, 13u},
+      {0u, 13u},
+      84.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line1 =
-  {
-    { 13u, 0u },
-    { 13u, 0u },
-    0.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {13u, 0u},
+      {13u, 0u},
+      0.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   Vector<LineRun> lines;
-  lines.PushBack( line0 );
-  lines.PushBack( line1 );
+  lines.PushBack(line0);
+  lines.PushBack(line1);
 
   LayoutTextData data =
-  {
-    "Layout simple text ending with a \n.",
-    "Hello world.\n",
-    textArea,
-    1u,
-    fontDescriptionRuns.Begin(),
-    layoutSize,
-    13u,
-    positions,
-    2u,
-    lines.Begin(),
-    Layout::Engine::MULTI_LINE_BOX,
-    0u,
-    13u,
-    false,
-    DevelText::EllipsisPosition::END,
-    true
-  };
+    {
+      "Layout simple text ending with a \n.",
+      "Hello world.\n",
+      textArea,
+      1u,
+      fontDescriptionRuns.Begin(),
+      layoutSize,
+      13u,
+      positions,
+      2u,
+      lines.Begin(),
+      Layout::Engine::MULTI_LINE_BOX,
+      0u,
+      13u,
+      false,
+      DevelText::EllipsisPosition::END,
+      true};
 
-  if( !LayoutTextTest( data ) )
+  if(!LayoutTextTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -1213,108 +1322,103 @@ int UtcDaliTextLayoutMultilineText05(void)
 
   // Layout simple text with one character with a different font size.
 
-  const std::string fontFamily( "TizenSans" );
+  const std::string fontFamily("TizenSans");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun1;
-  fontDescriptionRun1.characterRun.characterIndex = 0u;
+  fontDescriptionRun1.characterRun.characterIndex     = 0u;
   fontDescriptionRun1.characterRun.numberOfCharacters = 6u;
-  fontDescriptionRun1.familyLength = fontFamily.size();
-  fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
-  memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
+  fontDescriptionRun1.familyLength                    = fontFamily.size();
+  fontDescriptionRun1.familyName                      = new char[fontDescriptionRun1.familyLength];
+  memcpy(fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength);
   fontDescriptionRun1.familyDefined = true;
   fontDescriptionRun1.weightDefined = false;
-  fontDescriptionRun1.widthDefined = false;
-  fontDescriptionRun1.slantDefined = false;
-  fontDescriptionRun1.sizeDefined = false;
+  fontDescriptionRun1.widthDefined  = false;
+  fontDescriptionRun1.slantDefined  = false;
+  fontDescriptionRun1.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun2;
-  fontDescriptionRun2.characterRun.characterIndex = 6u;
+  fontDescriptionRun2.characterRun.characterIndex     = 6u;
   fontDescriptionRun2.characterRun.numberOfCharacters = 1u;
-  fontDescriptionRun2.familyLength = fontFamily.size();
-  fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
-  memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
-  fontDescriptionRun2.size = 1280u;
+  fontDescriptionRun2.familyLength                    = fontFamily.size();
+  fontDescriptionRun2.familyName                      = new char[fontDescriptionRun2.familyLength];
+  memcpy(fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength);
+  fontDescriptionRun2.size          = 1280u;
   fontDescriptionRun2.familyDefined = true;
   fontDescriptionRun2.weightDefined = false;
-  fontDescriptionRun2.widthDefined = false;
-  fontDescriptionRun2.slantDefined = false;
-  fontDescriptionRun2.sizeDefined = true;
+  fontDescriptionRun2.widthDefined  = false;
+  fontDescriptionRun2.slantDefined  = false;
+  fontDescriptionRun2.sizeDefined   = true;
 
   FontDescriptionRun fontDescriptionRun3;
-  fontDescriptionRun3.characterRun.characterIndex = 7u;
+  fontDescriptionRun3.characterRun.characterIndex     = 7u;
   fontDescriptionRun3.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun3.familyLength = fontFamily.size();
-  fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
-  memcpy( fontDescriptionRun3.familyName, fontFamily.c_str(), fontDescriptionRun3.familyLength );
+  fontDescriptionRun3.familyLength                    = fontFamily.size();
+  fontDescriptionRun3.familyName                      = new char[fontDescriptionRun3.familyLength];
+  memcpy(fontDescriptionRun3.familyName, fontFamily.c_str(), fontDescriptionRun3.familyLength);
   fontDescriptionRun3.familyDefined = true;
   fontDescriptionRun3.weightDefined = false;
-  fontDescriptionRun3.widthDefined = false;
-  fontDescriptionRun3.slantDefined = false;
-  fontDescriptionRun3.sizeDefined = false;
+  fontDescriptionRun3.widthDefined  = false;
+  fontDescriptionRun3.slantDefined  = false;
+  fontDescriptionRun3.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun1 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun2 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun3 );
-  Size textArea(100.f, 300.f);
-  Size layoutSize(89.f, 53.f);
+  fontDescriptionRuns.PushBack(fontDescriptionRun1);
+  fontDescriptionRuns.PushBack(fontDescriptionRun2);
+  fontDescriptionRuns.PushBack(fontDescriptionRun3);
+  Size  textArea(100.f, 300.f);
+  Size  layoutSize(89.f, 53.f);
   float positions[] =
-  {
-    0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -14.f, 60.f, -9.f, 70.f, -9.f, 76.f, -13.f, 80.f, -13.f, 89.f, -0.f,
-    0.f, -13.f,  9.f, -9.f, 19.f,  -9.f, 32.f,  -9.f, 41.f, -2.f
-  };
+    {
+      0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -14.f, 60.f, -9.f, 70.f, -9.f, 76.f, -13.f, 80.f, -13.f, 89.f, -0.f, 0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -2.f};
   struct LineRun line0 =
-  {
-    { 0u, 12u },
-    { 0u, 12u },
-    89.f,
-    25.f,
-    -8.f,
-    4.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {0u, 12u},
+      {0u, 12u},
+      89.f,
+      25.f,
+      -8.f,
+      4.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line1 =
-  {
-    { 12u, 5u },
-    { 12u, 5u },
-    44.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {12u, 5u},
+      {12u, 5u},
+      44.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   Vector<LineRun> lines;
-  lines.PushBack( line0 );
-  lines.PushBack( line1 );
+  lines.PushBack(line0);
+  lines.PushBack(line1);
 
   LayoutTextData data =
-  {
-    "Layout simple text with one character with a different font size.",
-    "Hello world demo.",
-    textArea,
-    3u,
-    fontDescriptionRuns.Begin(),
-    layoutSize,
-    17u,
-    positions,
-    2u,
-    lines.Begin(),
-    Layout::Engine::MULTI_LINE_BOX,
-    0u,
-    17u,
-    false,
-    DevelText::EllipsisPosition::END,
-    true
-  };
+    {
+      "Layout simple text with one character with a different font size.",
+      "Hello world demo.",
+      textArea,
+      3u,
+      fontDescriptionRuns.Begin(),
+      layoutSize,
+      17u,
+      positions,
+      2u,
+      lines.Begin(),
+      Layout::Engine::MULTI_LINE_BOX,
+      0u,
+      17u,
+      false,
+      DevelText::EllipsisPosition::END,
+      true};
 
-  if( !LayoutTextTest( data ) )
+  if(!LayoutTextTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -1328,82 +1432,77 @@ int UtcDaliTextLayoutMultilineText06(void)
   ToolkitTestApplication application;
   tet_infoline(" UtcDaliTextLayoutMultilineText06");
 
-  const std::string fontFamily( "TizenSansHebrew" );
+  const std::string fontFamily("TizenSansHebrew");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun;
-  fontDescriptionRun.characterRun.characterIndex = 0u;
+  fontDescriptionRun.characterRun.characterIndex     = 0u;
   fontDescriptionRun.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun.familyLength = fontFamily.size();
-  fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
-  memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
+  fontDescriptionRun.familyLength                    = fontFamily.size();
+  fontDescriptionRun.familyName                      = new char[fontDescriptionRun.familyLength];
+  memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
   fontDescriptionRun.familyDefined = true;
   fontDescriptionRun.weightDefined = false;
-  fontDescriptionRun.widthDefined = false;
-  fontDescriptionRun.slantDefined = false;
-  fontDescriptionRun.sizeDefined = false;
+  fontDescriptionRun.widthDefined  = false;
+  fontDescriptionRun.slantDefined  = false;
+  fontDescriptionRun.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun );
+  fontDescriptionRuns.PushBack(fontDescriptionRun);
 
-  Size textArea(64.f, 100.f);
-  Size layoutSize(34.f, 40.f);
+  Size  textArea(64.f, 100.f);
+  Size  layoutSize(34.f, 40.f);
   float positions[] =
-  {
-    27.f, -13.f, 18.f, -10.f, 9.f, -10.f, 4.f, -10.f, 0.f, -0.f,
-    22.f, -10.f, 17.f, -10.f, 12.f, -10.f, 4.f, -10.f, 0.f, -10.f
-  };
+    {
+      27.f, -13.f, 18.f, -10.f, 9.f, -10.f, 4.f, -10.f, 0.f, -0.f, 22.f, -10.f, 17.f, -10.f, 12.f, -10.f, 4.f, -10.f, 0.f, -10.f};
   struct LineRun line0 =
-  {
-    { 0u, 5u },
-    { 0u, 5u },
-    32.f,
-    15.f,
-    -5.f,
-    5.f,
-    0.f,
-    0.f,
-    true,
-    false
-  };
+    {
+      {0u, 5u},
+      {0u, 5u},
+      32.f,
+      15.f,
+      -5.f,
+      5.f,
+      0.f,
+      0.f,
+      true,
+      false};
   struct LineRun line1 =
-  {
-    { 5u, 5u },
-    { 5u, 5u },
-    34.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    true,
-    false
-  };
+    {
+      {5u, 5u},
+      {5u, 5u},
+      34.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      true,
+      false};
   Vector<LineRun> lines;
-  lines.PushBack( line0 );
-  lines.PushBack( line1 );
+  lines.PushBack(line0);
+  lines.PushBack(line1);
 
   LayoutTextData data =
-  {
-    "Layout right to left text that doesn't fit in the text area after reordering.",
-    "לכאן שנורו", // If this text is laid-out ltr the width is 64. When reordered, the length is 66. This might cause alignment issues.
-    textArea,
-    1u,
-    fontDescriptionRuns.Begin(),
-    layoutSize,
-    10u,
-    positions,
-    2u,
-    lines.Begin(),
-    Layout::Engine::MULTI_LINE_BOX,
-    0u,
-    10u,
-    false,
-    DevelText::EllipsisPosition::END,
-    true
-  };
+    {
+      "Layout right to left text that doesn't fit in the text area after reordering.",
+      "לכאן שנורו", // If this text is laid-out ltr the width is 64. When reordered, the length is 66. This might cause alignment issues.
+      textArea,
+      1u,
+      fontDescriptionRuns.Begin(),
+      layoutSize,
+      10u,
+      positions,
+      2u,
+      lines.Begin(),
+      Layout::Engine::MULTI_LINE_BOX,
+      0u,
+      10u,
+      false,
+      DevelText::EllipsisPosition::END,
+      true};
 
-  if( !LayoutTextTest( data ) )
+  if(!LayoutTextTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -1417,97 +1516,90 @@ int UtcDaliTextLayoutMultilineText07(void)
   ToolkitTestApplication application;
   tet_infoline(" UtcDaliTextLayoutMultilineText07");
 
-  const std::string fontFamily( "TizenSansHebrew" );
+  const std::string fontFamily("TizenSansHebrew");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun;
-  fontDescriptionRun.characterRun.characterIndex = 0u;
+  fontDescriptionRun.characterRun.characterIndex     = 0u;
   fontDescriptionRun.characterRun.numberOfCharacters = 9u;
-  fontDescriptionRun.familyLength = fontFamily.size();
-  fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
-  memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
+  fontDescriptionRun.familyLength                    = fontFamily.size();
+  fontDescriptionRun.familyName                      = new char[fontDescriptionRun.familyLength];
+  memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
   fontDescriptionRun.familyDefined = true;
   fontDescriptionRun.weightDefined = false;
-  fontDescriptionRun.widthDefined = false;
-  fontDescriptionRun.slantDefined = false;
-  fontDescriptionRun.sizeDefined = false;
+  fontDescriptionRun.widthDefined  = false;
+  fontDescriptionRun.slantDefined  = false;
+  fontDescriptionRun.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun );
+  fontDescriptionRuns.PushBack(fontDescriptionRun);
 
-  Size textArea(26.f, 100.f);
-  Size layoutSize(24.f, 60.f);
+  Size  textArea(26.f, 100.f);
+  Size  layoutSize(24.f, 60.f);
   float positions[] =
-  {
-    10.f, -10.f, 4.f, -10.f, 0.f, -10.f,
-    13.f, -10.f, 9.f, -10.f, 0.f, -13.f,
-    14.f, -10.f, 4.f, -10.f, 0.f, -10.f
-  };
+    {
+      10.f, -10.f, 4.f, -10.f, 0.f, -10.f, 13.f, -10.f, 9.f, -10.f, 0.f, -13.f, 14.f, -10.f, 4.f, -10.f, 0.f, -10.f};
   struct LineRun line0 =
-  {
-    { 0u, 3u },
-    { 0u, 3u },
-    21.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    true,
-    false
-  };
+    {
+      {0u, 3u},
+      {0u, 3u},
+      21.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      true,
+      false};
   struct LineRun line1 =
-  {
-    { 3u, 3u },
-    { 3u, 3u },
-    22.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    true,
-    false
-  };
+    {
+      {3u, 3u},
+      {3u, 3u},
+      22.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      true,
+      false};
   struct LineRun line2 =
-  {
-    { 6u, 3u },
-    { 6u, 3u },
-    24.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    true,
-    false
-  };
+    {
+      {6u, 3u},
+      {6u, 3u},
+      24.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      true,
+      false};
   Vector<LineRun> lines;
-  lines.PushBack( line0 );
-  lines.PushBack( line1 );
-  lines.PushBack( line2 );
+  lines.PushBack(line0);
+  lines.PushBack(line1);
+  lines.PushBack(line2);
 
   LayoutTextData data =
-  {
-    "Layout a single word of right to left text that doesn't fit in one single line. When layouting ltr a piece of word fits in the line but it doesn't after reordering.",
-    "שנורולכאן", // If a piece of this text is laid-out ltr the width is 26. When reordered, the length is 27. This might cause alignment issues.
-    textArea,
-    1u,
-    fontDescriptionRuns.Begin(),
-    layoutSize,
-    9u,
-    positions,
-    3u,
-    lines.Begin(),
-    Layout::Engine::MULTI_LINE_BOX,
-    0u,
-    9u,
-    false,
-    DevelText::EllipsisPosition::END,
-    true
-  };
+    {
+      "Layout a single word of right to left text that doesn't fit in one single line. When layouting ltr a piece of word fits in the line but it doesn't after reordering.",
+      "שנורולכאן", // If a piece of this text is laid-out ltr the width is 26. When reordered, the length is 27. This might cause alignment issues.
+      textArea,
+      1u,
+      fontDescriptionRuns.Begin(),
+      layoutSize,
+      9u,
+      positions,
+      3u,
+      lines.Begin(),
+      Layout::Engine::MULTI_LINE_BOX,
+      0u,
+      9u,
+      false,
+      DevelText::EllipsisPosition::END,
+      true};
 
-  if( !LayoutTextTest( data ) )
+  if(!LayoutTextTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -1523,567 +1615,890 @@ int UtcDaliTextUpdateLayout01(void)
 
   // Layout some lines of bidirectional text. Update the paragraphs at the beginning.
 
-  const std::string fontLatin( "TizenSans" );
-  const std::string fontHebrew( "TizenSansHebrew" );
-  const std::string fontArabic( "TizenSansArabic" );
+  const std::string fontLatin("TizenSans");
+  const std::string fontHebrew("TizenSansHebrew");
+  const std::string fontArabic("TizenSansArabic");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun01;
-  fontDescriptionRun01.characterRun.characterIndex = 0u;
+  fontDescriptionRun01.characterRun.characterIndex     = 0u;
   fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
-  fontDescriptionRun01.familyLength = fontLatin.size();
-  fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
-  memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
+  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;
+  fontDescriptionRun01.widthDefined  = false;
+  fontDescriptionRun01.slantDefined  = false;
+  fontDescriptionRun01.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun02;
-  fontDescriptionRun02.characterRun.characterIndex = 17u;
+  fontDescriptionRun02.characterRun.characterIndex     = 17u;
   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);
   fontDescriptionRun02.familyDefined = true;
   fontDescriptionRun02.weightDefined = false;
-  fontDescriptionRun02.widthDefined = false;
-  fontDescriptionRun02.slantDefined = false;
-  fontDescriptionRun02.sizeDefined = false;
+  fontDescriptionRun02.widthDefined  = false;
+  fontDescriptionRun02.slantDefined  = false;
+  fontDescriptionRun02.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun03;
-  fontDescriptionRun03.characterRun.characterIndex = 26u;
+  fontDescriptionRun03.characterRun.characterIndex     = 26u;
   fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
-  fontDescriptionRun03.familyLength = fontLatin.size();
-  fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
-  memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
+  fontDescriptionRun03.familyLength                    = fontLatin.size();
+  fontDescriptionRun03.familyName                      = new char[fontDescriptionRun03.familyLength];
+  memcpy(fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength);
   fontDescriptionRun03.familyDefined = true;
   fontDescriptionRun03.weightDefined = false;
-  fontDescriptionRun03.widthDefined = false;
-  fontDescriptionRun03.slantDefined = false;
-  fontDescriptionRun03.sizeDefined = false;
+  fontDescriptionRun03.widthDefined  = false;
+  fontDescriptionRun03.slantDefined  = false;
+  fontDescriptionRun03.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun04;
-  fontDescriptionRun04.characterRun.characterIndex = 28u;
+  fontDescriptionRun04.characterRun.characterIndex     = 28u;
   fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun04.familyLength = fontArabic.size();
-  fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
-  memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
+  fontDescriptionRun04.familyLength                    = fontArabic.size();
+  fontDescriptionRun04.familyName                      = new char[fontDescriptionRun04.familyLength];
+  memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength);
   fontDescriptionRun04.familyDefined = true;
   fontDescriptionRun04.weightDefined = false;
-  fontDescriptionRun04.widthDefined = false;
-  fontDescriptionRun04.slantDefined = false;
-  fontDescriptionRun04.sizeDefined = false;
+  fontDescriptionRun04.widthDefined  = false;
+  fontDescriptionRun04.slantDefined  = false;
+  fontDescriptionRun04.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun05;
-  fontDescriptionRun05.characterRun.characterIndex = 42u;
+  fontDescriptionRun05.characterRun.characterIndex     = 42u;
   fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun05.familyLength = fontLatin.size();
-  fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
-  memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
+  fontDescriptionRun05.familyLength                    = fontLatin.size();
+  fontDescriptionRun05.familyName                      = new char[fontDescriptionRun05.familyLength];
+  memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
   fontDescriptionRun05.familyDefined = true;
   fontDescriptionRun05.weightDefined = false;
-  fontDescriptionRun05.widthDefined = false;
-  fontDescriptionRun05.slantDefined = false;
-  fontDescriptionRun05.sizeDefined = false;
+  fontDescriptionRun05.widthDefined  = false;
+  fontDescriptionRun05.slantDefined  = false;
+  fontDescriptionRun05.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun06;
-  fontDescriptionRun06.characterRun.characterIndex = 54u;
+  fontDescriptionRun06.characterRun.characterIndex     = 54u;
   fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun06.familyLength = fontHebrew.size();
-  fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
-  memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
+  fontDescriptionRun06.familyLength                    = fontHebrew.size();
+  fontDescriptionRun06.familyName                      = new char[fontDescriptionRun06.familyLength];
+  memcpy(fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength);
   fontDescriptionRun06.familyDefined = true;
   fontDescriptionRun06.weightDefined = false;
-  fontDescriptionRun06.widthDefined = false;
-  fontDescriptionRun06.slantDefined = false;
-  fontDescriptionRun06.sizeDefined = false;
+  fontDescriptionRun06.widthDefined  = false;
+  fontDescriptionRun06.slantDefined  = false;
+  fontDescriptionRun06.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun07;
-  fontDescriptionRun07.characterRun.characterIndex = 64u;
+  fontDescriptionRun07.characterRun.characterIndex     = 64u;
   fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun07.familyLength = fontHebrew.size();
-  fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
-  memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
+  fontDescriptionRun07.familyLength                    = fontHebrew.size();
+  fontDescriptionRun07.familyName                      = new char[fontDescriptionRun07.familyLength];
+  memcpy(fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength);
   fontDescriptionRun07.familyDefined = true;
   fontDescriptionRun07.weightDefined = false;
-  fontDescriptionRun07.widthDefined = false;
-  fontDescriptionRun07.slantDefined = false;
-  fontDescriptionRun07.sizeDefined = false;
+  fontDescriptionRun07.widthDefined  = false;
+  fontDescriptionRun07.slantDefined  = false;
+  fontDescriptionRun07.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun08;
-  fontDescriptionRun08.characterRun.characterIndex = 74u;
+  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);
   fontDescriptionRun08.familyDefined = true;
   fontDescriptionRun08.weightDefined = false;
-  fontDescriptionRun08.widthDefined = false;
-  fontDescriptionRun08.slantDefined = false;
-  fontDescriptionRun08.sizeDefined = false;
+  fontDescriptionRun08.widthDefined  = false;
+  fontDescriptionRun08.slantDefined  = false;
+  fontDescriptionRun08.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun09;
-  fontDescriptionRun09.characterRun.characterIndex = 92u;
+  fontDescriptionRun09.characterRun.characterIndex     = 92u;
   fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun09.familyLength = fontLatin.size();
-  fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
-  memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
+  fontDescriptionRun09.familyLength                    = fontLatin.size();
+  fontDescriptionRun09.familyName                      = new char[fontDescriptionRun09.familyLength];
+  memcpy(fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength);
   fontDescriptionRun09.familyDefined = true;
   fontDescriptionRun09.weightDefined = false;
-  fontDescriptionRun09.widthDefined = false;
-  fontDescriptionRun09.slantDefined = false;
-  fontDescriptionRun09.sizeDefined = false;
+  fontDescriptionRun09.widthDefined  = false;
+  fontDescriptionRun09.slantDefined  = false;
+  fontDescriptionRun09.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun10;
-  fontDescriptionRun10.characterRun.characterIndex = 104u;
+  fontDescriptionRun10.characterRun.characterIndex     = 104u;
   fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun10.familyLength = fontArabic.size();
-  fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
-  memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
+  fontDescriptionRun10.familyLength                    = fontArabic.size();
+  fontDescriptionRun10.familyName                      = new char[fontDescriptionRun10.familyLength];
+  memcpy(fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength);
   fontDescriptionRun10.familyDefined = true;
   fontDescriptionRun10.weightDefined = false;
-  fontDescriptionRun10.widthDefined = false;
-  fontDescriptionRun10.slantDefined = false;
-  fontDescriptionRun10.sizeDefined = false;
+  fontDescriptionRun10.widthDefined  = false;
+  fontDescriptionRun10.slantDefined  = false;
+  fontDescriptionRun10.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun11;
-  fontDescriptionRun11.characterRun.characterIndex = 118u;
+  fontDescriptionRun11.characterRun.characterIndex     = 118u;
   fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun11.familyLength = fontHebrew.size();
-  fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
-  memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
+  fontDescriptionRun11.familyLength                    = fontHebrew.size();
+  fontDescriptionRun11.familyName                      = new char[fontDescriptionRun11.familyLength];
+  memcpy(fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength);
   fontDescriptionRun11.familyDefined = true;
   fontDescriptionRun11.weightDefined = false;
-  fontDescriptionRun11.widthDefined = false;
-  fontDescriptionRun11.slantDefined = false;
-  fontDescriptionRun11.sizeDefined = false;
+  fontDescriptionRun11.widthDefined  = false;
+  fontDescriptionRun11.slantDefined  = false;
+  fontDescriptionRun11.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun12;
-  fontDescriptionRun12.characterRun.characterIndex = 128u;
+  fontDescriptionRun12.characterRun.characterIndex     = 128u;
   fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
-  fontDescriptionRun12.familyLength = fontLatin.size();
-  fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
-  memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
+  fontDescriptionRun12.familyLength                    = fontLatin.size();
+  fontDescriptionRun12.familyName                      = new char[fontDescriptionRun12.familyLength];
+  memcpy(fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength);
   fontDescriptionRun12.familyDefined = true;
   fontDescriptionRun12.weightDefined = false;
-  fontDescriptionRun12.widthDefined = false;
-  fontDescriptionRun12.slantDefined = false;
-  fontDescriptionRun12.sizeDefined = false;
+  fontDescriptionRun12.widthDefined  = false;
+  fontDescriptionRun12.slantDefined  = false;
+  fontDescriptionRun12.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun13;
-  fontDescriptionRun13.characterRun.characterIndex = 145u;
+  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);
   fontDescriptionRun13.familyDefined = true;
   fontDescriptionRun13.weightDefined = false;
-  fontDescriptionRun13.widthDefined = false;
-  fontDescriptionRun13.slantDefined = false;
-  fontDescriptionRun13.sizeDefined = false;
+  fontDescriptionRun13.widthDefined  = false;
+  fontDescriptionRun13.slantDefined  = false;
+  fontDescriptionRun13.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun14;
-  fontDescriptionRun14.characterRun.characterIndex = 154u;
+  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);
   fontDescriptionRun14.familyDefined = true;
   fontDescriptionRun14.weightDefined = false;
-  fontDescriptionRun14.widthDefined = false;
-  fontDescriptionRun14.slantDefined = false;
-  fontDescriptionRun14.sizeDefined = false;
+  fontDescriptionRun14.widthDefined  = false;
+  fontDescriptionRun14.slantDefined  = false;
+  fontDescriptionRun14.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun15;
-  fontDescriptionRun15.characterRun.characterIndex = 156u;
+  fontDescriptionRun15.characterRun.characterIndex     = 156u;
   fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun15.familyLength = fontHebrew.size();
-  fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
-  memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
+  fontDescriptionRun15.familyLength                    = fontHebrew.size();
+  fontDescriptionRun15.familyName                      = new char[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.widthDefined  = false;
+  fontDescriptionRun15.slantDefined  = false;
+  fontDescriptionRun15.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun16;
-  fontDescriptionRun16.characterRun.characterIndex = 166u;
+  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.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;
+  fontDescriptionRun16.widthDefined  = false;
+  fontDescriptionRun16.slantDefined  = false;
+  fontDescriptionRun16.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun17;
-  fontDescriptionRun17.characterRun.characterIndex = 178u;
+  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.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;
+  fontDescriptionRun17.widthDefined  = false;
+  fontDescriptionRun17.slantDefined  = false;
+  fontDescriptionRun17.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun01 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun02 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun03 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun04 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun05 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun06 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun07 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun08 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun09 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun10 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun11 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun12 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun13 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun14 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun15 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun16 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun17 );
-  Size textArea(100.f, 300.f);
-  Size layoutSize(100.f, 380.f);
+  fontDescriptionRuns.PushBack(fontDescriptionRun01);
+  fontDescriptionRuns.PushBack(fontDescriptionRun02);
+  fontDescriptionRuns.PushBack(fontDescriptionRun03);
+  fontDescriptionRuns.PushBack(fontDescriptionRun04);
+  fontDescriptionRuns.PushBack(fontDescriptionRun05);
+  fontDescriptionRuns.PushBack(fontDescriptionRun06);
+  fontDescriptionRuns.PushBack(fontDescriptionRun07);
+  fontDescriptionRuns.PushBack(fontDescriptionRun08);
+  fontDescriptionRuns.PushBack(fontDescriptionRun09);
+  fontDescriptionRuns.PushBack(fontDescriptionRun10);
+  fontDescriptionRuns.PushBack(fontDescriptionRun11);
+  fontDescriptionRuns.PushBack(fontDescriptionRun12);
+  fontDescriptionRuns.PushBack(fontDescriptionRun13);
+  fontDescriptionRuns.PushBack(fontDescriptionRun14);
+  fontDescriptionRuns.PushBack(fontDescriptionRun15);
+  fontDescriptionRuns.PushBack(fontDescriptionRun16);
+  fontDescriptionRuns.PushBack(fontDescriptionRun17);
+  Size  textArea(100.f, 300.f);
+  Size  layoutSize(100.f, 380.f);
   float positions[] =
-  {
-    0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f,                                                                                                 //   0 ..  11
-    0.f, -13.f,  9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -0.f, 68.f, -10.f, 59.f, -13.f, 54.f, -10.f, 45.f, -10.f, 79.f, -0.f,                                                                                                                         //  12 ..  21
-    23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -2.f, 36.f, -12.f,                                                                                                                                                                         //  22 ..  27
-    58.f, -8.f, 52.f, -6.f, 45.f, -8.f, 41.f, -7.f, 39.f, -11.f, 34.f, -0.f, 30.f, -7.f, 28.f, -11.f, 23.f, -11.f, 16.f, -8.f, 15.f, -11.f, 9.f, -11.f, 4.f, -8.f, 0.f, -0.f, 4.f, -13.f, 12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, //  28 ..  47
-    42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f, 59.f, -10.f, 50.f, -13.f, 46.f, -10.f, 36.f, -10.f, 32.f, -0.f,                                                                                                            //  48 ..  58
-    23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 0.f, -0.f,                                                                                                                                                                                       //  59 ..  63
-    63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 41.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f,                                                                                                                       //  64 ..  73
-    4.f, -13.f,  12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f,                                                                                                 //  74 ..  85
-    4.f, -13.f,  13.f, -9.f, 23.f, -9.f, 36.f, -9.f, 0.f, -2.f, 0.f, -12.f,                                                                                                                                                                             //  86 ..  91
-    0.f, -13.f,  8.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 79.f, -0.f,                                                                                                 //  92 .. 103
-    92.f, -8.f, 86.f, -6.f, 79.f, -8.f, 75.f, -7.f, 73.f, -11.f, 68.f, -0.f, 64.f, -7.f, 62.f, -11.f, 57.f, -11.f, 50.f, -8.f, 49.f, -11.f, 43.f, -11.f, 38.f, -8.f, 34.f, -0.f, 23.f, -10.f, 14.f, -13.f, 10.f, -10.f, 0.f, -10.f, 99.f, -0.f,         // 104 .. 122
-    23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -0.f,                                                                                                                                                                                      // 123 .. 127
-    0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f,                                                                                                 // 128 .. 139
-    0.f, -13.f,  9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -0.f, 68.f, -10.f, 59.f, -13.f, 54.f, -10.f, 45.f, -10.f, 79.f, -0.f,                                                                                                                         // 140 .. 149
-    23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -2.f, 36.f, -12.f,                                                                                                                                                                         // 150 .. 155
-    63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 41.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f,                                                                                                                       // 156 .. 165
-    4.f, -13.f,  12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f,                                                                                                 // 166 .. 177
-    54.f, -8.f, 49.f, -6.f, 41.f, -8.f, 37.f, -7.f, 35.f, -11.f, 31.f, -0.f, 26.f, -7.f, 24.f, -11.f, 19.f, -11.f, 12.f, -8.f, 11.f, -11.f, 5.f, -11.f, 0.f, -8.f, 0.f, -0.f,                                                                           // 178 .. 191
-  };
+    {
+      0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, //   0 ..  11
+      0.f,
+      -13.f,
+      9.f,
+      -9.f,
+      19.f,
+      -9.f,
+      32.f,
+      -9.f,
+      41.f,
+      -0.f,
+      68.f,
+      -10.f,
+      59.f,
+      -13.f,
+      54.f,
+      -10.f,
+      45.f,
+      -10.f,
+      79.f,
+      -0.f, //  12 ..  21
+      23.f,
+      -10.f,
+      19.f,
+      -10.f,
+      10.f,
+      -13.f,
+      0.f,
+      -10.f,
+      32.f,
+      -2.f,
+      36.f,
+      -12.f, //  22 ..  27
+      58.f,
+      -8.f,
+      52.f,
+      -6.f,
+      45.f,
+      -8.f,
+      41.f,
+      -7.f,
+      39.f,
+      -11.f,
+      34.f,
+      -0.f,
+      30.f,
+      -7.f,
+      28.f,
+      -11.f,
+      23.f,
+      -11.f,
+      16.f,
+      -8.f,
+      15.f,
+      -11.f,
+      9.f,
+      -11.f,
+      4.f,
+      -8.f,
+      0.f,
+      -0.f,
+      4.f,
+      -13.f,
+      12.f,
+      -9.f,
+      22.f,
+      -13.f,
+      26.f,
+      -13.f,
+      29.f,
+      -9.f,
+      38.f,
+      -0.f, //  28 ..  47
+      42.f,
+      -9.f,
+      54.f,
+      -9.f,
+      64.f,
+      -9.f,
+      70.f,
+      -13.f,
+      73.f,
+      -13.f,
+      0.f,
+      -0.f,
+      59.f,
+      -10.f,
+      50.f,
+      -13.f,
+      46.f,
+      -10.f,
+      36.f,
+      -10.f,
+      32.f,
+      -0.f, //  48 ..  58
+      23.f,
+      -10.f,
+      19.f,
+      -10.f,
+      10.f,
+      -13.f,
+      0.f,
+      -10.f,
+      0.f,
+      -0.f, //  59 ..  63
+      63.f,
+      -10.f,
+      54.f,
+      -13.f,
+      50.f,
+      -10.f,
+      41.f,
+      -10.f,
+      36.f,
+      -0.f,
+      27.f,
+      -10.f,
+      23.f,
+      -10.f,
+      14.f,
+      -13.f,
+      4.f,
+      -10.f,
+      0.f,
+      -0.f, //  64 ..  73
+      4.f,
+      -13.f,
+      12.f,
+      -9.f,
+      22.f,
+      -13.f,
+      26.f,
+      -13.f,
+      29.f,
+      -9.f,
+      38.f,
+      -0.f,
+      42.f,
+      -9.f,
+      54.f,
+      -9.f,
+      64.f,
+      -9.f,
+      70.f,
+      -13.f,
+      73.f,
+      -13.f,
+      0.f,
+      -0.f, //  74 ..  85
+      4.f,
+      -13.f,
+      13.f,
+      -9.f,
+      23.f,
+      -9.f,
+      36.f,
+      -9.f,
+      0.f,
+      -2.f,
+      0.f,
+      -12.f, //  86 ..  91
+      0.f,
+      -13.f,
+      8.f,
+      -9.f,
+      18.f,
+      -13.f,
+      22.f,
+      -13.f,
+      25.f,
+      -9.f,
+      34.f,
+      -0.f,
+      38.f,
+      -9.f,
+      50.f,
+      -9.f,
+      60.f,
+      -9.f,
+      66.f,
+      -13.f,
+      69.f,
+      -13.f,
+      79.f,
+      -0.f, //  92 .. 103
+      92.f,
+      -8.f,
+      86.f,
+      -6.f,
+      79.f,
+      -8.f,
+      75.f,
+      -7.f,
+      73.f,
+      -11.f,
+      68.f,
+      -0.f,
+      64.f,
+      -7.f,
+      62.f,
+      -11.f,
+      57.f,
+      -11.f,
+      50.f,
+      -8.f,
+      49.f,
+      -11.f,
+      43.f,
+      -11.f,
+      38.f,
+      -8.f,
+      34.f,
+      -0.f,
+      23.f,
+      -10.f,
+      14.f,
+      -13.f,
+      10.f,
+      -10.f,
+      0.f,
+      -10.f,
+      99.f,
+      -0.f, // 104 .. 122
+      23.f,
+      -10.f,
+      19.f,
+      -10.f,
+      10.f,
+      -13.f,
+      0.f,
+      -10.f,
+      32.f,
+      -0.f, // 123 .. 127
+      0.f,
+      -12.f,
+      10.f,
+      -9.f,
+      20.f,
+      -13.f,
+      24.f,
+      -13.f,
+      27.f,
+      -9.f,
+      36.f,
+      -0.f,
+      40.f,
+      -9.f,
+      52.f,
+      -9.f,
+      62.f,
+      -9.f,
+      69.f,
+      -13.f,
+      72.f,
+      -13.f,
+      81.f,
+      -0.f, // 128 .. 139
+      0.f,
+      -13.f,
+      9.f,
+      -9.f,
+      19.f,
+      -9.f,
+      32.f,
+      -9.f,
+      41.f,
+      -0.f,
+      68.f,
+      -10.f,
+      59.f,
+      -13.f,
+      54.f,
+      -10.f,
+      45.f,
+      -10.f,
+      79.f,
+      -0.f, // 140 .. 149
+      23.f,
+      -10.f,
+      19.f,
+      -10.f,
+      10.f,
+      -13.f,
+      0.f,
+      -10.f,
+      32.f,
+      -2.f,
+      36.f,
+      -12.f, // 150 .. 155
+      63.f,
+      -10.f,
+      54.f,
+      -13.f,
+      50.f,
+      -10.f,
+      41.f,
+      -10.f,
+      36.f,
+      -0.f,
+      27.f,
+      -10.f,
+      23.f,
+      -10.f,
+      14.f,
+      -13.f,
+      4.f,
+      -10.f,
+      0.f,
+      -0.f, // 156 .. 165
+      4.f,
+      -13.f,
+      12.f,
+      -9.f,
+      22.f,
+      -13.f,
+      26.f,
+      -13.f,
+      29.f,
+      -9.f,
+      38.f,
+      -0.f,
+      42.f,
+      -9.f,
+      54.f,
+      -9.f,
+      64.f,
+      -9.f,
+      70.f,
+      -13.f,
+      73.f,
+      -13.f,
+      0.f,
+      -0.f, // 166 .. 177
+      54.f,
+      -8.f,
+      49.f,
+      -6.f,
+      41.f,
+      -8.f,
+      37.f,
+      -7.f,
+      35.f,
+      -11.f,
+      31.f,
+      -0.f,
+      26.f,
+      -7.f,
+      24.f,
+      -11.f,
+      19.f,
+      -11.f,
+      12.f,
+      -8.f,
+      11.f,
+      -11.f,
+      5.f,
+      -11.f,
+      0.f,
+      -8.f,
+      0.f,
+      -0.f, // 178 .. 191
+    };
 
   struct LineRun line01 =
-  {
-    { 0u, 12u },
-    { 0u, 12u },
-    81.f,
-    15.f,
-    -5.f,
-    4.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {0u, 12u},
+      {0u, 12u},
+      81.f,
+      15.f,
+      -5.f,
+      4.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line02 =
-  {
-    { 12u, 10u },
-    { 12u, 10u },
-    79.f,
-    15.f,
-    -5.f,
-    5.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {12u, 10u},
+      {12u, 10u},
+      79.f,
+      15.f,
+      -5.f,
+      5.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line03 =
-  {
-    { 22u, 6u },
-    { 22u, 6u },
-    35.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {22u, 6u},
+      {22u, 6u},
+      35.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line04 =
-  {
-    { 28u, 14u },
-    { 28u, 14u },
-    63.f,
-    15.f,
-    -5.f,
-    4.f,
-    0.f,
-    0.f,
-    true,
-    false
-  };
+    {
+      {28u, 14u},
+      {28u, 14u},
+      63.f,
+      15.f,
+      -5.f,
+      4.f,
+      0.f,
+      0.f,
+      true,
+      false};
   struct LineRun line05 =
-  {
-    { 42, 12u },
-    { 42, 12u },
-    79.f,
-    15.f,
-    -5.f,
-    4.f,
-    0.f,
-    0.f,
-    true,
-    false
-  };
+    {
+      {42, 12u},
+      {42, 12u},
+      79.f,
+      15.f,
+      -5.f,
+      4.f,
+      0.f,
+      0.f,
+      true,
+      false};
   struct LineRun line06 =
-  {
-    { 54u, 10u },
-    { 54u, 10u },
-    70.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {54u, 10u},
+      {54u, 10u},
+      70.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line07 =
-  {
-    { 64u, 10u },
-    { 64u, 10u },
-    70.f,
-    15.f,
-    -5.f,
-    5.f,
-    0.f,
-    0.f,
-    true,
-    false
-  };
+    {
+      {64u, 10u},
+      {64u, 10u},
+      70.f,
+      15.f,
+      -5.f,
+      5.f,
+      0.f,
+      0.f,
+      true,
+      false};
   struct LineRun line08 =
-  {
-    { 74u, 12u },
-    { 74u, 12u },
-    79.f,
-    15.f,
-    -5.f,
-    4.f,
-    0.f,
-    0.f,
-    true,
-    false
-  };
+    {
+      {74u, 12u},
+      {74u, 12u},
+      79.f,
+      15.f,
+      -5.f,
+      4.f,
+      0.f,
+      0.f,
+      true,
+      false};
   struct LineRun line09 =
-  {
-    { 86u, 6u },
-    { 86u, 6u },
-    45.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {86u, 6u},
+      {86u, 6u},
+      45.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line10 =
-  {
-    { 92u, 12u },
-    { 92u, 12u },
-    79.f,
-    15.f,
-    -5.f,
-    4.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {92u, 12u},
+      {92u, 12u},
+      79.f,
+      15.f,
+      -5.f,
+      4.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line11 =
-  {
-    { 104u, 19u },
-    { 104u, 19u },
-    100.f,
-    15.f,
-    -5.f,
-    5.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {104u, 19u},
+      {104u, 19u},
+      100.f,
+      15.f,
+      -5.f,
+      5.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line12 =
-  {
-    { 123u, 5u },
-    { 123u, 5u },
-    32.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {123u, 5u},
+      {123u, 5u},
+      32.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line13 =
-  {
-    { 128u, 12u },
-    { 128u, 12u },
-    81.f,
-    15.f,
-    -5.f,
-    4.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {128u, 12u},
+      {128u, 12u},
+      81.f,
+      15.f,
+      -5.f,
+      4.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line14 =
-  {
-    { 140u, 10u },
-    { 140u, 10u },
-    79.f,
-    15.f,
-    -5.f,
-    5.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {140u, 10u},
+      {140u, 10u},
+      79.f,
+      15.f,
+      -5.f,
+      5.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line15 =
-  {
-    { 150u, 6u },
-    { 150u, 6u },
-    35.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {150u, 6u},
+      {150u, 6u},
+      35.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line16 =
-  {
-    { 156u, 10u },
-    { 156u, 10u },
-    70.f,
-    15.f,
-    -5.f,
-    5.f,
-    0.f,
-    0.f,
-    true,
-    false
-  };
+    {
+      {156u, 10u},
+      {156u, 10u},
+      70.f,
+      15.f,
+      -5.f,
+      5.f,
+      0.f,
+      0.f,
+      true,
+      false};
   struct LineRun line17 =
-  {
-    { 166u, 12u },
-    { 166u, 12u },
-    79.f,
-    15.f,
-    -5.f,
-    4.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {166u, 12u},
+      {166u, 12u},
+      79.f,
+      15.f,
+      -5.f,
+      4.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line18 =
-  {
-    { 178u, 14u },
-    { 178u, 14u },
-    63.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {178u, 14u},
+      {178u, 14u},
+      63.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line19 =
-  {
-    { 192u, 0u },
-    { 192u, 0u },
-    0.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {192u, 0u},
+      {192u, 0u},
+      0.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   Vector<LineRun> lines;
-  lines.PushBack( line01 );
-  lines.PushBack( line02 );
-  lines.PushBack( line03 );
-  lines.PushBack( line04 );
-  lines.PushBack( line05 );
-  lines.PushBack( line06 );
-  lines.PushBack( line07 );
-  lines.PushBack( line08 );
-  lines.PushBack( line09 );
-  lines.PushBack( line10 );
-  lines.PushBack( line11 );
-  lines.PushBack( line12 );
-  lines.PushBack( line13 );
-  lines.PushBack( line14 );
-  lines.PushBack( line15 );
-  lines.PushBack( line16 );
-  lines.PushBack( line17 );
-  lines.PushBack( line18 );
-  lines.PushBack( line19 );
+  lines.PushBack(line01);
+  lines.PushBack(line02);
+  lines.PushBack(line03);
+  lines.PushBack(line04);
+  lines.PushBack(line05);
+  lines.PushBack(line06);
+  lines.PushBack(line07);
+  lines.PushBack(line08);
+  lines.PushBack(line09);
+  lines.PushBack(line10);
+  lines.PushBack(line11);
+  lines.PushBack(line12);
+  lines.PushBack(line13);
+  lines.PushBack(line14);
+  lines.PushBack(line15);
+  lines.PushBack(line16);
+  lines.PushBack(line17);
+  lines.PushBack(line18);
+  lines.PushBack(line19);
 
   LayoutTextData data =
-  {
-    "Layout bidirectional text.",
-    "Hello world demo שלום עולם.\n"
-    "مرحبا بالعالم hello world שלום עולם\n"
-    "שלום עולם hello world demo.\n"
-    "hello world مرحبا بالعالم שלום עולם\n"
-    "Hello world demo שלום עולם.\n"
-    "שלום עולם hello world مرحبا بالعالم\n",
-    textArea,
-    17u,
-    fontDescriptionRuns.Begin(),
-    layoutSize,
-    192u,
-    positions,
-    19u,
-    lines.Begin(),
-    Layout::Engine::MULTI_LINE_BOX,
-    0u,
-    64u,
-    false,
-    DevelText::EllipsisPosition::END,
-    true
-  };
+    {
+      "Layout bidirectional text.",
+      "Hello world demo שלום עולם.\n"
+      "مرحبا بالعالم hello world שלום עולם\n"
+      "שלום עולם hello world demo.\n"
+      "hello world مرحبا بالعالم שלום עולם\n"
+      "Hello world demo שלום עולם.\n"
+      "שלום עולם hello world مرحبا بالعالم\n",
+      textArea,
+      17u,
+      fontDescriptionRuns.Begin(),
+      layoutSize,
+      192u,
+      positions,
+      19u,
+      lines.Begin(),
+      Layout::Engine::MULTI_LINE_BOX,
+      0u,
+      64u,
+      false,
+      DevelText::EllipsisPosition::END,
+      true};
 
-  if( !LayoutTextTest( data ) )
+  if(!LayoutTextTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -2099,567 +2514,890 @@ int UtcDaliTextUpdateLayout02(void)
 
   // Layout some lines of bidirectional text. Update the paragraphs at the middle.
 
-  const std::string fontLatin( "TizenSans" );
-  const std::string fontHebrew( "TizenSansHebrew" );
-  const std::string fontArabic( "TizenSansArabic" );
+  const std::string fontLatin("TizenSans");
+  const std::string fontHebrew("TizenSansHebrew");
+  const std::string fontArabic("TizenSansArabic");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun01;
-  fontDescriptionRun01.characterRun.characterIndex = 0u;
+  fontDescriptionRun01.characterRun.characterIndex     = 0u;
   fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
-  fontDescriptionRun01.familyLength = fontLatin.size();
-  fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
-  memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
+  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;
+  fontDescriptionRun01.widthDefined  = false;
+  fontDescriptionRun01.slantDefined  = false;
+  fontDescriptionRun01.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun02;
-  fontDescriptionRun02.characterRun.characterIndex = 17u;
+  fontDescriptionRun02.characterRun.characterIndex     = 17u;
   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);
   fontDescriptionRun02.familyDefined = true;
   fontDescriptionRun02.weightDefined = false;
-  fontDescriptionRun02.widthDefined = false;
-  fontDescriptionRun02.slantDefined = false;
-  fontDescriptionRun02.sizeDefined = false;
+  fontDescriptionRun02.widthDefined  = false;
+  fontDescriptionRun02.slantDefined  = false;
+  fontDescriptionRun02.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun03;
-  fontDescriptionRun03.characterRun.characterIndex = 26u;
+  fontDescriptionRun03.characterRun.characterIndex     = 26u;
   fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
-  fontDescriptionRun03.familyLength = fontLatin.size();
-  fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
-  memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
+  fontDescriptionRun03.familyLength                    = fontLatin.size();
+  fontDescriptionRun03.familyName                      = new char[fontDescriptionRun03.familyLength];
+  memcpy(fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength);
   fontDescriptionRun03.familyDefined = true;
   fontDescriptionRun03.weightDefined = false;
-  fontDescriptionRun03.widthDefined = false;
-  fontDescriptionRun03.slantDefined = false;
-  fontDescriptionRun03.sizeDefined = false;
+  fontDescriptionRun03.widthDefined  = false;
+  fontDescriptionRun03.slantDefined  = false;
+  fontDescriptionRun03.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun04;
-  fontDescriptionRun04.characterRun.characterIndex = 28u;
+  fontDescriptionRun04.characterRun.characterIndex     = 28u;
   fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun04.familyLength = fontArabic.size();
-  fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
-  memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
+  fontDescriptionRun04.familyLength                    = fontArabic.size();
+  fontDescriptionRun04.familyName                      = new char[fontDescriptionRun04.familyLength];
+  memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength);
   fontDescriptionRun04.familyDefined = true;
   fontDescriptionRun04.weightDefined = false;
-  fontDescriptionRun04.widthDefined = false;
-  fontDescriptionRun04.slantDefined = false;
-  fontDescriptionRun04.sizeDefined = false;
+  fontDescriptionRun04.widthDefined  = false;
+  fontDescriptionRun04.slantDefined  = false;
+  fontDescriptionRun04.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun05;
-  fontDescriptionRun05.characterRun.characterIndex = 42u;
+  fontDescriptionRun05.characterRun.characterIndex     = 42u;
   fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun05.familyLength = fontLatin.size();
-  fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
-  memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
+  fontDescriptionRun05.familyLength                    = fontLatin.size();
+  fontDescriptionRun05.familyName                      = new char[fontDescriptionRun05.familyLength];
+  memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
   fontDescriptionRun05.familyDefined = true;
   fontDescriptionRun05.weightDefined = false;
-  fontDescriptionRun05.widthDefined = false;
-  fontDescriptionRun05.slantDefined = false;
-  fontDescriptionRun05.sizeDefined = false;
+  fontDescriptionRun05.widthDefined  = false;
+  fontDescriptionRun05.slantDefined  = false;
+  fontDescriptionRun05.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun06;
-  fontDescriptionRun06.characterRun.characterIndex = 54u;
+  fontDescriptionRun06.characterRun.characterIndex     = 54u;
   fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun06.familyLength = fontHebrew.size();
-  fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
-  memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
+  fontDescriptionRun06.familyLength                    = fontHebrew.size();
+  fontDescriptionRun06.familyName                      = new char[fontDescriptionRun06.familyLength];
+  memcpy(fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength);
   fontDescriptionRun06.familyDefined = true;
   fontDescriptionRun06.weightDefined = false;
-  fontDescriptionRun06.widthDefined = false;
-  fontDescriptionRun06.slantDefined = false;
-  fontDescriptionRun06.sizeDefined = false;
+  fontDescriptionRun06.widthDefined  = false;
+  fontDescriptionRun06.slantDefined  = false;
+  fontDescriptionRun06.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun07;
-  fontDescriptionRun07.characterRun.characterIndex = 64u;
+  fontDescriptionRun07.characterRun.characterIndex     = 64u;
   fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun07.familyLength = fontHebrew.size();
-  fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
-  memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
+  fontDescriptionRun07.familyLength                    = fontHebrew.size();
+  fontDescriptionRun07.familyName                      = new char[fontDescriptionRun07.familyLength];
+  memcpy(fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength);
   fontDescriptionRun07.familyDefined = true;
   fontDescriptionRun07.weightDefined = false;
-  fontDescriptionRun07.widthDefined = false;
-  fontDescriptionRun07.slantDefined = false;
-  fontDescriptionRun07.sizeDefined = false;
+  fontDescriptionRun07.widthDefined  = false;
+  fontDescriptionRun07.slantDefined  = false;
+  fontDescriptionRun07.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun08;
-  fontDescriptionRun08.characterRun.characterIndex = 74u;
+  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);
   fontDescriptionRun08.familyDefined = true;
   fontDescriptionRun08.weightDefined = false;
-  fontDescriptionRun08.widthDefined = false;
-  fontDescriptionRun08.slantDefined = false;
-  fontDescriptionRun08.sizeDefined = false;
+  fontDescriptionRun08.widthDefined  = false;
+  fontDescriptionRun08.slantDefined  = false;
+  fontDescriptionRun08.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun09;
-  fontDescriptionRun09.characterRun.characterIndex = 92u;
+  fontDescriptionRun09.characterRun.characterIndex     = 92u;
   fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun09.familyLength = fontLatin.size();
-  fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
-  memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
+  fontDescriptionRun09.familyLength                    = fontLatin.size();
+  fontDescriptionRun09.familyName                      = new char[fontDescriptionRun09.familyLength];
+  memcpy(fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength);
   fontDescriptionRun09.familyDefined = true;
   fontDescriptionRun09.weightDefined = false;
-  fontDescriptionRun09.widthDefined = false;
-  fontDescriptionRun09.slantDefined = false;
-  fontDescriptionRun09.sizeDefined = false;
+  fontDescriptionRun09.widthDefined  = false;
+  fontDescriptionRun09.slantDefined  = false;
+  fontDescriptionRun09.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun10;
-  fontDescriptionRun10.characterRun.characterIndex = 104u;
+  fontDescriptionRun10.characterRun.characterIndex     = 104u;
   fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun10.familyLength = fontArabic.size();
-  fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
-  memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
+  fontDescriptionRun10.familyLength                    = fontArabic.size();
+  fontDescriptionRun10.familyName                      = new char[fontDescriptionRun10.familyLength];
+  memcpy(fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength);
   fontDescriptionRun10.familyDefined = true;
   fontDescriptionRun10.weightDefined = false;
-  fontDescriptionRun10.widthDefined = false;
-  fontDescriptionRun10.slantDefined = false;
-  fontDescriptionRun10.sizeDefined = false;
+  fontDescriptionRun10.widthDefined  = false;
+  fontDescriptionRun10.slantDefined  = false;
+  fontDescriptionRun10.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun11;
-  fontDescriptionRun11.characterRun.characterIndex = 118u;
+  fontDescriptionRun11.characterRun.characterIndex     = 118u;
   fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun11.familyLength = fontHebrew.size();
-  fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
-  memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
+  fontDescriptionRun11.familyLength                    = fontHebrew.size();
+  fontDescriptionRun11.familyName                      = new char[fontDescriptionRun11.familyLength];
+  memcpy(fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength);
   fontDescriptionRun11.familyDefined = true;
   fontDescriptionRun11.weightDefined = false;
-  fontDescriptionRun11.widthDefined = false;
-  fontDescriptionRun11.slantDefined = false;
-  fontDescriptionRun11.sizeDefined = false;
+  fontDescriptionRun11.widthDefined  = false;
+  fontDescriptionRun11.slantDefined  = false;
+  fontDescriptionRun11.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun12;
-  fontDescriptionRun12.characterRun.characterIndex = 128u;
+  fontDescriptionRun12.characterRun.characterIndex     = 128u;
   fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
-  fontDescriptionRun12.familyLength = fontLatin.size();
-  fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
-  memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
+  fontDescriptionRun12.familyLength                    = fontLatin.size();
+  fontDescriptionRun12.familyName                      = new char[fontDescriptionRun12.familyLength];
+  memcpy(fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength);
   fontDescriptionRun12.familyDefined = true;
   fontDescriptionRun12.weightDefined = false;
-  fontDescriptionRun12.widthDefined = false;
-  fontDescriptionRun12.slantDefined = false;
-  fontDescriptionRun12.sizeDefined = false;
+  fontDescriptionRun12.widthDefined  = false;
+  fontDescriptionRun12.slantDefined  = false;
+  fontDescriptionRun12.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun13;
-  fontDescriptionRun13.characterRun.characterIndex = 145u;
+  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);
   fontDescriptionRun13.familyDefined = true;
   fontDescriptionRun13.weightDefined = false;
-  fontDescriptionRun13.widthDefined = false;
-  fontDescriptionRun13.slantDefined = false;
-  fontDescriptionRun13.sizeDefined = false;
+  fontDescriptionRun13.widthDefined  = false;
+  fontDescriptionRun13.slantDefined  = false;
+  fontDescriptionRun13.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun14;
-  fontDescriptionRun14.characterRun.characterIndex = 154u;
+  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);
   fontDescriptionRun14.familyDefined = true;
   fontDescriptionRun14.weightDefined = false;
-  fontDescriptionRun14.widthDefined = false;
-  fontDescriptionRun14.slantDefined = false;
-  fontDescriptionRun14.sizeDefined = false;
+  fontDescriptionRun14.widthDefined  = false;
+  fontDescriptionRun14.slantDefined  = false;
+  fontDescriptionRun14.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun15;
-  fontDescriptionRun15.characterRun.characterIndex = 156u;
+  fontDescriptionRun15.characterRun.characterIndex     = 156u;
   fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun15.familyLength = fontHebrew.size();
-  fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
-  memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
+  fontDescriptionRun15.familyLength                    = fontHebrew.size();
+  fontDescriptionRun15.familyName                      = new char[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.widthDefined  = false;
+  fontDescriptionRun15.slantDefined  = false;
+  fontDescriptionRun15.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun16;
-  fontDescriptionRun16.characterRun.characterIndex = 166u;
+  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.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;
+  fontDescriptionRun16.widthDefined  = false;
+  fontDescriptionRun16.slantDefined  = false;
+  fontDescriptionRun16.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun17;
-  fontDescriptionRun17.characterRun.characterIndex = 178u;
+  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.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;
+  fontDescriptionRun17.widthDefined  = false;
+  fontDescriptionRun17.slantDefined  = false;
+  fontDescriptionRun17.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun01 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun02 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun03 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun04 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun05 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun06 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun07 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun08 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun09 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun10 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun11 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun12 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun13 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun14 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun15 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun16 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun17 );
-  Size textArea(100.f, 300.f);
-  Size layoutSize(100.f, 380.f);
+  fontDescriptionRuns.PushBack(fontDescriptionRun01);
+  fontDescriptionRuns.PushBack(fontDescriptionRun02);
+  fontDescriptionRuns.PushBack(fontDescriptionRun03);
+  fontDescriptionRuns.PushBack(fontDescriptionRun04);
+  fontDescriptionRuns.PushBack(fontDescriptionRun05);
+  fontDescriptionRuns.PushBack(fontDescriptionRun06);
+  fontDescriptionRuns.PushBack(fontDescriptionRun07);
+  fontDescriptionRuns.PushBack(fontDescriptionRun08);
+  fontDescriptionRuns.PushBack(fontDescriptionRun09);
+  fontDescriptionRuns.PushBack(fontDescriptionRun10);
+  fontDescriptionRuns.PushBack(fontDescriptionRun11);
+  fontDescriptionRuns.PushBack(fontDescriptionRun12);
+  fontDescriptionRuns.PushBack(fontDescriptionRun13);
+  fontDescriptionRuns.PushBack(fontDescriptionRun14);
+  fontDescriptionRuns.PushBack(fontDescriptionRun15);
+  fontDescriptionRuns.PushBack(fontDescriptionRun16);
+  fontDescriptionRuns.PushBack(fontDescriptionRun17);
+  Size  textArea(100.f, 300.f);
+  Size  layoutSize(100.f, 380.f);
   float positions[] =
-  {
-    0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f,                                                                                                   //   0 ..  11
-    0.f, -13.f,  9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -0.f, 68.f, -10.f, 59.f, -13.f, 54.f, -10.f, 45.f, -10.f, 79.f, -0.f,                                                                                                                           //  12 ..  21
-    23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -2.f, 36.f, -12.f,                                                                                                                                                                           //  22 ..  27
-    58.f, -8.f, 52.f, -6.f, 45.f, -8.f, 41.f, -7.f, 39.f, -11.f, 34.f, -0.f, 30.f, -7.f, 28.f, -11.f, 23.f, -11.f, 16.f, -8.f, 15.f, -11.f, 9.f, -11.f, 4.f, -8.f, 0.f, -0.f, 4.f, -13.f, 12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f,   //  28 ..  47
-    42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f, 59.f, -10.f, 50.f, -13.f, 46.f, -10.f, 36.f, -10.f, 32.f, -0.f,                                                                                                              //  48 ..  58
-    23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 0.f, -0.f,                                                                                                                                                                                         //  59 ..  63
-    63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 41.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f,                                                                                                                         //  64 ..  73
-    4.f, -13.f,  12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f,                                                                                                   //  74 ..  85
-    4.f, -13.f,  13.f, -9.f, 23.f, -9.f, 36.f, -9.f, 0.f, -2.f, 0.f, -12.f,                                                                                                                                                                               //  86 ..  91
-    0.f, -13.f,  8.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 79.f, -0.f,                                                                                                   //  92 .. 103
-    92.f, -8.f, 86.f, -6.f, 79.f, -8.f, 75.f, -7.f, 73.f, -11.f, 68.f, -0.f, 64.f, -7.f, 62.f, -11.f, 57.f, -11.f, 50.f, -8.f, 49.f, -11.f, 43.f, -11.f, 38.f, -8.f, 34.f, -0.f, 23.f, -10.f, 14.f, -13.f, 10.f, -10.f, 0.f, -10.f, 99.f, -0.f,           // 104 .. 122
-    23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -0.f,                                                                                                                                                                                        // 123 .. 127
-    0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f,                                                                                                   // 128 .. 139
-    0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -0.f, 68.f, -10.f, 59.f, -13.f, 54.f, -10.f, 45.f, -10.f, 79.f, -0.f,                                                                                                                            // 140 .. 149
-    23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -2.f, 36.f, -12.f,                                                                                                                                                                           // 150 .. 155
-    63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 41.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f,                                                                                                                         // 156 .. 165
-    4.f, -13.f, 12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f,                                                                                                    // 166 .. 177
-    54.f, -8.f, 49.f, -6.f, 41.f, -8.f, 37.f, -7.f, 35.f, -11.f, 31.f, -0.f, 26.f, -7.f, 24.f, -11.f, 19.f, -11.f, 12.f, -8.f, 11.f, -11.f, 5.f, -11.f, 0.f, -8.f, 0.f, -0.f,                                                                             // 178 .. 191
-  };
+    {
+      0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, //   0 ..  11
+      0.f,
+      -13.f,
+      9.f,
+      -9.f,
+      19.f,
+      -9.f,
+      32.f,
+      -9.f,
+      41.f,
+      -0.f,
+      68.f,
+      -10.f,
+      59.f,
+      -13.f,
+      54.f,
+      -10.f,
+      45.f,
+      -10.f,
+      79.f,
+      -0.f, //  12 ..  21
+      23.f,
+      -10.f,
+      19.f,
+      -10.f,
+      10.f,
+      -13.f,
+      0.f,
+      -10.f,
+      32.f,
+      -2.f,
+      36.f,
+      -12.f, //  22 ..  27
+      58.f,
+      -8.f,
+      52.f,
+      -6.f,
+      45.f,
+      -8.f,
+      41.f,
+      -7.f,
+      39.f,
+      -11.f,
+      34.f,
+      -0.f,
+      30.f,
+      -7.f,
+      28.f,
+      -11.f,
+      23.f,
+      -11.f,
+      16.f,
+      -8.f,
+      15.f,
+      -11.f,
+      9.f,
+      -11.f,
+      4.f,
+      -8.f,
+      0.f,
+      -0.f,
+      4.f,
+      -13.f,
+      12.f,
+      -9.f,
+      22.f,
+      -13.f,
+      26.f,
+      -13.f,
+      29.f,
+      -9.f,
+      38.f,
+      -0.f, //  28 ..  47
+      42.f,
+      -9.f,
+      54.f,
+      -9.f,
+      64.f,
+      -9.f,
+      70.f,
+      -13.f,
+      73.f,
+      -13.f,
+      0.f,
+      -0.f,
+      59.f,
+      -10.f,
+      50.f,
+      -13.f,
+      46.f,
+      -10.f,
+      36.f,
+      -10.f,
+      32.f,
+      -0.f, //  48 ..  58
+      23.f,
+      -10.f,
+      19.f,
+      -10.f,
+      10.f,
+      -13.f,
+      0.f,
+      -10.f,
+      0.f,
+      -0.f, //  59 ..  63
+      63.f,
+      -10.f,
+      54.f,
+      -13.f,
+      50.f,
+      -10.f,
+      41.f,
+      -10.f,
+      36.f,
+      -0.f,
+      27.f,
+      -10.f,
+      23.f,
+      -10.f,
+      14.f,
+      -13.f,
+      4.f,
+      -10.f,
+      0.f,
+      -0.f, //  64 ..  73
+      4.f,
+      -13.f,
+      12.f,
+      -9.f,
+      22.f,
+      -13.f,
+      26.f,
+      -13.f,
+      29.f,
+      -9.f,
+      38.f,
+      -0.f,
+      42.f,
+      -9.f,
+      54.f,
+      -9.f,
+      64.f,
+      -9.f,
+      70.f,
+      -13.f,
+      73.f,
+      -13.f,
+      0.f,
+      -0.f, //  74 ..  85
+      4.f,
+      -13.f,
+      13.f,
+      -9.f,
+      23.f,
+      -9.f,
+      36.f,
+      -9.f,
+      0.f,
+      -2.f,
+      0.f,
+      -12.f, //  86 ..  91
+      0.f,
+      -13.f,
+      8.f,
+      -9.f,
+      18.f,
+      -13.f,
+      22.f,
+      -13.f,
+      25.f,
+      -9.f,
+      34.f,
+      -0.f,
+      38.f,
+      -9.f,
+      50.f,
+      -9.f,
+      60.f,
+      -9.f,
+      66.f,
+      -13.f,
+      69.f,
+      -13.f,
+      79.f,
+      -0.f, //  92 .. 103
+      92.f,
+      -8.f,
+      86.f,
+      -6.f,
+      79.f,
+      -8.f,
+      75.f,
+      -7.f,
+      73.f,
+      -11.f,
+      68.f,
+      -0.f,
+      64.f,
+      -7.f,
+      62.f,
+      -11.f,
+      57.f,
+      -11.f,
+      50.f,
+      -8.f,
+      49.f,
+      -11.f,
+      43.f,
+      -11.f,
+      38.f,
+      -8.f,
+      34.f,
+      -0.f,
+      23.f,
+      -10.f,
+      14.f,
+      -13.f,
+      10.f,
+      -10.f,
+      0.f,
+      -10.f,
+      99.f,
+      -0.f, // 104 .. 122
+      23.f,
+      -10.f,
+      19.f,
+      -10.f,
+      10.f,
+      -13.f,
+      0.f,
+      -10.f,
+      32.f,
+      -0.f, // 123 .. 127
+      0.f,
+      -12.f,
+      10.f,
+      -9.f,
+      20.f,
+      -13.f,
+      24.f,
+      -13.f,
+      27.f,
+      -9.f,
+      36.f,
+      -0.f,
+      40.f,
+      -9.f,
+      52.f,
+      -9.f,
+      62.f,
+      -9.f,
+      69.f,
+      -13.f,
+      72.f,
+      -13.f,
+      81.f,
+      -0.f, // 128 .. 139
+      0.f,
+      -13.f,
+      9.f,
+      -9.f,
+      19.f,
+      -9.f,
+      32.f,
+      -9.f,
+      41.f,
+      -0.f,
+      68.f,
+      -10.f,
+      59.f,
+      -13.f,
+      54.f,
+      -10.f,
+      45.f,
+      -10.f,
+      79.f,
+      -0.f, // 140 .. 149
+      23.f,
+      -10.f,
+      19.f,
+      -10.f,
+      10.f,
+      -13.f,
+      0.f,
+      -10.f,
+      32.f,
+      -2.f,
+      36.f,
+      -12.f, // 150 .. 155
+      63.f,
+      -10.f,
+      54.f,
+      -13.f,
+      50.f,
+      -10.f,
+      41.f,
+      -10.f,
+      36.f,
+      -0.f,
+      27.f,
+      -10.f,
+      23.f,
+      -10.f,
+      14.f,
+      -13.f,
+      4.f,
+      -10.f,
+      0.f,
+      -0.f, // 156 .. 165
+      4.f,
+      -13.f,
+      12.f,
+      -9.f,
+      22.f,
+      -13.f,
+      26.f,
+      -13.f,
+      29.f,
+      -9.f,
+      38.f,
+      -0.f,
+      42.f,
+      -9.f,
+      54.f,
+      -9.f,
+      64.f,
+      -9.f,
+      70.f,
+      -13.f,
+      73.f,
+      -13.f,
+      0.f,
+      -0.f, // 166 .. 177
+      54.f,
+      -8.f,
+      49.f,
+      -6.f,
+      41.f,
+      -8.f,
+      37.f,
+      -7.f,
+      35.f,
+      -11.f,
+      31.f,
+      -0.f,
+      26.f,
+      -7.f,
+      24.f,
+      -11.f,
+      19.f,
+      -11.f,
+      12.f,
+      -8.f,
+      11.f,
+      -11.f,
+      5.f,
+      -11.f,
+      0.f,
+      -8.f,
+      0.f,
+      -0.f, // 178 .. 191
+    };
 
   struct LineRun line01 =
-  {
-    { 0u, 12u },
-    { 0u, 12u },
-    81.f,
-    15.f,
-    -5.f,
-    4.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {0u, 12u},
+      {0u, 12u},
+      81.f,
+      15.f,
+      -5.f,
+      4.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line02 =
-  {
-    { 12u, 10u },
-    { 12u, 10u },
-    79.f,
-    15.f,
-    -5.f,
-    5.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {12u, 10u},
+      {12u, 10u},
+      79.f,
+      15.f,
+      -5.f,
+      5.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line03 =
-  {
-    { 22u, 6u },
-    { 22u, 6u },
-    35.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {22u, 6u},
+      {22u, 6u},
+      35.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line04 =
-  {
-    { 28u, 14u },
-    { 28u, 14u },
-    63.f,
-    15.f,
-    -5.f,
-    4.f,
-    0.f,
-    0.f,
-    true,
-    false
-  };
+    {
+      {28u, 14u},
+      {28u, 14u},
+      63.f,
+      15.f,
+      -5.f,
+      4.f,
+      0.f,
+      0.f,
+      true,
+      false};
   struct LineRun line05 =
-  {
-    { 42u, 12u },
-    { 42u, 12u },
-    79.f,
-    15.f,
-    -5.f,
-    4.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {42u, 12u},
+      {42u, 12u},
+      79.f,
+      15.f,
+      -5.f,
+      4.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line06 =
-  {
-    { 54u, 10u },
-    { 54u, 10u },
-    70.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {54u, 10u},
+      {54u, 10u},
+      70.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line07 =
-  {
-    { 64u, 10u },
-    { 64u, 10u },
-    70.f,
-    15.f,
-    -5.f,
-    5.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {64u, 10u},
+      {64u, 10u},
+      70.f,
+      15.f,
+      -5.f,
+      5.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line08 =
-  {
-    { 74u, 12u },
-    { 74u, 12u },
-    79.f,
-    15.f,
-    -5.f,
-    4.f,
-    1.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {74u, 12u},
+      {74u, 12u},
+      79.f,
+      15.f,
+      -5.f,
+      4.f,
+      1.f,
+      0.f,
+      false,
+      false};
   struct LineRun line09 =
-  {
-    { 86u, 6u },
-    { 86u, 6u },
-    45.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {86u, 6u},
+      {86u, 6u},
+      45.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line10 =
-  {
-    { 92u, 12u },
-    { 92u, 12u },
-    79.f,
-    15.f,
-    -5.f,
-    4.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {92u, 12u},
+      {92u, 12u},
+      79.f,
+      15.f,
+      -5.f,
+      4.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line11 =
-  {
-    { 104u, 19u },
-    { 104u, 19u },
-    100.f,
-    15.f,
-    -5.f,
-    5.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {104u, 19u},
+      {104u, 19u},
+      100.f,
+      15.f,
+      -5.f,
+      5.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line12 =
-  {
-    { 123u, 5u },
-    { 123u, 5u },
-    32.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {123u, 5u},
+      {123u, 5u},
+      32.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line13 =
-  {
-    { 128u, 12u },
-    { 128u, 12u },
-    81.f,
-    15.f,
-    -5.f,
-    4.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {128u, 12u},
+      {128u, 12u},
+      81.f,
+      15.f,
+      -5.f,
+      4.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line14 =
-  {
-    { 140u, 10u },
-    { 140u, 10u },
-    79.f,
-    15.f,
-    -5.f,
-    5.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {140u, 10u},
+      {140u, 10u},
+      79.f,
+      15.f,
+      -5.f,
+      5.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line15 =
-  {
-    { 150u, 6u },
-    { 150u, 6u },
-    35.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {150u, 6u},
+      {150u, 6u},
+      35.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line16 =
-  {
-    { 156u, 10u },
-    { 156u, 10u },
-    70.f,
-    15.f,
-    -5.f,
-    5.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {156u, 10u},
+      {156u, 10u},
+      70.f,
+      15.f,
+      -5.f,
+      5.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line17 =
-  {
-    { 166u, 12u },
-    { 166u, 12u },
-    79.f,
-    15.f,
-    -5.f,
-    4.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {166u, 12u},
+      {166u, 12u},
+      79.f,
+      15.f,
+      -5.f,
+      4.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line18 =
-  {
-    { 178u, 14u },
-    { 178u, 14u },
-    63.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {178u, 14u},
+      {178u, 14u},
+      63.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line19 =
-  {
-    { 192u, 0u },
-    { 192u, 0u },
-    0.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {192u, 0u},
+      {192u, 0u},
+      0.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   Vector<LineRun> lines;
-  lines.PushBack( line01 );
-  lines.PushBack( line02 );
-  lines.PushBack( line03 );
-  lines.PushBack( line04 );
-  lines.PushBack( line05 );
-  lines.PushBack( line06 );
-  lines.PushBack( line07 );
-  lines.PushBack( line08 );
-  lines.PushBack( line09 );
-  lines.PushBack( line10 );
-  lines.PushBack( line11 );
-  lines.PushBack( line12 );
-  lines.PushBack( line13 );
-  lines.PushBack( line14 );
-  lines.PushBack( line15 );
-  lines.PushBack( line16 );
-  lines.PushBack( line17 );
-  lines.PushBack( line18 );
-  lines.PushBack( line19 );
+  lines.PushBack(line01);
+  lines.PushBack(line02);
+  lines.PushBack(line03);
+  lines.PushBack(line04);
+  lines.PushBack(line05);
+  lines.PushBack(line06);
+  lines.PushBack(line07);
+  lines.PushBack(line08);
+  lines.PushBack(line09);
+  lines.PushBack(line10);
+  lines.PushBack(line11);
+  lines.PushBack(line12);
+  lines.PushBack(line13);
+  lines.PushBack(line14);
+  lines.PushBack(line15);
+  lines.PushBack(line16);
+  lines.PushBack(line17);
+  lines.PushBack(line18);
+  lines.PushBack(line19);
 
   LayoutTextData data =
-  {
-    "Layout bidirectional text.",
-    "Hello world demo שלום עולם.\n"
-    "مرحبا بالعالم hello world שלום עולם\n"
-    "שלום עולם hello world demo.\n"
-    "hello world مرحبا بالعالم שלום עולם\n"
-    "Hello world demo שלום עולם.\n"
-    "שלום עולם hello world مرحبا بالعالم\n",
-    textArea,
-    17u,
-    fontDescriptionRuns.Begin(),
-    layoutSize,
-    192u,
-    positions,
-    19u,
-    lines.Begin(),
-    Layout::Engine::MULTI_LINE_BOX,
-    64u,
-    64u,
-    false,
-    DevelText::EllipsisPosition::END,
-    true
-  };
+    {
+      "Layout bidirectional text.",
+      "Hello world demo שלום עולם.\n"
+      "مرحبا بالعالم hello world שלום עולם\n"
+      "שלום עולם hello world demo.\n"
+      "hello world مرحبا بالعالم שלום עולם\n"
+      "Hello world demo שלום עולם.\n"
+      "שלום עולם hello world مرحبا بالعالم\n",
+      textArea,
+      17u,
+      fontDescriptionRuns.Begin(),
+      layoutSize,
+      192u,
+      positions,
+      19u,
+      lines.Begin(),
+      Layout::Engine::MULTI_LINE_BOX,
+      64u,
+      64u,
+      false,
+      DevelText::EllipsisPosition::END,
+      true};
 
-  if( !LayoutTextTest( data ) )
+  if(!LayoutTextTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -2675,567 +3413,890 @@ int UtcDaliTextUpdateLayout03(void)
 
   // Layout some lines of bidirectional text. Update the paragraphs at the middle.
 
-  const std::string fontLatin( "TizenSans" );
-  const std::string fontHebrew( "TizenSansHebrew" );
-  const std::string fontArabic( "TizenSansArabic" );
+  const std::string fontLatin("TizenSans");
+  const std::string fontHebrew("TizenSansHebrew");
+  const std::string fontArabic("TizenSansArabic");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun01;
-  fontDescriptionRun01.characterRun.characterIndex = 0u;
+  fontDescriptionRun01.characterRun.characterIndex     = 0u;
   fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
-  fontDescriptionRun01.familyLength = fontLatin.size();
-  fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
-  memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
+  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;
+  fontDescriptionRun01.widthDefined  = false;
+  fontDescriptionRun01.slantDefined  = false;
+  fontDescriptionRun01.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun02;
-  fontDescriptionRun02.characterRun.characterIndex = 17u;
+  fontDescriptionRun02.characterRun.characterIndex     = 17u;
   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);
   fontDescriptionRun02.familyDefined = true;
   fontDescriptionRun02.weightDefined = false;
-  fontDescriptionRun02.widthDefined = false;
-  fontDescriptionRun02.slantDefined = false;
-  fontDescriptionRun02.sizeDefined = false;
+  fontDescriptionRun02.widthDefined  = false;
+  fontDescriptionRun02.slantDefined  = false;
+  fontDescriptionRun02.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun03;
-  fontDescriptionRun03.characterRun.characterIndex = 26u;
+  fontDescriptionRun03.characterRun.characterIndex     = 26u;
   fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
-  fontDescriptionRun03.familyLength = fontLatin.size();
-  fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
-  memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
+  fontDescriptionRun03.familyLength                    = fontLatin.size();
+  fontDescriptionRun03.familyName                      = new char[fontDescriptionRun03.familyLength];
+  memcpy(fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength);
   fontDescriptionRun03.familyDefined = true;
   fontDescriptionRun03.weightDefined = false;
-  fontDescriptionRun03.widthDefined = false;
-  fontDescriptionRun03.slantDefined = false;
-  fontDescriptionRun03.sizeDefined = false;
+  fontDescriptionRun03.widthDefined  = false;
+  fontDescriptionRun03.slantDefined  = false;
+  fontDescriptionRun03.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun04;
-  fontDescriptionRun04.characterRun.characterIndex = 28u;
+  fontDescriptionRun04.characterRun.characterIndex     = 28u;
   fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun04.familyLength = fontArabic.size();
-  fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
-  memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
+  fontDescriptionRun04.familyLength                    = fontArabic.size();
+  fontDescriptionRun04.familyName                      = new char[fontDescriptionRun04.familyLength];
+  memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength);
   fontDescriptionRun04.familyDefined = true;
   fontDescriptionRun04.weightDefined = false;
-  fontDescriptionRun04.widthDefined = false;
-  fontDescriptionRun04.slantDefined = false;
-  fontDescriptionRun04.sizeDefined = false;
+  fontDescriptionRun04.widthDefined  = false;
+  fontDescriptionRun04.slantDefined  = false;
+  fontDescriptionRun04.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun05;
-  fontDescriptionRun05.characterRun.characterIndex = 42u;
+  fontDescriptionRun05.characterRun.characterIndex     = 42u;
   fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun05.familyLength = fontLatin.size();
-  fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
-  memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
+  fontDescriptionRun05.familyLength                    = fontLatin.size();
+  fontDescriptionRun05.familyName                      = new char[fontDescriptionRun05.familyLength];
+  memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
   fontDescriptionRun05.familyDefined = true;
   fontDescriptionRun05.weightDefined = false;
-  fontDescriptionRun05.widthDefined = false;
-  fontDescriptionRun05.slantDefined = false;
-  fontDescriptionRun05.sizeDefined = false;
+  fontDescriptionRun05.widthDefined  = false;
+  fontDescriptionRun05.slantDefined  = false;
+  fontDescriptionRun05.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun06;
-  fontDescriptionRun06.characterRun.characterIndex = 54u;
+  fontDescriptionRun06.characterRun.characterIndex     = 54u;
   fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun06.familyLength = fontHebrew.size();
-  fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
-  memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
+  fontDescriptionRun06.familyLength                    = fontHebrew.size();
+  fontDescriptionRun06.familyName                      = new char[fontDescriptionRun06.familyLength];
+  memcpy(fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength);
   fontDescriptionRun06.familyDefined = true;
   fontDescriptionRun06.weightDefined = false;
-  fontDescriptionRun06.widthDefined = false;
-  fontDescriptionRun06.slantDefined = false;
-  fontDescriptionRun06.sizeDefined = false;
+  fontDescriptionRun06.widthDefined  = false;
+  fontDescriptionRun06.slantDefined  = false;
+  fontDescriptionRun06.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun07;
-  fontDescriptionRun07.characterRun.characterIndex = 64u;
+  fontDescriptionRun07.characterRun.characterIndex     = 64u;
   fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun07.familyLength = fontHebrew.size();
-  fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
-  memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
+  fontDescriptionRun07.familyLength                    = fontHebrew.size();
+  fontDescriptionRun07.familyName                      = new char[fontDescriptionRun07.familyLength];
+  memcpy(fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength);
   fontDescriptionRun07.familyDefined = true;
   fontDescriptionRun07.weightDefined = false;
-  fontDescriptionRun07.widthDefined = false;
-  fontDescriptionRun07.slantDefined = false;
-  fontDescriptionRun07.sizeDefined = false;
+  fontDescriptionRun07.widthDefined  = false;
+  fontDescriptionRun07.slantDefined  = false;
+  fontDescriptionRun07.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun08;
-  fontDescriptionRun08.characterRun.characterIndex = 74u;
+  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);
   fontDescriptionRun08.familyDefined = true;
   fontDescriptionRun08.weightDefined = false;
-  fontDescriptionRun08.widthDefined = false;
-  fontDescriptionRun08.slantDefined = false;
-  fontDescriptionRun08.sizeDefined = false;
+  fontDescriptionRun08.widthDefined  = false;
+  fontDescriptionRun08.slantDefined  = false;
+  fontDescriptionRun08.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun09;
-  fontDescriptionRun09.characterRun.characterIndex = 92u;
+  fontDescriptionRun09.characterRun.characterIndex     = 92u;
   fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun09.familyLength = fontLatin.size();
-  fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
-  memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
+  fontDescriptionRun09.familyLength                    = fontLatin.size();
+  fontDescriptionRun09.familyName                      = new char[fontDescriptionRun09.familyLength];
+  memcpy(fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength);
   fontDescriptionRun09.familyDefined = true;
   fontDescriptionRun09.weightDefined = false;
-  fontDescriptionRun09.widthDefined = false;
-  fontDescriptionRun09.slantDefined = false;
-  fontDescriptionRun09.sizeDefined = false;
+  fontDescriptionRun09.widthDefined  = false;
+  fontDescriptionRun09.slantDefined  = false;
+  fontDescriptionRun09.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun10;
-  fontDescriptionRun10.characterRun.characterIndex = 104u;
+  fontDescriptionRun10.characterRun.characterIndex     = 104u;
   fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun10.familyLength = fontArabic.size();
-  fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
-  memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
+  fontDescriptionRun10.familyLength                    = fontArabic.size();
+  fontDescriptionRun10.familyName                      = new char[fontDescriptionRun10.familyLength];
+  memcpy(fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength);
   fontDescriptionRun10.familyDefined = true;
   fontDescriptionRun10.weightDefined = false;
-  fontDescriptionRun10.widthDefined = false;
-  fontDescriptionRun10.slantDefined = false;
-  fontDescriptionRun10.sizeDefined = false;
+  fontDescriptionRun10.widthDefined  = false;
+  fontDescriptionRun10.slantDefined  = false;
+  fontDescriptionRun10.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun11;
-  fontDescriptionRun11.characterRun.characterIndex = 118u;
+  fontDescriptionRun11.characterRun.characterIndex     = 118u;
   fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun11.familyLength = fontHebrew.size();
-  fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
-  memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
+  fontDescriptionRun11.familyLength                    = fontHebrew.size();
+  fontDescriptionRun11.familyName                      = new char[fontDescriptionRun11.familyLength];
+  memcpy(fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength);
   fontDescriptionRun11.familyDefined = true;
   fontDescriptionRun11.weightDefined = false;
-  fontDescriptionRun11.widthDefined = false;
-  fontDescriptionRun11.slantDefined = false;
-  fontDescriptionRun11.sizeDefined = false;
+  fontDescriptionRun11.widthDefined  = false;
+  fontDescriptionRun11.slantDefined  = false;
+  fontDescriptionRun11.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun12;
-  fontDescriptionRun12.characterRun.characterIndex = 128u;
+  fontDescriptionRun12.characterRun.characterIndex     = 128u;
   fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
-  fontDescriptionRun12.familyLength = fontLatin.size();
-  fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
-  memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
+  fontDescriptionRun12.familyLength                    = fontLatin.size();
+  fontDescriptionRun12.familyName                      = new char[fontDescriptionRun12.familyLength];
+  memcpy(fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength);
   fontDescriptionRun12.familyDefined = true;
   fontDescriptionRun12.weightDefined = false;
-  fontDescriptionRun12.widthDefined = false;
-  fontDescriptionRun12.slantDefined = false;
-  fontDescriptionRun12.sizeDefined = false;
+  fontDescriptionRun12.widthDefined  = false;
+  fontDescriptionRun12.slantDefined  = false;
+  fontDescriptionRun12.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun13;
-  fontDescriptionRun13.characterRun.characterIndex = 145u;
+  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);
   fontDescriptionRun13.familyDefined = true;
   fontDescriptionRun13.weightDefined = false;
-  fontDescriptionRun13.widthDefined = false;
-  fontDescriptionRun13.slantDefined = false;
-  fontDescriptionRun13.sizeDefined = false;
+  fontDescriptionRun13.widthDefined  = false;
+  fontDescriptionRun13.slantDefined  = false;
+  fontDescriptionRun13.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun14;
-  fontDescriptionRun14.characterRun.characterIndex = 154u;
+  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);
   fontDescriptionRun14.familyDefined = true;
   fontDescriptionRun14.weightDefined = false;
-  fontDescriptionRun14.widthDefined = false;
-  fontDescriptionRun14.slantDefined = false;
-  fontDescriptionRun14.sizeDefined = false;
+  fontDescriptionRun14.widthDefined  = false;
+  fontDescriptionRun14.slantDefined  = false;
+  fontDescriptionRun14.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun15;
-  fontDescriptionRun15.characterRun.characterIndex = 156u;
+  fontDescriptionRun15.characterRun.characterIndex     = 156u;
   fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun15.familyLength = fontHebrew.size();
-  fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
-  memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
+  fontDescriptionRun15.familyLength                    = fontHebrew.size();
+  fontDescriptionRun15.familyName                      = new char[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.widthDefined  = false;
+  fontDescriptionRun15.slantDefined  = false;
+  fontDescriptionRun15.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun16;
-  fontDescriptionRun16.characterRun.characterIndex = 166u;
+  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.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;
+  fontDescriptionRun16.widthDefined  = false;
+  fontDescriptionRun16.slantDefined  = false;
+  fontDescriptionRun16.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun17;
-  fontDescriptionRun17.characterRun.characterIndex = 178u;
+  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.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;
+  fontDescriptionRun17.widthDefined  = false;
+  fontDescriptionRun17.slantDefined  = false;
+  fontDescriptionRun17.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun01 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun02 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun03 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun04 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun05 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun06 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun07 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun08 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun09 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun10 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun11 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun12 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun13 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun14 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun15 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun16 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun17 );
-  Size textArea(100.f, 300.f);
-  Size layoutSize(100.f, 380.f);
+  fontDescriptionRuns.PushBack(fontDescriptionRun01);
+  fontDescriptionRuns.PushBack(fontDescriptionRun02);
+  fontDescriptionRuns.PushBack(fontDescriptionRun03);
+  fontDescriptionRuns.PushBack(fontDescriptionRun04);
+  fontDescriptionRuns.PushBack(fontDescriptionRun05);
+  fontDescriptionRuns.PushBack(fontDescriptionRun06);
+  fontDescriptionRuns.PushBack(fontDescriptionRun07);
+  fontDescriptionRuns.PushBack(fontDescriptionRun08);
+  fontDescriptionRuns.PushBack(fontDescriptionRun09);
+  fontDescriptionRuns.PushBack(fontDescriptionRun10);
+  fontDescriptionRuns.PushBack(fontDescriptionRun11);
+  fontDescriptionRuns.PushBack(fontDescriptionRun12);
+  fontDescriptionRuns.PushBack(fontDescriptionRun13);
+  fontDescriptionRuns.PushBack(fontDescriptionRun14);
+  fontDescriptionRuns.PushBack(fontDescriptionRun15);
+  fontDescriptionRuns.PushBack(fontDescriptionRun16);
+  fontDescriptionRuns.PushBack(fontDescriptionRun17);
+  Size  textArea(100.f, 300.f);
+  Size  layoutSize(100.f, 380.f);
   float positions[] =
-  {
-    0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f,                                                                                                     //   0 ..  11
-    0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -0.f, 68.f, -10.f, 59.f, -13.f, 54.f, -10.f, 45.f, -10.f, 79.f, -0.f,                                                                                                                              //  12 ..  21
-    23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -2.f, 36.f, -12.f,                                                                                                                                                                             //  22 ..  27
-    58.f, -8.f, 52.f, -6.f, 45.f, -8.f, 41.f, -7.f, 39.f, -11.f, 34.f, -0.f, 30.f, -7.f, 28.f, -11.f, 23.f, -11.f, 16.f, -8.f, 15.f, -11.f, 9.f, -11.f, 4.f, -8.f, 0.f, -0.f, 4.f, -13.f, 12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f,     //  28 ..  47
-    42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f, 59.f, -10.f, 50.f, -13.f, 46.f, -10.f, 36.f, -10.f, 32.f, -0.f,                                                                                                                //  48 ..  58
-    23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 0.f, -0.f,                                                                                                                                                                                           //  59 ..  63
-    63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 41.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f,                                                                                                                           //  64 ..  73
-    4.f, -13.f, 12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f,                                                                                                      //  74 ..  85
-    4.f, -13.f, 13.f, -9.f, 23.f, -9.f, 36.f, -9.f, 0.f, -2.f, 0.f, -12.f,                                                                                                                                                                                  //  86 ..  91
-    0.f, -13.f, 8.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 79.f, -0.f,                                                                                                      //  92 .. 103
-    92.f, -8.f, 86.f, -6.f, 79.f, -8.f, 75.f, -7.f, 73.f, -11.f, 68.f, -0.f, 64.f, -7.f, 62.f, -11.f, 57.f, -11.f, 50.f, -8.f, 49.f, -11.f, 43.f, -11.f, 38.f, -8.f, 34.f, -0.f, 23.f, -10.f, 14.f, -13.f, 10.f, -10.f, 0.f, -10.f, 99.f, -0.f,             // 104 .. 122
-    23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -0.f,                                                                                                                                                                                          // 123 .. 127
-    0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f,                                                                                                     // 128 .. 139
-    0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -0.f, 68.f, -10.f, 59.f, -13.f, 54.f, -10.f, 45.f, -10.f, 79.f, -0.f,                                                                                                                              // 140 .. 149
-    23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -2.f, 36.f, -12.f,                                                                                                                                                                             // 150 .. 155
-    63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 41.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f,                                                                                                                           // 156 .. 165
-    4.f, -13.f, 12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f,                                                                                                      // 166 .. 177
-    54.f, -8.f, 49.f, -6.f, 41.f, -8.f, 37.f, -7.f, 35.f, -11.f, 31.f, -0.f, 26.f, -7.f, 24.f, -11.f, 19.f, -11.f, 12.f, -8.f, 11.f, -11.f, 5.f, -11.f, 0.f, -8.f, 0.f, -0.f,                                                                               // 178 .. 191
-  };
+    {
+      0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, //   0 ..  11
+      0.f,
+      -13.f,
+      9.f,
+      -9.f,
+      19.f,
+      -9.f,
+      32.f,
+      -9.f,
+      41.f,
+      -0.f,
+      68.f,
+      -10.f,
+      59.f,
+      -13.f,
+      54.f,
+      -10.f,
+      45.f,
+      -10.f,
+      79.f,
+      -0.f, //  12 ..  21
+      23.f,
+      -10.f,
+      19.f,
+      -10.f,
+      10.f,
+      -13.f,
+      0.f,
+      -10.f,
+      32.f,
+      -2.f,
+      36.f,
+      -12.f, //  22 ..  27
+      58.f,
+      -8.f,
+      52.f,
+      -6.f,
+      45.f,
+      -8.f,
+      41.f,
+      -7.f,
+      39.f,
+      -11.f,
+      34.f,
+      -0.f,
+      30.f,
+      -7.f,
+      28.f,
+      -11.f,
+      23.f,
+      -11.f,
+      16.f,
+      -8.f,
+      15.f,
+      -11.f,
+      9.f,
+      -11.f,
+      4.f,
+      -8.f,
+      0.f,
+      -0.f,
+      4.f,
+      -13.f,
+      12.f,
+      -9.f,
+      22.f,
+      -13.f,
+      26.f,
+      -13.f,
+      29.f,
+      -9.f,
+      38.f,
+      -0.f, //  28 ..  47
+      42.f,
+      -9.f,
+      54.f,
+      -9.f,
+      64.f,
+      -9.f,
+      70.f,
+      -13.f,
+      73.f,
+      -13.f,
+      0.f,
+      -0.f,
+      59.f,
+      -10.f,
+      50.f,
+      -13.f,
+      46.f,
+      -10.f,
+      36.f,
+      -10.f,
+      32.f,
+      -0.f, //  48 ..  58
+      23.f,
+      -10.f,
+      19.f,
+      -10.f,
+      10.f,
+      -13.f,
+      0.f,
+      -10.f,
+      0.f,
+      -0.f, //  59 ..  63
+      63.f,
+      -10.f,
+      54.f,
+      -13.f,
+      50.f,
+      -10.f,
+      41.f,
+      -10.f,
+      36.f,
+      -0.f,
+      27.f,
+      -10.f,
+      23.f,
+      -10.f,
+      14.f,
+      -13.f,
+      4.f,
+      -10.f,
+      0.f,
+      -0.f, //  64 ..  73
+      4.f,
+      -13.f,
+      12.f,
+      -9.f,
+      22.f,
+      -13.f,
+      26.f,
+      -13.f,
+      29.f,
+      -9.f,
+      38.f,
+      -0.f,
+      42.f,
+      -9.f,
+      54.f,
+      -9.f,
+      64.f,
+      -9.f,
+      70.f,
+      -13.f,
+      73.f,
+      -13.f,
+      0.f,
+      -0.f, //  74 ..  85
+      4.f,
+      -13.f,
+      13.f,
+      -9.f,
+      23.f,
+      -9.f,
+      36.f,
+      -9.f,
+      0.f,
+      -2.f,
+      0.f,
+      -12.f, //  86 ..  91
+      0.f,
+      -13.f,
+      8.f,
+      -9.f,
+      18.f,
+      -13.f,
+      22.f,
+      -13.f,
+      25.f,
+      -9.f,
+      34.f,
+      -0.f,
+      38.f,
+      -9.f,
+      50.f,
+      -9.f,
+      60.f,
+      -9.f,
+      66.f,
+      -13.f,
+      69.f,
+      -13.f,
+      79.f,
+      -0.f, //  92 .. 103
+      92.f,
+      -8.f,
+      86.f,
+      -6.f,
+      79.f,
+      -8.f,
+      75.f,
+      -7.f,
+      73.f,
+      -11.f,
+      68.f,
+      -0.f,
+      64.f,
+      -7.f,
+      62.f,
+      -11.f,
+      57.f,
+      -11.f,
+      50.f,
+      -8.f,
+      49.f,
+      -11.f,
+      43.f,
+      -11.f,
+      38.f,
+      -8.f,
+      34.f,
+      -0.f,
+      23.f,
+      -10.f,
+      14.f,
+      -13.f,
+      10.f,
+      -10.f,
+      0.f,
+      -10.f,
+      99.f,
+      -0.f, // 104 .. 122
+      23.f,
+      -10.f,
+      19.f,
+      -10.f,
+      10.f,
+      -13.f,
+      0.f,
+      -10.f,
+      32.f,
+      -0.f, // 123 .. 127
+      0.f,
+      -12.f,
+      10.f,
+      -9.f,
+      20.f,
+      -13.f,
+      24.f,
+      -13.f,
+      27.f,
+      -9.f,
+      36.f,
+      -0.f,
+      40.f,
+      -9.f,
+      52.f,
+      -9.f,
+      62.f,
+      -9.f,
+      69.f,
+      -13.f,
+      72.f,
+      -13.f,
+      81.f,
+      -0.f, // 128 .. 139
+      0.f,
+      -13.f,
+      9.f,
+      -9.f,
+      19.f,
+      -9.f,
+      32.f,
+      -9.f,
+      41.f,
+      -0.f,
+      68.f,
+      -10.f,
+      59.f,
+      -13.f,
+      54.f,
+      -10.f,
+      45.f,
+      -10.f,
+      79.f,
+      -0.f, // 140 .. 149
+      23.f,
+      -10.f,
+      19.f,
+      -10.f,
+      10.f,
+      -13.f,
+      0.f,
+      -10.f,
+      32.f,
+      -2.f,
+      36.f,
+      -12.f, // 150 .. 155
+      63.f,
+      -10.f,
+      54.f,
+      -13.f,
+      50.f,
+      -10.f,
+      41.f,
+      -10.f,
+      36.f,
+      -0.f,
+      27.f,
+      -10.f,
+      23.f,
+      -10.f,
+      14.f,
+      -13.f,
+      4.f,
+      -10.f,
+      0.f,
+      -0.f, // 156 .. 165
+      4.f,
+      -13.f,
+      12.f,
+      -9.f,
+      22.f,
+      -13.f,
+      26.f,
+      -13.f,
+      29.f,
+      -9.f,
+      38.f,
+      -0.f,
+      42.f,
+      -9.f,
+      54.f,
+      -9.f,
+      64.f,
+      -9.f,
+      70.f,
+      -13.f,
+      73.f,
+      -13.f,
+      0.f,
+      -0.f, // 166 .. 177
+      54.f,
+      -8.f,
+      49.f,
+      -6.f,
+      41.f,
+      -8.f,
+      37.f,
+      -7.f,
+      35.f,
+      -11.f,
+      31.f,
+      -0.f,
+      26.f,
+      -7.f,
+      24.f,
+      -11.f,
+      19.f,
+      -11.f,
+      12.f,
+      -8.f,
+      11.f,
+      -11.f,
+      5.f,
+      -11.f,
+      0.f,
+      -8.f,
+      0.f,
+      -0.f, // 178 .. 191
+    };
 
   struct LineRun line01 =
-  {
-    { 0u, 12u },
-    { 0u, 12u },
-    81.f,
-    15.f,
-    -5.f,
-    4.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {0u, 12u},
+      {0u, 12u},
+      81.f,
+      15.f,
+      -5.f,
+      4.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line02 =
-  {
-    { 12u, 10u },
-    { 12u, 10u },
-    79.f,
-    15.f,
-    -5.f,
-    5.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {12u, 10u},
+      {12u, 10u},
+      79.f,
+      15.f,
+      -5.f,
+      5.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line03 =
-  {
-    { 22u, 6u },
-    { 22u, 6u },
-    35.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {22u, 6u},
+      {22u, 6u},
+      35.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line04 =
-  {
-    { 28u, 14u },
-    { 28u, 14u },
-    63.f,
-    15.f,
-    -5.f,
-    4.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {28u, 14u},
+      {28u, 14u},
+      63.f,
+      15.f,
+      -5.f,
+      4.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line05 =
-  {
-    { 42u, 12u },
-    { 42u, 12u },
-    79.f,
-    15.f,
-    -5.f,
-    4.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {42u, 12u},
+      {42u, 12u},
+      79.f,
+      15.f,
+      -5.f,
+      4.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line06 =
-  {
-    { 54u, 10u },
-    { 54u, 10u },
-    70.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {54u, 10u},
+      {54u, 10u},
+      70.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line07 =
-  {
-    { 64u, 10u },
-    { 64u, 10u },
-    70.f,
-    15.f,
-    -5.f,
-    5.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {64u, 10u},
+      {64u, 10u},
+      70.f,
+      15.f,
+      -5.f,
+      5.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line08 =
-  {
-    { 74u, 12u },
-    { 74u, 12u },
-    79.f,
-    15.f,
-    -5.f,
-    4.f,
-    1.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {74u, 12u},
+      {74u, 12u},
+      79.f,
+      15.f,
+      -5.f,
+      4.f,
+      1.f,
+      0.f,
+      false,
+      false};
   struct LineRun line09 =
-  {
-    { 86u, 6u },
-    { 86u, 6u },
-    45.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {86u, 6u},
+      {86u, 6u},
+      45.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line10 =
-  {
-    { 92u, 12u },
-    { 92u, 12u },
-    79.f,
-    15.f,
-    -5.f,
-    4.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {92u, 12u},
+      {92u, 12u},
+      79.f,
+      15.f,
+      -5.f,
+      4.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line11 =
-  {
-    { 104u, 19u },
-    { 104u, 19u },
-    100.f,
-    15.f,
-    -5.f,
-    5.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {104u, 19u},
+      {104u, 19u},
+      100.f,
+      15.f,
+      -5.f,
+      5.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line12 =
-  {
-    { 123u, 5u },
-    { 123u, 5u },
-    32.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {123u, 5u},
+      {123u, 5u},
+      32.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line13 =
-  {
-    { 128u, 12u },
-    { 128u, 12u },
-    81.f,
-    15.f,
-    -5.f,
-    4.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {128u, 12u},
+      {128u, 12u},
+      81.f,
+      15.f,
+      -5.f,
+      4.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line14 =
-  {
-    { 140u, 10u },
-    { 140u, 10u },
-    79.f,
-    15.f,
-    -5.f,
-    5.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {140u, 10u},
+      {140u, 10u},
+      79.f,
+      15.f,
+      -5.f,
+      5.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line15 =
-  {
-    { 150u, 6u },
-    { 150u, 6u },
-    35.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {150u, 6u},
+      {150u, 6u},
+      35.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line16 =
-  {
-    { 156u, 10u },
-    { 156u, 10u },
-    70.f,
-    15.f,
-    -5.f,
-    5.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {156u, 10u},
+      {156u, 10u},
+      70.f,
+      15.f,
+      -5.f,
+      5.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line17 =
-  {
-    { 166u, 12u },
-    { 166u, 12u },
-    79.f,
-    15.f,
-    -5.f,
-    4.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {166u, 12u},
+      {166u, 12u},
+      79.f,
+      15.f,
+      -5.f,
+      4.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line18 =
-  {
-    { 178u, 14u },
-    { 178u, 14u },
-    63.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {178u, 14u},
+      {178u, 14u},
+      63.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line19 =
-  {
-    { 192u, 0u },
-    { 192u, 0u },
-    0.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {192u, 0u},
+      {192u, 0u},
+      0.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   Vector<LineRun> lines;
-  lines.PushBack( line01 );
-  lines.PushBack( line02 );
-  lines.PushBack( line03 );
-  lines.PushBack( line04 );
-  lines.PushBack( line05 );
-  lines.PushBack( line06 );
-  lines.PushBack( line07 );
-  lines.PushBack( line08 );
-  lines.PushBack( line09 );
-  lines.PushBack( line10 );
-  lines.PushBack( line11 );
-  lines.PushBack( line12 );
-  lines.PushBack( line13 );
-  lines.PushBack( line14 );
-  lines.PushBack( line15 );
-  lines.PushBack( line16 );
-  lines.PushBack( line17 );
-  lines.PushBack( line18 );
-  lines.PushBack( line19 );
+  lines.PushBack(line01);
+  lines.PushBack(line02);
+  lines.PushBack(line03);
+  lines.PushBack(line04);
+  lines.PushBack(line05);
+  lines.PushBack(line06);
+  lines.PushBack(line07);
+  lines.PushBack(line08);
+  lines.PushBack(line09);
+  lines.PushBack(line10);
+  lines.PushBack(line11);
+  lines.PushBack(line12);
+  lines.PushBack(line13);
+  lines.PushBack(line14);
+  lines.PushBack(line15);
+  lines.PushBack(line16);
+  lines.PushBack(line17);
+  lines.PushBack(line18);
+  lines.PushBack(line19);
 
   LayoutTextData data =
-  {
-    "Layout bidirectional text.",
-    "Hello world demo שלום עולם.\n"
-    "مرحبا بالعالم hello world שלום עולם\n"
-    "שלום עולם hello world demo.\n"
-    "hello world مرحبا بالعالم שלום עולם\n"
-    "Hello world demo שלום עולם.\n"
-    "שלום עולם hello world مرحبا بالعالم\n",
-    textArea,
-    17u,
-    fontDescriptionRuns.Begin(),
-    layoutSize,
-    192u,
-    positions,
-    19u,
-    lines.Begin(),
-    Layout::Engine::MULTI_LINE_BOX,
-    128u,
-    64u,
-    false,
-    DevelText::EllipsisPosition::END,
-    true
-  };
+    {
+      "Layout bidirectional text.",
+      "Hello world demo שלום עולם.\n"
+      "مرحبا بالعالم hello world שלום עולם\n"
+      "שלום עולם hello world demo.\n"
+      "hello world مرحبا بالعالم שלום עולם\n"
+      "Hello world demo שלום עולם.\n"
+      "שלום עולם hello world مرحبا بالعالم\n",
+      textArea,
+      17u,
+      fontDescriptionRuns.Begin(),
+      layoutSize,
+      192u,
+      positions,
+      19u,
+      lines.Begin(),
+      Layout::Engine::MULTI_LINE_BOX,
+      128u,
+      64u,
+      false,
+      DevelText::EllipsisPosition::END,
+      true};
 
-  if( !LayoutTextTest( data ) )
+  if(!LayoutTextTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -3251,69 +4312,92 @@ int UtcDaliTextLayoutEllipsis01(void)
 
   // Layout single-line LTR text with ellipsis.
 
-  const std::string fontLatin( "TizenSans" );
+  const std::string fontLatin("TizenSans");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun01;
-  fontDescriptionRun01.characterRun.characterIndex = 0u;
+  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.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;
+  fontDescriptionRun01.widthDefined  = false;
+  fontDescriptionRun01.slantDefined  = false;
+  fontDescriptionRun01.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun01 );
+  fontDescriptionRuns.PushBack(fontDescriptionRun01);
 
   struct LineRun line01 =
-  {
-    { 0u, 13u },
-    { 0u, 13u },
-    93.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    true
-  };
+    {
+      {0u, 13u},
+      {0u, 13u},
+      93.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      true};
   Vector<LineRun> lines;
-  lines.PushBack( line01 );
+  lines.PushBack(line01);
 
   float positions[] =
-  {
-    0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, 85.f, -13.f,
-  };
-
-  Size textArea( 100.f, 50.f );
-  Size layoutSize( 100.f, 20.f );
+    {
+      0.f,
+      -12.f,
+      10.f,
+      -9.f,
+      20.f,
+      -13.f,
+      24.f,
+      -13.f,
+      27.f,
+      -9.f,
+      36.f,
+      -0.f,
+      40.f,
+      -9.f,
+      52.f,
+      -9.f,
+      62.f,
+      -9.f,
+      69.f,
+      -13.f,
+      72.f,
+      -13.f,
+      81.f,
+      -0.f,
+      85.f,
+      -13.f,
+    };
+
+  Size textArea(100.f, 50.f);
+  Size layoutSize(100.f, 20.f);
 
   LayoutTextData data =
-  {
-    "Layout single-line LTR text with ellipsis.",
-    "Hello world demo hello world demo hello world demo.",
-    textArea,
-    1u,
-    fontDescriptionRuns.Begin(),
-    layoutSize,
-    13u,
-    positions,
-    1u,
-    lines.Begin(),
-    Layout::Engine::SINGLE_LINE_BOX,
-    0u,
-    51u,
-    true,
-    DevelText::EllipsisPosition::END,
-    true
-  };
+    {
+      "Layout single-line LTR text with ellipsis.",
+      "Hello world demo hello world demo hello world demo.",
+      textArea,
+      1u,
+      fontDescriptionRuns.Begin(),
+      layoutSize,
+      13u,
+      positions,
+      1u,
+      lines.Begin(),
+      Layout::Engine::SINGLE_LINE_BOX,
+      0u,
+      51u,
+      true,
+      DevelText::EllipsisPosition::END,
+      true};
 
-  if( !LayoutTextTest( data ) )
+  if(!LayoutTextTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -3329,84 +4413,127 @@ int UtcDaliTextLayoutEllipsis02(void)
 
   // Layout multi-line LTR text with ellipsis.
 
-  const std::string fontLatin( "TizenSans" );
+  const std::string fontLatin("TizenSans");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun01;
-  fontDescriptionRun01.characterRun.characterIndex = 0u;
+  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.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;
+  fontDescriptionRun01.widthDefined  = false;
+  fontDescriptionRun01.slantDefined  = false;
+  fontDescriptionRun01.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun01 );
+  fontDescriptionRuns.PushBack(fontDescriptionRun01);
 
   struct LineRun line01 =
-  {
-    { 0u, 12u },
-    { 0u, 12u },
-    81.f,
-    15.f,
-    -5.f,
-    4.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {0u, 12u},
+      {0u, 12u},
+      81.f,
+      15.f,
+      -5.f,
+      4.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line02 =
-  {
-    { 12u, 12u },
-    { 12u, 12u },
-    95.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    true
-  };
+    {
+      {12u, 12u},
+      {12u, 12u},
+      95.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      true};
   Vector<LineRun> lines;
-  lines.PushBack( line01 );
-  lines.PushBack( line02 );
+  lines.PushBack(line01);
+  lines.PushBack(line02);
 
   float positions[] =
-  {
-    0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f,
-    0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -0.f, 46.f, -13.f, 54.f, -9.f, 64.f, -13.f, 68.f, -13.f, 71.f, -9.f, 80.f, -0.f, 84.f, -9.f,
-  };
-
-  Size textArea( 100.f, 50.f );
-  Size layoutSize( 100.f, 40.f );
+    {
+      0.f,
+      -12.f,
+      10.f,
+      -9.f,
+      20.f,
+      -13.f,
+      24.f,
+      -13.f,
+      27.f,
+      -9.f,
+      36.f,
+      -0.f,
+      40.f,
+      -9.f,
+      52.f,
+      -9.f,
+      62.f,
+      -9.f,
+      69.f,
+      -13.f,
+      72.f,
+      -13.f,
+      81.f,
+      -0.f,
+      0.f,
+      -13.f,
+      9.f,
+      -9.f,
+      19.f,
+      -9.f,
+      32.f,
+      -9.f,
+      41.f,
+      -0.f,
+      46.f,
+      -13.f,
+      54.f,
+      -9.f,
+      64.f,
+      -13.f,
+      68.f,
+      -13.f,
+      71.f,
+      -9.f,
+      80.f,
+      -0.f,
+      84.f,
+      -9.f,
+    };
+
+  Size textArea(100.f, 50.f);
+  Size layoutSize(100.f, 40.f);
 
   LayoutTextData data =
-  {
-    "Layout multi-line LTR text with ellipsis.",
-    "Hello world demo hello world demo hello world demo.",
-    textArea,
-    1u,
-    fontDescriptionRuns.Begin(),
-    layoutSize,
-    24u,
-    positions,
-    2u,
-    lines.Begin(),
-    Layout::Engine::MULTI_LINE_BOX,
-    0u,
-    51u,
-    true,
-    DevelText::EllipsisPosition::END,
-    true
-  };
+    {
+      "Layout multi-line LTR text with ellipsis.",
+      "Hello world demo hello world demo hello world demo.",
+      textArea,
+      1u,
+      fontDescriptionRuns.Begin(),
+      layoutSize,
+      24u,
+      positions,
+      2u,
+      lines.Begin(),
+      Layout::Engine::MULTI_LINE_BOX,
+      0u,
+      51u,
+      true,
+      DevelText::EllipsisPosition::END,
+      true};
 
-  if( !LayoutTextTest( data ) )
+  if(!LayoutTextTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -3422,135 +4549,164 @@ int UtcDaliTextLayoutEllipsis03(void)
 
   // Layout single-line RTL text with ellipsis.
 
-  const std::string fontHebrew( "TizenSansHebrew" );
-  const std::string fontArabic( "TizenSansArabic" );
+  const std::string fontHebrew("TizenSansHebrew");
+  const std::string fontArabic("TizenSansArabic");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun01;
-  fontDescriptionRun01.characterRun.characterIndex = 0u;
+  fontDescriptionRun01.characterRun.characterIndex     = 0u;
   fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun01.familyLength = fontHebrew.size();
-  fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
-  memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
+  fontDescriptionRun01.familyLength                    = fontHebrew.size();
+  fontDescriptionRun01.familyName                      = new char[fontDescriptionRun01.familyLength];
+  memcpy(fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength);
   fontDescriptionRun01.familyDefined = true;
   fontDescriptionRun01.weightDefined = false;
-  fontDescriptionRun01.widthDefined = false;
-  fontDescriptionRun01.slantDefined = false;
-  fontDescriptionRun01.sizeDefined = false;
+  fontDescriptionRun01.widthDefined  = false;
+  fontDescriptionRun01.slantDefined  = false;
+  fontDescriptionRun01.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun02;
-  fontDescriptionRun02.characterRun.characterIndex = 10u;
+  fontDescriptionRun02.characterRun.characterIndex     = 10u;
   fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun02.familyLength = fontArabic.size();
-  fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
-  memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
+  fontDescriptionRun02.familyLength                    = fontArabic.size();
+  fontDescriptionRun02.familyName                      = new char[fontDescriptionRun02.familyLength];
+  memcpy(fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength);
   fontDescriptionRun02.familyDefined = true;
   fontDescriptionRun02.weightDefined = false;
-  fontDescriptionRun02.widthDefined = false;
-  fontDescriptionRun02.slantDefined = false;
-  fontDescriptionRun02.sizeDefined = false;
+  fontDescriptionRun02.widthDefined  = false;
+  fontDescriptionRun02.slantDefined  = false;
+  fontDescriptionRun02.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun03;
-  fontDescriptionRun03.characterRun.characterIndex = 24u;
+  fontDescriptionRun03.characterRun.characterIndex     = 24u;
   fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun03.familyLength = fontHebrew.size();
-  fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
-  memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
+  fontDescriptionRun03.familyLength                    = fontHebrew.size();
+  fontDescriptionRun03.familyName                      = new char[fontDescriptionRun03.familyLength];
+  memcpy(fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength);
   fontDescriptionRun03.familyDefined = true;
   fontDescriptionRun03.weightDefined = false;
-  fontDescriptionRun03.widthDefined = false;
-  fontDescriptionRun03.slantDefined = false;
-  fontDescriptionRun03.sizeDefined = false;
+  fontDescriptionRun03.widthDefined  = false;
+  fontDescriptionRun03.slantDefined  = false;
+  fontDescriptionRun03.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun04;
-  fontDescriptionRun04.characterRun.characterIndex = 34u;
+  fontDescriptionRun04.characterRun.characterIndex     = 34u;
   fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun04.familyLength = fontArabic.size();
-  fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
-  memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
+  fontDescriptionRun04.familyLength                    = fontArabic.size();
+  fontDescriptionRun04.familyName                      = new char[fontDescriptionRun04.familyLength];
+  memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength);
   fontDescriptionRun04.familyDefined = true;
   fontDescriptionRun04.weightDefined = false;
-  fontDescriptionRun04.widthDefined = false;
-  fontDescriptionRun04.slantDefined = false;
-  fontDescriptionRun04.sizeDefined = false;
+  fontDescriptionRun04.widthDefined  = false;
+  fontDescriptionRun04.slantDefined  = false;
+  fontDescriptionRun04.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun05;
-  fontDescriptionRun05.characterRun.characterIndex = 48u;
+  fontDescriptionRun05.characterRun.characterIndex     = 48u;
   fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun05.familyLength = fontHebrew.size();
-  fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
-  memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
+  fontDescriptionRun05.familyLength                    = fontHebrew.size();
+  fontDescriptionRun05.familyName                      = new char[fontDescriptionRun05.familyLength];
+  memcpy(fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength);
   fontDescriptionRun05.familyDefined = true;
   fontDescriptionRun05.weightDefined = false;
-  fontDescriptionRun05.widthDefined = false;
-  fontDescriptionRun05.slantDefined = false;
-  fontDescriptionRun05.sizeDefined = false;
+  fontDescriptionRun05.widthDefined  = false;
+  fontDescriptionRun05.slantDefined  = false;
+  fontDescriptionRun05.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun06;
-  fontDescriptionRun06.characterRun.characterIndex = 58u;
+  fontDescriptionRun06.characterRun.characterIndex     = 58u;
   fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
-  fontDescriptionRun06.familyLength = fontArabic.size();
-  fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
-  memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
+  fontDescriptionRun06.familyLength                    = fontArabic.size();
+  fontDescriptionRun06.familyName                      = new char[fontDescriptionRun06.familyLength];
+  memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
   fontDescriptionRun06.familyDefined = true;
   fontDescriptionRun06.weightDefined = false;
-  fontDescriptionRun06.widthDefined = false;
-  fontDescriptionRun06.slantDefined = false;
-  fontDescriptionRun06.sizeDefined = false;
+  fontDescriptionRun06.widthDefined  = false;
+  fontDescriptionRun06.slantDefined  = false;
+  fontDescriptionRun06.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun01 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun02 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun03 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun04 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun05 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun06 );
+  fontDescriptionRuns.PushBack(fontDescriptionRun01);
+  fontDescriptionRuns.PushBack(fontDescriptionRun02);
+  fontDescriptionRuns.PushBack(fontDescriptionRun03);
+  fontDescriptionRuns.PushBack(fontDescriptionRun04);
+  fontDescriptionRuns.PushBack(fontDescriptionRun05);
+  fontDescriptionRuns.PushBack(fontDescriptionRun06);
 
   struct LineRun line01 =
-  {
-    { 0u, 14u },
-    { 0u, 14u },
-    98.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    true
-  };
+    {
+      {0u, 14u},
+      {0u, 14u},
+      98.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      true};
   Vector<LineRun> lines;
-  lines.PushBack( line01 );
+  lines.PushBack(line01);
 
   float positions[] =
-  {
-    87.f, -10.f, 79.f, -13.f, 74.f, -10.f, 65.f, -10.f, 60.f, -0.f, 51.f, -10.f, 47.f, -10.f, 38.f, -13.f, 29.f, -10.f, 24.f, -0.f, 17.f, -8.f, 12.f, -6.f, 4.f, -8.f, 0.f, -7.f, 78.f, -11.f, 73.f, -0.f,
-  };
-
-  Size textArea( 100.f, 50.f );
-  Size layoutSize( 100.f, 20.f );
+    {
+      87.f,
+      -10.f,
+      79.f,
+      -13.f,
+      74.f,
+      -10.f,
+      65.f,
+      -10.f,
+      60.f,
+      -0.f,
+      51.f,
+      -10.f,
+      47.f,
+      -10.f,
+      38.f,
+      -13.f,
+      29.f,
+      -10.f,
+      24.f,
+      -0.f,
+      17.f,
+      -8.f,
+      12.f,
+      -6.f,
+      4.f,
+      -8.f,
+      0.f,
+      -7.f,
+      78.f,
+      -11.f,
+      73.f,
+      -0.f,
+    };
+
+  Size textArea(100.f, 50.f);
+  Size layoutSize(100.f, 20.f);
 
   LayoutTextData data =
-  {
-    "Layout single-line RTL text with ellipsis.",
-    "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
-    textArea,
-    6u,
-    fontDescriptionRuns.Begin(),
-    layoutSize,
-    16u,
-    positions,
-    1u,
-    lines.Begin(),
-    Layout::Engine::SINGLE_LINE_BOX,
-    0u,
-    72u,
-    true,
-    DevelText::EllipsisPosition::END,
-    true
-  };
+    {
+      "Layout single-line RTL text with ellipsis.",
+      "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
+      textArea,
+      6u,
+      fontDescriptionRuns.Begin(),
+      layoutSize,
+      16u,
+      positions,
+      1u,
+      lines.Begin(),
+      Layout::Engine::SINGLE_LINE_BOX,
+      0u,
+      72u,
+      true,
+      DevelText::EllipsisPosition::END,
+      true};
 
-  if( !LayoutTextTest( data ) )
+  if(!LayoutTextTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -3566,150 +4722,213 @@ int UtcDaliTextLayoutEllipsis04(void)
 
   // Layout multi-line RTL text with ellipsis.
 
-  const std::string fontHebrew( "TizenSansHebrew" );
-  const std::string fontArabic( "TizenSansArabic" );
+  const std::string fontHebrew("TizenSansHebrew");
+  const std::string fontArabic("TizenSansArabic");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun01;
-  fontDescriptionRun01.characterRun.characterIndex = 0u;
+  fontDescriptionRun01.characterRun.characterIndex     = 0u;
   fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun01.familyLength = fontHebrew.size();
-  fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
-  memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
+  fontDescriptionRun01.familyLength                    = fontHebrew.size();
+  fontDescriptionRun01.familyName                      = new char[fontDescriptionRun01.familyLength];
+  memcpy(fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength);
   fontDescriptionRun01.familyDefined = true;
   fontDescriptionRun01.weightDefined = false;
-  fontDescriptionRun01.widthDefined = false;
-  fontDescriptionRun01.slantDefined = false;
-  fontDescriptionRun01.sizeDefined = false;
+  fontDescriptionRun01.widthDefined  = false;
+  fontDescriptionRun01.slantDefined  = false;
+  fontDescriptionRun01.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun02;
-  fontDescriptionRun02.characterRun.characterIndex = 10u;
+  fontDescriptionRun02.characterRun.characterIndex     = 10u;
   fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun02.familyLength = fontArabic.size();
-  fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
-  memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
+  fontDescriptionRun02.familyLength                    = fontArabic.size();
+  fontDescriptionRun02.familyName                      = new char[fontDescriptionRun02.familyLength];
+  memcpy(fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength);
   fontDescriptionRun02.familyDefined = true;
   fontDescriptionRun02.weightDefined = false;
-  fontDescriptionRun02.widthDefined = false;
-  fontDescriptionRun02.slantDefined = false;
-  fontDescriptionRun02.sizeDefined = false;
+  fontDescriptionRun02.widthDefined  = false;
+  fontDescriptionRun02.slantDefined  = false;
+  fontDescriptionRun02.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun03;
-  fontDescriptionRun03.characterRun.characterIndex = 24u;
+  fontDescriptionRun03.characterRun.characterIndex     = 24u;
   fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun03.familyLength = fontHebrew.size();
-  fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
-  memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
+  fontDescriptionRun03.familyLength                    = fontHebrew.size();
+  fontDescriptionRun03.familyName                      = new char[fontDescriptionRun03.familyLength];
+  memcpy(fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength);
   fontDescriptionRun03.familyDefined = true;
   fontDescriptionRun03.weightDefined = false;
-  fontDescriptionRun03.widthDefined = false;
-  fontDescriptionRun03.slantDefined = false;
-  fontDescriptionRun03.sizeDefined = false;
+  fontDescriptionRun03.widthDefined  = false;
+  fontDescriptionRun03.slantDefined  = false;
+  fontDescriptionRun03.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun04;
-  fontDescriptionRun04.characterRun.characterIndex = 34u;
+  fontDescriptionRun04.characterRun.characterIndex     = 34u;
   fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun04.familyLength = fontArabic.size();
-  fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
-  memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
+  fontDescriptionRun04.familyLength                    = fontArabic.size();
+  fontDescriptionRun04.familyName                      = new char[fontDescriptionRun04.familyLength];
+  memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength);
   fontDescriptionRun04.familyDefined = true;
   fontDescriptionRun04.weightDefined = false;
-  fontDescriptionRun04.widthDefined = false;
-  fontDescriptionRun04.slantDefined = false;
-  fontDescriptionRun04.sizeDefined = false;
+  fontDescriptionRun04.widthDefined  = false;
+  fontDescriptionRun04.slantDefined  = false;
+  fontDescriptionRun04.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun05;
-  fontDescriptionRun05.characterRun.characterIndex = 48u;
+  fontDescriptionRun05.characterRun.characterIndex     = 48u;
   fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
-  fontDescriptionRun05.familyLength = fontHebrew.size();
-  fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
-  memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
+  fontDescriptionRun05.familyLength                    = fontHebrew.size();
+  fontDescriptionRun05.familyName                      = new char[fontDescriptionRun05.familyLength];
+  memcpy(fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength);
   fontDescriptionRun05.familyDefined = true;
   fontDescriptionRun05.weightDefined = false;
-  fontDescriptionRun05.widthDefined = false;
-  fontDescriptionRun05.slantDefined = false;
-  fontDescriptionRun05.sizeDefined = false;
+  fontDescriptionRun05.widthDefined  = false;
+  fontDescriptionRun05.slantDefined  = false;
+  fontDescriptionRun05.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun06;
-  fontDescriptionRun06.characterRun.characterIndex = 58u;
+  fontDescriptionRun06.characterRun.characterIndex     = 58u;
   fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
-  fontDescriptionRun06.familyLength = fontArabic.size();
-  fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
-  memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
+  fontDescriptionRun06.familyLength                    = fontArabic.size();
+  fontDescriptionRun06.familyName                      = new char[fontDescriptionRun06.familyLength];
+  memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
   fontDescriptionRun06.familyDefined = true;
   fontDescriptionRun06.weightDefined = false;
-  fontDescriptionRun06.widthDefined = false;
-  fontDescriptionRun06.slantDefined = false;
-  fontDescriptionRun06.sizeDefined = false;
+  fontDescriptionRun06.widthDefined  = false;
+  fontDescriptionRun06.slantDefined  = false;
+  fontDescriptionRun06.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun01 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun02 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun03 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun04 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun05 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun06 );
+  fontDescriptionRuns.PushBack(fontDescriptionRun01);
+  fontDescriptionRuns.PushBack(fontDescriptionRun02);
+  fontDescriptionRuns.PushBack(fontDescriptionRun03);
+  fontDescriptionRuns.PushBack(fontDescriptionRun04);
+  fontDescriptionRuns.PushBack(fontDescriptionRun05);
+  fontDescriptionRuns.PushBack(fontDescriptionRun06);
 
   struct LineRun line01 =
-  {
-    { 0u, 10u },
-    { 0u, 10u },
-    70.f,
-    15.f,
-    -5.f,
-    5.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {0u, 10u},
+      {0u, 10u},
+      70.f,
+      15.f,
+      -5.f,
+      5.f,
+      0.f,
+      0.f,
+      false,
+      false};
   struct LineRun line02 =
-  {
-    { 10u, 19u },
-    { 10u, 19u },
-    99.f,
-    15.f,
-    -5.f,
-    5.f,
-    0.f,
-    0.f,
-    false,
-    true
-  };
+    {
+      {10u, 19u},
+      {10u, 19u},
+      99.f,
+      15.f,
+      -5.f,
+      5.f,
+      0.f,
+      0.f,
+      false,
+      true};
   Vector<LineRun> lines;
-  lines.PushBack( line01 );
-  lines.PushBack( line02 );
+  lines.PushBack(line01);
+  lines.PushBack(line02);
 
   float positions[] =
-  {
-    63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 41.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f, 96.f, -8.f, 91.f, -6.f, 83.f, -8.f, 79.f, -7.f, 78.f, -11.f, 73.f, -0.f,
-    68.f, -7.f, 67.f, -11.f, 61.f, -11.f, 55.f, -8.f, 53.f, -11.f, 47.f, -11.f, 42.f, -8.f, 38.f, -0.f, 27.f, -10.f, 18.f, -13.f, 14.f, -10.f, 4.f, -10.f, 0.f, -0.f, 92.f, -10.f, 88.f, -10.f, 79.f, -13.f, 70.f, -10.f, 65.f, -0.f,
-  };
-
-  Size textArea( 100.f, 50.f );
-  Size layoutSize( 100.f, 40.f );
+    {
+      63.f,
+      -10.f,
+      54.f,
+      -13.f,
+      50.f,
+      -10.f,
+      41.f,
+      -10.f,
+      36.f,
+      -0.f,
+      27.f,
+      -10.f,
+      23.f,
+      -10.f,
+      14.f,
+      -13.f,
+      4.f,
+      -10.f,
+      0.f,
+      -0.f,
+      96.f,
+      -8.f,
+      91.f,
+      -6.f,
+      83.f,
+      -8.f,
+      79.f,
+      -7.f,
+      78.f,
+      -11.f,
+      73.f,
+      -0.f,
+      68.f,
+      -7.f,
+      67.f,
+      -11.f,
+      61.f,
+      -11.f,
+      55.f,
+      -8.f,
+      53.f,
+      -11.f,
+      47.f,
+      -11.f,
+      42.f,
+      -8.f,
+      38.f,
+      -0.f,
+      27.f,
+      -10.f,
+      18.f,
+      -13.f,
+      14.f,
+      -10.f,
+      4.f,
+      -10.f,
+      0.f,
+      -0.f,
+      92.f,
+      -10.f,
+      88.f,
+      -10.f,
+      79.f,
+      -13.f,
+      70.f,
+      -10.f,
+      65.f,
+      -0.f,
+    };
+
+  Size textArea(100.f, 50.f);
+  Size layoutSize(100.f, 40.f);
 
   LayoutTextData data =
-  {
-    "Layout multi-line RTL text with ellipsis.",
-    "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
-    textArea,
-    6u,
-    fontDescriptionRuns.Begin(),
-    layoutSize,
-    34u,
-    positions,
-    2u,
-    lines.Begin(),
-    Layout::Engine::MULTI_LINE_BOX,
-    0u,
-    72u,
-    true,
-    DevelText::EllipsisPosition::END,
-    true
-  };
+    {
+      "Layout multi-line RTL text with ellipsis.",
+      "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
+      textArea,
+      6u,
+      fontDescriptionRuns.Begin(),
+      layoutSize,
+      34u,
+      positions,
+      2u,
+      lines.Begin(),
+      Layout::Engine::MULTI_LINE_BOX,
+      0u,
+      72u,
+      true,
+      DevelText::EllipsisPosition::END,
+      true};
 
-  if( !LayoutTextTest( data ) )
+  if(!LayoutTextTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -3723,69 +4942,66 @@ int UtcDaliTextLayoutEllipsis05(void)
   ToolkitTestApplication application;
   tet_infoline(" UtcDaliTextLayoutEllipsis05");
 
-  const std::string fontLatin( "TizenSans" );
+  const std::string fontLatin("TizenSans");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun01;
-  fontDescriptionRun01.characterRun.characterIndex = 0u;
+  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.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;
+  fontDescriptionRun01.widthDefined  = false;
+  fontDescriptionRun01.slantDefined  = false;
+  fontDescriptionRun01.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun01 );
+  fontDescriptionRuns.PushBack(fontDescriptionRun01);
 
   struct LineRun line01 =
-  {
-    { 0u, 11u },
-    { 0u, 11u },
-    80.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    true
-  };
+    {
+      {0u, 11u},
+      {0u, 11u},
+      80.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      true};
   Vector<LineRun> lines;
-  lines.PushBack( line01 );
+  lines.PushBack(line01);
 
   float positions[] =
-  {
-    0.f, -12.f
-  };
+    {
+      0.f, -12.f};
 
-  Size textArea( 100.f, 19.f );
-  Size layoutSize( 100.f, 20.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,
-    DevelText::EllipsisPosition::END,
-    true
-  };
+    {
+      "Not enough height.",
+      "Hello world",
+      textArea,
+      1u,
+      fontDescriptionRuns.Begin(),
+      layoutSize,
+      1u,
+      positions,
+      1u,
+      lines.Begin(),
+      Layout::Engine::MULTI_LINE_BOX,
+      0u,
+      11u,
+      true,
+      DevelText::EllipsisPosition::END,
+      true};
 
-  if( !LayoutTextTest( data ) )
+  if(!LayoutTextTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -3801,112 +5017,111 @@ int UtcDaliTextAlign01(void)
 
   // Calculate text alignment.
 
-  const std::string fontLatin( "TizenSans" );
-  const std::string fontHebrew( "TizenSansHebrew" );
-  const std::string fontArabic( "TizenSansArabic" );
+  const std::string fontLatin("TizenSans");
+  const std::string fontHebrew("TizenSansHebrew");
+  const std::string fontArabic("TizenSansArabic");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun01;
-  fontDescriptionRun01.characterRun.characterIndex = 0u;
+  fontDescriptionRun01.characterRun.characterIndex     = 0u;
   fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun01.familyLength = fontLatin.size();
-  fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
-  memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
+  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;
+  fontDescriptionRun01.widthDefined  = false;
+  fontDescriptionRun01.slantDefined  = false;
+  fontDescriptionRun01.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun02;
-  fontDescriptionRun02.characterRun.characterIndex = 12u;
+  fontDescriptionRun02.characterRun.characterIndex     = 12u;
   fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
-  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);
   fontDescriptionRun02.familyDefined = true;
   fontDescriptionRun02.weightDefined = false;
-  fontDescriptionRun02.widthDefined = false;
-  fontDescriptionRun02.slantDefined = false;
-  fontDescriptionRun02.sizeDefined = false;
+  fontDescriptionRun02.widthDefined  = false;
+  fontDescriptionRun02.slantDefined  = false;
+  fontDescriptionRun02.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun03;
-  fontDescriptionRun03.characterRun.characterIndex = 22u;
+  fontDescriptionRun03.characterRun.characterIndex     = 22u;
   fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun03.familyLength = fontArabic.size();
-  fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
-  memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
+  fontDescriptionRun03.familyLength                    = fontArabic.size();
+  fontDescriptionRun03.familyName                      = new char[fontDescriptionRun03.familyLength];
+  memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
   fontDescriptionRun03.familyDefined = true;
   fontDescriptionRun03.weightDefined = false;
-  fontDescriptionRun03.widthDefined = false;
-  fontDescriptionRun03.slantDefined = false;
-  fontDescriptionRun03.sizeDefined = false;
+  fontDescriptionRun03.widthDefined  = false;
+  fontDescriptionRun03.slantDefined  = false;
+  fontDescriptionRun03.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun04;
-  fontDescriptionRun04.characterRun.characterIndex = 36u;
+  fontDescriptionRun04.characterRun.characterIndex     = 36u;
   fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun04.familyLength = fontLatin.size();
-  fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
-  memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
+  fontDescriptionRun04.familyLength                    = fontLatin.size();
+  fontDescriptionRun04.familyName                      = new char[fontDescriptionRun04.familyLength];
+  memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
   fontDescriptionRun04.familyDefined = true;
   fontDescriptionRun04.weightDefined = false;
-  fontDescriptionRun04.widthDefined = false;
-  fontDescriptionRun04.slantDefined = false;
-  fontDescriptionRun04.sizeDefined = false;
+  fontDescriptionRun04.widthDefined  = false;
+  fontDescriptionRun04.slantDefined  = false;
+  fontDescriptionRun04.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun05;
-  fontDescriptionRun05.characterRun.characterIndex = 48u;
+  fontDescriptionRun05.characterRun.characterIndex     = 48u;
   fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun05.familyLength = fontLatin.size();
-  fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
-  memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
+  fontDescriptionRun05.familyLength                    = fontLatin.size();
+  fontDescriptionRun05.familyName                      = new char[fontDescriptionRun05.familyLength];
+  memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
   fontDescriptionRun05.familyDefined = true;
   fontDescriptionRun05.weightDefined = false;
-  fontDescriptionRun05.widthDefined = false;
-  fontDescriptionRun05.slantDefined = false;
-  fontDescriptionRun05.sizeDefined = false;
+  fontDescriptionRun05.widthDefined  = false;
+  fontDescriptionRun05.slantDefined  = false;
+  fontDescriptionRun05.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun06;
-  fontDescriptionRun06.characterRun.characterIndex = 60u;
+  fontDescriptionRun06.characterRun.characterIndex     = 60u;
   fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun06.familyLength = fontArabic.size();
-  fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
-  memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
+  fontDescriptionRun06.familyLength                    = fontArabic.size();
+  fontDescriptionRun06.familyName                      = new char[fontDescriptionRun06.familyLength];
+  memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
   fontDescriptionRun06.familyDefined = true;
   fontDescriptionRun06.weightDefined = false;
-  fontDescriptionRun06.widthDefined = false;
-  fontDescriptionRun06.slantDefined = false;
-  fontDescriptionRun06.sizeDefined = false;
+  fontDescriptionRun06.widthDefined  = false;
+  fontDescriptionRun06.slantDefined  = false;
+  fontDescriptionRun06.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun01 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun02 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun03 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun04 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun05 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun06 );
+  fontDescriptionRuns.PushBack(fontDescriptionRun01);
+  fontDescriptionRuns.PushBack(fontDescriptionRun02);
+  fontDescriptionRuns.PushBack(fontDescriptionRun03);
+  fontDescriptionRuns.PushBack(fontDescriptionRun04);
+  fontDescriptionRuns.PushBack(fontDescriptionRun05);
+  fontDescriptionRuns.PushBack(fontDescriptionRun06);
 
-  float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
+  float positions[] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
 
-  Size textArea( 100.f, 300.f );
+  Size      textArea(100.f, 300.f);
   AlignData data =
-  {
-    "Begin alignment for the first paragraph.",
-    "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
-    textArea,
-    6u,
-    fontDescriptionRuns.Begin(),
-    Text::HorizontalAlignment::BEGIN,
-    Text::VerticalAlignment::TOP,
-    0u,
-    22u,
-    6u,
-    positions,
-    Dali::LayoutDirection::LEFT_TO_RIGHT,
-    false
-  };
+    {
+      "Begin alignment for the first paragraph.",
+      "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
+      textArea,
+      6u,
+      fontDescriptionRuns.Begin(),
+      Text::HorizontalAlignment::BEGIN,
+      Text::VerticalAlignment::TOP,
+      0u,
+      22u,
+      6u,
+      positions,
+      Dali::LayoutDirection::LEFT_TO_RIGHT,
+      false};
 
-  if( !AlignTest( data ) )
+  if(!AlignTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -3922,112 +5137,111 @@ int UtcDaliTextAlign02(void)
 
   // Calculate text alignment.
 
-  const std::string fontLatin( "TizenSans" );
-  const std::string fontHebrew( "TizenSansHebrew" );
-  const std::string fontArabic( "TizenSansArabic" );
+  const std::string fontLatin("TizenSans");
+  const std::string fontHebrew("TizenSansHebrew");
+  const std::string fontArabic("TizenSansArabic");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun01;
-  fontDescriptionRun01.characterRun.characterIndex = 0u;
+  fontDescriptionRun01.characterRun.characterIndex     = 0u;
   fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun01.familyLength = fontLatin.size();
-  fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
-  memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
+  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;
+  fontDescriptionRun01.widthDefined  = false;
+  fontDescriptionRun01.slantDefined  = false;
+  fontDescriptionRun01.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun02;
-  fontDescriptionRun02.characterRun.characterIndex = 12u;
+  fontDescriptionRun02.characterRun.characterIndex     = 12u;
   fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
-  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);
   fontDescriptionRun02.familyDefined = true;
   fontDescriptionRun02.weightDefined = false;
-  fontDescriptionRun02.widthDefined = false;
-  fontDescriptionRun02.slantDefined = false;
-  fontDescriptionRun02.sizeDefined = false;
+  fontDescriptionRun02.widthDefined  = false;
+  fontDescriptionRun02.slantDefined  = false;
+  fontDescriptionRun02.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun03;
-  fontDescriptionRun03.characterRun.characterIndex = 22u;
+  fontDescriptionRun03.characterRun.characterIndex     = 22u;
   fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun03.familyLength = fontArabic.size();
-  fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
-  memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
+  fontDescriptionRun03.familyLength                    = fontArabic.size();
+  fontDescriptionRun03.familyName                      = new char[fontDescriptionRun03.familyLength];
+  memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
   fontDescriptionRun03.familyDefined = true;
   fontDescriptionRun03.weightDefined = false;
-  fontDescriptionRun03.widthDefined = false;
-  fontDescriptionRun03.slantDefined = false;
-  fontDescriptionRun03.sizeDefined = false;
+  fontDescriptionRun03.widthDefined  = false;
+  fontDescriptionRun03.slantDefined  = false;
+  fontDescriptionRun03.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun04;
-  fontDescriptionRun04.characterRun.characterIndex = 36u;
+  fontDescriptionRun04.characterRun.characterIndex     = 36u;
   fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun04.familyLength = fontLatin.size();
-  fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
-  memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
+  fontDescriptionRun04.familyLength                    = fontLatin.size();
+  fontDescriptionRun04.familyName                      = new char[fontDescriptionRun04.familyLength];
+  memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
   fontDescriptionRun04.familyDefined = true;
   fontDescriptionRun04.weightDefined = false;
-  fontDescriptionRun04.widthDefined = false;
-  fontDescriptionRun04.slantDefined = false;
-  fontDescriptionRun04.sizeDefined = false;
+  fontDescriptionRun04.widthDefined  = false;
+  fontDescriptionRun04.slantDefined  = false;
+  fontDescriptionRun04.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun05;
-  fontDescriptionRun05.characterRun.characterIndex = 48u;
+  fontDescriptionRun05.characterRun.characterIndex     = 48u;
   fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun05.familyLength = fontLatin.size();
-  fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
-  memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
+  fontDescriptionRun05.familyLength                    = fontLatin.size();
+  fontDescriptionRun05.familyName                      = new char[fontDescriptionRun05.familyLength];
+  memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
   fontDescriptionRun05.familyDefined = true;
   fontDescriptionRun05.weightDefined = false;
-  fontDescriptionRun05.widthDefined = false;
-  fontDescriptionRun05.slantDefined = false;
-  fontDescriptionRun05.sizeDefined = false;
+  fontDescriptionRun05.widthDefined  = false;
+  fontDescriptionRun05.slantDefined  = false;
+  fontDescriptionRun05.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun06;
-  fontDescriptionRun06.characterRun.characterIndex = 60u;
+  fontDescriptionRun06.characterRun.characterIndex     = 60u;
   fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun06.familyLength = fontArabic.size();
-  fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
-  memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
+  fontDescriptionRun06.familyLength                    = fontArabic.size();
+  fontDescriptionRun06.familyName                      = new char[fontDescriptionRun06.familyLength];
+  memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
   fontDescriptionRun06.familyDefined = true;
   fontDescriptionRun06.weightDefined = false;
-  fontDescriptionRun06.widthDefined = false;
-  fontDescriptionRun06.slantDefined = false;
-  fontDescriptionRun06.sizeDefined = false;
+  fontDescriptionRun06.widthDefined  = false;
+  fontDescriptionRun06.slantDefined  = false;
+  fontDescriptionRun06.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun01 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun02 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun03 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun04 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun05 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun06 );
+  fontDescriptionRuns.PushBack(fontDescriptionRun01);
+  fontDescriptionRuns.PushBack(fontDescriptionRun02);
+  fontDescriptionRuns.PushBack(fontDescriptionRun03);
+  fontDescriptionRuns.PushBack(fontDescriptionRun04);
+  fontDescriptionRuns.PushBack(fontDescriptionRun05);
+  fontDescriptionRuns.PushBack(fontDescriptionRun06);
 
-  float positions[] = { 0.f, 0.f, 33.f, 19.f, 0.f, 0.f };
+  float positions[] = {0.f, 0.f, 33.f, 19.f, 0.f, 0.f};
 
-  Size textArea( 100.f, 300.f );
+  Size      textArea(100.f, 300.f);
   AlignData data =
-  {
-    "Begin alignment for the mid paragraph.",
-    "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
-    textArea,
-    6u,
-    fontDescriptionRuns.Begin(),
-    Text::HorizontalAlignment::BEGIN,
-    Text::VerticalAlignment::TOP,
-    22u,
-    26u,
-    6u,
-    positions,
-    Dali::LayoutDirection::LEFT_TO_RIGHT,
-    false
-  };
-
-  if( !AlignTest( data ) )
+    {
+      "Begin alignment for the mid paragraph.",
+      "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
+      textArea,
+      6u,
+      fontDescriptionRuns.Begin(),
+      Text::HorizontalAlignment::BEGIN,
+      Text::VerticalAlignment::TOP,
+      22u,
+      26u,
+      6u,
+      positions,
+      Dali::LayoutDirection::LEFT_TO_RIGHT,
+      false};
+
+  if(!AlignTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -4043,112 +5257,111 @@ int UtcDaliTextAlign03(void)
 
   // Calculate text alignment.
 
-  const std::string fontLatin( "TizenSans" );
-  const std::string fontHebrew( "TizenSansHebrew" );
-  const std::string fontArabic( "TizenSansArabic" );
+  const std::string fontLatin("TizenSans");
+  const std::string fontHebrew("TizenSansHebrew");
+  const std::string fontArabic("TizenSansArabic");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun01;
-  fontDescriptionRun01.characterRun.characterIndex = 0u;
+  fontDescriptionRun01.characterRun.characterIndex     = 0u;
   fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun01.familyLength = fontLatin.size();
-  fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
-  memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
+  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;
+  fontDescriptionRun01.widthDefined  = false;
+  fontDescriptionRun01.slantDefined  = false;
+  fontDescriptionRun01.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun02;
-  fontDescriptionRun02.characterRun.characterIndex = 12u;
+  fontDescriptionRun02.characterRun.characterIndex     = 12u;
   fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
-  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);
   fontDescriptionRun02.familyDefined = true;
   fontDescriptionRun02.weightDefined = false;
-  fontDescriptionRun02.widthDefined = false;
-  fontDescriptionRun02.slantDefined = false;
-  fontDescriptionRun02.sizeDefined = false;
+  fontDescriptionRun02.widthDefined  = false;
+  fontDescriptionRun02.slantDefined  = false;
+  fontDescriptionRun02.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun03;
-  fontDescriptionRun03.characterRun.characterIndex = 22u;
+  fontDescriptionRun03.characterRun.characterIndex     = 22u;
   fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun03.familyLength = fontArabic.size();
-  fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
-  memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
+  fontDescriptionRun03.familyLength                    = fontArabic.size();
+  fontDescriptionRun03.familyName                      = new char[fontDescriptionRun03.familyLength];
+  memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
   fontDescriptionRun03.familyDefined = true;
   fontDescriptionRun03.weightDefined = false;
-  fontDescriptionRun03.widthDefined = false;
-  fontDescriptionRun03.slantDefined = false;
-  fontDescriptionRun03.sizeDefined = false;
+  fontDescriptionRun03.widthDefined  = false;
+  fontDescriptionRun03.slantDefined  = false;
+  fontDescriptionRun03.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun04;
-  fontDescriptionRun04.characterRun.characterIndex = 36u;
+  fontDescriptionRun04.characterRun.characterIndex     = 36u;
   fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun04.familyLength = fontLatin.size();
-  fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
-  memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
+  fontDescriptionRun04.familyLength                    = fontLatin.size();
+  fontDescriptionRun04.familyName                      = new char[fontDescriptionRun04.familyLength];
+  memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
   fontDescriptionRun04.familyDefined = true;
   fontDescriptionRun04.weightDefined = false;
-  fontDescriptionRun04.widthDefined = false;
-  fontDescriptionRun04.slantDefined = false;
-  fontDescriptionRun04.sizeDefined = false;
+  fontDescriptionRun04.widthDefined  = false;
+  fontDescriptionRun04.slantDefined  = false;
+  fontDescriptionRun04.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun05;
-  fontDescriptionRun05.characterRun.characterIndex = 48u;
+  fontDescriptionRun05.characterRun.characterIndex     = 48u;
   fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun05.familyLength = fontLatin.size();
-  fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
-  memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
+  fontDescriptionRun05.familyLength                    = fontLatin.size();
+  fontDescriptionRun05.familyName                      = new char[fontDescriptionRun05.familyLength];
+  memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
   fontDescriptionRun05.familyDefined = true;
   fontDescriptionRun05.weightDefined = false;
-  fontDescriptionRun05.widthDefined = false;
-  fontDescriptionRun05.slantDefined = false;
-  fontDescriptionRun05.sizeDefined = false;
+  fontDescriptionRun05.widthDefined  = false;
+  fontDescriptionRun05.slantDefined  = false;
+  fontDescriptionRun05.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun06;
-  fontDescriptionRun06.characterRun.characterIndex = 60u;
+  fontDescriptionRun06.characterRun.characterIndex     = 60u;
   fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun06.familyLength = fontArabic.size();
-  fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
-  memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
+  fontDescriptionRun06.familyLength                    = fontArabic.size();
+  fontDescriptionRun06.familyName                      = new char[fontDescriptionRun06.familyLength];
+  memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
   fontDescriptionRun06.familyDefined = true;
   fontDescriptionRun06.weightDefined = false;
-  fontDescriptionRun06.widthDefined = false;
-  fontDescriptionRun06.slantDefined = false;
-  fontDescriptionRun06.sizeDefined = false;
+  fontDescriptionRun06.widthDefined  = false;
+  fontDescriptionRun06.slantDefined  = false;
+  fontDescriptionRun06.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun01 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun02 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun03 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun04 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun05 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun06 );
+  fontDescriptionRuns.PushBack(fontDescriptionRun01);
+  fontDescriptionRuns.PushBack(fontDescriptionRun02);
+  fontDescriptionRuns.PushBack(fontDescriptionRun03);
+  fontDescriptionRuns.PushBack(fontDescriptionRun04);
+  fontDescriptionRuns.PushBack(fontDescriptionRun05);
+  fontDescriptionRuns.PushBack(fontDescriptionRun06);
 
-  float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
+  float positions[] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
 
-  Size textArea( 100.f, 300.f );
+  Size      textArea(100.f, 300.f);
   AlignData data =
-  {
-    "Begin alignment for the last paragraph.",
-    "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
-    textArea,
-    6u,
-    fontDescriptionRuns.Begin(),
-    Text::HorizontalAlignment::BEGIN,
-    Text::VerticalAlignment::TOP,
-    48u,
-    26u,
-    6u,
-    positions,
-    Dali::LayoutDirection::LEFT_TO_RIGHT,
-    false
-  };
-
-  if( !AlignTest( data ) )
+    {
+      "Begin alignment for the last paragraph.",
+      "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
+      textArea,
+      6u,
+      fontDescriptionRuns.Begin(),
+      Text::HorizontalAlignment::BEGIN,
+      Text::VerticalAlignment::TOP,
+      48u,
+      26u,
+      6u,
+      positions,
+      Dali::LayoutDirection::LEFT_TO_RIGHT,
+      false};
+
+  if(!AlignTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -4164,112 +5377,111 @@ int UtcDaliTextAlign04(void)
 
   // Calculate text alignment.
 
-  const std::string fontLatin( "TizenSans" );
-  const std::string fontHebrew( "TizenSansHebrew" );
-  const std::string fontArabic( "TizenSansArabic" );
+  const std::string fontLatin("TizenSans");
+  const std::string fontHebrew("TizenSansHebrew");
+  const std::string fontArabic("TizenSansArabic");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun01;
-  fontDescriptionRun01.characterRun.characterIndex = 0u;
+  fontDescriptionRun01.characterRun.characterIndex     = 0u;
   fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun01.familyLength = fontLatin.size();
-  fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
-  memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
+  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;
+  fontDescriptionRun01.widthDefined  = false;
+  fontDescriptionRun01.slantDefined  = false;
+  fontDescriptionRun01.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun02;
-  fontDescriptionRun02.characterRun.characterIndex = 12u;
+  fontDescriptionRun02.characterRun.characterIndex     = 12u;
   fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
-  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);
   fontDescriptionRun02.familyDefined = true;
   fontDescriptionRun02.weightDefined = false;
-  fontDescriptionRun02.widthDefined = false;
-  fontDescriptionRun02.slantDefined = false;
-  fontDescriptionRun02.sizeDefined = false;
+  fontDescriptionRun02.widthDefined  = false;
+  fontDescriptionRun02.slantDefined  = false;
+  fontDescriptionRun02.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun03;
-  fontDescriptionRun03.characterRun.characterIndex = 22u;
+  fontDescriptionRun03.characterRun.characterIndex     = 22u;
   fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun03.familyLength = fontArabic.size();
-  fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
-  memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
+  fontDescriptionRun03.familyLength                    = fontArabic.size();
+  fontDescriptionRun03.familyName                      = new char[fontDescriptionRun03.familyLength];
+  memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
   fontDescriptionRun03.familyDefined = true;
   fontDescriptionRun03.weightDefined = false;
-  fontDescriptionRun03.widthDefined = false;
-  fontDescriptionRun03.slantDefined = false;
-  fontDescriptionRun03.sizeDefined = false;
+  fontDescriptionRun03.widthDefined  = false;
+  fontDescriptionRun03.slantDefined  = false;
+  fontDescriptionRun03.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun04;
-  fontDescriptionRun04.characterRun.characterIndex = 36u;
+  fontDescriptionRun04.characterRun.characterIndex     = 36u;
   fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun04.familyLength = fontLatin.size();
-  fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
-  memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
+  fontDescriptionRun04.familyLength                    = fontLatin.size();
+  fontDescriptionRun04.familyName                      = new char[fontDescriptionRun04.familyLength];
+  memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
   fontDescriptionRun04.familyDefined = true;
   fontDescriptionRun04.weightDefined = false;
-  fontDescriptionRun04.widthDefined = false;
-  fontDescriptionRun04.slantDefined = false;
-  fontDescriptionRun04.sizeDefined = false;
+  fontDescriptionRun04.widthDefined  = false;
+  fontDescriptionRun04.slantDefined  = false;
+  fontDescriptionRun04.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun05;
-  fontDescriptionRun05.characterRun.characterIndex = 48u;
+  fontDescriptionRun05.characterRun.characterIndex     = 48u;
   fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun05.familyLength = fontLatin.size();
-  fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
-  memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
+  fontDescriptionRun05.familyLength                    = fontLatin.size();
+  fontDescriptionRun05.familyName                      = new char[fontDescriptionRun05.familyLength];
+  memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
   fontDescriptionRun05.familyDefined = true;
   fontDescriptionRun05.weightDefined = false;
-  fontDescriptionRun05.widthDefined = false;
-  fontDescriptionRun05.slantDefined = false;
-  fontDescriptionRun05.sizeDefined = false;
+  fontDescriptionRun05.widthDefined  = false;
+  fontDescriptionRun05.slantDefined  = false;
+  fontDescriptionRun05.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun06;
-  fontDescriptionRun06.characterRun.characterIndex = 60u;
+  fontDescriptionRun06.characterRun.characterIndex     = 60u;
   fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun06.familyLength = fontArabic.size();
-  fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
-  memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
+  fontDescriptionRun06.familyLength                    = fontArabic.size();
+  fontDescriptionRun06.familyName                      = new char[fontDescriptionRun06.familyLength];
+  memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
   fontDescriptionRun06.familyDefined = true;
   fontDescriptionRun06.weightDefined = false;
-  fontDescriptionRun06.widthDefined = false;
-  fontDescriptionRun06.slantDefined = false;
-  fontDescriptionRun06.sizeDefined = false;
+  fontDescriptionRun06.widthDefined  = false;
+  fontDescriptionRun06.slantDefined  = false;
+  fontDescriptionRun06.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun01 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun02 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun03 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun04 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun05 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun06 );
+  fontDescriptionRuns.PushBack(fontDescriptionRun01);
+  fontDescriptionRuns.PushBack(fontDescriptionRun02);
+  fontDescriptionRuns.PushBack(fontDescriptionRun03);
+  fontDescriptionRuns.PushBack(fontDescriptionRun04);
+  fontDescriptionRuns.PushBack(fontDescriptionRun05);
+  fontDescriptionRuns.PushBack(fontDescriptionRun06);
 
-  float positions[] = { 9.f, 15.f, 0.f, 0.f, 0.f, 0.f };
+  float positions[] = {9.f, 15.f, 0.f, 0.f, 0.f, 0.f};
 
-  Size textArea( 100.f, 300.f );
+  Size      textArea(100.f, 300.f);
   AlignData data =
-  {
-    "Center alignment for the first paragraph.",
-    "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
-    textArea,
-    6u,
-    fontDescriptionRuns.Begin(),
-    Text::HorizontalAlignment::CENTER,
-    Text::VerticalAlignment::TOP,
-    0u,
-    22u,
-    6u,
-    positions,
-    Dali::LayoutDirection::LEFT_TO_RIGHT,
-    false
-  };
+    {
+      "Center alignment for the first paragraph.",
+      "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
+      textArea,
+      6u,
+      fontDescriptionRuns.Begin(),
+      Text::HorizontalAlignment::CENTER,
+      Text::VerticalAlignment::TOP,
+      0u,
+      22u,
+      6u,
+      positions,
+      Dali::LayoutDirection::LEFT_TO_RIGHT,
+      false};
 
-  if( !AlignTest( data ) )
+  if(!AlignTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -4285,112 +5497,111 @@ int UtcDaliTextAlign05(void)
 
   // Calculate text alignment.
 
-  const std::string fontLatin( "TizenSans" );
-  const std::string fontHebrew( "TizenSansHebrew" );
-  const std::string fontArabic( "TizenSansArabic" );
+  const std::string fontLatin("TizenSans");
+  const std::string fontHebrew("TizenSansHebrew");
+  const std::string fontArabic("TizenSansArabic");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun01;
-  fontDescriptionRun01.characterRun.characterIndex = 0u;
+  fontDescriptionRun01.characterRun.characterIndex     = 0u;
   fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun01.familyLength = fontLatin.size();
-  fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
-  memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
+  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;
+  fontDescriptionRun01.widthDefined  = false;
+  fontDescriptionRun01.slantDefined  = false;
+  fontDescriptionRun01.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun02;
-  fontDescriptionRun02.characterRun.characterIndex = 12u;
+  fontDescriptionRun02.characterRun.characterIndex     = 12u;
   fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
-  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);
   fontDescriptionRun02.familyDefined = true;
   fontDescriptionRun02.weightDefined = false;
-  fontDescriptionRun02.widthDefined = false;
-  fontDescriptionRun02.slantDefined = false;
-  fontDescriptionRun02.sizeDefined = false;
+  fontDescriptionRun02.widthDefined  = false;
+  fontDescriptionRun02.slantDefined  = false;
+  fontDescriptionRun02.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun03;
-  fontDescriptionRun03.characterRun.characterIndex = 22u;
+  fontDescriptionRun03.characterRun.characterIndex     = 22u;
   fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun03.familyLength = fontArabic.size();
-  fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
-  memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
+  fontDescriptionRun03.familyLength                    = fontArabic.size();
+  fontDescriptionRun03.familyName                      = new char[fontDescriptionRun03.familyLength];
+  memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
   fontDescriptionRun03.familyDefined = true;
   fontDescriptionRun03.weightDefined = false;
-  fontDescriptionRun03.widthDefined = false;
-  fontDescriptionRun03.slantDefined = false;
-  fontDescriptionRun03.sizeDefined = false;
+  fontDescriptionRun03.widthDefined  = false;
+  fontDescriptionRun03.slantDefined  = false;
+  fontDescriptionRun03.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun04;
-  fontDescriptionRun04.characterRun.characterIndex = 36u;
+  fontDescriptionRun04.characterRun.characterIndex     = 36u;
   fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun04.familyLength = fontLatin.size();
-  fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
-  memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
+  fontDescriptionRun04.familyLength                    = fontLatin.size();
+  fontDescriptionRun04.familyName                      = new char[fontDescriptionRun04.familyLength];
+  memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
   fontDescriptionRun04.familyDefined = true;
   fontDescriptionRun04.weightDefined = false;
-  fontDescriptionRun04.widthDefined = false;
-  fontDescriptionRun04.slantDefined = false;
-  fontDescriptionRun04.sizeDefined = false;
+  fontDescriptionRun04.widthDefined  = false;
+  fontDescriptionRun04.slantDefined  = false;
+  fontDescriptionRun04.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun05;
-  fontDescriptionRun05.characterRun.characterIndex = 48u;
+  fontDescriptionRun05.characterRun.characterIndex     = 48u;
   fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun05.familyLength = fontLatin.size();
-  fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
-  memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
+  fontDescriptionRun05.familyLength                    = fontLatin.size();
+  fontDescriptionRun05.familyName                      = new char[fontDescriptionRun05.familyLength];
+  memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
   fontDescriptionRun05.familyDefined = true;
   fontDescriptionRun05.weightDefined = false;
-  fontDescriptionRun05.widthDefined = false;
-  fontDescriptionRun05.slantDefined = false;
-  fontDescriptionRun05.sizeDefined = false;
+  fontDescriptionRun05.widthDefined  = false;
+  fontDescriptionRun05.slantDefined  = false;
+  fontDescriptionRun05.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun06;
-  fontDescriptionRun06.characterRun.characterIndex = 60u;
+  fontDescriptionRun06.characterRun.characterIndex     = 60u;
   fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun06.familyLength = fontArabic.size();
-  fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
-  memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
+  fontDescriptionRun06.familyLength                    = fontArabic.size();
+  fontDescriptionRun06.familyName                      = new char[fontDescriptionRun06.familyLength];
+  memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
   fontDescriptionRun06.familyDefined = true;
   fontDescriptionRun06.weightDefined = false;
-  fontDescriptionRun06.widthDefined = false;
-  fontDescriptionRun06.slantDefined = false;
-  fontDescriptionRun06.sizeDefined = false;
+  fontDescriptionRun06.widthDefined  = false;
+  fontDescriptionRun06.slantDefined  = false;
+  fontDescriptionRun06.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun01 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun02 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun03 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun04 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun05 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun06 );
+  fontDescriptionRuns.PushBack(fontDescriptionRun01);
+  fontDescriptionRuns.PushBack(fontDescriptionRun02);
+  fontDescriptionRuns.PushBack(fontDescriptionRun03);
+  fontDescriptionRuns.PushBack(fontDescriptionRun04);
+  fontDescriptionRuns.PushBack(fontDescriptionRun05);
+  fontDescriptionRuns.PushBack(fontDescriptionRun06);
 
-  float positions[] = { 0.f, 0.f, 14.f, 9.f, 0.f, 0.f };
+  float positions[] = {0.f, 0.f, 14.f, 9.f, 0.f, 0.f};
 
-  Size textArea( 100.f, 300.f );
+  Size      textArea(100.f, 300.f);
   AlignData data =
-  {
-    "Center alignment for the mid paragraph.",
-    "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
-    textArea,
-    6u,
-    fontDescriptionRuns.Begin(),
-    Text::HorizontalAlignment::CENTER,
-    Text::VerticalAlignment::TOP,
-    22u,
-    26u,
-    6u,
-    positions,
-    Dali::LayoutDirection::LEFT_TO_RIGHT,
-    false
-  };
-
-  if( !AlignTest( data ) )
+    {
+      "Center alignment for the mid paragraph.",
+      "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
+      textArea,
+      6u,
+      fontDescriptionRuns.Begin(),
+      Text::HorizontalAlignment::CENTER,
+      Text::VerticalAlignment::TOP,
+      22u,
+      26u,
+      6u,
+      positions,
+      Dali::LayoutDirection::LEFT_TO_RIGHT,
+      false};
+
+  if(!AlignTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -4406,112 +5617,111 @@ int UtcDaliTextAlign06(void)
 
   // Calculate text alignment.
 
-  const std::string fontLatin( "TizenSans" );
-  const std::string fontHebrew( "TizenSansHebrew" );
-  const std::string fontArabic( "TizenSansArabic" );
+  const std::string fontLatin("TizenSans");
+  const std::string fontHebrew("TizenSansHebrew");
+  const std::string fontArabic("TizenSansArabic");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun01;
-  fontDescriptionRun01.characterRun.characterIndex = 0u;
+  fontDescriptionRun01.characterRun.characterIndex     = 0u;
   fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun01.familyLength = fontLatin.size();
-  fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
-  memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
+  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;
+  fontDescriptionRun01.widthDefined  = false;
+  fontDescriptionRun01.slantDefined  = false;
+  fontDescriptionRun01.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun02;
-  fontDescriptionRun02.characterRun.characterIndex = 12u;
+  fontDescriptionRun02.characterRun.characterIndex     = 12u;
   fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
-  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);
   fontDescriptionRun02.familyDefined = true;
   fontDescriptionRun02.weightDefined = false;
-  fontDescriptionRun02.widthDefined = false;
-  fontDescriptionRun02.slantDefined = false;
-  fontDescriptionRun02.sizeDefined = false;
+  fontDescriptionRun02.widthDefined  = false;
+  fontDescriptionRun02.slantDefined  = false;
+  fontDescriptionRun02.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun03;
-  fontDescriptionRun03.characterRun.characterIndex = 22u;
+  fontDescriptionRun03.characterRun.characterIndex     = 22u;
   fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun03.familyLength = fontArabic.size();
-  fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
-  memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
+  fontDescriptionRun03.familyLength                    = fontArabic.size();
+  fontDescriptionRun03.familyName                      = new char[fontDescriptionRun03.familyLength];
+  memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
   fontDescriptionRun03.familyDefined = true;
   fontDescriptionRun03.weightDefined = false;
-  fontDescriptionRun03.widthDefined = false;
-  fontDescriptionRun03.slantDefined = false;
-  fontDescriptionRun03.sizeDefined = false;
+  fontDescriptionRun03.widthDefined  = false;
+  fontDescriptionRun03.slantDefined  = false;
+  fontDescriptionRun03.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun04;
-  fontDescriptionRun04.characterRun.characterIndex = 36u;
+  fontDescriptionRun04.characterRun.characterIndex     = 36u;
   fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun04.familyLength = fontLatin.size();
-  fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
-  memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
+  fontDescriptionRun04.familyLength                    = fontLatin.size();
+  fontDescriptionRun04.familyName                      = new char[fontDescriptionRun04.familyLength];
+  memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
   fontDescriptionRun04.familyDefined = true;
   fontDescriptionRun04.weightDefined = false;
-  fontDescriptionRun04.widthDefined = false;
-  fontDescriptionRun04.slantDefined = false;
-  fontDescriptionRun04.sizeDefined = false;
+  fontDescriptionRun04.widthDefined  = false;
+  fontDescriptionRun04.slantDefined  = false;
+  fontDescriptionRun04.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun05;
-  fontDescriptionRun05.characterRun.characterIndex = 48u;
+  fontDescriptionRun05.characterRun.characterIndex     = 48u;
   fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun05.familyLength = fontLatin.size();
-  fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
-  memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
+  fontDescriptionRun05.familyLength                    = fontLatin.size();
+  fontDescriptionRun05.familyName                      = new char[fontDescriptionRun05.familyLength];
+  memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
   fontDescriptionRun05.familyDefined = true;
   fontDescriptionRun05.weightDefined = false;
-  fontDescriptionRun05.widthDefined = false;
-  fontDescriptionRun05.slantDefined = false;
-  fontDescriptionRun05.sizeDefined = false;
+  fontDescriptionRun05.widthDefined  = false;
+  fontDescriptionRun05.slantDefined  = false;
+  fontDescriptionRun05.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun06;
-  fontDescriptionRun06.characterRun.characterIndex = 60u;
+  fontDescriptionRun06.characterRun.characterIndex     = 60u;
   fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun06.familyLength = fontArabic.size();
-  fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
-  memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
+  fontDescriptionRun06.familyLength                    = fontArabic.size();
+  fontDescriptionRun06.familyName                      = new char[fontDescriptionRun06.familyLength];
+  memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
   fontDescriptionRun06.familyDefined = true;
   fontDescriptionRun06.weightDefined = false;
-  fontDescriptionRun06.widthDefined = false;
-  fontDescriptionRun06.slantDefined = false;
-  fontDescriptionRun06.sizeDefined = false;
+  fontDescriptionRun06.widthDefined  = false;
+  fontDescriptionRun06.slantDefined  = false;
+  fontDescriptionRun06.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun01 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun02 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun03 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun04 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun05 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun06 );
+  fontDescriptionRuns.PushBack(fontDescriptionRun01);
+  fontDescriptionRuns.PushBack(fontDescriptionRun02);
+  fontDescriptionRuns.PushBack(fontDescriptionRun03);
+  fontDescriptionRuns.PushBack(fontDescriptionRun04);
+  fontDescriptionRuns.PushBack(fontDescriptionRun05);
+  fontDescriptionRuns.PushBack(fontDescriptionRun06);
 
-  float positions[] = { 0.f, 0.f, 0.f, 0.f, 9.f, 16.f };
+  float positions[] = {0.f, 0.f, 0.f, 0.f, 9.f, 16.f};
 
-  Size textArea( 100.f, 300.f );
+  Size      textArea(100.f, 300.f);
   AlignData data =
-  {
-    "Center alignment for the last paragraph.",
-    "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
-    textArea,
-    6u,
-    fontDescriptionRuns.Begin(),
-    Text::HorizontalAlignment::CENTER,
-    Text::VerticalAlignment::TOP,
-    48u,
-    26u,
-    6u,
-    positions,
-    Dali::LayoutDirection::LEFT_TO_RIGHT,
-    false
-  };
-
-  if( !AlignTest( data ) )
+    {
+      "Center alignment for the last paragraph.",
+      "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
+      textArea,
+      6u,
+      fontDescriptionRuns.Begin(),
+      Text::HorizontalAlignment::CENTER,
+      Text::VerticalAlignment::TOP,
+      48u,
+      26u,
+      6u,
+      positions,
+      Dali::LayoutDirection::LEFT_TO_RIGHT,
+      false};
+
+  if(!AlignTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -4527,112 +5737,111 @@ int UtcDaliTextAlign07(void)
 
   // Calculate text alignment.
 
-  const std::string fontLatin( "TizenSans" );
-  const std::string fontHebrew( "TizenSansHebrew" );
-  const std::string fontArabic( "TizenSansArabic" );
+  const std::string fontLatin("TizenSans");
+  const std::string fontHebrew("TizenSansHebrew");
+  const std::string fontArabic("TizenSansArabic");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun01;
-  fontDescriptionRun01.characterRun.characterIndex = 0u;
+  fontDescriptionRun01.characterRun.characterIndex     = 0u;
   fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun01.familyLength = fontLatin.size();
-  fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
-  memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
+  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;
+  fontDescriptionRun01.widthDefined  = false;
+  fontDescriptionRun01.slantDefined  = false;
+  fontDescriptionRun01.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun02;
-  fontDescriptionRun02.characterRun.characterIndex = 12u;
+  fontDescriptionRun02.characterRun.characterIndex     = 12u;
   fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
-  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);
   fontDescriptionRun02.familyDefined = true;
   fontDescriptionRun02.weightDefined = false;
-  fontDescriptionRun02.widthDefined = false;
-  fontDescriptionRun02.slantDefined = false;
-  fontDescriptionRun02.sizeDefined = false;
+  fontDescriptionRun02.widthDefined  = false;
+  fontDescriptionRun02.slantDefined  = false;
+  fontDescriptionRun02.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun03;
-  fontDescriptionRun03.characterRun.characterIndex = 22u;
+  fontDescriptionRun03.characterRun.characterIndex     = 22u;
   fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun03.familyLength = fontArabic.size();
-  fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
-  memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
+  fontDescriptionRun03.familyLength                    = fontArabic.size();
+  fontDescriptionRun03.familyName                      = new char[fontDescriptionRun03.familyLength];
+  memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
   fontDescriptionRun03.familyDefined = true;
   fontDescriptionRun03.weightDefined = false;
-  fontDescriptionRun03.widthDefined = false;
-  fontDescriptionRun03.slantDefined = false;
-  fontDescriptionRun03.sizeDefined = false;
+  fontDescriptionRun03.widthDefined  = false;
+  fontDescriptionRun03.slantDefined  = false;
+  fontDescriptionRun03.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun04;
-  fontDescriptionRun04.characterRun.characterIndex = 36u;
+  fontDescriptionRun04.characterRun.characterIndex     = 36u;
   fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun04.familyLength = fontLatin.size();
-  fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
-  memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
+  fontDescriptionRun04.familyLength                    = fontLatin.size();
+  fontDescriptionRun04.familyName                      = new char[fontDescriptionRun04.familyLength];
+  memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
   fontDescriptionRun04.familyDefined = true;
   fontDescriptionRun04.weightDefined = false;
-  fontDescriptionRun04.widthDefined = false;
-  fontDescriptionRun04.slantDefined = false;
-  fontDescriptionRun04.sizeDefined = false;
+  fontDescriptionRun04.widthDefined  = false;
+  fontDescriptionRun04.slantDefined  = false;
+  fontDescriptionRun04.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun05;
-  fontDescriptionRun05.characterRun.characterIndex = 48u;
+  fontDescriptionRun05.characterRun.characterIndex     = 48u;
   fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun05.familyLength = fontLatin.size();
-  fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
-  memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
+  fontDescriptionRun05.familyLength                    = fontLatin.size();
+  fontDescriptionRun05.familyName                      = new char[fontDescriptionRun05.familyLength];
+  memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
   fontDescriptionRun05.familyDefined = true;
   fontDescriptionRun05.weightDefined = false;
-  fontDescriptionRun05.widthDefined = false;
-  fontDescriptionRun05.slantDefined = false;
-  fontDescriptionRun05.sizeDefined = false;
+  fontDescriptionRun05.widthDefined  = false;
+  fontDescriptionRun05.slantDefined  = false;
+  fontDescriptionRun05.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun06;
-  fontDescriptionRun06.characterRun.characterIndex = 60u;
+  fontDescriptionRun06.characterRun.characterIndex     = 60u;
   fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun06.familyLength = fontArabic.size();
-  fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
-  memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
+  fontDescriptionRun06.familyLength                    = fontArabic.size();
+  fontDescriptionRun06.familyName                      = new char[fontDescriptionRun06.familyLength];
+  memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
   fontDescriptionRun06.familyDefined = true;
   fontDescriptionRun06.weightDefined = false;
-  fontDescriptionRun06.widthDefined = false;
-  fontDescriptionRun06.slantDefined = false;
-  fontDescriptionRun06.sizeDefined = false;
+  fontDescriptionRun06.widthDefined  = false;
+  fontDescriptionRun06.slantDefined  = false;
+  fontDescriptionRun06.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun01 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun02 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun03 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun04 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun05 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun06 );
+  fontDescriptionRuns.PushBack(fontDescriptionRun01);
+  fontDescriptionRuns.PushBack(fontDescriptionRun02);
+  fontDescriptionRuns.PushBack(fontDescriptionRun03);
+  fontDescriptionRuns.PushBack(fontDescriptionRun04);
+  fontDescriptionRuns.PushBack(fontDescriptionRun05);
+  fontDescriptionRuns.PushBack(fontDescriptionRun06);
 
-  float positions[] = { 19.f, 30.f, 0.f, 0.f, 0.f, 0.f };
+  float positions[] = {19.f, 30.f, 0.f, 0.f, 0.f, 0.f};
 
-  Size textArea( 100.f, 300.f );
+  Size      textArea(100.f, 300.f);
   AlignData data =
-  {
-    "End alignment for the first paragraph.",
-    "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
-    textArea,
-    6u,
-    fontDescriptionRuns.Begin(),
-    Text::HorizontalAlignment::END,
-    Text::VerticalAlignment::TOP,
-    0u,
-    22u,
-    6u,
-    positions,
-    Dali::LayoutDirection::LEFT_TO_RIGHT,
-    false
-  };
+    {
+      "End alignment for the first paragraph.",
+      "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
+      textArea,
+      6u,
+      fontDescriptionRuns.Begin(),
+      Text::HorizontalAlignment::END,
+      Text::VerticalAlignment::TOP,
+      0u,
+      22u,
+      6u,
+      positions,
+      Dali::LayoutDirection::LEFT_TO_RIGHT,
+      false};
 
-  if( !AlignTest( data ) )
+  if(!AlignTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -4648,112 +5857,111 @@ int UtcDaliTextAlign08(void)
 
   // Calculate text alignment.
 
-  const std::string fontLatin( "TizenSans" );
-  const std::string fontHebrew( "TizenSansHebrew" );
-  const std::string fontArabic( "TizenSansArabic" );
+  const std::string fontLatin("TizenSans");
+  const std::string fontHebrew("TizenSansHebrew");
+  const std::string fontArabic("TizenSansArabic");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun01;
-  fontDescriptionRun01.characterRun.characterIndex = 0u;
+  fontDescriptionRun01.characterRun.characterIndex     = 0u;
   fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun01.familyLength = fontLatin.size();
-  fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
-  memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
+  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;
+  fontDescriptionRun01.widthDefined  = false;
+  fontDescriptionRun01.slantDefined  = false;
+  fontDescriptionRun01.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun02;
-  fontDescriptionRun02.characterRun.characterIndex = 12u;
+  fontDescriptionRun02.characterRun.characterIndex     = 12u;
   fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
-  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);
   fontDescriptionRun02.familyDefined = true;
   fontDescriptionRun02.weightDefined = false;
-  fontDescriptionRun02.widthDefined = false;
-  fontDescriptionRun02.slantDefined = false;
-  fontDescriptionRun02.sizeDefined = false;
+  fontDescriptionRun02.widthDefined  = false;
+  fontDescriptionRun02.slantDefined  = false;
+  fontDescriptionRun02.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun03;
-  fontDescriptionRun03.characterRun.characterIndex = 22u;
+  fontDescriptionRun03.characterRun.characterIndex     = 22u;
   fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun03.familyLength = fontArabic.size();
-  fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
-  memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
+  fontDescriptionRun03.familyLength                    = fontArabic.size();
+  fontDescriptionRun03.familyName                      = new char[fontDescriptionRun03.familyLength];
+  memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
   fontDescriptionRun03.familyDefined = true;
   fontDescriptionRun03.weightDefined = false;
-  fontDescriptionRun03.widthDefined = false;
-  fontDescriptionRun03.slantDefined = false;
-  fontDescriptionRun03.sizeDefined = false;
+  fontDescriptionRun03.widthDefined  = false;
+  fontDescriptionRun03.slantDefined  = false;
+  fontDescriptionRun03.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun04;
-  fontDescriptionRun04.characterRun.characterIndex = 36u;
+  fontDescriptionRun04.characterRun.characterIndex     = 36u;
   fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun04.familyLength = fontLatin.size();
-  fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
-  memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
+  fontDescriptionRun04.familyLength                    = fontLatin.size();
+  fontDescriptionRun04.familyName                      = new char[fontDescriptionRun04.familyLength];
+  memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
   fontDescriptionRun04.familyDefined = true;
   fontDescriptionRun04.weightDefined = false;
-  fontDescriptionRun04.widthDefined = false;
-  fontDescriptionRun04.slantDefined = false;
-  fontDescriptionRun04.sizeDefined = false;
+  fontDescriptionRun04.widthDefined  = false;
+  fontDescriptionRun04.slantDefined  = false;
+  fontDescriptionRun04.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun05;
-  fontDescriptionRun05.characterRun.characterIndex = 48u;
+  fontDescriptionRun05.characterRun.characterIndex     = 48u;
   fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun05.familyLength = fontLatin.size();
-  fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
-  memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
+  fontDescriptionRun05.familyLength                    = fontLatin.size();
+  fontDescriptionRun05.familyName                      = new char[fontDescriptionRun05.familyLength];
+  memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
   fontDescriptionRun05.familyDefined = true;
   fontDescriptionRun05.weightDefined = false;
-  fontDescriptionRun05.widthDefined = false;
-  fontDescriptionRun05.slantDefined = false;
-  fontDescriptionRun05.sizeDefined = false;
+  fontDescriptionRun05.widthDefined  = false;
+  fontDescriptionRun05.slantDefined  = false;
+  fontDescriptionRun05.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun06;
-  fontDescriptionRun06.characterRun.characterIndex = 60u;
+  fontDescriptionRun06.characterRun.characterIndex     = 60u;
   fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun06.familyLength = fontArabic.size();
-  fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
-  memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
+  fontDescriptionRun06.familyLength                    = fontArabic.size();
+  fontDescriptionRun06.familyName                      = new char[fontDescriptionRun06.familyLength];
+  memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
   fontDescriptionRun06.familyDefined = true;
   fontDescriptionRun06.weightDefined = false;
-  fontDescriptionRun06.widthDefined = false;
-  fontDescriptionRun06.slantDefined = false;
-  fontDescriptionRun06.sizeDefined = false;
+  fontDescriptionRun06.widthDefined  = false;
+  fontDescriptionRun06.slantDefined  = false;
+  fontDescriptionRun06.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun01 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun02 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun03 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun04 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun05 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun06 );
+  fontDescriptionRuns.PushBack(fontDescriptionRun01);
+  fontDescriptionRuns.PushBack(fontDescriptionRun02);
+  fontDescriptionRuns.PushBack(fontDescriptionRun03);
+  fontDescriptionRuns.PushBack(fontDescriptionRun04);
+  fontDescriptionRuns.PushBack(fontDescriptionRun05);
+  fontDescriptionRuns.PushBack(fontDescriptionRun06);
 
-  float positions[] = { 0.f, 0.f, -4.f, 0.f, 0.f, 0.f };
+  float positions[] = {0.f, 0.f, -4.f, 0.f, 0.f, 0.f};
 
-  Size textArea( 100.f, 300.f );
+  Size      textArea(100.f, 300.f);
   AlignData data =
-  {
-    "End alignment for the mid paragraph.",
-    "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
-    textArea,
-    6u,
-    fontDescriptionRuns.Begin(),
-    Text::HorizontalAlignment::END,
-    Text::VerticalAlignment::TOP,
-    22u,
-    26u,
-    6u,
-    positions,
-    Dali::LayoutDirection::LEFT_TO_RIGHT,
-    false
-  };
-
-  if( !AlignTest( data ) )
+    {
+      "End alignment for the mid paragraph.",
+      "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
+      textArea,
+      6u,
+      fontDescriptionRuns.Begin(),
+      Text::HorizontalAlignment::END,
+      Text::VerticalAlignment::TOP,
+      22u,
+      26u,
+      6u,
+      positions,
+      Dali::LayoutDirection::LEFT_TO_RIGHT,
+      false};
+
+  if(!AlignTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -4769,112 +5977,111 @@ int UtcDaliTextAlign09(void)
 
   // Calculate text alignment.
 
-  const std::string fontLatin( "TizenSans" );
-  const std::string fontHebrew( "TizenSansHebrew" );
-  const std::string fontArabic( "TizenSansArabic" );
+  const std::string fontLatin("TizenSans");
+  const std::string fontHebrew("TizenSansHebrew");
+  const std::string fontArabic("TizenSansArabic");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun01;
-  fontDescriptionRun01.characterRun.characterIndex = 0u;
+  fontDescriptionRun01.characterRun.characterIndex     = 0u;
   fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun01.familyLength = fontLatin.size();
-  fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
-  memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
+  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;
+  fontDescriptionRun01.widthDefined  = false;
+  fontDescriptionRun01.slantDefined  = false;
+  fontDescriptionRun01.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun02;
-  fontDescriptionRun02.characterRun.characterIndex = 12u;
+  fontDescriptionRun02.characterRun.characterIndex     = 12u;
   fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
-  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);
   fontDescriptionRun02.familyDefined = true;
   fontDescriptionRun02.weightDefined = false;
-  fontDescriptionRun02.widthDefined = false;
-  fontDescriptionRun02.slantDefined = false;
-  fontDescriptionRun02.sizeDefined = false;
+  fontDescriptionRun02.widthDefined  = false;
+  fontDescriptionRun02.slantDefined  = false;
+  fontDescriptionRun02.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun03;
-  fontDescriptionRun03.characterRun.characterIndex = 22u;
+  fontDescriptionRun03.characterRun.characterIndex     = 22u;
   fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun03.familyLength = fontArabic.size();
-  fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
-  memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
+  fontDescriptionRun03.familyLength                    = fontArabic.size();
+  fontDescriptionRun03.familyName                      = new char[fontDescriptionRun03.familyLength];
+  memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
   fontDescriptionRun03.familyDefined = true;
   fontDescriptionRun03.weightDefined = false;
-  fontDescriptionRun03.widthDefined = false;
-  fontDescriptionRun03.slantDefined = false;
-  fontDescriptionRun03.sizeDefined = false;
+  fontDescriptionRun03.widthDefined  = false;
+  fontDescriptionRun03.slantDefined  = false;
+  fontDescriptionRun03.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun04;
-  fontDescriptionRun04.characterRun.characterIndex = 36u;
+  fontDescriptionRun04.characterRun.characterIndex     = 36u;
   fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun04.familyLength = fontLatin.size();
-  fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
-  memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
+  fontDescriptionRun04.familyLength                    = fontLatin.size();
+  fontDescriptionRun04.familyName                      = new char[fontDescriptionRun04.familyLength];
+  memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
   fontDescriptionRun04.familyDefined = true;
   fontDescriptionRun04.weightDefined = false;
-  fontDescriptionRun04.widthDefined = false;
-  fontDescriptionRun04.slantDefined = false;
-  fontDescriptionRun04.sizeDefined = false;
+  fontDescriptionRun04.widthDefined  = false;
+  fontDescriptionRun04.slantDefined  = false;
+  fontDescriptionRun04.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun05;
-  fontDescriptionRun05.characterRun.characterIndex = 48u;
+  fontDescriptionRun05.characterRun.characterIndex     = 48u;
   fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun05.familyLength = fontLatin.size();
-  fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
-  memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
+  fontDescriptionRun05.familyLength                    = fontLatin.size();
+  fontDescriptionRun05.familyName                      = new char[fontDescriptionRun05.familyLength];
+  memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
   fontDescriptionRun05.familyDefined = true;
   fontDescriptionRun05.weightDefined = false;
-  fontDescriptionRun05.widthDefined = false;
-  fontDescriptionRun05.slantDefined = false;
-  fontDescriptionRun05.sizeDefined = false;
+  fontDescriptionRun05.widthDefined  = false;
+  fontDescriptionRun05.slantDefined  = false;
+  fontDescriptionRun05.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun06;
-  fontDescriptionRun06.characterRun.characterIndex = 60u;
+  fontDescriptionRun06.characterRun.characterIndex     = 60u;
   fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun06.familyLength = fontArabic.size();
-  fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
-  memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
+  fontDescriptionRun06.familyLength                    = fontArabic.size();
+  fontDescriptionRun06.familyName                      = new char[fontDescriptionRun06.familyLength];
+  memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
   fontDescriptionRun06.familyDefined = true;
   fontDescriptionRun06.weightDefined = false;
-  fontDescriptionRun06.widthDefined = false;
-  fontDescriptionRun06.slantDefined = false;
-  fontDescriptionRun06.sizeDefined = false;
+  fontDescriptionRun06.widthDefined  = false;
+  fontDescriptionRun06.slantDefined  = false;
+  fontDescriptionRun06.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun01 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun02 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun03 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun04 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun05 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun06 );
+  fontDescriptionRuns.PushBack(fontDescriptionRun01);
+  fontDescriptionRuns.PushBack(fontDescriptionRun02);
+  fontDescriptionRuns.PushBack(fontDescriptionRun03);
+  fontDescriptionRuns.PushBack(fontDescriptionRun04);
+  fontDescriptionRuns.PushBack(fontDescriptionRun05);
+  fontDescriptionRuns.PushBack(fontDescriptionRun06);
 
-  float positions[] = { 0.f, 0.f, 0.f, 0.f, 19.f, 33.f };
+  float positions[] = {0.f, 0.f, 0.f, 0.f, 19.f, 33.f};
 
-  Size textArea( 100.f, 300.f );
+  Size      textArea(100.f, 300.f);
   AlignData data =
-  {
-    "End alignment for the last paragraph.",
-    "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
-    textArea,
-    6u,
-    fontDescriptionRuns.Begin(),
-    Text::HorizontalAlignment::END,
-    Text::VerticalAlignment::TOP,
-    48u,
-    26u,
-    6u,
-    positions,
-    Dali::LayoutDirection::LEFT_TO_RIGHT,
-    false
-  };
-
-  if( !AlignTest( data ) )
+    {
+      "End alignment for the last paragraph.",
+      "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
+      textArea,
+      6u,
+      fontDescriptionRuns.Begin(),
+      Text::HorizontalAlignment::END,
+      Text::VerticalAlignment::TOP,
+      48u,
+      26u,
+      6u,
+      positions,
+      Dali::LayoutDirection::LEFT_TO_RIGHT,
+      false};
+
+  if(!AlignTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -4890,112 +6097,111 @@ int UtcDaliTextAlign10(void)
 
   // Calculate text alignment.
 
-  const std::string fontLatin( "TizenSans" );
-  const std::string fontHebrew( "TizenSansHebrew" );
-  const std::string fontArabic( "TizenSansArabic" );
+  const std::string fontLatin("TizenSans");
+  const std::string fontHebrew("TizenSansHebrew");
+  const std::string fontArabic("TizenSansArabic");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun01;
-  fontDescriptionRun01.characterRun.characterIndex = 0u;
+  fontDescriptionRun01.characterRun.characterIndex     = 0u;
   fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun01.familyLength = fontLatin.size();
-  fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
-  memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
+  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;
+  fontDescriptionRun01.widthDefined  = false;
+  fontDescriptionRun01.slantDefined  = false;
+  fontDescriptionRun01.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun02;
-  fontDescriptionRun02.characterRun.characterIndex = 12u;
+  fontDescriptionRun02.characterRun.characterIndex     = 12u;
   fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
-  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);
   fontDescriptionRun02.familyDefined = true;
   fontDescriptionRun02.weightDefined = false;
-  fontDescriptionRun02.widthDefined = false;
-  fontDescriptionRun02.slantDefined = false;
-  fontDescriptionRun02.sizeDefined = false;
+  fontDescriptionRun02.widthDefined  = false;
+  fontDescriptionRun02.slantDefined  = false;
+  fontDescriptionRun02.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun03;
-  fontDescriptionRun03.characterRun.characterIndex = 22u;
+  fontDescriptionRun03.characterRun.characterIndex     = 22u;
   fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun03.familyLength = fontArabic.size();
-  fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
-  memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
+  fontDescriptionRun03.familyLength                    = fontArabic.size();
+  fontDescriptionRun03.familyName                      = new char[fontDescriptionRun03.familyLength];
+  memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
   fontDescriptionRun03.familyDefined = true;
   fontDescriptionRun03.weightDefined = false;
-  fontDescriptionRun03.widthDefined = false;
-  fontDescriptionRun03.slantDefined = false;
-  fontDescriptionRun03.sizeDefined = false;
+  fontDescriptionRun03.widthDefined  = false;
+  fontDescriptionRun03.slantDefined  = false;
+  fontDescriptionRun03.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun04;
-  fontDescriptionRun04.characterRun.characterIndex = 36u;
+  fontDescriptionRun04.characterRun.characterIndex     = 36u;
   fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun04.familyLength = fontLatin.size();
-  fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
-  memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
+  fontDescriptionRun04.familyLength                    = fontLatin.size();
+  fontDescriptionRun04.familyName                      = new char[fontDescriptionRun04.familyLength];
+  memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
   fontDescriptionRun04.familyDefined = true;
   fontDescriptionRun04.weightDefined = false;
-  fontDescriptionRun04.widthDefined = false;
-  fontDescriptionRun04.slantDefined = false;
-  fontDescriptionRun04.sizeDefined = false;
+  fontDescriptionRun04.widthDefined  = false;
+  fontDescriptionRun04.slantDefined  = false;
+  fontDescriptionRun04.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun05;
-  fontDescriptionRun05.characterRun.characterIndex = 48u;
+  fontDescriptionRun05.characterRun.characterIndex     = 48u;
   fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun05.familyLength = fontLatin.size();
-  fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
-  memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
+  fontDescriptionRun05.familyLength                    = fontLatin.size();
+  fontDescriptionRun05.familyName                      = new char[fontDescriptionRun05.familyLength];
+  memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
   fontDescriptionRun05.familyDefined = true;
   fontDescriptionRun05.weightDefined = false;
-  fontDescriptionRun05.widthDefined = false;
-  fontDescriptionRun05.slantDefined = false;
-  fontDescriptionRun05.sizeDefined = false;
+  fontDescriptionRun05.widthDefined  = false;
+  fontDescriptionRun05.slantDefined  = false;
+  fontDescriptionRun05.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun06;
-  fontDescriptionRun06.characterRun.characterIndex = 60u;
+  fontDescriptionRun06.characterRun.characterIndex     = 60u;
   fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun06.familyLength = fontArabic.size();
-  fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
-  memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
+  fontDescriptionRun06.familyLength                    = fontArabic.size();
+  fontDescriptionRun06.familyName                      = new char[fontDescriptionRun06.familyLength];
+  memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
   fontDescriptionRun06.familyDefined = true;
   fontDescriptionRun06.weightDefined = false;
-  fontDescriptionRun06.widthDefined = false;
-  fontDescriptionRun06.slantDefined = false;
-  fontDescriptionRun06.sizeDefined = false;
+  fontDescriptionRun06.widthDefined  = false;
+  fontDescriptionRun06.slantDefined  = false;
+  fontDescriptionRun06.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun01 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun02 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun03 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun04 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun05 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun06 );
+  fontDescriptionRuns.PushBack(fontDescriptionRun01);
+  fontDescriptionRuns.PushBack(fontDescriptionRun02);
+  fontDescriptionRuns.PushBack(fontDescriptionRun03);
+  fontDescriptionRuns.PushBack(fontDescriptionRun04);
+  fontDescriptionRuns.PushBack(fontDescriptionRun05);
+  fontDescriptionRuns.PushBack(fontDescriptionRun06);
 
-  float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
+  float positions[] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
 
-  Size textArea( 100.f, 300.f );
+  Size      textArea(100.f, 300.f);
   AlignData data =
-  {
-    "Begin alignment for the first paragraph.",
-    "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
-    textArea,
-    6u,
-    fontDescriptionRuns.Begin(),
-    Text::HorizontalAlignment::END,
-    Text::VerticalAlignment::TOP,
-    0u,
-    22u,
-    6u,
-    positions,
-    Dali::LayoutDirection::RIGHT_TO_LEFT,
-    true
-  };
+    {
+      "Begin alignment for the first paragraph.",
+      "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
+      textArea,
+      6u,
+      fontDescriptionRuns.Begin(),
+      Text::HorizontalAlignment::END,
+      Text::VerticalAlignment::TOP,
+      0u,
+      22u,
+      6u,
+      positions,
+      Dali::LayoutDirection::RIGHT_TO_LEFT,
+      true};
 
-  if( !AlignTest( data ) )
+  if(!AlignTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -5011,112 +6217,111 @@ int UtcDaliTextAlign11(void)
 
   // Calculate text alignment.
 
-  const std::string fontLatin( "TizenSans" );
-  const std::string fontHebrew( "TizenSansHebrew" );
-  const std::string fontArabic( "TizenSansArabic" );
+  const std::string fontLatin("TizenSans");
+  const std::string fontHebrew("TizenSansHebrew");
+  const std::string fontArabic("TizenSansArabic");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun01;
-  fontDescriptionRun01.characterRun.characterIndex = 0u;
+  fontDescriptionRun01.characterRun.characterIndex     = 0u;
   fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun01.familyLength = fontLatin.size();
-  fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
-  memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
+  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;
+  fontDescriptionRun01.widthDefined  = false;
+  fontDescriptionRun01.slantDefined  = false;
+  fontDescriptionRun01.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun02;
-  fontDescriptionRun02.characterRun.characterIndex = 12u;
+  fontDescriptionRun02.characterRun.characterIndex     = 12u;
   fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
-  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);
   fontDescriptionRun02.familyDefined = true;
   fontDescriptionRun02.weightDefined = false;
-  fontDescriptionRun02.widthDefined = false;
-  fontDescriptionRun02.slantDefined = false;
-  fontDescriptionRun02.sizeDefined = false;
+  fontDescriptionRun02.widthDefined  = false;
+  fontDescriptionRun02.slantDefined  = false;
+  fontDescriptionRun02.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun03;
-  fontDescriptionRun03.characterRun.characterIndex = 22u;
+  fontDescriptionRun03.characterRun.characterIndex     = 22u;
   fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun03.familyLength = fontArabic.size();
-  fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
-  memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
+  fontDescriptionRun03.familyLength                    = fontArabic.size();
+  fontDescriptionRun03.familyName                      = new char[fontDescriptionRun03.familyLength];
+  memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
   fontDescriptionRun03.familyDefined = true;
   fontDescriptionRun03.weightDefined = false;
-  fontDescriptionRun03.widthDefined = false;
-  fontDescriptionRun03.slantDefined = false;
-  fontDescriptionRun03.sizeDefined = false;
+  fontDescriptionRun03.widthDefined  = false;
+  fontDescriptionRun03.slantDefined  = false;
+  fontDescriptionRun03.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun04;
-  fontDescriptionRun04.characterRun.characterIndex = 36u;
+  fontDescriptionRun04.characterRun.characterIndex     = 36u;
   fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun04.familyLength = fontLatin.size();
-  fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
-  memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
+  fontDescriptionRun04.familyLength                    = fontLatin.size();
+  fontDescriptionRun04.familyName                      = new char[fontDescriptionRun04.familyLength];
+  memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
   fontDescriptionRun04.familyDefined = true;
   fontDescriptionRun04.weightDefined = false;
-  fontDescriptionRun04.widthDefined = false;
-  fontDescriptionRun04.slantDefined = false;
-  fontDescriptionRun04.sizeDefined = false;
+  fontDescriptionRun04.widthDefined  = false;
+  fontDescriptionRun04.slantDefined  = false;
+  fontDescriptionRun04.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun05;
-  fontDescriptionRun05.characterRun.characterIndex = 48u;
+  fontDescriptionRun05.characterRun.characterIndex     = 48u;
   fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun05.familyLength = fontLatin.size();
-  fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
-  memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
+  fontDescriptionRun05.familyLength                    = fontLatin.size();
+  fontDescriptionRun05.familyName                      = new char[fontDescriptionRun05.familyLength];
+  memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
   fontDescriptionRun05.familyDefined = true;
   fontDescriptionRun05.weightDefined = false;
-  fontDescriptionRun05.widthDefined = false;
-  fontDescriptionRun05.slantDefined = false;
-  fontDescriptionRun05.sizeDefined = false;
+  fontDescriptionRun05.widthDefined  = false;
+  fontDescriptionRun05.slantDefined  = false;
+  fontDescriptionRun05.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun06;
-  fontDescriptionRun06.characterRun.characterIndex = 60u;
+  fontDescriptionRun06.characterRun.characterIndex     = 60u;
   fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun06.familyLength = fontArabic.size();
-  fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
-  memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
+  fontDescriptionRun06.familyLength                    = fontArabic.size();
+  fontDescriptionRun06.familyName                      = new char[fontDescriptionRun06.familyLength];
+  memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
   fontDescriptionRun06.familyDefined = true;
   fontDescriptionRun06.weightDefined = false;
-  fontDescriptionRun06.widthDefined = false;
-  fontDescriptionRun06.slantDefined = false;
-  fontDescriptionRun06.sizeDefined = false;
+  fontDescriptionRun06.widthDefined  = false;
+  fontDescriptionRun06.slantDefined  = false;
+  fontDescriptionRun06.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun01 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun02 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun03 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun04 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun05 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun06 );
+  fontDescriptionRuns.PushBack(fontDescriptionRun01);
+  fontDescriptionRuns.PushBack(fontDescriptionRun02);
+  fontDescriptionRuns.PushBack(fontDescriptionRun03);
+  fontDescriptionRuns.PushBack(fontDescriptionRun04);
+  fontDescriptionRuns.PushBack(fontDescriptionRun05);
+  fontDescriptionRuns.PushBack(fontDescriptionRun06);
 
-  float positions[] = { 19.f, 30.f, 33.f, 0.f, 0.f, 0.f };
+  float positions[] = {19.f, 30.f, 33.f, 0.f, 0.f, 0.f};
 
-  Size textArea( 100.f, 300.f );
+  Size      textArea(100.f, 300.f);
   AlignData data =
-  {
-    "End alignment for the last paragraph.",
-    "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
-    textArea,
-    6u,
-    fontDescriptionRuns.Begin(),
-    Text::HorizontalAlignment::END,
-    Text::VerticalAlignment::TOP,
-    0u,
-    26u,
-    6u,
-    positions,
-    Dali::LayoutDirection::LEFT_TO_RIGHT,
-    true
-  };
+    {
+      "End alignment for the last paragraph.",
+      "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
+      textArea,
+      6u,
+      fontDescriptionRuns.Begin(),
+      Text::HorizontalAlignment::END,
+      Text::VerticalAlignment::TOP,
+      0u,
+      26u,
+      6u,
+      positions,
+      Dali::LayoutDirection::LEFT_TO_RIGHT,
+      true};
 
-  if( !AlignTest( data ) )
+  if(!AlignTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -5132,112 +6337,111 @@ int UtcDaliTextAlign12(void)
 
   // Calculate text alignment.
 
-  const std::string fontLatin( "TizenSans" );
-  const std::string fontHebrew( "TizenSansHebrew" );
-  const std::string fontArabic( "TizenSansArabic" );
+  const std::string fontLatin("TizenSans");
+  const std::string fontHebrew("TizenSansHebrew");
+  const std::string fontArabic("TizenSansArabic");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun01;
-  fontDescriptionRun01.characterRun.characterIndex = 0u;
+  fontDescriptionRun01.characterRun.characterIndex     = 0u;
   fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun01.familyLength = fontLatin.size();
-  fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
-  memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
+  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;
+  fontDescriptionRun01.widthDefined  = false;
+  fontDescriptionRun01.slantDefined  = false;
+  fontDescriptionRun01.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun02;
-  fontDescriptionRun02.characterRun.characterIndex = 12u;
+  fontDescriptionRun02.characterRun.characterIndex     = 12u;
   fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
-  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);
   fontDescriptionRun02.familyDefined = true;
   fontDescriptionRun02.weightDefined = false;
-  fontDescriptionRun02.widthDefined = false;
-  fontDescriptionRun02.slantDefined = false;
-  fontDescriptionRun02.sizeDefined = false;
+  fontDescriptionRun02.widthDefined  = false;
+  fontDescriptionRun02.slantDefined  = false;
+  fontDescriptionRun02.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun03;
-  fontDescriptionRun03.characterRun.characterIndex = 22u;
+  fontDescriptionRun03.characterRun.characterIndex     = 22u;
   fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun03.familyLength = fontArabic.size();
-  fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
-  memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
+  fontDescriptionRun03.familyLength                    = fontArabic.size();
+  fontDescriptionRun03.familyName                      = new char[fontDescriptionRun03.familyLength];
+  memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
   fontDescriptionRun03.familyDefined = true;
   fontDescriptionRun03.weightDefined = false;
-  fontDescriptionRun03.widthDefined = false;
-  fontDescriptionRun03.slantDefined = false;
-  fontDescriptionRun03.sizeDefined = false;
+  fontDescriptionRun03.widthDefined  = false;
+  fontDescriptionRun03.slantDefined  = false;
+  fontDescriptionRun03.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun04;
-  fontDescriptionRun04.characterRun.characterIndex = 36u;
+  fontDescriptionRun04.characterRun.characterIndex     = 36u;
   fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun04.familyLength = fontLatin.size();
-  fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
-  memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
+  fontDescriptionRun04.familyLength                    = fontLatin.size();
+  fontDescriptionRun04.familyName                      = new char[fontDescriptionRun04.familyLength];
+  memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
   fontDescriptionRun04.familyDefined = true;
   fontDescriptionRun04.weightDefined = false;
-  fontDescriptionRun04.widthDefined = false;
-  fontDescriptionRun04.slantDefined = false;
-  fontDescriptionRun04.sizeDefined = false;
+  fontDescriptionRun04.widthDefined  = false;
+  fontDescriptionRun04.slantDefined  = false;
+  fontDescriptionRun04.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun05;
-  fontDescriptionRun05.characterRun.characterIndex = 48u;
+  fontDescriptionRun05.characterRun.characterIndex     = 48u;
   fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
-  fontDescriptionRun05.familyLength = fontLatin.size();
-  fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
-  memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
+  fontDescriptionRun05.familyLength                    = fontLatin.size();
+  fontDescriptionRun05.familyName                      = new char[fontDescriptionRun05.familyLength];
+  memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
   fontDescriptionRun05.familyDefined = true;
   fontDescriptionRun05.weightDefined = false;
-  fontDescriptionRun05.widthDefined = false;
-  fontDescriptionRun05.slantDefined = false;
-  fontDescriptionRun05.sizeDefined = false;
+  fontDescriptionRun05.widthDefined  = false;
+  fontDescriptionRun05.slantDefined  = false;
+  fontDescriptionRun05.sizeDefined   = false;
 
   FontDescriptionRun fontDescriptionRun06;
-  fontDescriptionRun06.characterRun.characterIndex = 60u;
+  fontDescriptionRun06.characterRun.characterIndex     = 60u;
   fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
-  fontDescriptionRun06.familyLength = fontArabic.size();
-  fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
-  memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
+  fontDescriptionRun06.familyLength                    = fontArabic.size();
+  fontDescriptionRun06.familyName                      = new char[fontDescriptionRun06.familyLength];
+  memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
   fontDescriptionRun06.familyDefined = true;
   fontDescriptionRun06.weightDefined = false;
-  fontDescriptionRun06.widthDefined = false;
-  fontDescriptionRun06.slantDefined = false;
-  fontDescriptionRun06.sizeDefined = false;
+  fontDescriptionRun06.widthDefined  = false;
+  fontDescriptionRun06.slantDefined  = false;
+  fontDescriptionRun06.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns;
-  fontDescriptionRuns.PushBack( fontDescriptionRun01 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun02 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun03 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun04 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun05 );
-  fontDescriptionRuns.PushBack( fontDescriptionRun06 );
+  fontDescriptionRuns.PushBack(fontDescriptionRun01);
+  fontDescriptionRuns.PushBack(fontDescriptionRun02);
+  fontDescriptionRuns.PushBack(fontDescriptionRun03);
+  fontDescriptionRuns.PushBack(fontDescriptionRun04);
+  fontDescriptionRuns.PushBack(fontDescriptionRun05);
+  fontDescriptionRuns.PushBack(fontDescriptionRun06);
 
-  float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
+  float positions[] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
 
-  Size textArea( 100.f, 300.f );
+  Size      textArea(100.f, 300.f);
   AlignData data =
-  {
-    "Begin alignment for the first paragraph.",
-    "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
-    textArea,
-    6u,
-    fontDescriptionRuns.Begin(),
-    Text::HorizontalAlignment::BEGIN,
-    Text::VerticalAlignment::TOP,
-    48u,
-    26u,
-    6u,
-    positions,
-    Dali::LayoutDirection::LEFT_TO_RIGHT,
-    true
-  };
-
-  if( !AlignTest( data ) )
+    {
+      "Begin alignment for the first paragraph.",
+      "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
+      textArea,
+      6u,
+      fontDescriptionRuns.Begin(),
+      Text::HorizontalAlignment::BEGIN,
+      Text::VerticalAlignment::TOP,
+      48u,
+      26u,
+      6u,
+      positions,
+      Dali::LayoutDirection::LEFT_TO_RIGHT,
+      true};
+
+  if(!AlignTest(data))
   {
     tet_result(TET_FAIL);
   }
@@ -5252,10 +6456,10 @@ int UtcDaliTextLayoutSetGetDefaultLineSpacing(void)
   tet_infoline(" UtcDaliTextLayoutSetGetDefaultLineSpacing");
 
   Layout::Engine engine;
-  DALI_TEST_EQUALS( 0.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
+  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 );
+  engine.SetDefaultLineSpacing(10.f);
+  DALI_TEST_EQUALS(10.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION);
 
   tet_result(TET_PASS);
   END_TEST;
@@ -5267,188 +6471,182 @@ int UtcDaliTextLayoutGetGlyphMetrics(void)
 
   // Test retrieving metrics from group of characters
 
-  const std::string fontFamily( "TizenSansHindi" );
+  const std::string fontFamily("TizenSansHindi");
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun01;
-  fontDescriptionRun01.characterRun.characterIndex = 0u;
+  fontDescriptionRun01.characterRun.characterIndex     = 0u;
   fontDescriptionRun01.characterRun.numberOfCharacters = 2u;
-  fontDescriptionRun01.familyLength = fontFamily.size();
-  fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
-  memcpy( fontDescriptionRun01.familyName, fontFamily.c_str(), fontDescriptionRun01.familyLength );
+  fontDescriptionRun01.familyLength                    = fontFamily.size();
+  fontDescriptionRun01.familyName                      = new char[fontDescriptionRun01.familyLength];
+  memcpy(fontDescriptionRun01.familyName, fontFamily.c_str(), fontDescriptionRun01.familyLength);
   fontDescriptionRun01.familyDefined = true;
   fontDescriptionRun01.weightDefined = false;
-  fontDescriptionRun01.widthDefined = false;
-  fontDescriptionRun01.slantDefined = false;
-  fontDescriptionRun01.sizeDefined = false;
+  fontDescriptionRun01.widthDefined  = false;
+  fontDescriptionRun01.slantDefined  = false;
+  fontDescriptionRun01.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun02;
-  fontDescriptionRun02.characterRun.characterIndex = 0u;
+  fontDescriptionRun02.characterRun.characterIndex     = 0u;
   fontDescriptionRun02.characterRun.numberOfCharacters = 2u;
-  fontDescriptionRun02.familyLength = fontFamily.size();
-  fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
-  memcpy( fontDescriptionRun02.familyName, fontFamily.c_str(), fontDescriptionRun02.familyLength );
+  fontDescriptionRun02.familyLength                    = fontFamily.size();
+  fontDescriptionRun02.familyName                      = new char[fontDescriptionRun02.familyLength];
+  memcpy(fontDescriptionRun02.familyName, fontFamily.c_str(), fontDescriptionRun02.familyLength);
   fontDescriptionRun02.familyDefined = true;
   fontDescriptionRun02.weightDefined = false;
-  fontDescriptionRun02.widthDefined = false;
-  fontDescriptionRun02.slantDefined = false;
-  fontDescriptionRun02.sizeDefined = false;
+  fontDescriptionRun02.widthDefined  = false;
+  fontDescriptionRun02.slantDefined  = false;
+  fontDescriptionRun02.sizeDefined   = false;
 
   // Set a known font description
   FontDescriptionRun fontDescriptionRun03;
-  fontDescriptionRun03.characterRun.characterIndex = 0u;
+  fontDescriptionRun03.characterRun.characterIndex     = 0u;
   fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
-  fontDescriptionRun03.familyLength = fontFamily.size();
-  fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
-  memcpy( fontDescriptionRun03.familyName, fontFamily.c_str(), fontDescriptionRun03.familyLength );
+  fontDescriptionRun03.familyLength                    = fontFamily.size();
+  fontDescriptionRun03.familyName                      = new char[fontDescriptionRun03.familyLength];
+  memcpy(fontDescriptionRun03.familyName, fontFamily.c_str(), fontDescriptionRun03.familyLength);
   fontDescriptionRun03.familyDefined = true;
   fontDescriptionRun03.weightDefined = false;
-  fontDescriptionRun03.widthDefined = false;
-  fontDescriptionRun03.slantDefined = false;
-  fontDescriptionRun03.sizeDefined = false;
+  fontDescriptionRun03.widthDefined  = false;
+  fontDescriptionRun03.slantDefined  = false;
+  fontDescriptionRun03.sizeDefined   = false;
 
   Vector<FontDescriptionRun> fontDescriptionRuns01;
-  fontDescriptionRuns01.PushBack( fontDescriptionRun01 );
+  fontDescriptionRuns01.PushBack(fontDescriptionRun01);
 
   Vector<FontDescriptionRun> fontDescriptionRuns02;
-  fontDescriptionRuns02.PushBack( fontDescriptionRun02 );
+  fontDescriptionRuns02.PushBack(fontDescriptionRun02);
 
   Vector<FontDescriptionRun> fontDescriptionRuns03;
-  fontDescriptionRuns03.PushBack( fontDescriptionRun03 );
+  fontDescriptionRuns03.PushBack(fontDescriptionRun03);
 
   // Set a text area.
   Size textArea(100.f, 100.f);
 
-
   // Group: second glyph doesn't exceed the width of the first glyph
-  float positions01[] = { 0.f, -11.f };
+  float positions01[] = {0.f, -11.f};
 
   struct LineRun line01 =
-  {
-    { 0u, 1u },
-    { 0u, 1u },
-    11.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {0u, 1u},
+      {0u, 1u},
+      11.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   Vector<LineRun> lines01;
-  lines01.PushBack( line01 );
+  lines01.PushBack(line01);
 
   Size layoutSize01 = Vector2(11.f, 20.f);
 
   // Group: second glyph doesn't exceed the width of the first glyph
-  float positions02[] = { 0.f, -11.f, 7.f, -15.f, };
-
-  struct LineRun line02 =
-  {
-    { 0u, 2u },
-    { 0u, 2u },
-    16.f,
-    15.f,
-    -5.f,
-    0.f,
+  float positions02[] = {
     0.f,
-    0.f,
-    false,
-    false
+    -11.f,
+    7.f,
+    -15.f,
   };
+
+  struct LineRun line02 =
+    {
+      {0u, 2u},
+      {0u, 2u},
+      16.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   Vector<LineRun> lines02;
-  lines02.PushBack( line02 );
+  lines02.PushBack(line02);
 
   Size layoutSize02 = Vector2(16.f, 20.f);
 
   // Group: second glyph doesn't exceed the width of the first glyph
-  float positions03[] = { 0.f, -11.f , 2.f, -15.f };
+  float positions03[] = {0.f, -11.f, 2.f, -15.f};
 
   struct LineRun line03 =
-  {
-    { 0u, 2u },
-    { 0u, 2u },
-    11.f,
-    15.f,
-    -5.f,
-    0.f,
-    0.f,
-    0.f,
-    false,
-    false
-  };
+    {
+      {0u, 2u},
+      {0u, 2u},
+      11.f,
+      15.f,
+      -5.f,
+      0.f,
+      0.f,
+      0.f,
+      false,
+      false};
   Vector<LineRun> lines03;
-  lines03.PushBack( line03 );
+  lines03.PushBack(line03);
 
   Size layoutSize03 = Vector2(11.f, 20.f);
 
- /////////////////////////////
 /////////////////////////////
 
   struct LayoutTextData data[] =
-  {
-    {
-      "Single glyph",
-      "प",
-      textArea,
-      1u,
-      fontDescriptionRuns01.Begin(),
-      layoutSize01,
-      1u,
-      positions01,
-      1u,
-      lines01.Begin(),
-      Layout::Engine::SINGLE_LINE_BOX,
-      0u,
-      1u,
-      false,
-      DevelText::EllipsisPosition::END,
-      true
-    },
     {
-      "Group: second glyph exceeds the width of the first glyph",
-      "पो",
-      textArea,
-      1u,
-      fontDescriptionRuns02.Begin(),
-      layoutSize02,
-      2u,
-      positions02,
-      1u,
-      lines02.Begin(),
-      Layout::Engine::SINGLE_LINE_BOX,
-      0u,
-      2u,
-      false,
-      DevelText::EllipsisPosition::END,
-      true
-    },
-   {
-      "Group: second glyph doesn't exceed the width of the first glyph",
-      "पे",
-      textArea,
-      1u,
-      fontDescriptionRuns03.Begin(),
-      layoutSize03,
-      2u,
-      positions03,
-      1u,
-      lines03.Begin(),
-      Layout::Engine::SINGLE_LINE_BOX,
-      0u,
-      2u,
-      false,
-      DevelText::EllipsisPosition::END,
-      true
-    }
-  };
-  const unsigned int numberOfTests = sizeof(data)/sizeof(LayoutTextData);
-
-  for( unsigned int index = 0u; index < numberOfTests; ++index )
+      {"Single glyph",
+       "प",
+       textArea,
+       1u,
+       fontDescriptionRuns01.Begin(),
+       layoutSize01,
+       1u,
+       positions01,
+       1u,
+       lines01.Begin(),
+       Layout::Engine::SINGLE_LINE_BOX,
+       0u,
+       1u,
+       false,
+       DevelText::EllipsisPosition::END,
+       true},
+      {"Group: second glyph exceeds the width of the first glyph",
+       "पो",
+       textArea,
+       1u,
+       fontDescriptionRuns02.Begin(),
+       layoutSize02,
+       2u,
+       positions02,
+       1u,
+       lines02.Begin(),
+       Layout::Engine::SINGLE_LINE_BOX,
+       0u,
+       2u,
+       false,
+       DevelText::EllipsisPosition::END,
+       true},
+      {"Group: second glyph doesn't exceed the width of the first glyph",
+       "पे",
+       textArea,
+       1u,
+       fontDescriptionRuns03.Begin(),
+       layoutSize03,
+       2u,
+       positions03,
+       1u,
+       lines03.Begin(),
+       Layout::Engine::SINGLE_LINE_BOX,
+       0u,
+       2u,
+       false,
+       DevelText::EllipsisPosition::END,
+       true}};
+  const unsigned int numberOfTests = sizeof(data) / sizeof(LayoutTextData);
+
+  for(unsigned int index = 0u; index < numberOfTests; ++index)
   {
     ToolkitTestApplication application;
-    if( !LayoutTextTest( data[index] ) )
+    if(!LayoutTextTest(data[index]))
     {
       tet_result(TET_FAIL);
     }
index 59a0dfd..80624a8 100755 (executable)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
  *
  */
 
-#include <iostream>
 #include <stdlib.h>
 #include <unistd.h>
+#include <iostream>
 
-#include <dali-toolkit/internal/text/shaper.h>
 #include <dali-toolkit-test-suite-utils.h>
 #include <dali-toolkit/dali-toolkit.h>
+#include <dali-toolkit/internal/text/shaper.h>
 #include <toolkit-text-utils.h>
 
 using namespace Dali;
@@ -45,61 +45,61 @@ using namespace Text;
 
 namespace
 {
-const std::string DEFAULT_FONT_DIR( "/resources/fonts" );
+const std::string DEFAULT_FONT_DIR("/resources/fonts");
 
 struct GlyphInfoData
 {
-  FontId fontId;     ///< Identifies the font containing the glyph
-  GlyphIndex index;  ///< Uniquely identifies a glyph for a given FontId
-  float width;       ///< The width of the glyph
-  float height;      ///< The height of the glyph
-  float xBearing;    ///< The distance from the cursor position to the leftmost border of the glyph
-  float yBearing;    ///< The distance from the baseline to the topmost border of the glyph
-  float advance;     ///< The distance to move the cursor for this glyph
-  float scaleFactor; ///< The scaling applied (fixed-size fonts only)
-  bool isItalicRequired; ///< Whether the italic style is required.
-  bool isBoldRequired;   ///< Whether the bold style is required.
+  FontId     fontId;           ///< Identifies the font containing the glyph
+  GlyphIndex index;            ///< Uniquely identifies a glyph for a given FontId
+  float      width;            ///< The width of the glyph
+  float      height;           ///< The height of the glyph
+  float      xBearing;         ///< The distance from the cursor position to the leftmost border of the glyph
+  float      yBearing;         ///< The distance from the baseline to the topmost border of the glyph
+  float      advance;          ///< The distance to move the cursor for this glyph
+  float      scaleFactor;      ///< The scaling applied (fixed-size fonts only)
+  bool       isItalicRequired; ///< Whether the italic style is required.
+  bool       isBoldRequired;   ///< Whether the bold style is required.
 };
 
-bool IsEqualGlyph ( const GlyphInfoData& glyphData, const GlyphInfo& glyph )
+bool IsEqualGlyph(const GlyphInfoData& glyphData, const GlyphInfo& glyph)
 {
-  if( glyphData.fontId != glyph.fontId )
+  if(glyphData.fontId != glyph.fontId)
   {
     return false;
   }
-  if( glyphData.index != glyph.index )
+  if(glyphData.index != glyph.index)
   {
     return false;
   }
-  if( fabsf( glyphData.width - glyph.width ) > Math::MACHINE_EPSILON_1000 )
+  if(fabsf(glyphData.width - glyph.width) > Math::MACHINE_EPSILON_1000)
   {
     return false;
   }
-  if( fabsf( glyphData.height - glyph.height ) > Math::MACHINE_EPSILON_1000 )
+  if(fabsf(glyphData.height - glyph.height) > Math::MACHINE_EPSILON_1000)
   {
     return false;
   }
-  if( fabsf( glyphData.xBearing - glyph.xBearing ) > Math::MACHINE_EPSILON_1000 )
+  if(fabsf(glyphData.xBearing - glyph.xBearing) > Math::MACHINE_EPSILON_1000)
   {
     return false;
   }
-  if( fabsf( glyphData.yBearing - glyph.yBearing ) > Math::MACHINE_EPSILON_1000 )
+  if(fabsf(glyphData.yBearing - glyph.yBearing) > Math::MACHINE_EPSILON_1000)
   {
     return false;
   }
-  if( fabsf( glyphData.advance - floor(glyph.advance) ) > Math::MACHINE_EPSILON_1000 )
+  if(fabsf(glyphData.advance - floor(glyph.advance)) > Math::MACHINE_EPSILON_1000)
   {
     return false;
   }
-  if( fabsf( glyphData.scaleFactor - glyph.scaleFactor ) > Math::MACHINE_EPSILON_1000 )
+  if(fabsf(glyphData.scaleFactor - glyph.scaleFactor) > Math::MACHINE_EPSILON_1000)
   {
     return false;
   }
-  if( glyphData.isItalicRequired != glyph.isItalicRequired )
+  if(glyphData.isItalicRequired != glyph.isItalicRequired)
   {
     return false;
   }
-  if( glyphData.isBoldRequired != glyph.isBoldRequired )
+  if(glyphData.isBoldRequired != glyph.isBoldRequired)
   {
     return false;
   }
@@ -109,99 +109,100 @@ bool IsEqualGlyph ( const GlyphInfoData& glyphData, const GlyphInfo& glyph )
 
 struct ShapeInfoData
 {
-  std::string     description;                        ///< Description of the test.
-  std::string     text;                               ///< input text.
-  uint32_t        index;                              ///< The index from where to start to query the break info.
-  uint32_t        numberOfCharacters;                 ///< The requested number of characters.
-  uint32_t        expectedNumberOfGlyphs;             ///< The expected number of glyphs.
-  GlyphInfoData*  glyphs;                             ///< The glyphs.
-  CharacterIndex* characterIndices;                   ///< The character index for each glyph.
-  Length*         charactersPerGlyph;                 ///< The characters per glyph.
-  uint32_t        expectedNumberOfNewParagraphGlyphs; ///< The expected number of glyphs.
-  GlyphIndex*     newParagraphGlyphs;                 ///< Indices to the new paragraphs glyphs.
-  bool            markupProcessorEnabled;             //< Enable markup processor to use markup text.
-  Vector<FontDescriptionRun> fontDescriptions;        ///< Fonts which is used for text.
+  std::string                description;                        ///< Description of the test.
+  std::string                text;                               ///< input text.
+  uint32_t                   index;                              ///< The index from where to start to query the break info.
+  uint32_t                   numberOfCharacters;                 ///< The requested number of characters.
+  uint32_t                   expectedNumberOfGlyphs;             ///< The expected number of glyphs.
+  GlyphInfoData*             glyphs;                             ///< The glyphs.
+  CharacterIndex*            characterIndices;                   ///< The character index for each glyph.
+  Length*                    charactersPerGlyph;                 ///< The characters per glyph.
+  uint32_t                   expectedNumberOfNewParagraphGlyphs; ///< The expected number of glyphs.
+  GlyphIndex*                newParagraphGlyphs;                 ///< Indices to the new paragraphs glyphs.
+  bool                       markupProcessorEnabled;             //< Enable markup processor to use markup text.
+  Vector<FontDescriptionRun> fontDescriptions;                   ///< Fonts which is used for text.
 };
 
-bool ShapeInfoTest( const ShapeInfoData& data )
+bool ShapeInfoTest(const ShapeInfoData& data)
 {
   // 1) Create the model.
-  ModelPtr textModel;
+  ModelPtr   textModel;
   MetricsPtr metrics;
-  Size textArea(100.f, 60.f);
-  Size layoutSize;
+  Size       textArea(100.f, 60.f);
+  Size       layoutSize;
 
   const Vector<FontDescriptionRun> fontDescriptions;
-  const LayoutOptions options;
-
-  CreateTextModel( data.text,
-                   textArea,
-                   data.fontDescriptions,
-                   options,
-                   layoutSize,
-                   textModel,
-                   metrics,
-                   data.markupProcessorEnabled,
-                   LineWrap::WORD,
-                   false,
-                   Toolkit::DevelText::EllipsisPosition::END,
-                   0.f );
+  const LayoutOptions              options;
+
+  CreateTextModel(data.text,
+                  textArea,
+                  data.fontDescriptions,
+                  options,
+                  layoutSize,
+                  textModel,
+                  metrics,
+                  data.markupProcessorEnabled,
+                  LineWrap::WORD,
+                  false,
+                  Toolkit::DevelText::EllipsisPosition::END,
+                  0.0f, // lineSpacing
+                  0.0f  // characterSpacing
+  );
 
   LogicalModelPtr logicalModel = textModel->mLogicalModel;
-  VisualModelPtr visualModel = textModel->mVisualModel;
+  VisualModelPtr  visualModel  = textModel->mVisualModel;
 
   // 2) Clear the model.
 
-  Vector<GlyphInfo>& glyphs = visualModel->mGlyphs;
-  Vector<CharacterIndex>& glyphToCharacter = visualModel->mGlyphsToCharacters;
-  Vector<Length>& charactersPerGlyph = visualModel->mCharactersPerGlyph;
-  Vector<GlyphIndex>& charactersToGlyph = visualModel->mCharactersToGlyph;
-  Vector<Length>& glyphsPerCharacter = visualModel->mGlyphsPerCharacter;
+  Vector<GlyphInfo>&      glyphs             = visualModel->mGlyphs;
+  Vector<CharacterIndex>& glyphToCharacter   = visualModel->mGlyphsToCharacters;
+  Vector<Length>&         charactersPerGlyph = visualModel->mCharactersPerGlyph;
+  Vector<GlyphIndex>&     charactersToGlyph  = visualModel->mCharactersToGlyph;
+  Vector<Length>&         glyphsPerCharacter = visualModel->mGlyphsPerCharacter;
 
   // Get the glyph index.
   GlyphIndex glyphIndex = 0u;
-  if( 0u != visualModel->mCharactersToGlyph.Count() )
+  if(0u != visualModel->mCharactersToGlyph.Count())
   {
-    glyphIndex = *( visualModel->mCharactersToGlyph.Begin() + data.index );
+    glyphIndex = *(visualModel->mCharactersToGlyph.Begin() + data.index);
 
     const CharacterIndex lastCharacterIndex = data.index + data.numberOfCharacters - 1u;
-    const Length numberOfGlyphs = *( visualModel->mCharactersToGlyph.Begin() + lastCharacterIndex ) + *( visualModel->mGlyphsPerCharacter.Begin() + lastCharacterIndex ) - glyphIndex;
+    const Length         numberOfGlyphs     = *(visualModel->mCharactersToGlyph.Begin() + lastCharacterIndex) + *(visualModel->mGlyphsPerCharacter.Begin() + lastCharacterIndex) - glyphIndex;
 
     // Erase the glyph info from the text model.
     // Got from the ShapeText() function.
-    glyphs.Erase( glyphs.Begin() + glyphIndex, glyphs.Begin() + glyphIndex + numberOfGlyphs );
-    glyphToCharacter.Erase( glyphToCharacter.Begin() + glyphIndex, glyphToCharacter.Begin() + glyphIndex + numberOfGlyphs );
-    charactersPerGlyph.Erase( charactersPerGlyph.Begin() + glyphIndex, charactersPerGlyph.Begin() + glyphIndex + numberOfGlyphs );
+    glyphs.Erase(glyphs.Begin() + glyphIndex, glyphs.Begin() + glyphIndex + numberOfGlyphs);
+    glyphToCharacter.Erase(glyphToCharacter.Begin() + glyphIndex, glyphToCharacter.Begin() + glyphIndex + numberOfGlyphs);
+    charactersPerGlyph.Erase(charactersPerGlyph.Begin() + glyphIndex, charactersPerGlyph.Begin() + glyphIndex + numberOfGlyphs);
 
     // Got from the VisualModel::CreateCharacterToGlyphTable() and the VisualModel::CreateGlyphsPerCharacterTable() methods.
-    charactersToGlyph.Erase( charactersToGlyph.Begin() + data.index,
-                             charactersToGlyph.Begin() + data.index + data.numberOfCharacters );
-    glyphsPerCharacter.Erase( glyphsPerCharacter.Begin() + data.index,
-                              glyphsPerCharacter.Begin() + data.index + data.numberOfCharacters );
+    charactersToGlyph.Erase(charactersToGlyph.Begin() + data.index,
+                            charactersToGlyph.Begin() + data.index + data.numberOfCharacters);
+    glyphsPerCharacter.Erase(glyphsPerCharacter.Begin() + data.index,
+                             glyphsPerCharacter.Begin() + data.index + data.numberOfCharacters);
 
     // Update the glyph to character indices.
-    for( Vector<CharacterIndex>::Iterator it = glyphToCharacter.Begin() + glyphIndex,
-           endIt = glyphToCharacter.End();
-         it != endIt;
-         ++it )
+    for(Vector<CharacterIndex>::Iterator it    = glyphToCharacter.Begin() + glyphIndex,
+                                         endIt = glyphToCharacter.End();
+        it != endIt;
+        ++it)
     {
       CharacterIndex& index = *it;
       index -= data.numberOfCharacters;
     }
-
   }
 
   // Reset the metrics got from the model as the ShapeText() function doesn't retrieve them.
-  for( Vector<GlyphInfo>::Iterator it = glyphs.Begin(),
-         endIt = glyphs.End();
-       it != endIt;
-       ++it )
+  for(Vector<GlyphInfo>::Iterator it    = glyphs.Begin(),
+                                  endIt = glyphs.End();
+      it != endIt;
+      ++it)
   {
-    GlyphInfo& info = *it;
-    info.width = 0.f;
-    info.height = 0.f;
-    info.xBearing = 0.f;
-    info.yBearing = 0.f;
+    GlyphInfo& info  = *it;
+    info.width       = 0.f;
+    info.height      = 0.f;
+    info.xBearing    = 0.f;
+    info.yBearing    = 0.f;
     info.scaleFactor = 0.f;
   }
 
@@ -209,39 +210,39 @@ bool ShapeInfoTest( const ShapeInfoData& data )
 
   Vector<GlyphIndex> newParagraphGlyphs;
 
-  ShapeText( logicalModel->mText,
-             logicalModel->mLineBreakInfo,
-             logicalModel->mScriptRuns,
-             logicalModel->mFontRuns,
-             data.index,
-             glyphIndex,
-             data.numberOfCharacters,
-             glyphs,
-             glyphToCharacter,
-             charactersPerGlyph,
-             newParagraphGlyphs );
+  ShapeText(logicalModel->mText,
+            logicalModel->mLineBreakInfo,
+            logicalModel->mScriptRuns,
+            logicalModel->mFontRuns,
+            data.index,
+            glyphIndex,
+            data.numberOfCharacters,
+            glyphs,
+            glyphToCharacter,
+            charactersPerGlyph,
+            newParagraphGlyphs);
 
   // Clear the advance of the new paragraph glyphs.
-  for( Vector<GlyphIndex>::Iterator it = newParagraphGlyphs.Begin(),
-         endIt = newParagraphGlyphs.End();
-       it != endIt;
-       ++it )
+  for(Vector<GlyphIndex>::Iterator it    = newParagraphGlyphs.Begin(),
+                                   endIt = newParagraphGlyphs.End();
+      it != endIt;
+      ++it)
   {
-    GlyphInfo& info = *( glyphs.Begin() + *it );
-    info.advance = 0.f;
+    GlyphInfo& info = *(glyphs.Begin() + *it);
+    info.advance    = 0.f;
   }
 
   // 4) Compare the results.
 
-  if( data.expectedNumberOfGlyphs != glyphs.Count() )
+  if(data.expectedNumberOfGlyphs != glyphs.Count())
   {
     std::cout << "  Different number of glyphs : " << glyphs.Count() << ", expected : " << data.expectedNumberOfGlyphs << std::endl;
     return false;
   }
 
-  for( unsigned int index = 0u; index < data.expectedNumberOfGlyphs; ++index )
+  for(unsigned int index = 0u; index < data.expectedNumberOfGlyphs; ++index)
   {
-    if( !IsEqualGlyph( data.glyphs[index], glyphs[index] ) )
+    if(!IsEqualGlyph(data.glyphs[index], glyphs[index]))
     {
       std::cout << "  different glyph info, index : " << index << std::endl;
 
@@ -270,38 +271,37 @@ bool ShapeInfoTest( const ShapeInfoData& data )
       std::cout << "  isItalicRequired : " << expectedGlyphInfo.isItalicRequired << std::endl;
       std::cout << "    isBoldRequired : " << expectedGlyphInfo.isBoldRequired << std::endl;
 
-
       return false;
     }
   }
 
-  for( unsigned int index = 0u; index < data.expectedNumberOfGlyphs; ++index )
+  for(unsigned int index = 0u; index < data.expectedNumberOfGlyphs; ++index)
   {
-    if( data.characterIndices[index] != glyphToCharacter[index] )
+    if(data.characterIndices[index] != glyphToCharacter[index])
     {
       std::cout << "  different character index, index : " << index << std::endl;
       return false;
     }
   }
 
-  for( unsigned int index = 0u; index < data.expectedNumberOfGlyphs; ++index )
+  for(unsigned int index = 0u; index < data.expectedNumberOfGlyphs; ++index)
   {
-    if( data.charactersPerGlyph[index] != charactersPerGlyph[index] )
+    if(data.charactersPerGlyph[index] != charactersPerGlyph[index])
     {
       std::cout << "  different character per glyph, index : " << index << std::endl;
       return false;
     }
   }
 
-  if( data.expectedNumberOfNewParagraphGlyphs != newParagraphGlyphs.Count() )
+  if(data.expectedNumberOfNewParagraphGlyphs != newParagraphGlyphs.Count())
   {
     std::cout << "  Different number of new paragraph glyphs : " << newParagraphGlyphs.Count() << ", expected : " << data.expectedNumberOfNewParagraphGlyphs << std::endl;
     return false;
   }
 
-  for( unsigned int index = 0u; index < data.expectedNumberOfNewParagraphGlyphs; ++index )
+  for(unsigned int index = 0u; index < data.expectedNumberOfNewParagraphGlyphs; ++index)
   {
-    if( data.newParagraphGlyphs[index] != newParagraphGlyphs[index] )
+    if(data.newParagraphGlyphs[index] != newParagraphGlyphs[index])
     {
       std::cout << "  different new paragraph glyph, index : " << index << std::endl;
       return false;
@@ -314,41 +314,40 @@ bool ShapeInfoTest( const ShapeInfoData& data )
 void LoadTextShapeFonts()
 {
   TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
-  fontClient.SetDpi( 96u, 96u );
+  fontClient.SetDpi(96u, 96u);
 
-  char* pathNamePtr = get_current_dir_name();
-  const std::string pathName( pathNamePtr );
-  free( pathNamePtr );
+  char*             pathNamePtr = get_current_dir_name();
+  const std::string pathName(pathNamePtr);
+  free(pathNamePtr);
 
-  fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
-  fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/noto/NotoSansMalayalam-Regular.ttf" );
+  fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf");
+  fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/noto/NotoSansMalayalam-Regular.ttf");
 }
 
 void LoadSoftwareStylingFonts()
 {
   TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
-  fontClient.SetDpi( 96u, 96u );
+  fontClient.SetDpi(96u, 96u);
 
-  char* pathNamePtr = get_current_dir_name();
-  const std::string pathName( pathNamePtr );
-  free( pathNamePtr );
+  char*             pathNamePtr = get_current_dir_name();
+  const std::string pathName(pathNamePtr);
+  free(pathNamePtr);
 
-  fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/roboto/Roboto-Regular.ttf" );
-  fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/roboto/Roboto-Bold.ttf" );
-  fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/roboto/Roboto-Italic.ttf" );
-  fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/roboto/Roboto-BoldItalic.ttf" );
+  fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/roboto/Roboto-Regular.ttf");
+  fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/roboto/Roboto-Bold.ttf");
+  fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/roboto/Roboto-Italic.ttf");
+  fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/roboto/Roboto-BoldItalic.ttf");
 }
 
 void LoadEmojiFonts()
 {
   TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
   fontClient.ClearCache();
-  fontClient.SetDpi( 96u, 96u );
-
-  char* pathNamePtr = get_current_dir_name();
-  const std::string pathName( pathNamePtr );
-  free( pathNamePtr );
+  fontClient.SetDpi(96u, 96u);
 
+  char*             pathNamePtr = get_current_dir_name();
+  const std::string pathName(pathNamePtr);
+  free(pathNamePtr);
 
   TextAbstraction::FontDescription fontDescriptionText;
   fontDescriptionText.path   = "";
@@ -376,164 +375,150 @@ int UtcDaliTextShape(void)
   tet_infoline(" UtcDaliTextShape");
 
   struct GlyphInfoData glyphs02[] =
-  {
-    { 1u, 276u, 0.f, 0.f, 0.f, 0.f, 11.f, 0.f },
-    { 1u, 299u, 0.f, 0.f, 0.f, 0.f,  8.f, 0.f },
-    { 1u, 306u, 0.f, 0.f, 0.f, 0.f,  4.f, 0.f },
-    { 1u, 306u, 0.f, 0.f, 0.f, 0.f,  4.f, 0.f },
-    { 1u, 309u, 0.f, 0.f, 0.f, 0.f,  9.f, 0.f },
-    { 1u,   3u, 0.f, 0.f, 0.f, 0.f,  4.f, 0.f },
-    { 1u, 317u, 0.f, 0.f, 0.f, 0.f, 11.f, 0.f },
-    { 1u, 309u, 0.f, 0.f, 0.f, 0.f,  9.f, 0.f },
-    { 1u, 312u, 0.f, 0.f, 0.f, 0.f,  6.f, 0.f },
-    { 1u, 306u, 0.f, 0.f, 0.f, 0.f,  4.f, 0.f },
-    { 1u, 298u, 0.f, 0.f, 0.f, 0.f,  9.f, 0.f },
-  };
-
-  CharacterIndex characterIndices02[] = { 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 9u, 10u };
-  Length charactersPerGlyph02[] = { 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u };
+    {
+      {1u, 276u, 0.f, 0.f, 0.f, 0.f, 11.f, 0.f},
+      {1u, 299u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f},
+      {1u, 306u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f},
+      {1u, 306u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f},
+      {1u, 309u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f},
+      {1u, 3u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f},
+      {1u, 317u, 0.f, 0.f, 0.f, 0.f, 11.f, 0.f},
+      {1u, 309u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f},
+      {1u, 312u, 0.f, 0.f, 0.f, 0.f, 6.f, 0.f},
+      {1u, 306u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f},
+      {1u, 298u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f},
+    };
+
+  CharacterIndex characterIndices02[]   = {0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 9u, 10u};
+  Length         charactersPerGlyph02[] = {1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u};
 
   struct GlyphInfoData glyphs03[] =
-  {
-    { 1u, 276u, 0.f, 0.f, 0.f, 0.f, 11.f, 0.f },
-    { 1u, 299u, 0.f, 0.f, 0.f, 0.f,  8.f, 0.f },
-    { 1u, 306u, 0.f, 0.f, 0.f, 0.f,  4.f, 0.f },
-    { 1u, 306u, 0.f, 0.f, 0.f, 0.f,  4.f, 0.f },
-    { 1u, 309u, 0.f, 0.f, 0.f, 0.f,  9.f, 0.f },
-    { 1u,   3u, 0.f, 0.f, 0.f, 0.f,  4.f, 0.f },
-    { 1u, 317u, 0.f, 0.f, 0.f, 0.f, 11.f, 0.f },
-    { 1u, 309u, 0.f, 0.f, 0.f, 0.f,  9.f, 0.f },
-    { 1u, 312u, 0.f, 0.f, 0.f, 0.f,  6.f, 0.f },
-    { 1u, 306u, 0.f, 0.f, 0.f, 0.f,  4.f, 0.f },
-    { 1u, 298u, 0.f, 0.f, 0.f, 0.f,  9.f, 0.f },
-    { 1u,   0u, 0.f, 0.f, 0.f, 0.f,  0.f, 0.f },
-    { 1u, 298u, 0.f, 0.f, 0.f, 0.f,  9.f, 0.f },
-    { 1u, 299u, 0.f, 0.f, 0.f, 0.f,  8.f, 0.f },
-    { 1u, 307u, 0.f, 0.f, 0.f, 0.f, 13.f, 0.f },
-    { 1u, 309u, 0.f, 0.f, 0.f, 0.f,  9.f, 0.f },
-    { 1u,   0u, 0.f, 0.f, 0.f, 0.f,  0.f, 0.f },
-  };
-
-  CharacterIndex characterIndices03[] = { 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 9u, 10u, 11u, 12u, 13u, 14u, 15u, 16u };
-  Length charactersPerGlyph03[] = { 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u };
-  CharacterIndex newParagraphGlyphs03[] = { 11u, 16u };
+    {
+      {1u, 276u, 0.f, 0.f, 0.f, 0.f, 11.f, 0.f},
+      {1u, 299u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f},
+      {1u, 306u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f},
+      {1u, 306u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f},
+      {1u, 309u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f},
+      {1u, 3u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f},
+      {1u, 317u, 0.f, 0.f, 0.f, 0.f, 11.f, 0.f},
+      {1u, 309u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f},
+      {1u, 312u, 0.f, 0.f, 0.f, 0.f, 6.f, 0.f},
+      {1u, 306u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f},
+      {1u, 298u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f},
+      {1u, 0u, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f},
+      {1u, 298u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f},
+      {1u, 299u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f},
+      {1u, 307u, 0.f, 0.f, 0.f, 0.f, 13.f, 0.f},
+      {1u, 309u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f},
+      {1u, 0u, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f},
+    };
+
+  CharacterIndex characterIndices03[]   = {0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 9u, 10u, 11u, 12u, 13u, 14u, 15u, 16u};
+  Length         charactersPerGlyph03[] = {1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u};
+  CharacterIndex newParagraphGlyphs03[] = {11u, 16u};
 
   struct GlyphInfoData glyphs04[] =
-  {
-    { 2u, 67u, 0.f, 0.f, 0.f, 0.f,  9.f, 0.f },
-    { 2u, 27u, 0.f, 0.f, 0.f, 0.f, 15.f, 0.f },
-    { 2u, 59u, 0.f, 0.f, 0.f, 0.f,  8.f, 0.f },
-    { 2u, 67u, 0.f, 0.f, 0.f, 0.f,  9.f, 0.f },
-    { 2u, 55u, 0.f, 0.f, 0.f, 0.f, 19.f, 0.f },
-    { 2u, 59u, 0.f, 0.f, 0.f, 0.f,  8.f, 0.f },
-    { 2u, 67u, 0.f, 0.f, 0.f, 0.f,  9.f, 0.f },
-    { 2u, 56u, 0.f, 0.f, 0.f, 0.f, 19.f, 0.f },
-    { 2u, 59u, 0.f, 0.f, 0.f, 0.f,  8.f, 0.f },
-    { 2u, 67u, 0.f, 0.f, 0.f, 0.f,  9.f, 0.f },
-    { 2u, 52u, 0.f, 0.f, 0.f, 0.f, 15.f, 0.f },
-    { 2u, 59u, 0.f, 0.f, 0.f, 0.f,  8.f, 0.f },
-  };
-
-  CharacterIndex characterIndices04[] = { 0u, 0u, 0u, 2u, 2u, 2u, 4u, 4u, 4u, 6u, 6u, 6u };
-  Length charactersPerGlyph04[] = { 0u, 0u, 2u, 0u, 0u, 2u, 0u, 0u, 2u, 0u, 0u, 2u };
+    {
+      {2u, 67u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f},
+      {2u, 27u, 0.f, 0.f, 0.f, 0.f, 15.f, 0.f},
+      {2u, 59u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f},
+      {2u, 67u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f},
+      {2u, 55u, 0.f, 0.f, 0.f, 0.f, 19.f, 0.f},
+      {2u, 59u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f},
+      {2u, 67u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f},
+      {2u, 56u, 0.f, 0.f, 0.f, 0.f, 19.f, 0.f},
+      {2u, 59u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f},
+      {2u, 67u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f},
+      {2u, 52u, 0.f, 0.f, 0.f, 0.f, 15.f, 0.f},
+      {2u, 59u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f},
+    };
+
+  CharacterIndex characterIndices04[]   = {0u, 0u, 0u, 2u, 2u, 2u, 4u, 4u, 4u, 6u, 6u, 6u};
+  Length         charactersPerGlyph04[] = {0u, 0u, 2u, 0u, 0u, 2u, 0u, 0u, 2u, 0u, 0u, 2u};
 
   struct GlyphInfoData glyphs05[] =
-  {
-    { 1u, 280u, 0.f, 0.f, 0.f, 0.f,  8.f, 0.f },
-    { 1u, 309u, 0.f, 0.f, 0.f, 0.f,  9.f, 0.f },
-    { 1u, 312u, 0.f, 0.f, 0.f, 0.f,  5.f, 0.f },
-    { 1u, 299u, 0.f, 0.f, 0.f, 0.f,  8.f, 0.f },
-    { 1u, 307u, 0.f, 0.f, 0.f, 0.f, 13.f, 0.f },
-    { 1u,  3u, 0.f, 0.f, 0.f, 0.f,  4.f, 0.f },
-    { 1u, 303u, 0.f, 0.f, 0.f, 0.f,  4.f, 0.f },
-    { 1u, 310u, 0.f, 0.f, 0.f, 0.f,  9.f, 0.f },
-    { 1u, 313u, 0.f, 0.f, 0.f, 0.f,  7.f, 0.f },
-    { 1u, 315u, 0.f, 0.f, 0.f, 0.f,  8.f, 0.f },
-    { 1u, 307u, 0.f, 0.f, 0.f, 0.f, 13.f, 0.f },
-    { 1u,  3u, 0.f, 0.f, 0.f, 0.f,  4.f, 0.f },
-    { 1u, 298u, 0.f, 0.f, 0.f, 0.f,  9.f, 0.f },
-    { 1u, 309u, 0.f, 0.f, 0.f, 0.f,  9.f, 0.f },
-    { 1u, 306u, 0.f, 0.f, 0.f, 0.f,  4.f, 0.f },
-    { 1u, 309u, 0.f, 0.f, 0.f, 0.f,  9.f, 0.f },
-    { 1u, 312u, 0.f, 0.f, 0.f, 0.f,  6.f, 0.f },
-    { 1u,  3u, 0.f, 0.f, 0.f, 0.f,  4.f, 0.f },
-    { 1u, 313u, 0.f, 0.f, 0.f, 0.f,  7.f, 0.f },
-    { 1u, 303u, 0.f, 0.f, 0.f, 0.f,  4.f, 0.f },
-    { 1u, 314u, 0.f, 0.f, 0.f, 0.f,  6.f, 0.f },
-    { 1u,  3u, 0.f, 0.f, 0.f, 0.f,  4.f, 0.f },
-    { 1u, 295u, 0.f, 0.f, 0.f, 0.f,  8.f, 0.f },
-    { 1u, 307u, 0.f, 0.f, 0.f, 0.f, 13.f, 0.f },
-    { 1u, 299u, 0.f, 0.f, 0.f, 0.f,  8.f, 0.f },
-    { 1u, 314u, 0.f, 0.f, 0.f, 0.f,  6.f, 0.f },
-    { 1u,  0u, 0.f, 0.f, 0.f, 0.f,  0.f, 0.f },
-    { 1u, 295u, 0.f, 0.f, 0.f, 0.f,  8.f, 0.f },
-    { 1u, 299u, 0.f, 0.f, 0.f, 0.f,  8.f, 0.f },
-    { 1u, 311u, 0.f, 0.f, 0.f, 0.f,  9.f, 0.f },
-    { 1u, 315u, 0.f, 0.f, 0.f, 0.f,  8.f, 0.f },
-    { 1u, 299u, 0.f, 0.f, 0.f, 0.f,  8.f, 0.f },
-    { 1u,  3u, 0.f, 0.f, 0.f, 0.f,  4.f, 0.f },
-    { 1u, 298u, 0.f, 0.f, 0.f, 0.f,  9.f, 0.f },
-    { 1u, 299u, 0.f, 0.f, 0.f, 0.f,  8.f, 0.f },
-    { 1u, 403u, 0.f, 0.f, 0.f, 0.f,  9.f, 0.f },
-    { 1u, 308u, 0.f, 0.f, 0.f, 0.f,  9.f, 0.f },
-    { 1u, 303u, 0.f, 0.f, 0.f, 0.f,  4.f, 0.f },
-    { 1u, 299u, 0.f, 0.f, 0.f, 0.f,  8.f, 0.f },
-    { 1u, 296u, 0.f, 0.f, 0.f, 0.f,  9.f, 0.f },
-    { 1u, 295u, 0.f, 0.f, 0.f, 0.f,  8.f, 0.f },
-    { 1u, 313u, 0.f, 0.f, 0.f, 0.f,  7.f, 0.f },
-    { 1u,  3u, 0.f, 0.f, 0.f, 0.f,  4.f, 0.f },
-    { 1u, 299u, 0.f, 0.f, 0.f, 0.f,  8.f, 0.f },
-    { 1u, 295u, 0.f, 0.f, 0.f, 0.f,  8.f, 0.f },
-    { 1u,  3u, 0.f, 0.f, 0.f, 0.f,  4.f, 0.f },
-    { 1u, 307u, 0.f, 0.f, 0.f, 0.f, 13.f, 0.f },
-    { 1u, 299u, 0.f, 0.f, 0.f, 0.f,  8.f, 0.f },
-    { 1u, 303u, 0.f, 0.f, 0.f, 0.f,  4.f, 0.f },
-    { 1u,  0u, 0.f, 0.f, 0.f, 0.f,  0.f, 0.f },
-    { 1u, 310u, 0.f, 0.f, 0.f, 0.f,  9.f, 0.f },
-    { 1u, 309u, 0.f, 0.f, 0.f, 0.f,  9.f, 0.f },
-    { 1u, 313u, 0.f, 0.f, 0.f, 0.f,  7.f, 0.f },
-    { 1u, 313u, 0.f, 0.f, 0.f, 0.f,  7.f, 0.f },
-    { 1u, 299u, 0.f, 0.f, 0.f, 0.f,  8.f, 0.f },
-    { 1u,  3u, 0.f, 0.f, 0.f, 0.f,  4.f, 0.f },
-    { 1u, 303u, 0.f, 0.f, 0.f, 0.f,  4.f, 0.f },
-    { 1u, 312u, 0.f, 0.f, 0.f, 0.f,  5.f, 0.f },
-    { 1u, 295u, 0.f, 0.f, 0.f, 0.f,  8.f, 0.f },
-    { 1u, 297u, 0.f, 0.f, 0.f, 0.f,  7.f, 0.f },
-    { 1u, 315u, 0.f, 0.f, 0.f, 0.f,  8.f, 0.f },
-    { 1u, 308u, 0.f, 0.f, 0.f, 0.f,  9.f, 0.f },
-    { 1u, 298u, 0.f, 0.f, 0.f, 0.f,  9.f, 0.f },
-    { 1u, 303u, 0.f, 0.f, 0.f, 0.f,  4.f, 0.f },
-    { 1u, 295u, 0.f, 0.f, 0.f, 0.f,  8.f, 0.f },
-    { 1u,  3u, 0.f, 0.f, 0.f, 0.f,  4.f, 0.f },
-    { 1u, 308u, 0.f, 0.f, 0.f, 0.f,  9.f, 0.f },
-    { 1u, 299u, 0.f, 0.f, 0.f, 0.f,  8.f, 0.f },
-    { 1u,  3u, 0.f, 0.f, 0.f, 0.f,  4.f, 0.f },
-    { 1u, 297u, 0.f, 0.f, 0.f, 0.f,  7.f, 0.f },
-    { 1u, 315u, 0.f, 0.f, 0.f, 0.f,  8.f, 0.f },
-    { 1u, 307u, 0.f, 0.f, 0.f, 0.f, 13.f, 0.f },
-    { 1u,  4u, 0.f, 0.f, 0.f, 0.f,  3.f, 0.f },
-    { 1u,  0u, 0.f, 0.f, 0.f, 0.f,  0.f, 0.f },
-  };
-
-  CharacterIndex characterIndices05[] = {  0u,  1u,  2u,  3u,  4u,  5u,  6u,  7u,  8u,  9u,
-                                          10u, 11u, 12u, 13u, 14u, 15u, 16u, 17u, 18u, 19u,
-                                          20u, 21u, 22u, 23u, 24u, 25u, 26u, 27u, 28u, 29u,
-                                          30u, 31u, 32u, 33u, 34u, 35u, 37u, 38u, 39u, 40u,
-                                          41u, 42u, 43u, 44u, 45u, 46u, 47u, 48u, 49u, 50u,
-                                          51u, 52u, 53u, 54u, 55u, 56u, 57u, 58u, 59u, 60u,
-                                          61u, 62u, 63u, 64u, 65u, 66u, 67u, 68u, 69u, 70u,
-                                          71u, 72u, 73u, 74u };
-  Length charactersPerGlyph05[] = { 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u,
-                                    1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u,
-                                    1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u,
-                                    1u, 1u, 1u, 1u, 1u, 2u, 1u, 1u, 1u, 1u,
-                                    1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u,
-                                    1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u,
-                                    1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u,
-                                    1u, 1u, 1u, 1u };
-  CharacterIndex newParagraphGlyphs05[] = { 26u };
-  CharacterIndex newParagraphGlyphs06[] = { 49u };
-  CharacterIndex newParagraphGlyphs07[] = { 73u };
+    {
+      {1u, 280u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f},
+      {1u, 309u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f},
+      {1u, 312u, 0.f, 0.f, 0.f, 0.f, 5.f, 0.f},
+      {1u, 299u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f},
+      {1u, 307u, 0.f, 0.f, 0.f, 0.f, 13.f, 0.f},
+      {1u, 3u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f},
+      {1u, 303u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f},
+      {1u, 310u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f},
+      {1u, 313u, 0.f, 0.f, 0.f, 0.f, 7.f, 0.f},
+      {1u, 315u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f},
+      {1u, 307u, 0.f, 0.f, 0.f, 0.f, 13.f, 0.f},
+      {1u, 3u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f},
+      {1u, 298u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f},
+      {1u, 309u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f},
+      {1u, 306u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f},
+      {1u, 309u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f},
+      {1u, 312u, 0.f, 0.f, 0.f, 0.f, 6.f, 0.f},
+      {1u, 3u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f},
+      {1u, 313u, 0.f, 0.f, 0.f, 0.f, 7.f, 0.f},
+      {1u, 303u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f},
+      {1u, 314u, 0.f, 0.f, 0.f, 0.f, 6.f, 0.f},
+      {1u, 3u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f},
+      {1u, 295u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f},
+      {1u, 307u, 0.f, 0.f, 0.f, 0.f, 13.f, 0.f},
+      {1u, 299u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f},
+      {1u, 314u, 0.f, 0.f, 0.f, 0.f, 6.f, 0.f},
+      {1u, 0u, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f},
+      {1u, 295u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f},
+      {1u, 299u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f},
+      {1u, 311u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f},
+      {1u, 315u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f},
+      {1u, 299u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f},
+      {1u, 3u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f},
+      {1u, 298u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f},
+      {1u, 299u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f},
+      {1u, 403u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f},
+      {1u, 308u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f},
+      {1u, 303u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f},
+      {1u, 299u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f},
+      {1u, 296u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f},
+      {1u, 295u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f},
+      {1u, 313u, 0.f, 0.f, 0.f, 0.f, 7.f, 0.f},
+      {1u, 3u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f},
+      {1u, 299u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f},
+      {1u, 295u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f},
+      {1u, 3u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f},
+      {1u, 307u, 0.f, 0.f, 0.f, 0.f, 13.f, 0.f},
+      {1u, 299u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f},
+      {1u, 303u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f},
+      {1u, 0u, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f},
+      {1u, 310u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f},
+      {1u, 309u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f},
+      {1u, 313u, 0.f, 0.f, 0.f, 0.f, 7.f, 0.f},
+      {1u, 313u, 0.f, 0.f, 0.f, 0.f, 7.f, 0.f},
+      {1u, 299u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f},
+      {1u, 3u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f},
+      {1u, 303u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f},
+      {1u, 312u, 0.f, 0.f, 0.f, 0.f, 5.f, 0.f},
+      {1u, 295u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f},
+      {1u, 297u, 0.f, 0.f, 0.f, 0.f, 7.f, 0.f},
+      {1u, 315u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f},
+      {1u, 308u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f},
+      {1u, 298u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f},
+      {1u, 303u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f},
+      {1u, 295u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f},
+      {1u, 3u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f},
+      {1u, 308u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f},
+      {1u, 299u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f},
+      {1u, 3u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f},
+      {1u, 297u, 0.f, 0.f, 0.f, 0.f, 7.f, 0.f},
+      {1u, 315u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f},
+      {1u, 307u, 0.f, 0.f, 0.f, 0.f, 13.f, 0.f},
+      {1u, 4u, 0.f, 0.f, 0.f, 0.f, 3.f, 0.f},
+      {1u, 0u, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f},
+    };
+
+  CharacterIndex characterIndices05[]   = {0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 9u, 10u, 11u, 12u, 13u, 14u, 15u, 16u, 17u, 18u, 19u, 20u, 21u, 22u, 23u, 24u, 25u, 26u, 27u, 28u, 29u, 30u, 31u, 32u, 33u, 34u, 35u, 37u, 38u, 39u, 40u, 41u, 42u, 43u, 44u, 45u, 46u, 47u, 48u, 49u, 50u, 51u, 52u, 53u, 54u, 55u, 56u, 57u, 58u, 59u, 60u, 61u, 62u, 63u, 64u, 65u, 66u, 67u, 68u, 69u, 70u, 71u, 72u, 73u, 74u};
+  Length         charactersPerGlyph05[] = {1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 2u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u};
+  CharacterIndex newParagraphGlyphs05[] = {26u};
+  CharacterIndex newParagraphGlyphs06[] = {49u};
+  CharacterIndex newParagraphGlyphs07[] = {73u};
 
   Vector<FontDescriptionRun> fontDescriptions01;
   Vector<FontDescriptionRun> fontDescriptions02;
@@ -542,261 +527,233 @@ int UtcDaliTextShape(void)
   Vector<FontDescriptionRun> fontDescriptions05;
   Vector<FontDescriptionRun> fontDescriptions06;
 
-  const std::string fontFamily( "TizenSans" );
-  const std::string fontFamilyMalayalam( "Noto Sans Malayalam" );
+  const std::string fontFamily("TizenSans");
+  const std::string fontFamilyMalayalam("Noto Sans Malayalam");
 
   FontDescriptionRun fontDescriptionRun01 =
-  {
     {
+      {0u,
+       11u},
+      nullptr,
       0u,
-      11u
-    },
-    nullptr,
-    0u,
-    TextAbstraction::FontWeight::NONE,
-    TextAbstraction::FontWidth::NONE,
-    TextAbstraction::FontSlant::NONE,
-    TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
-    true,
-    false,
-    false,
-    false,
-    false
-  };
+      TextAbstraction::FontWeight::NONE,
+      TextAbstraction::FontWidth::NONE,
+      TextAbstraction::FontSlant::NONE,
+      TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
+      true,
+      false,
+      false,
+      false,
+      false};
   fontDescriptionRun01.familyLength = fontFamily.size();
-  fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
-  memcpy( fontDescriptionRun01.familyName, fontFamily.c_str(), fontDescriptionRun01.familyLength );
+  fontDescriptionRun01.familyName   = new char[fontDescriptionRun01.familyLength];
+  memcpy(fontDescriptionRun01.familyName, fontFamily.c_str(), fontDescriptionRun01.familyLength);
 
-  fontDescriptions01.PushBack( fontDescriptionRun01 );
+  fontDescriptions01.PushBack(fontDescriptionRun01);
 
   FontDescriptionRun fontDescriptionRun02 =
-  {
     {
+      {0u,
+       17u},
+      nullptr,
       0u,
-      17u
-    },
-    nullptr,
-    0u,
-    TextAbstraction::FontWeight::NONE,
-    TextAbstraction::FontWidth::NONE,
-    TextAbstraction::FontSlant::NONE,
-    TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
-    true,
-    false,
-    false,
-    false,
-    false
-  };
+      TextAbstraction::FontWeight::NONE,
+      TextAbstraction::FontWidth::NONE,
+      TextAbstraction::FontSlant::NONE,
+      TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
+      true,
+      false,
+      false,
+      false,
+      false};
   fontDescriptionRun02.familyLength = fontFamily.size();
-  fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
-  memcpy( fontDescriptionRun02.familyName, fontFamily.c_str(), fontDescriptionRun02.familyLength );
+  fontDescriptionRun02.familyName   = new char[fontDescriptionRun02.familyLength];
+  memcpy(fontDescriptionRun02.familyName, fontFamily.c_str(), fontDescriptionRun02.familyLength);
 
-  fontDescriptions02.PushBack( fontDescriptionRun02 );
+  fontDescriptions02.PushBack(fontDescriptionRun02);
 
   FontDescriptionRun fontDescriptionRun03 =
-  {
     {
+      {0u,
+       8u},
+      nullptr,
       0u,
-      8u
-    },
-    nullptr,
-    0u,
-    TextAbstraction::FontWeight::NONE,
-    TextAbstraction::FontWidth::NONE,
-    TextAbstraction::FontSlant::NONE,
-    TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
-    true,
-    false,
-    false,
-    false,
-    false
-  };
+      TextAbstraction::FontWeight::NONE,
+      TextAbstraction::FontWidth::NONE,
+      TextAbstraction::FontSlant::NONE,
+      TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
+      true,
+      false,
+      false,
+      false,
+      false};
   fontDescriptionRun03.familyLength = fontFamilyMalayalam.size();
-  fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
-  memcpy( fontDescriptionRun03.familyName, fontFamilyMalayalam.c_str(), fontDescriptionRun03.familyLength );
+  fontDescriptionRun03.familyName   = new char[fontDescriptionRun03.familyLength];
+  memcpy(fontDescriptionRun03.familyName, fontFamilyMalayalam.c_str(), fontDescriptionRun03.familyLength);
 
-  fontDescriptions03.PushBack( fontDescriptionRun03 );
+  fontDescriptions03.PushBack(fontDescriptionRun03);
 
   FontDescriptionRun fontDescriptionRun04 =
-  {
     {
+      {0u,
+       75u},
+      nullptr,
       0u,
-      75u
-    },
-    nullptr,
-    0u,
-    TextAbstraction::FontWeight::NONE,
-    TextAbstraction::FontWidth::NONE,
-    TextAbstraction::FontSlant::NONE,
-    TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
-    true,
-    false,
-    false,
-    false,
-    false
-  };
+      TextAbstraction::FontWeight::NONE,
+      TextAbstraction::FontWidth::NONE,
+      TextAbstraction::FontSlant::NONE,
+      TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
+      true,
+      false,
+      false,
+      false,
+      false};
   fontDescriptionRun04.familyLength = fontFamily.size();
-  fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
-  memcpy( fontDescriptionRun04.familyName, fontFamily.c_str(), fontDescriptionRun04.familyLength );
+  fontDescriptionRun04.familyName   = new char[fontDescriptionRun04.familyLength];
+  memcpy(fontDescriptionRun04.familyName, fontFamily.c_str(), fontDescriptionRun04.familyLength);
 
-  fontDescriptions04.PushBack( fontDescriptionRun04 );
+  fontDescriptions04.PushBack(fontDescriptionRun04);
 
   FontDescriptionRun fontDescriptionRun05 =
-  {
     {
+      {0u,
+       75u},
+      nullptr,
       0u,
-      75u
-    },
-    nullptr,
-    0u,
-    TextAbstraction::FontWeight::NONE,
-    TextAbstraction::FontWidth::NONE,
-    TextAbstraction::FontSlant::NONE,
-    TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
-    true,
-    false,
-    false,
-    false,
-    false
-  };
+      TextAbstraction::FontWeight::NONE,
+      TextAbstraction::FontWidth::NONE,
+      TextAbstraction::FontSlant::NONE,
+      TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
+      true,
+      false,
+      false,
+      false,
+      false};
   fontDescriptionRun05.familyLength = fontFamily.size();
-  fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
-  memcpy( fontDescriptionRun05.familyName, fontFamily.c_str(), fontDescriptionRun05.familyLength );
+  fontDescriptionRun05.familyName   = new char[fontDescriptionRun05.familyLength];
+  memcpy(fontDescriptionRun05.familyName, fontFamily.c_str(), fontDescriptionRun05.familyLength);
 
-  fontDescriptions05.PushBack( fontDescriptionRun05 );
+  fontDescriptions05.PushBack(fontDescriptionRun05);
 
   FontDescriptionRun fontDescriptionRun06 =
-  {
-    {
-      0u,
-      75u
-    },
-    nullptr,
-    0u,
-    TextAbstraction::FontWeight::NONE,
-    TextAbstraction::FontWidth::NONE,
-    TextAbstraction::FontSlant::NONE,
-    TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
-    true,
-    false,
-    false,
-    false,
-    false
-  };
-  fontDescriptionRun06.familyLength = fontFamily.size();
-  fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
-  memcpy( fontDescriptionRun06.familyName, fontFamily.c_str(), fontDescriptionRun06.familyLength );
-
-  fontDescriptions06.PushBack( fontDescriptionRun06 );
-
-  struct ShapeInfoData data[] =
-  {
-    {
-      "Zero characters",
-      "",
-      0u,
-      0u,
-      0u,
-      nullptr,
-      nullptr,
-      nullptr,
-      0u,
-      nullptr,
-      false,
-    },
     {
-      "Latin script",
-      "Hello world",
-      0u,
-      11u,
-      11u,
-      glyphs02,
-      characterIndices02,
-      charactersPerGlyph02,
-      0u,
+      {0u,
+       75u},
       nullptr,
-      false,
-      fontDescriptions01
-    },
-    {
-      "Latin script. Some paragraphs.",
-      "Hello world\ndemo\n",
-      0u,
-      17u,
-      17u,
-      glyphs03,
-      characterIndices03,
-      charactersPerGlyph03,
-      2u,
-      newParagraphGlyphs03,
-      false,
-      fontDescriptions02
-    },
-    {
-      "Malayalam script. More glyphs than characters.",
-      "ജോസോഹോവോ",
-      0u,
-      8u,
-      12u,
-      glyphs04,
-      characterIndices04,
-      charactersPerGlyph04,
       0u,
-      nullptr,
+      TextAbstraction::FontWeight::NONE,
+      TextAbstraction::FontWidth::NONE,
+      TextAbstraction::FontSlant::NONE,
+      TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
+      true,
       false,
-      fontDescriptions03
-    },
-    {
-      "Latin script with some paragraphs. Update initial paragraph.",
-      "Lorem ipsum dolor sit amet\naeque definiebas ea mei\nposse iracundia ne cum.\n",
-      0u,
-      27u,
-      74u,
-      glyphs05,
-      characterIndices05,
-      charactersPerGlyph05,
-      1u,
-      newParagraphGlyphs05,
       false,
-      fontDescriptions04,
-    },
-    {
-      "Latin script with some paragraphs. Update mid paragraph.",
-      "Lorem ipsum dolor sit amet\naeque definiebas ea mei\nposse iracundia ne cum.\n",
-      27u,
-      24u,
-      74u,
-      glyphs05,
-      characterIndices05,
-      charactersPerGlyph05,
-      1u,
-      newParagraphGlyphs06,
       false,
-      fontDescriptions05
-    },
+      false};
+  fontDescriptionRun06.familyLength = fontFamily.size();
+  fontDescriptionRun06.familyName   = new char[fontDescriptionRun06.familyLength];
+  memcpy(fontDescriptionRun06.familyName, fontFamily.c_str(), fontDescriptionRun06.familyLength);
+
+  fontDescriptions06.PushBack(fontDescriptionRun06);
+
+  struct ShapeInfoData data[] =
     {
-      "Latin script with some paragraphs. Update final paragraph.",
-      "Lorem ipsum dolor sit amet\naeque definiebas ea mei\nposse iracundia ne cum.\n",
-      51u,
-      24u,
-      74u,
-      glyphs05,
-      characterIndices05,
-      charactersPerGlyph05,
-      1u,
-      newParagraphGlyphs07,
-      false,
-      fontDescriptions06
-    },
-  };
+      {
+        "Zero characters",
+        "",
+        0u,
+        0u,
+        0u,
+        nullptr,
+        nullptr,
+        nullptr,
+        0u,
+        nullptr,
+        false,
+      },
+      {"Latin script",
+       "Hello world",
+       0u,
+       11u,
+       11u,
+       glyphs02,
+       characterIndices02,
+       charactersPerGlyph02,
+       0u,
+       nullptr,
+       false,
+       fontDescriptions01},
+      {"Latin script. Some paragraphs.",
+       "Hello world\ndemo\n",
+       0u,
+       17u,
+       17u,
+       glyphs03,
+       characterIndices03,
+       charactersPerGlyph03,
+       2u,
+       newParagraphGlyphs03,
+       false,
+       fontDescriptions02},
+      {"Malayalam script. More glyphs than characters.",
+       "ജോസോഹോവോ",
+       0u,
+       8u,
+       12u,
+       glyphs04,
+       characterIndices04,
+       charactersPerGlyph04,
+       0u,
+       nullptr,
+       false,
+       fontDescriptions03},
+      {
+        "Latin script with some paragraphs. Update initial paragraph.",
+        "Lorem ipsum dolor sit amet\naeque definiebas ea mei\nposse iracundia ne cum.\n",
+        0u,
+        27u,
+        74u,
+        glyphs05,
+        characterIndices05,
+        charactersPerGlyph05,
+        1u,
+        newParagraphGlyphs05,
+        false,
+        fontDescriptions04,
+      },
+      {"Latin script with some paragraphs. Update mid paragraph.",
+       "Lorem ipsum dolor sit amet\naeque definiebas ea mei\nposse iracundia ne cum.\n",
+       27u,
+       24u,
+       74u,
+       glyphs05,
+       characterIndices05,
+       charactersPerGlyph05,
+       1u,
+       newParagraphGlyphs06,
+       false,
+       fontDescriptions05},
+      {"Latin script with some paragraphs. Update final paragraph.",
+       "Lorem ipsum dolor sit amet\naeque definiebas ea mei\nposse iracundia ne cum.\n",
+       51u,
+       24u,
+       74u,
+       glyphs05,
+       characterIndices05,
+       charactersPerGlyph05,
+       1u,
+       newParagraphGlyphs07,
+       false,
+       fontDescriptions06},
+    };
   const unsigned int numberOfTests = 7u;
 
-  for( unsigned int index = 0u; index < numberOfTests; ++index )
+  for(unsigned int index = 0u; index < numberOfTests; ++index)
   {
     ToolkitTestApplication application;
     LoadTextShapeFonts();
 
-    if( !ShapeInfoTest( data[index] ) )
+    if(!ShapeInfoTest(data[index]))
     {
       tet_result(TET_FAIL);
     }
@@ -811,186 +768,165 @@ int UtcDaliTextSoftwareStyling(void)
   tet_infoline(" UtcDaliTextSoftwareStyling");
 
   struct GlyphInfoData glyphs01[] =
-  {
-    { 4u, 38u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f, true, true },
-    { 4u, 39u, 0.f, 0.f, 0.f, 0.f,  9.f, 0.f, true, true },
-    { 4u, 40u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f, true, true },
-    { 4u, 41u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f, true, true },
-  };
+    {
+      {4u, 38u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f, true, true},
+      {4u, 39u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f, true, true},
+      {4u, 40u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f, true, true},
+      {4u, 41u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f, true, true},
+    };
   struct GlyphInfoData glyphs02[] =
-  {
-    { 1u, 38u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f, false, false },
-    { 2u, 39u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f, false,  true },
-    { 3u, 40u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f, true,  false },
-    { 4u, 41u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f, true,   true },
-  };
+    {
+      {1u, 38u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f, false, false},
+      {2u, 39u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f, false, true},
+      {3u, 40u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f, true, false},
+      {4u, 41u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f, true, true},
+    };
 
-  CharacterIndex characterIndices[] = { 0u, 1u, 2u, 3u };
-  Length charactersPerGlyph[] = { 1u, 1u, 1u, 1u };
+  CharacterIndex characterIndices[]   = {0u, 1u, 2u, 3u};
+  Length         charactersPerGlyph[] = {1u, 1u, 1u, 1u};
 
   Vector<FontDescriptionRun> fontDescriptions01;
   Vector<FontDescriptionRun> fontDescriptions02;
 
-  const std::string fontFamily( "Roboto" );
+  const std::string fontFamily("Roboto");
 
   FontDescriptionRun fontDescriptionRun01 =
-  {
     {
+      {0u,
+       4u},
+      nullptr,
       0u,
-      4u
-    },
-    nullptr,
-    0u,
-    TextAbstraction::FontWeight::BOLD,
-    TextAbstraction::FontWidth::NONE,
-    TextAbstraction::FontSlant::ITALIC,
-    TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
-    true,
-    true,
-    false,
-    true,
-    false
-  };
+      TextAbstraction::FontWeight::BOLD,
+      TextAbstraction::FontWidth::NONE,
+      TextAbstraction::FontSlant::ITALIC,
+      TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
+      true,
+      true,
+      false,
+      true,
+      false};
   fontDescriptionRun01.familyLength = fontFamily.size();
-  fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
-  memcpy( fontDescriptionRun01.familyName, fontFamily.c_str(), fontDescriptionRun01.familyLength );
+  fontDescriptionRun01.familyName   = new char[fontDescriptionRun01.familyLength];
+  memcpy(fontDescriptionRun01.familyName, fontFamily.c_str(), fontDescriptionRun01.familyLength);
 
   fontDescriptions01.PushBack(fontDescriptionRun01);
 
   FontDescriptionRun fontDescriptionRun02 =
-  {
     {
+      {0u,
+       1u},
+      nullptr,
       0u,
-      1u
-    },
-    nullptr,
-    0u,
-    TextAbstraction::FontWeight::NONE,
-    TextAbstraction::FontWidth::NONE,
-    TextAbstraction::FontSlant::NONE,
-    TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
-    true,
-    false,
-    false,
-    false,
-    false
-  };
+      TextAbstraction::FontWeight::NONE,
+      TextAbstraction::FontWidth::NONE,
+      TextAbstraction::FontSlant::NONE,
+      TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
+      true,
+      false,
+      false,
+      false,
+      false};
   fontDescriptionRun02.familyLength = fontFamily.size();
-  fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
-  memcpy( fontDescriptionRun02.familyName, fontFamily.c_str(), fontDescriptionRun02.familyLength );
+  fontDescriptionRun02.familyName   = new char[fontDescriptionRun02.familyLength];
+  memcpy(fontDescriptionRun02.familyName, fontFamily.c_str(), fontDescriptionRun02.familyLength);
 
   FontDescriptionRun fontDescriptionRun03 =
-  {
     {
-      1u,
-      1u
-    },
-    nullptr,
-    0u,
-    TextAbstraction::FontWeight::BOLD,
-    TextAbstraction::FontWidth::NONE,
-    TextAbstraction::FontSlant::NONE,
-    TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
-    true,
-    true,
-    false,
-    false,
-    false
-  };
+      {1u,
+       1u},
+      nullptr,
+      0u,
+      TextAbstraction::FontWeight::BOLD,
+      TextAbstraction::FontWidth::NONE,
+      TextAbstraction::FontSlant::NONE,
+      TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
+      true,
+      true,
+      false,
+      false,
+      false};
   fontDescriptionRun03.familyLength = fontFamily.size();
-  fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
-  memcpy( fontDescriptionRun03.familyName, fontFamily.c_str(), fontDescriptionRun03.familyLength );
+  fontDescriptionRun03.familyName   = new char[fontDescriptionRun03.familyLength];
+  memcpy(fontDescriptionRun03.familyName, fontFamily.c_str(), fontDescriptionRun03.familyLength);
 
   FontDescriptionRun fontDescriptionRun04 =
-  {
     {
-      2u,
-      1u
-    },
-    nullptr,
-    0u,
-    TextAbstraction::FontWeight::NONE,
-    TextAbstraction::FontWidth::NONE,
-    TextAbstraction::FontSlant::ITALIC,
-    TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
-    true,
-    false,
-    false,
-    true,
-    false
-  };
+      {2u,
+       1u},
+      nullptr,
+      0u,
+      TextAbstraction::FontWeight::NONE,
+      TextAbstraction::FontWidth::NONE,
+      TextAbstraction::FontSlant::ITALIC,
+      TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
+      true,
+      false,
+      false,
+      true,
+      false};
   fontDescriptionRun04.familyLength = fontFamily.size();
-  fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
-  memcpy( fontDescriptionRun04.familyName, fontFamily.c_str(), fontDescriptionRun04.familyLength );
+  fontDescriptionRun04.familyName   = new char[fontDescriptionRun04.familyLength];
+  memcpy(fontDescriptionRun04.familyName, fontFamily.c_str(), fontDescriptionRun04.familyLength);
 
   FontDescriptionRun fontDescriptionRun05 =
-  {
     {
-      3u,
-      1u
-    },
-    nullptr,
-    0u,
-    TextAbstraction::FontWeight::BOLD,
-    TextAbstraction::FontWidth::NONE,
-    TextAbstraction::FontSlant::ITALIC,
-    TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
-    true,
-    true,
-    false,
-    true,
-    false
-  };
+      {3u,
+       1u},
+      nullptr,
+      0u,
+      TextAbstraction::FontWeight::BOLD,
+      TextAbstraction::FontWidth::NONE,
+      TextAbstraction::FontSlant::ITALIC,
+      TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
+      true,
+      true,
+      false,
+      true,
+      false};
   fontDescriptionRun05.familyLength = fontFamily.size();
-  fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
-  memcpy( fontDescriptionRun05.familyName, fontFamily.c_str(), fontDescriptionRun05.familyLength );
+  fontDescriptionRun05.familyName   = new char[fontDescriptionRun05.familyLength];
+  memcpy(fontDescriptionRun05.familyName, fontFamily.c_str(), fontDescriptionRun05.familyLength);
 
   fontDescriptions02.PushBack(fontDescriptionRun02);
   fontDescriptions02.PushBack(fontDescriptionRun03);
   fontDescriptions02.PushBack(fontDescriptionRun04);
   fontDescriptions02.PushBack(fontDescriptionRun05);
 
-
   struct ShapeInfoData data[] =
-  {
-    {
-      "Latin script. Characters have same font description",
-      "ABCD",
-      0u,
-      4u,
-      4u,
-      glyphs01,
-      characterIndices,
-      charactersPerGlyph,
-      0u,
-      nullptr,
-      false,
-      fontDescriptions01
-    },
     {
-      "Latin script. Each character has different font description.",
-      "ABCD",
-      0u,
-      4u,
-      4u,
-      glyphs02,
-      characterIndices,
-      charactersPerGlyph,
-      0u,
-      nullptr,
-      false,
-      fontDescriptions02
-    }
-  };
+      {"Latin script. Characters have same font description",
+       "ABCD",
+       0u,
+       4u,
+       4u,
+       glyphs01,
+       characterIndices,
+       charactersPerGlyph,
+       0u,
+       nullptr,
+       false,
+       fontDescriptions01},
+      {"Latin script. Each character has different font description.",
+       "ABCD",
+       0u,
+       4u,
+       4u,
+       glyphs02,
+       characterIndices,
+       charactersPerGlyph,
+       0u,
+       nullptr,
+       false,
+       fontDescriptions02}};
 
   const unsigned int numberOfTests = 2u;
 
-  for( unsigned int index = 0u; index < numberOfTests; ++index )
+  for(unsigned int index = 0u; index < numberOfTests; ++index)
   {
     ToolkitTestApplication application;
     LoadSoftwareStylingFonts();
 
-    if( !ShapeInfoTest( data[index] ) )
+    if(!ShapeInfoTest(data[index]))
     {
       tet_result(TET_FAIL);
     }
@@ -1000,16 +936,14 @@ int UtcDaliTextSoftwareStyling(void)
   END_TEST;
 }
 
-
 int UtcDaliTextShapeEmojiSequences(void)
 {
-
   ToolkitTestApplication application;
 
   tet_infoline(" UtcDaliTextShapeEmojiSequences");
 
-  const std::string colorFontFamily( "NotoColorEmoji" );
-  const std::string textFontFamily( "DejaVuSans" );
+  const std::string colorFontFamily("NotoColorEmoji");
+  const std::string textFontFamily("DejaVuSans");
 
   LoadEmojiFonts();
 
@@ -1026,110 +960,94 @@ int UtcDaliTextShapeEmojiSequences(void)
   bool slantDefined  = false;
   bool sizeDefined   = false;
 
-
   // variation selector 16 (Emoji)
   struct GlyphInfoData glyphsVS16[] =
-  {
-    { 2u, 74u, 0.f, 0.f, 0.f, 0.f, 39.0f, 0.f, false, false },
-  };
-  CharacterIndex characterIndicesVS16[] = { 0u, 1u};
-  Length charactersPerGlyphVS16[] = { 2u };
-
-
+    {
+      {2u, 74u, 0.f, 0.f, 0.f, 0.f, 39.0f, 0.f, false, false},
+    };
+  CharacterIndex characterIndicesVS16[]   = {0u, 1u};
+  Length         charactersPerGlyphVS16[] = {2u};
 
   // variation selector 15 (Text)
   struct GlyphInfoData glyphsVS15[] =
-  {
-    { 1u, 3842u, 0.f, 0.f, 0.f, 0.f, 14.0f, 0.f, false, false },
-    { 1u, 8203u, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, false, false },
-  };
-  CharacterIndex characterIndicesVS15[] = { 0u, 0u};
-  Length charactersPerGlyphVS15[] = { 0u, 2u };
+    {
+      {1u, 3842u, 0.f, 0.f, 0.f, 0.f, 14.0f, 0.f, false, false},
+      {1u, 8203u, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, false, false},
+    };
+  CharacterIndex characterIndicesVS15[]   = {0u, 0u};
+  Length         charactersPerGlyphVS15[] = {0u, 2u};
 
   //Font Descriptions
   Vector<FontDescriptionRun> fontDescriptionsColorVS16 =
-                    CreateSingleFontDescription (characterRun, colorFontFamily, weight, width,
-                     slant, size, familyDefined, weightDefined, widthDefined, slantDefined, sizeDefined);
+    CreateSingleFontDescription(characterRun, colorFontFamily, weight, width, slant, size, familyDefined, weightDefined, widthDefined, slantDefined, sizeDefined);
 
   Vector<FontDescriptionRun> fontDescriptionsColorVS15 =
-                    CreateSingleFontDescription (characterRun, colorFontFamily, weight, width,
-                     slant, size, familyDefined, weightDefined, widthDefined, slantDefined, sizeDefined);
+    CreateSingleFontDescription(characterRun, colorFontFamily, weight, width, slant, size, familyDefined, weightDefined, widthDefined, slantDefined, sizeDefined);
 
   Vector<FontDescriptionRun> fontDescriptionsTextVS16 =
-                    CreateSingleFontDescription (characterRun, textFontFamily, weight, width,
-                     slant, size, familyDefined, weightDefined, widthDefined, slantDefined, sizeDefined);
+    CreateSingleFontDescription(characterRun, textFontFamily, weight, width, slant, size, familyDefined, weightDefined, widthDefined, slantDefined, sizeDefined);
 
   Vector<FontDescriptionRun> fontDescriptionsTextVS15 =
-                    CreateSingleFontDescription (characterRun, textFontFamily, weight, width,
-                     slant, size, familyDefined, weightDefined, widthDefined, slantDefined, sizeDefined);
-
+    CreateSingleFontDescription(characterRun, textFontFamily, weight, width, slant, size, familyDefined, weightDefined, widthDefined, slantDefined, sizeDefined);
 
   struct ShapeInfoData data[] =
-  {
-     {
-      "EMOJI Sequence: Color Font with VS16",
-      "&#x262a;&#xfe0f;",
-      0u,
-      2u,
-      1u,
-      glyphsVS16,
-      characterIndicesVS16,
-      charactersPerGlyphVS16,
-      0u,
-      nullptr,
-      true,
-      fontDescriptionsColorVS16
-    },
-    {
-      "EMOJI Sequence: Color Font with VS15",
-      "&#x262a;&#xfe0e;",
-      0u,
-      2u,
-      2u,
-      glyphsVS15,
-      characterIndicesVS15,
-      charactersPerGlyphVS15,
-      0u,
-      nullptr,
-      true,
-      fontDescriptionsColorVS15
-    },
-    {
-      "EMOJI Sequence: Text Font with VS16",
-      "&#x262a;&#xfe0f;",
-      0u,
-      2u,
-      1u,
-      glyphsVS16,
-      characterIndicesVS16,
-      charactersPerGlyphVS16,
-      0u,
-      nullptr,
-      true,
-      fontDescriptionsTextVS16
-    },
     {
-      "EMOJI Sequence: Text Font with VS15",
-      "&#x262a;&#xfe0e;",
-      0u,
-      2u,
-      2u,
-      glyphsVS15,
-      characterIndicesVS15,
-      charactersPerGlyphVS15,
-      0u,
-      nullptr,
-      true,
-      fontDescriptionsTextVS15
-    },
-  };
+      {"EMOJI Sequence: Color Font with VS16",
+       "&#x262a;&#xfe0f;",
+       0u,
+       2u,
+       1u,
+       glyphsVS16,
+       characterIndicesVS16,
+       charactersPerGlyphVS16,
+       0u,
+       nullptr,
+       true,
+       fontDescriptionsColorVS16},
+      {"EMOJI Sequence: Color Font with VS15",
+       "&#x262a;&#xfe0e;",
+       0u,
+       2u,
+       2u,
+       glyphsVS15,
+       characterIndicesVS15,
+       charactersPerGlyphVS15,
+       0u,
+       nullptr,
+       true,
+       fontDescriptionsColorVS15},
+      {"EMOJI Sequence: Text Font with VS16",
+       "&#x262a;&#xfe0f;",
+       0u,
+       2u,
+       1u,
+       glyphsVS16,
+       characterIndicesVS16,
+       charactersPerGlyphVS16,
+       0u,
+       nullptr,
+       true,
+       fontDescriptionsTextVS16},
+      {"EMOJI Sequence: Text Font with VS15",
+       "&#x262a;&#xfe0e;",
+       0u,
+       2u,
+       2u,
+       glyphsVS15,
+       characterIndicesVS15,
+       charactersPerGlyphVS15,
+       0u,
+       nullptr,
+       true,
+       fontDescriptionsTextVS15},
+    };
 
   const unsigned int numberOfTests = 4u;
 
-  for( unsigned int index = 0u; index < numberOfTests; ++index )
+  for(unsigned int index = 0u; index < numberOfTests; ++index)
   {
-     tet_infoline( data[index].description.c_str());
-    if( !ShapeInfoTest( data[index] ) )
+    tet_infoline(data[index].description.c_str());
+    if(!ShapeInfoTest(data[index]))
     {
       tet_result(TET_FAIL);
     }
index a88a85d..c0e6a76 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
@@ -23,7 +23,6 @@
 #include <dali-toolkit/dali-toolkit.h>
 #include <toolkit-text-utils.h>
 
-
 using namespace Dali;
 using namespace Toolkit;
 using namespace Text;
@@ -36,12 +35,10 @@ using namespace Text;
 // void CreateGlyphsPerCharacterTable( CharacterIndex startIndex,
 //                                     Length numberOfCharacters )
 
-
 //////////////////////////////////////////////////////////
 
 namespace
 {
-
 struct SetGlyphsPerCharacterData
 {
   std::string   description;             ///< Description of the test.
@@ -62,83 +59,85 @@ struct SetCharacterToGlyphData
   unsigned int* glyphsIndices;           ///< The glyph indices.
 };
 
-bool SetGlyphsPerCharacterTest( const SetGlyphsPerCharacterData& data )
+bool SetGlyphsPerCharacterTest(const SetGlyphsPerCharacterData& data)
 {
   // 1) Create the model.
-  ModelPtr textModel;
+  ModelPtr   textModel;
   MetricsPtr metrics;
-  Size textArea(100.f, 60.f);
-  Size layoutSize;
+  Size       textArea(100.f, 60.f);
+  Size       layoutSize;
 
   const Vector<FontDescriptionRun> fontDescriptions;
-  const LayoutOptions options;
-  CreateTextModel( data.text,
-                   textArea,
-                   fontDescriptions,
-                   options,
-                   layoutSize,
-                   textModel,
-                   metrics,
-                   false,
-                   LineWrap::WORD,
-                   false,
-                   Toolkit::DevelText::EllipsisPosition::END,
-                   0.f );
+  const LayoutOptions              options;
+  CreateTextModel(data.text,
+                  textArea,
+                  fontDescriptions,
+                  options,
+                  layoutSize,
+                  textModel,
+                  metrics,
+                  false,
+                  LineWrap::WORD,
+                  false,
+                  Toolkit::DevelText::EllipsisPosition::END,
+                  0.0f, // lineSpacing
+                  0.0f  // characterSpacing
+  );
 
   LogicalModelPtr logicalModel = textModel->mLogicalModel;
-  VisualModelPtr visualModel = textModel->mVisualModel;
+  VisualModelPtr  visualModel  = textModel->mVisualModel;
 
-  Vector<GlyphIndex>& charactersToGlyph = visualModel->mCharactersToGlyph;
-  Vector<Length>& glyphsPerCharacter = visualModel->mGlyphsPerCharacter;
+  Vector<GlyphIndex>& charactersToGlyph  = visualModel->mCharactersToGlyph;
+  Vector<Length>&     glyphsPerCharacter = visualModel->mGlyphsPerCharacter;
 
   // 2) Clear the model.
 
   GlyphIndex startGlyphIndex = 0u;
-  if( 0u != charactersToGlyph.Count() )
+  if(0u != charactersToGlyph.Count())
   {
     // The number of glyphs to be removed.
     const Length numberOfGlyphs = charactersToGlyph[data.startIndex + data.numberOfCharacters - 1u] + glyphsPerCharacter[data.startIndex + data.numberOfCharacters - 1u] - charactersToGlyph[data.startIndex];
-    startGlyphIndex = charactersToGlyph[data.startIndex];
+    startGlyphIndex             = charactersToGlyph[data.startIndex];
 
-    charactersToGlyph.Erase( charactersToGlyph.Begin() + data.startIndex,
-                             charactersToGlyph.Begin() + data.startIndex + data.numberOfCharacters );
-    glyphsPerCharacter.Erase( glyphsPerCharacter.Begin() + data.startIndex,
-                              glyphsPerCharacter.Begin() + data.startIndex + data.numberOfCharacters );
+    charactersToGlyph.Erase(charactersToGlyph.Begin() + data.startIndex,
+                            charactersToGlyph.Begin() + data.startIndex + data.numberOfCharacters);
+    glyphsPerCharacter.Erase(glyphsPerCharacter.Begin() + data.startIndex,
+                             glyphsPerCharacter.Begin() + data.startIndex + data.numberOfCharacters);
 
     // Update the character to glyph indices.
-    for( Vector<GlyphIndex>::Iterator it = charactersToGlyph.Begin() + data.startIndex,
-           endIt = charactersToGlyph.End();
-         it != endIt;
-         ++it )
+    for(Vector<GlyphIndex>::Iterator it    = charactersToGlyph.Begin() + data.startIndex,
+                                     endIt = charactersToGlyph.End();
+        it != endIt;
+        ++it)
     {
       *it -= numberOfGlyphs;
     }
   }
 
   // 3) Call the CreateGlyphsPerCharacterTable() function
-  visualModel->CreateGlyphsPerCharacterTable( data.startIndex,
-                                              startGlyphIndex,
-                                              data.numberOfCharacters );
+  visualModel->CreateGlyphsPerCharacterTable(data.startIndex,
+                                             startGlyphIndex,
+                                             data.numberOfCharacters);
 
   // 4) Compare the results.
-  if( data.totalNumberOfCharacters != glyphsPerCharacter.Count() )
+  if(data.totalNumberOfCharacters != glyphsPerCharacter.Count())
   {
     std::cout << "  Different number of characters : " << glyphsPerCharacter.Count() << ", expected : " << data.totalNumberOfCharacters << std::endl;
     return false;
   }
 
-  for( unsigned int i = 0u; i < data.totalNumberOfCharacters; ++i )
+  for(unsigned int i = 0u; i < data.totalNumberOfCharacters; ++i)
   {
-    if( data.glyphsPerCharacter[i] != glyphsPerCharacter[i] )
+    if(data.glyphsPerCharacter[i] != glyphsPerCharacter[i])
     {
       std::cout << "  Different number of glyphs for index " << i << std::endl;
-      for( unsigned int j = 0; j < data.totalNumberOfCharacters; ++j )
+      for(unsigned int j = 0; j < data.totalNumberOfCharacters; ++j)
       {
         std::cout << glyphsPerCharacter[j] << " ";
       }
       std::cout << std::endl;
       std::cout << "  expected" << std::endl;
-      for( unsigned int j = 0; j < data.totalNumberOfCharacters; ++j )
+      for(unsigned int j = 0; j < data.totalNumberOfCharacters; ++j)
       {
         std::cout << data.glyphsPerCharacter[j] << " ";
       }
@@ -150,81 +149,83 @@ bool SetGlyphsPerCharacterTest( const SetGlyphsPerCharacterData& data )
   return true;
 }
 
-bool SetCharacterToGlyphTest( const SetCharacterToGlyphData& data )
+bool SetCharacterToGlyphTest(const SetCharacterToGlyphData& data)
 {
   // 1) Create the model.
-  ModelPtr textModel;
+  ModelPtr   textModel;
   MetricsPtr metrics;
-  Size textArea(100.f, 60.f);
-  Size layoutSize;
+  Size       textArea(100.f, 60.f);
+  Size       layoutSize;
 
   const Vector<FontDescriptionRun> fontDescriptions;
-  const LayoutOptions options;
-  CreateTextModel( data.text,
-                   textArea,
-                   fontDescriptions,
-                   options,
-                   layoutSize,
-                   textModel,
-                   metrics,
-                   false,
-                   LineWrap::WORD,
-                   false,
-                   Toolkit::DevelText::EllipsisPosition::END,
-                   0.f );
+  const LayoutOptions              options;
+  CreateTextModel(data.text,
+                  textArea,
+                  fontDescriptions,
+                  options,
+                  layoutSize,
+                  textModel,
+                  metrics,
+                  false,
+                  LineWrap::WORD,
+                  false,
+                  Toolkit::DevelText::EllipsisPosition::END,
+                  0.0f, // lineSpacing
+                  0.0f  // characterSpacing
+  );
 
   LogicalModelPtr logicalModel = textModel->mLogicalModel;
-  VisualModelPtr visualModel = textModel->mVisualModel;
+  VisualModelPtr  visualModel  = textModel->mVisualModel;
 
-  Vector<GlyphIndex>& charactersToGlyph = visualModel->mCharactersToGlyph;
-  Vector<Length>& glyphsPerCharacter = visualModel->mGlyphsPerCharacter;
+  Vector<GlyphIndex>& charactersToGlyph  = visualModel->mCharactersToGlyph;
+  Vector<Length>&     glyphsPerCharacter = visualModel->mGlyphsPerCharacter;
 
   // 2) Clear the model.
 
   GlyphIndex startGlyphIndex = 0u;
-  if( 0u != charactersToGlyph.Count() )
+  if(0u != charactersToGlyph.Count())
   {
     // The number of glyphs to be removed.
     const Length numberOfGlyphs = charactersToGlyph[data.startIndex + data.numberOfCharacters - 1u] + glyphsPerCharacter[data.startIndex + data.numberOfCharacters - 1u] - charactersToGlyph[data.startIndex];
-    startGlyphIndex = charactersToGlyph[data.startIndex];
+    startGlyphIndex             = charactersToGlyph[data.startIndex];
 
-    charactersToGlyph.Erase( charactersToGlyph.Begin() + data.startIndex,
-                             charactersToGlyph.Begin() + data.startIndex + data.numberOfCharacters );
+    charactersToGlyph.Erase(charactersToGlyph.Begin() + data.startIndex,
+                            charactersToGlyph.Begin() + data.startIndex + data.numberOfCharacters);
 
     // Update the character to glyph indices.
-    for( Vector<GlyphIndex>::Iterator it = charactersToGlyph.Begin() + data.startIndex,
-           endIt = charactersToGlyph.End();
-         it != endIt;
-         ++it )
+    for(Vector<GlyphIndex>::Iterator it    = charactersToGlyph.Begin() + data.startIndex,
+                                     endIt = charactersToGlyph.End();
+        it != endIt;
+        ++it)
     {
       *it -= numberOfGlyphs;
     }
   }
 
   // 3) Call the CreateCharacterToGlyphTable() function
-  visualModel->CreateCharacterToGlyphTable( data.startIndex,
-                                            startGlyphIndex,
-                                            data.numberOfCharacters );
+  visualModel->CreateCharacterToGlyphTable(data.startIndex,
+                                           startGlyphIndex,
+                                           data.numberOfCharacters);
 
   // 4) Compare the results.
-  if( data.totalNumberOfCharacters != charactersToGlyph.Count() )
+  if(data.totalNumberOfCharacters != charactersToGlyph.Count())
   {
     std::cout << "  Different number of character : " << charactersToGlyph.Count() << ", expected : " << data.totalNumberOfCharacters << std::endl;
     return false;
   }
 
-  for( unsigned int i = 0u; i < data.totalNumberOfCharacters; ++i )
+  for(unsigned int i = 0u; i < data.totalNumberOfCharacters; ++i)
   {
-    if( data.glyphsIndices[i] != charactersToGlyph[i] )
+    if(data.glyphsIndices[i] != charactersToGlyph[i])
     {
       std::cout << "  Different number of character to glyph index " << i << std::endl;
-      for( unsigned int j = 0; j < data.totalNumberOfCharacters; ++j )
+      for(unsigned int j = 0; j < data.totalNumberOfCharacters; ++j)
       {
         std::cout << charactersToGlyph[j] << " ";
       }
       std::cout << std::endl;
       std::cout << "  expected" << std::endl;
-      for( unsigned int j = 0; j < data.totalNumberOfCharacters; ++j )
+      for(unsigned int j = 0; j < data.totalNumberOfCharacters; ++j)
       {
         std::cout << data.glyphsIndices[j] << " ";
       }
@@ -244,72 +245,65 @@ int UtcDaliSetGlyphsPerCharacter(void)
 {
   tet_infoline(" UtcDaliSetGlyphsPerCharacter");
 
-  Length glyphsPerCharacter02[] = { 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u };
-  Length glyphsPerCharacter03[] = { 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 0u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u };
-  Length glyphsPerCharacter04[] = { 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 0u, 1u,
-                                    1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u,
-                                    1u, 1u, 1u, 1u, 0u, 1u, 0u, 2u, 1u, 0u,
-                                    2u, 0u, 2u, 0u, 2u, 1u, 1u, 0u, 0u, 0u,
-                                    2u, 1u, 1u, 1u, 1u, 1u, 0u, 0u, 2u, 1u,
-                                    0u, 2u, 1u, 1u };
+  Length glyphsPerCharacter02[] = {1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u};
+  Length glyphsPerCharacter03[] = {1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 0u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u};
+  Length glyphsPerCharacter04[] = {1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 0u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 0u, 1u, 0u, 2u, 1u, 0u, 2u, 0u, 2u, 0u, 2u, 1u, 1u, 0u, 0u, 0u, 2u, 1u, 1u, 1u, 1u, 1u, 0u, 0u, 2u, 1u, 0u, 2u, 1u, 1u};
 
   struct SetGlyphsPerCharacterData data[] =
-  {
-    {
-      "Zero characters text",
-      "",
-      0u,
-      0u,
-      0u,
-      NULL
-    },
-    {
-      "Simple 1 to 1 text",
-      "Hello world",
-      0u,
-      11u,
-      11u,
-      glyphsPerCharacter02,
-    },
-    {
-      "Text with different number of glyphs and characters.",
-      "Hello different world",
-      0u,
-      21u,
-      21u,
-      glyphsPerCharacter03,
-    },
     {
-      "Text paragraphs with different number of glyphs and characters. Update initial paragraphs.",
-      "Hello different world\nनमस्ते दुनिया\nမင်္ဂလာပါကမ္ဘာလောက",
-      0u,
-      22u,
-      54u,
-      glyphsPerCharacter04,
-    },
-    {
-      "Text paragraphs with different number of glyphs and characters. Update mid paragraphs.",
-      "Hello different world\nनमस्ते दुनिया\nမင်္ဂလာပါကမ္ဘာလောက",
-      22u,
-      14u,
-      54u,
-      glyphsPerCharacter04,
-    },
-    {
-      "Text paragraphs with different number of glyphs and characters. Update final paragraphs.",
-      "Hello different world\nनमस्ते दुनिया\nမင်္ဂလာပါကမ္ဘာလောက",
-      36u,
-      18u,
-      54u,
-      glyphsPerCharacter04,
-    },
-  };
+      {"Zero characters text",
+       "",
+       0u,
+       0u,
+       0u,
+       NULL},
+      {
+        "Simple 1 to 1 text",
+        "Hello world",
+        0u,
+        11u,
+        11u,
+        glyphsPerCharacter02,
+      },
+      {
+        "Text with different number of glyphs and characters.",
+        "Hello different world",
+        0u,
+        21u,
+        21u,
+        glyphsPerCharacter03,
+      },
+      {
+        "Text paragraphs with different number of glyphs and characters. Update initial paragraphs.",
+        "Hello different world\nनमस्ते दुनिया\nမင်္ဂလာပါကမ္ဘာလောက",
+        0u,
+        22u,
+        54u,
+        glyphsPerCharacter04,
+      },
+      {
+        "Text paragraphs with different number of glyphs and characters. Update mid paragraphs.",
+        "Hello different world\nनमस्ते दुनिया\nမင်္ဂလာပါကမ္ဘာလောက",
+        22u,
+        14u,
+        54u,
+        glyphsPerCharacter04,
+      },
+      {
+        "Text paragraphs with different number of glyphs and characters. Update final paragraphs.",
+        "Hello different world\nनमस्ते दुनिया\nမင်္ဂလာပါကမ္ဘာလောက",
+        36u,
+        18u,
+        54u,
+        glyphsPerCharacter04,
+      },
+    };
   const unsigned int numberOfTests = 6u;
 
-  for( unsigned int index = 0u; index < numberOfTests; ++index )
+  for(unsigned int index = 0u; index < numberOfTests; ++index)
   {
     ToolkitTestApplication application;
-    if( !SetGlyphsPerCharacterTest( data[index] ) )
+    if(!SetGlyphsPerCharacterTest(data[index]))
     {
       tet_result(TET_FAIL);
     }
@@ -323,70 +317,66 @@ int UtcDaliSetCharacterToGlyph(void)
 {
   tet_infoline(" UtcDaliSetGlyphsPerCharacter");
 
-  GlyphIndex glyphIndices02[] = { 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 9u, 10u };
-  GlyphIndex glyphIndices03[] = { 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 8u, 9u, 10u, 11u, 12u, 13u, 14u, 15u, 16u, 17u, 18u, 19u };
-  GlyphIndex glyphIndices04[] = { 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 8u, 9u, 10u, 11u, 12u, 13u, 14u, 15u, 16u, 17u, 18u, 19u, 20u,
-                                  21u, 22u, 23u, 23u, 24u, 24u, 26u, 27u, 27u, 29u, 29u, 31u, 31u, 33u,
-                                  34u, 35u, 35u, 35u, 35u, 37u, 38u, 39u, 40u, 41u, 42u, 42u, 42u, 44u, 45u, 45u, 47u, 48u };
+  GlyphIndex glyphIndices02[] = {0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 9u, 10u};
+  GlyphIndex glyphIndices03[] = {0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 8u, 9u, 10u, 11u, 12u, 13u, 14u, 15u, 16u, 17u, 18u, 19u};
+  GlyphIndex glyphIndices04[] = {0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 8u, 9u, 10u, 11u, 12u, 13u, 14u, 15u, 16u, 17u, 18u, 19u, 20u, 21u, 22u, 23u, 23u, 24u, 24u, 26u, 27u, 27u, 29u, 29u, 31u, 31u, 33u, 34u, 35u, 35u, 35u, 35u, 37u, 38u, 39u, 40u, 41u, 42u, 42u, 42u, 44u, 45u, 45u, 47u, 48u};
 
   struct SetCharacterToGlyphData data[] =
-  {
-    {
-      "Zero characters text",
-      "",
-      0u,
-      0u,
-      0u,
-      NULL
-    },
-    {
-      "Simple 1 to 1 text",
-      "Hello world",
-      0u,
-      11u,
-      11u,
-      glyphIndices02,
-    },
-    {
-      "Text with different number of glyphs and characters.",
-      "Hello different world",
-      0u,
-      21u,
-      21u,
-      glyphIndices03,
-    },
-    {
-      "Text paragraphs with different number of glyphs and characters. Update initial paragraphs.",
-      "Hello different world\nनमस्ते दुनिया\nမင်္ဂလာပါကမ္ဘာလောက",
-      0u,
-      22u,
-      54u,
-      glyphIndices04,
-    },
     {
-      "Text paragraphs with different number of glyphs and characters. Update mid paragraphs.",
-      "Hello different world\nनमस्ते दुनिया\nမင်္ဂလာပါကမ္ဘာလောက",
-      22u,
-      14u,
-      54u,
-      glyphIndices04,
-    },
-    {
-      "Text paragraphs with different number of glyphs and characters. Update final paragraphs.",
-      "Hello different world\nनमस्ते दुनिया\nမင်္ဂလာပါကမ္ဘာလောက",
-      36u,
-      18u,
-      54u,
-      glyphIndices04,
-    },
-  };
+      {"Zero characters text",
+       "",
+       0u,
+       0u,
+       0u,
+       NULL},
+      {
+        "Simple 1 to 1 text",
+        "Hello world",
+        0u,
+        11u,
+        11u,
+        glyphIndices02,
+      },
+      {
+        "Text with different number of glyphs and characters.",
+        "Hello different world",
+        0u,
+        21u,
+        21u,
+        glyphIndices03,
+      },
+      {
+        "Text paragraphs with different number of glyphs and characters. Update initial paragraphs.",
+        "Hello different world\nनमस्ते दुनिया\nမင်္ဂလာပါကမ္ဘာလောက",
+        0u,
+        22u,
+        54u,
+        glyphIndices04,
+      },
+      {
+        "Text paragraphs with different number of glyphs and characters. Update mid paragraphs.",
+        "Hello different world\nनमस्ते दुनिया\nမင်္ဂလာပါကမ္ဘာလောက",
+        22u,
+        14u,
+        54u,
+        glyphIndices04,
+      },
+      {
+        "Text paragraphs with different number of glyphs and characters. Update final paragraphs.",
+        "Hello different world\nनमस्ते दुनिया\nမင်္ဂလာပါကမ္ဘာလောက",
+        36u,
+        18u,
+        54u,
+        glyphIndices04,
+      },
+    };
 
   const unsigned int numberOfTests = 6u;
 
-  for( unsigned int index = 0u; index < numberOfTests; ++index )
+  for(unsigned int index = 0u; index < numberOfTests; ++index)
   {
     ToolkitTestApplication application;
-    if( !SetCharacterToGlyphTest( data[index] ) )
+    if(!SetCharacterToGlyphTest(data[index]))
     {
       tet_result(TET_FAIL);
     }
index e38ca01..728134f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
@@ -5645,6 +5645,30 @@ int UtcDaliToolkitTextEditorUnderlineTypesGeneration3(void)
   DALI_TEST_EQUALS(DaliTestCheckMaps(underlineMapGet1, underlineMapSet1), true, TEST_LOCATION);
 
   application.GetScene().Add(textEditor1);
+
+  application.SendNotification();
+  application.Render();
+
+  END_TEST;
+}
+
+int UtcDaliTextEditorCharacterSpacing(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliTextEditorCharacterSpacing ");
+
+  TextEditor textEditor = TextEditor::New();
+
+  textEditor.SetProperty(Actor::Property::SIZE, Vector2(150.0f, 300.f));
+
+  application.GetScene().Add(textEditor);
+  application.SendNotification();
+  application.Render();
+
+  textEditor.SetProperty(TextEditor::Property::TEXT, "Hi Experiment");
+  textEditor.SetProperty(DevelTextEditor::Property::CHARACTER_SPACING, 10.f);
+  DALI_TEST_EQUALS(textEditor.GetProperty<float>(DevelTextEditor::Property::CHARACTER_SPACING), 10.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION);
+
   application.SendNotification();
   application.Render();
 
index aca0054..892fc99 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
@@ -5142,6 +5142,30 @@ int UtcDaliToolkitTextFieldUnderlineTypesGeneration2(void)
   DALI_TEST_EQUALS(DaliTestCheckMaps(underlineMapGet3, underlineMapSet3), true, TEST_LOCATION);
 
   application.GetScene().Add(field3);
+
+  application.SendNotification();
+  application.Render();
+
+  END_TEST;
+}
+
+int UtcDaliTextFieldCharacterSpacing(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliTextFieldCharacterSpacing ");
+
+  TextField textField = TextField::New();
+
+  textField.SetProperty(Actor::Property::SIZE, Vector2(150.0f, 300.f));
+
+  application.GetScene().Add(textField);
+  application.SendNotification();
+  application.Render();
+
+  textField.SetProperty(TextField::Property::TEXT, "Hi Experiment");
+  textField.SetProperty(DevelTextField::Property::CHARACTER_SPACING, 10.f);
+  DALI_TEST_EQUALS(textField.GetProperty<float>(DevelTextField::Property::CHARACTER_SPACING), 10.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION);
+
   application.SendNotification();
   application.Render();
 
index 66148f2..95d0689 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
@@ -2630,4 +2630,27 @@ int UtcDaliToolkitTextLabelStrikethroughGeneration(void)
   strikethroughMapGet.Clear();
 
   END_TEST;
+}
+
+int UtcDaliTextLabelCharacterSpacing(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliTextLabelCharacterSpacing ");
+
+  TextLabel textLabel = TextLabel::New();
+
+  textLabel.SetProperty(Actor::Property::SIZE, Vector2(150.0f, 300.f));
+
+  application.GetScene().Add(textLabel);
+  application.SendNotification();
+  application.Render();
+
+  textLabel.SetProperty(TextLabel::Property::TEXT, "Hi Experiment");
+  textLabel.SetProperty(DevelTextLabel::Property::CHARACTER_SPACING, 10.f);
+  DALI_TEST_EQUALS(textLabel.GetProperty<float>(DevelTextLabel::Property::CHARACTER_SPACING), 10.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION);
+
+  application.SendNotification();
+  application.Render();
+
+  END_TEST;
 }
\ No newline at end of file
index 5a35e2d..309a4f8 100644 (file)
@@ -294,6 +294,15 @@ enum Type
    * @details Name "inputStrikethrough", type Property::MAP.
    */
   INPUT_STRIKETHROUGH,
+
+  /**
+  * @brief The spaces between characters in Pixels.
+  * @details Name "characterSpacing", type Property::FLOAT.
+  * @note
+  *   A positive value will make the characters far apart (expanded) and a negative value will bring them closer (condensed).
+  *   The default value is 0.f which does nothing.
+  */
+  CHARACTER_SPACING,
 };
 
 } // namespace Property
index 9bc6fc1..1c711a8 100644 (file)
@@ -233,6 +233,15 @@ enum
    * @details Name "inputStrikethrough", type Property::MAP.
    */
   INPUT_STRIKETHROUGH,
+
+  /**
+  * @brief The spaces between characters in Pixels.
+  * @details Name "characterSpacing", type Property::FLOAT.
+  * @note
+  *   A positive value will make the characters far apart (expanded) and a negative value will bring them closer (condensed).
+  *   The default value is 0.f which does nothing.
+  */
+  CHARACTER_SPACING,
 };
 
 } // namespace Property
index 47c41a8..205950c 100644 (file)
@@ -185,6 +185,15 @@ enum Type
    *
    */
   STRIKETHROUGH,
+
+  /**
+  * @brief The spaces between characters in Pixels.
+  * @details Name "characterSpacing", type Property::FLOAT.
+  * @note
+  *   A positive value will make the characters far apart (expanded) and a negative value will bring them closer (condensed).
+  *   The default value is 0.f which does nothing.
+  */
+  CHARACTER_SPACING,
 };
 
 } // namespace Property
index b4abff2..7242687 100644 (file)
@@ -40,6 +40,7 @@
 #include <dali-toolkit/internal/text/text-enumerations-impl.h>
 #include <dali-toolkit/internal/text/text-font-style.h>
 #include <dali-toolkit/internal/text/text-model.h>
+#include <dali-toolkit/internal/text/glyph-metrics-helper.h>
 
 namespace Dali
 {
@@ -814,9 +815,13 @@ void Ellipsis(const RendererParameters& textParameters, TextAbstraction::TextRen
   Text::ModelPtr& textModel  = internalDataModel.textModel;
   FontClient&     fontClient = internalDataModel.fontClient;
 
-  Vector<LineRun>& lines          = textModel->mVisualModel->mLines; // The laid out lines.
-  Vector<bool>&    isEmoji        = internalDataModel.isEmoji;
-  const Size       textLayoutArea = internalDataModel.textLayoutArea;
+  Vector<LineRun>&        lines                     = textModel->mVisualModel->mLines; // The laid out lines.
+  Vector<bool>&           isEmoji                   = internalDataModel.isEmoji;
+  const Size              textLayoutArea            = internalDataModel.textLayoutArea;
+  const float             characterSpacing          = textModel->mVisualModel->GetCharacterSpacing();
+  float                   calculatedAdvance         = 0.f;
+  Vector<CharacterIndex>& glyphToCharacterMap       = textModel->mVisualModel->mGlyphsToCharacters;
+  const CharacterIndex*   glyphToCharacterMapBuffer = glyphToCharacterMap.Begin();
   ////////////////////////////////////////////////////////////////////////////////
   // Ellipsis the text.
   ////////////////////////////////////////////////////////////////////////////////
@@ -902,7 +907,8 @@ void Ellipsis(const RendererParameters& textParameters, TextAbstraction::TextRen
                 firstPenSet = true;
               }
 
-              removedGlypsWidth += std::min(glyphToRemove.advance, (glyphToRemove.xBearing + glyphToRemove.width));
+              calculatedAdvance = GetCalculatedAdvance(*(textModel->mLogicalModel->mText.Begin() + (*(glyphToCharacterMapBuffer + index))), characterSpacing, glyphToRemove.advance);
+              removedGlypsWidth += std::min(calculatedAdvance, (glyphToRemove.xBearing + glyphToRemove.width));
 
               // Calculate the width of the ellipsis glyph and check if it fits.
               const float ellipsisGlyphWidth = ellipsisGlyph.width + ellipsisGlyph.xBearing;
index a8c79d6..2966b95 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_TOOLKIT_DEVEL_API_VISUALS_TEXT_VISUAL_PROPERTIES_DEVEL_H
 
 /*
- * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
@@ -61,6 +61,11 @@ enum
    * @copydoc Dali::Toolkit::DevelTextLabel::Property::STRIKETHROUGH
    */
   STRIKETHROUGH = UNDERLINE + 3,
+
+  /**
+   * @copydoc Dali::Toolkit::DevelTextLabel::Property::CHARACTER_SPACING
+   */
+  CHARACTER_SPACING = UNDERLINE + 4,
 };
 
 } // namespace Property
index a75e21c..5f7a01c 100644 (file)
@@ -157,6 +157,7 @@ DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit,           TextEditor, "ellipsisPositio
 DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit,           TextEditor, "minLineSize",                          FLOAT,     MIN_LINE_SIZE                       )
 DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit,           TextEditor, "strikethrough",                        MAP,       STRIKETHROUGH                       )
 DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit,           TextEditor, "inputStrikethrough",                   MAP,       INPUT_STRIKETHROUGH                 )
+DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit,           TextEditor, "characterSpacing",                     FLOAT,     CHARACTER_SPACING                   )
 
 DALI_SIGNAL_REGISTRATION(Toolkit, TextEditor, "textChanged",           SIGNAL_TEXT_CHANGED           )
 DALI_SIGNAL_REGISTRATION(Toolkit, TextEditor, "inputStyleChanged",     SIGNAL_INPUT_STYLE_CHANGED    )
index c6698ff..3cb9df0 100644 (file)
@@ -716,6 +716,13 @@ void TextEditor::PropertyHandler::SetProperty(Toolkit::TextEditor textEditor, Pr
       }
       break;
     }
+    case Toolkit::DevelTextEditor::Property::CHARACTER_SPACING:
+    {
+      const float characterSpacing = value.Get<float>();
+      impl.mController->SetCharacterSpacing(characterSpacing);
+      impl.mRenderer.Reset();
+      break;
+    }
   }
 }
 
@@ -1118,6 +1125,11 @@ Property::Value TextEditor::PropertyHandler::GetProperty(Toolkit::TextEditor tex
       value = impl.mController->GetDefaultLineSize();
       break;
     }
+    case Toolkit::DevelTextEditor::Property::CHARACTER_SPACING:
+    {
+      value = impl.mController->GetCharacterSpacing();
+      break;
+    }
   } //switch
   return value;
 }
index 3475b36..626dcf2 100644 (file)
@@ -144,6 +144,7 @@ DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit,           TextField, "inputFilter",
 DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit,           TextField, "ellipsisPosition",                 INTEGER,   ELLIPSIS_POSITION                   )
 DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit,           TextField, "strikethrough",                    MAP,       STRIKETHROUGH                       )
 DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit,           TextField, "inputStrikethrough",               MAP,       INPUT_STRIKETHROUGH                 )
+DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit,           TextField, "characterSpacing",                 FLOAT,     CHARACTER_SPACING                   )
 
 DALI_SIGNAL_REGISTRATION(Toolkit, TextField, "textChanged",           SIGNAL_TEXT_CHANGED           )
 DALI_SIGNAL_REGISTRATION(Toolkit, TextField, "maxLengthReached",      SIGNAL_MAX_LENGTH_REACHED     )
index 6020ba7..c4080b7 100644 (file)
@@ -692,6 +692,14 @@ void TextField::PropertyHandler::SetProperty(Toolkit::TextField textField, Prope
       }
       break;
     }
+    case Toolkit::DevelTextField::Property::CHARACTER_SPACING:
+    {
+      const float characterSpacing = value.Get<float>();
+      DALI_LOG_INFO(gTextFieldLogFilter, Debug::General, "TextField %p CHARACTER_SPACING %d\n", impl.mController.Get(), characterSpacing);
+
+      impl.mController->SetCharacterSpacing(characterSpacing);
+      break;
+    }
   }
 }
 
@@ -1067,6 +1075,11 @@ Property::Value TextField::PropertyHandler::GetProperty(Toolkit::TextField textF
       GetStrikethroughProperties(impl.mController, value, Text::EffectStyle::INPUT);
       break;
     }
+    case Toolkit::DevelTextField::Property::CHARACTER_SPACING:
+    {
+      value = impl.mController->GetCharacterSpacing();
+      break;
+    }
   } //switch
   return value;
 }
index 9ef8ed1..fb91c6f 100644 (file)
@@ -139,6 +139,7 @@ DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit,           TextLabel, "fontSizeScale",
 DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit,           TextLabel, "enableFontSizeScale",          BOOLEAN, ENABLE_FONT_SIZE_SCALE         )
 DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit,           TextLabel, "ellipsisPosition",             INTEGER, ELLIPSIS_POSITION              )
 DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit,           TextLabel, "strikethrough",                MAP,     STRIKETHROUGH                  )
+DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit,           TextLabel, "characterSpacing",             FLOAT,   CHARACTER_SPACING              )
 
 DALI_ANIMATABLE_PROPERTY_REGISTRATION_WITH_DEFAULT(Toolkit, TextLabel, "textColor",      Color::BLACK,     TEXT_COLOR   )
 DALI_ANIMATABLE_PROPERTY_COMPONENT_REGISTRATION(Toolkit,    TextLabel, "textColorRed",   TEXT_COLOR_RED,   TEXT_COLOR, 0)
@@ -534,6 +535,12 @@ void TextLabel::SetProperty(BaseObject* object, Property::Index index, const Pro
         impl.mTextUpdateNeeded = SetStrikethroughProperties(impl.mController, value, Text::EffectStyle::DEFAULT) || impl.mTextUpdateNeeded;
         break;
       }
+      case Toolkit::DevelTextLabel::Property::CHARACTER_SPACING:
+      {
+        const float characterSpacing = value.Get<float>();
+        impl.mController->SetCharacterSpacing(characterSpacing);
+        break;
+      }
     }
 
     // Request relayout when text update is needed. It's necessary to call it
@@ -787,6 +794,11 @@ Property::Value TextLabel::GetProperty(BaseObject* object, Property::Index index
         GetStrikethroughProperties(impl.mController, value, Text::EffectStyle::DEFAULT);
         break;
       }
+      case Toolkit::DevelTextLabel::Property::CHARACTER_SPACING:
+      {
+        value = impl.mController->GetCharacterSpacing();
+        break;
+      }
     }
   }
 
index ddddf9a..e57fa31 100644 (file)
@@ -181,6 +181,7 @@ SET( toolkit_src_files
    ${toolkit_src_dir}/text/text-view-interface.cpp
    ${toolkit_src_dir}/text/visual-model-impl.cpp
    ${toolkit_src_dir}/text/decorator/text-decorator.cpp
+   ${toolkit_src_dir}/text/layouts/layout-engine-helper-functions.cpp
    ${toolkit_src_dir}/text/layouts/layout-engine.cpp
    ${toolkit_src_dir}/text/multi-language-helper-functions.cpp
    ${toolkit_src_dir}/text/multi-language-support-impl.cpp
index 2379bcc..c70d530 100644 (file)
@@ -212,6 +212,7 @@ CharacterIndex GetClosestCursorIndex(VisualModelPtr         visualModel,
   {
     return logicalIndex;
   }
+  const float characterSpacing = visualModel->GetCharacterSpacing();
 
   // Whether there is a hit on a line.
   bool matchedLine = false;
@@ -262,8 +263,11 @@ CharacterIndex GetClosestCursorIndex(VisualModelPtr         visualModel,
   bool isBeforeFirstGlyph = false;
 
   // Traverses glyphs in visual order. To do that use the visual to logical conversion table.
-  CharacterIndex visualIndex              = startCharacter;
-  Length         numberOfVisualCharacters = 0;
+  CharacterIndex          visualIndex               = startCharacter;
+  Length                  numberOfVisualCharacters  = 0;
+  float                   calculatedAdvance         = 0.f;
+  Vector<CharacterIndex>& glyphToCharacterMap       = visualModel->mGlyphsToCharacters;
+  const CharacterIndex*   glyphToCharacterMapBuffer = glyphToCharacterMap.Begin();
   for(; visualIndex < endCharacter; ++visualIndex)
   {
     // The character in logical order.
@@ -283,11 +287,13 @@ CharacterIndex GetClosestCursorIndex(VisualModelPtr         visualModel,
 
       // Get the metrics for the group of glyphs.
       GlyphMetrics glyphMetrics;
+      calculatedAdvance = GetCalculatedAdvance(*(logicalModel->mText.Begin() + (*(glyphToCharacterMapBuffer + firstLogicalGlyphIndex))), characterSpacing, (*(visualModel->mGlyphs.Begin() + firstLogicalGlyphIndex)).advance);
       GetGlyphsMetrics(firstLogicalGlyphIndex,
                        numberOfGlyphs,
                        glyphMetrics,
                        glyphInfoBuffer,
-                       metrics);
+                       metrics,
+                       calculatedAdvance);
 
       // Get the position of the first glyph.
       const Vector2& position = *(positionsBuffer + firstLogicalGlyphIndex);
@@ -480,14 +486,11 @@ void GetCursorPosition(GetCursorPositionParameters& parameters,
   const LineIndex lineIndex = parameters.visualModel->GetLineOfCharacter(characterOfLine);
   const LineRun&  line      = *(modelLines + lineIndex);
 
-  const GlyphIndex* const charactersToGlyphBuffer  = parameters.visualModel->mCharactersToGlyph.Begin();
-  const Length* const     glyphsPerCharacterBuffer = parameters.visualModel->mGlyphsPerCharacter.Begin();
-  const GlyphInfo* const  glyphInfoBuffer          = parameters.visualModel->mGlyphs.Begin();
-  CharacterIndex          index;
-  GlyphMetrics            glyphMetrics;
-  MetricsPtr&             metrics        = parameters.metrics;
-  GlyphIndex              glyphIndex     = 0u;
-  Length                  numberOfGlyphs = 0u;
+  CharacterIndex index;
+  GlyphMetrics   glyphMetrics;
+  MetricsPtr&    metrics        = parameters.metrics;
+  GlyphIndex     glyphIndex     = 0u;
+  Length         numberOfGlyphs = 0u;
 
   if(isLastNewParagraph)
   {
@@ -510,7 +513,7 @@ void GetCursorPosition(GetCursorPositionParameters& parameters,
       index = totalNumberOfCharacters - 1u;
     }
 
-    GetGlyphMetricsFromCharacterIndex(index, glyphInfoBuffer, charactersToGlyphBuffer, glyphsPerCharacterBuffer, metrics, glyphMetrics, glyphIndex, numberOfGlyphs);
+    GetGlyphMetricsFromCharacterIndex(index, parameters.visualModel, parameters.logicalModel, metrics, glyphMetrics, glyphIndex, numberOfGlyphs);
 
     // Set the primary cursor's height.
     // The primary cursor height will take the font height of the last character and if there are no characters, it'll take the default font line height.
@@ -597,8 +600,12 @@ void GetCursorPosition(GetCursorPositionParameters& parameters,
     const Length* const         charactersPerGlyphBuffer = parameters.visualModel->mCharactersPerGlyph.Begin();
     const CharacterIndex* const glyphsToCharactersBuffer = parameters.visualModel->mGlyphsToCharacters.Begin();
     const Vector2* const        glyphPositionsBuffer     = parameters.visualModel->mGlyphPositions.Begin();
+    const float                 characterSpacing         = parameters.visualModel->GetCharacterSpacing();
 
-    GetGlyphMetricsFromCharacterIndex(index, glyphInfoBuffer, charactersToGlyphBuffer, glyphsPerCharacterBuffer, metrics, glyphMetrics, glyphIndex, numberOfGlyphs);
+    // Get the metrics for the group of glyphs.
+    GetGlyphMetricsFromCharacterIndex(index, parameters.visualModel, parameters.logicalModel, metrics, glyphMetrics, glyphIndex, numberOfGlyphs);
+
+    // Convert the cursor position into the glyph position.
     const GlyphIndex primaryGlyphIndex         = glyphIndex;
     const Length     primaryNumberOfCharacters = *(charactersPerGlyphBuffer + primaryGlyphIndex);
 
@@ -636,7 +643,7 @@ void GetCursorPosition(GetCursorPositionParameters& parameters,
                                   (isFirstPositionOfLine && isRightToLeftParagraph) ||
                                   (!isFirstPositionOfLine && !isLastPosition && !isCurrentRightToLeft));
 
-    float glyphAdvance = addGlyphAdvance ? glyphMetrics.advance : 0.f;
+    float glyphAdvance = addGlyphAdvance ? (glyphMetrics.advance) : 0.f;
 
     if(!isLastPositionOfLine &&
        (primaryNumberOfCharacters > 1u))
@@ -655,7 +662,7 @@ void GetCursorPosition(GetCursorPositionParameters& parameters,
         numberOfGlyphAdvance = primaryNumberOfCharacters - numberOfGlyphAdvance;
       }
 
-      glyphAdvance = static_cast<float>(numberOfGlyphAdvance) * glyphMetrics.advance / static_cast<float>(primaryNumberOfCharacters);
+      glyphAdvance = static_cast<float>(numberOfGlyphAdvance) * (glyphMetrics.advance) / static_cast<float>(primaryNumberOfCharacters);
     }
 
     // Get the glyph position and x bearing (in the line's coords).
@@ -684,7 +691,8 @@ void GetCursorPosition(GetCursorPositionParameters& parameters,
         index = (isRightToLeftParagraph == isCurrentRightToLeft) ? nextCharacterIndex : characterIndex;
       }
 
-      GetGlyphMetricsFromCharacterIndex(index, glyphInfoBuffer, charactersToGlyphBuffer, glyphsPerCharacterBuffer, metrics, glyphMetrics, glyphIndex, numberOfGlyphs);
+      GetGlyphMetricsFromCharacterIndex(index, parameters.visualModel, parameters.logicalModel, metrics, glyphMetrics, glyphIndex, numberOfGlyphs);
+
       const GlyphIndex secondaryGlyphIndex = glyphIndex;
       const Vector2&   secondaryPosition   = *(glyphPositionsBuffer + secondaryGlyphIndex);
 
@@ -709,7 +717,7 @@ void GetCursorPosition(GetCursorPositionParameters& parameters,
       const bool addGlyphAdvance = ((!isFirstPositionOfLine && !isCurrentRightToLeft) ||
                                     (isFirstPositionOfLine && !isRightToLeftParagraph));
 
-      cursorInfo.secondaryPosition.x = -glyphMetrics.xBearing + secondaryPosition.x + (addGlyphAdvance ? glyphMetrics.advance : 0.f);
+      cursorInfo.secondaryPosition.x = -glyphMetrics.xBearing + secondaryPosition.x + (addGlyphAdvance ? (glyphMetrics.advance + characterSpacing) : 0.f);
       cursorInfo.secondaryPosition.y = cursorInfo.lineOffset + cursorInfo.lineHeight - cursorInfo.secondaryCursorHeight;
 
       // Transform the cursor info from line's coords to text's coords.
index f87555e..01c62c7 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
@@ -50,7 +50,8 @@ void GetGlyphsMetrics(GlyphIndex             glyphIndex,
                       Length                 numberOfGlyphs,
                       GlyphMetrics&          glyphMetrics,
                       const GlyphInfo* const glyphsBuffer,
-                      MetricsPtr&            metrics)
+                      MetricsPtr&            metrics,
+                      float                  calculatedAdvance)
 {
   const GlyphInfo& firstGlyph = *(glyphsBuffer + glyphIndex);
 
@@ -72,7 +73,7 @@ void GetGlyphsMetrics(GlyphIndex             glyphIndex,
   glyphMetrics.fontId     = firstGlyph.fontId;
   glyphMetrics.fontHeight = fontMetrics.height;
   glyphMetrics.width      = firstGlyph.width;
-  glyphMetrics.advance    = firstGlyph.advance;
+  glyphMetrics.advance    = calculatedAdvance;
   glyphMetrics.ascender   = fontMetrics.ascender;
   glyphMetrics.xBearing   = firstGlyph.xBearing;
 
@@ -91,7 +92,7 @@ void GetGlyphsMetrics(GlyphIndex             glyphIndex,
       const float currentMaxGlyphWidthEdge = glyphMetrics.advance + glyphInfo.xBearing + glyphInfo.width;
       maxWidthEdge                         = std::max(maxWidthEdge, currentMaxGlyphWidthEdge);
 
-      glyphMetrics.advance += glyphInfo.advance;
+      glyphMetrics.advance += (glyphInfo.advance);
     }
 
     glyphMetrics.width = maxWidthEdge - glyphMetrics.xBearing;
@@ -100,18 +101,47 @@ void GetGlyphsMetrics(GlyphIndex             glyphIndex,
   glyphMetrics.width += (firstGlyph.isItalicRequired && !isItalicFont) ? TextAbstraction::FontClient::DEFAULT_ITALIC_ANGLE * firstGlyph.height : 0.f;
 }
 
-void GetGlyphMetricsFromCharacterIndex(CharacterIndex index, const GlyphInfo* const glyphInfoBuffer, const GlyphIndex* const charactersToGlyphBuffer, const Length* const glyphsPerCharacterBuffer, MetricsPtr& metrics, GlyphMetrics& glyphMetrics, GlyphIndex& glyphIndex, Length& numberOfGlyphs)
+void GetGlyphMetricsFromCharacterIndex(CharacterIndex         index,
+                                       const VisualModelPtr&  visualModel,
+                                       const LogicalModelPtr& logicalModel,
+                                       MetricsPtr&            metrics,
+                                       GlyphMetrics&          glyphMetrics,
+                                       GlyphIndex&            glyphIndex,
+                                       Length&                numberOfGlyphs)
 {
+  const GlyphIndex* const charactersToGlyphBuffer   = visualModel->mCharactersToGlyph.Begin();
+  const Length* const     glyphsPerCharacterBuffer  = visualModel->mGlyphsPerCharacter.Begin();
+  const GlyphInfo* const  glyphInfoBuffer           = visualModel->mGlyphs.Begin();
+  Vector<CharacterIndex>& glyphToCharacterMap       = visualModel->mGlyphsToCharacters;
+  const CharacterIndex*   glyphToCharacterMapBuffer = glyphToCharacterMap.Begin();
+  const float             characterSpacing          = visualModel->GetCharacterSpacing();
+
   //Takes the character index, obtains the glyph index (and the number of Glyphs) from it and finally gets the glyph metrics.
   glyphIndex     = *(charactersToGlyphBuffer + index);
   numberOfGlyphs = *(glyphsPerCharacterBuffer + index);
 
+  float calculatedAdvance = 0.f;
+
+  calculatedAdvance = GetCalculatedAdvance(*(logicalModel->mText.Begin() + (*(glyphToCharacterMapBuffer + glyphIndex))), characterSpacing, (*(visualModel->mGlyphs.Begin() + glyphIndex)).advance);
+
   // Get the metrics for the group of glyphs.
   GetGlyphsMetrics(glyphIndex,
                    numberOfGlyphs,
                    glyphMetrics,
                    glyphInfoBuffer,
-                   metrics);
+                   metrics,
+                   calculatedAdvance);
+}
+
+float GetCalculatedAdvance(unsigned int character, float characterSpacing, float advance)
+{
+  //Gets the final advance value by adding the CharacterSpacing value to it
+  //In some cases the CharacterSpacing should not be added. Ex: when the glyph is a ZWSP (Zero Width Space)
+  return (TextAbstraction::IsZeroWidthNonJoiner(character) || TextAbstraction::IsZeroWidthJoiner(character) ||
+          TextAbstraction::IsZeroWidthSpace(character) || TextAbstraction::IsNewParagraph(character) ||
+          TextAbstraction::IsLeftToRightMark(character) || TextAbstraction::IsRightToLeftMark(character))
+           ? advance
+           : advance + characterSpacing;
 }
 
 } // namespace Text
index dac57f0..0c996db 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_TOOLKIT_TEXT_GLYPH_METRICS_HELPER_H
 
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
@@ -19,7 +19,9 @@
  */
 
 // INTERNAL INCLUDES
+#include <dali-toolkit/internal/text/logical-model-impl.h>
 #include <dali-toolkit/internal/text/metrics.h>
+#include <dali-toolkit/internal/text/visual-model-impl.h>
 
 namespace Dali
 {
@@ -76,34 +78,46 @@ Length GetNumberOfGlyphsOfGroup(GlyphIndex          glyphIndex,
  * @param[out] glyphMetrics Some glyph metrics (font height, advance, ascender and x bearing).
  * @param[in] glyphsBuffer The glyphs buffer.
  * @param[in] metrics Used to access metrics from FontClient.
+ * @param[in] calculatedAdvance The final advance value obtained by adding the CharacterSpacing value to the original advance. In some cases the CharacterSpacing should not be added. Ex: when the glyph is a ZWSP (Zero Width Space)
  */
 void GetGlyphsMetrics(GlyphIndex             glyphIndex,
                       Length                 numberOfGlyphs,
                       GlyphMetrics&          glyphMetrics,
                       const GlyphInfo* const glyphsBuffer,
-                      MetricsPtr&            metrics);
+                      MetricsPtr&            metrics,
+                      float                  calculatedAdvance);
+
+/**
+ * @brief Gets the final advance value by adding the CharacterSpacing value to it
+ *In some cases the CharacterSpacing should not be added. Ex: when the glyph is a ZWSP (Zero Width Space)
+ *
+ * @param[in] character The character of which the advance is to be calculated.
+ * @param[in] characterSpacing The character spacing to be added to the advance.
+ * @param[in] advance The original advance.
+ *
+ * @return The calculated advance
+ */
+float GetCalculatedAdvance(unsigned int character, float characterSpacing, float advance);
 
 /**
  * @brief Takes the character index, obtains the glyph index (and the number of Glyphs) from it and finally gets the glyph metrics.
  *
  * @param[in] index The character index.
- * @param[in] glyphInfoBuffer The glyphs buffer.
- * @param[in] charactersToGlyphBuffer A vector containing the glyph index for each character.
- * @param[in] glyphsPerCharacterBuffer A vector containing the number of glyphs in each character.
+ * @param[in] visualModel The visual model.
+ * @param[in] logicalModel The logical model.
  * @param[in] metrics Used to access metrics from FontClient.
  * @param[out] glyphMetrics Some glyph metrics (font height, advance, ascender and x bearing).
  * @param[out] glyphIndex The glyph index obtained from the character index.
  * @param[out] numberOfGlyphs The number of glyphs in the character of which the index was passed to the function.
  *
  */
-void GetGlyphMetricsFromCharacterIndex(CharacterIndex          index,
-                                       const GlyphInfo* const  glyphInfoBuffer,
-                                       const GlyphIndex* const charactersToGlyphBuffer,
-                                       const Length* const     glyphsPerCharacterBuffer,
-                                       MetricsPtr&             metrics,
-                                       GlyphMetrics&           glyphMetrics,
-                                       GlyphIndex&             glyphIndex,
-                                       Length&                 numberOfGlyphs);
+void GetGlyphMetricsFromCharacterIndex(CharacterIndex         index,
+                                       const VisualModelPtr&  visualModel,
+                                       const LogicalModelPtr& logicalModel,
+                                       MetricsPtr&            metrics,
+                                       GlyphMetrics&          glyphMetrics,
+                                       GlyphIndex&            glyphIndex,
+                                       Length&                numberOfGlyphs);
 
 } // namespace Text
 
diff --git a/dali-toolkit/internal/text/layouts/layout-engine-helper-functions.cpp b/dali-toolkit/internal/text/layouts/layout-engine-helper-functions.cpp
new file mode 100644 (file)
index 0000000..85676cf
--- /dev/null
@@ -0,0 +1,148 @@
+/*
+ * Copyright (c) 2022 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// FILE HEADER
+#include <dali-toolkit/internal/text/layouts/layout-engine-helper-functions.h>
+
+// INTERNAL INCLUDE
+#include <dali-toolkit/internal/text/glyph-metrics-helper.h>
+
+namespace Dali
+{
+namespace Toolkit
+{
+namespace Text
+{
+namespace Layout
+{
+void CalculateGlyphPositionsLTR(const VisualModelPtr&  visualModel,
+                                const LogicalModelPtr& logicalModel,
+                                const float            interGlyphExtraAdvance,
+                                const Length           numberOfGlyphs,
+                                const GlyphIndex       startIndexForGlyph,
+                                const GlyphIndex       startIndexForGlyphPositions,
+                                Vector2*               glyphPositionsBuffer,
+                                float&                 penX)
+{
+  const GlyphInfo* const glyphsBuffer     = visualModel->mGlyphs.Begin();
+  const float            characterSpacing = visualModel->GetCharacterSpacing();
+  const Character* const textBuffer       = logicalModel->mText.Begin();
+
+  Vector<CharacterIndex>& glyphToCharacterMap       = visualModel->mGlyphsToCharacters;
+  const CharacterIndex*   glyphToCharacterMapBuffer = glyphToCharacterMap.Begin();
+
+  float calculatedAdvance = 0.f;
+
+  for(GlyphIndex i = 0u; i < numberOfGlyphs; ++i)
+  {
+    const GlyphInfo& glyph    = *(glyphsBuffer + startIndexForGlyph + i);
+    Vector2&         position = *(glyphPositionsBuffer + startIndexForGlyphPositions + i);
+
+    position.x = penX + glyph.xBearing;
+    position.y = -glyph.yBearing;
+
+    calculatedAdvance = GetCalculatedAdvance(*(textBuffer + (*(glyphToCharacterMapBuffer + (startIndexForGlyph + i)))), characterSpacing, glyph.advance);
+    penX += (calculatedAdvance + interGlyphExtraAdvance);
+  }
+}
+
+void CalculateGlyphPositionsRTL(const VisualModelPtr&            visualModel,
+                                const LogicalModelPtr&           logicalModel,
+                                const BidirectionalLineRunIndex& bidiLineIndex,
+                                const GlyphIndex&                startGlyphIndex,
+                                Vector2*                         glyphPositionsBuffer,
+                                CharacterIndex&                  characterVisualIndex,
+                                CharacterIndex&                  characterLogicalIndex,
+                                float&                           penX)
+{
+  const Character* const          textBuffer               = logicalModel->mText.Begin();
+  const BidirectionalLineInfoRun& bidiLine                 = logicalModel->mBidirectionalLineInfo[bidiLineIndex];
+  const GlyphInfo* const          glyphsBuffer             = visualModel->mGlyphs.Begin();
+  const GlyphIndex* const         charactersToGlyphsBuffer = visualModel->mCharactersToGlyph.Begin();
+  const float                     characterSpacing         = visualModel->GetCharacterSpacing();
+
+  float calculatedAdvance = 0.f;
+
+  while(TextAbstraction::IsWhiteSpace(*(textBuffer + characterVisualIndex)))
+  {
+    const GlyphIndex glyphIndex = *(charactersToGlyphsBuffer + characterVisualIndex);
+    const GlyphInfo& glyph      = *(glyphsBuffer + glyphIndex);
+
+    Vector2& position = *(glyphPositionsBuffer + glyphIndex - startGlyphIndex);
+    position.x        = penX;
+    position.y        = -glyph.yBearing;
+
+    calculatedAdvance = GetCalculatedAdvance(*(textBuffer + characterVisualIndex), characterSpacing, glyph.advance);
+    penX += calculatedAdvance;
+
+    ++characterLogicalIndex;
+    characterVisualIndex = bidiLine.characterRun.characterIndex + *(bidiLine.visualToLogicalMap + characterLogicalIndex);
+  }
+}
+
+void TraversesCharactersForGlyphPositionsRTL(const VisualModelPtr&  visualModel,
+                                             const Character* const textBuffer,
+                                             const GlyphIndex&      startGlyphIndex,
+                                             const float            interGlyphExtraAdvance,
+                                             const CharacterRun&    bidiLineCharacterRun,
+                                             CharacterIndex*        bidiLineVisualToLogicalMap,
+                                             Vector2*               glyphPositionsBuffer,
+                                             CharacterIndex&        characterLogicalIndex,
+                                             float&                 penX)
+{
+  const GlyphInfo* const  glyphsBuffer             = visualModel->mGlyphs.Begin();
+  const GlyphIndex* const charactersToGlyphsBuffer = visualModel->mCharactersToGlyph.Begin();
+  const float             characterSpacing         = visualModel->GetCharacterSpacing();
+  const Length* const     glyphsPerCharacterBuffer = visualModel->mGlyphsPerCharacter.Begin();
+
+  float calculatedAdvance = 0.f;
+
+  for(; characterLogicalIndex < bidiLineCharacterRun.numberOfCharacters;
+      ++characterLogicalIndex)
+  {
+    // Convert the character in the logical order into the character in the visual order.
+    const CharacterIndex characterVisualIndex = bidiLineCharacterRun.characterIndex + *(bidiLineVisualToLogicalMap + characterLogicalIndex);
+
+    // Get the number of glyphs of the character.
+    const Length numberOfGlyphs = *(glyphsPerCharacterBuffer + characterVisualIndex);
+
+    for(GlyphIndex index = 0u; index < numberOfGlyphs; ++index)
+    {
+      // Convert the character in the visual order into the glyph in the visual order.
+      const GlyphIndex glyphIndex = *(charactersToGlyphsBuffer + characterVisualIndex) + index;
+
+      DALI_ASSERT_DEBUG(glyphIndex < visualModel->mGlyphs.Count());
+
+      const GlyphInfo& glyph    = *(glyphsBuffer + glyphIndex);
+      Vector2&         position = *(glyphPositionsBuffer + glyphIndex - startGlyphIndex);
+
+      position.x = penX + glyph.xBearing;
+      position.y = -glyph.yBearing;
+
+      calculatedAdvance = GetCalculatedAdvance(*(textBuffer + characterVisualIndex), characterSpacing, glyph.advance);
+      penX += (calculatedAdvance + interGlyphExtraAdvance);
+    }
+  }
+}
+
+} // namespace Layout
+
+} // namespace Text
+
+} // namespace Toolkit
+
+} // namespace Dali
diff --git a/dali-toolkit/internal/text/layouts/layout-engine-helper-functions.h b/dali-toolkit/internal/text/layouts/layout-engine-helper-functions.h
new file mode 100644 (file)
index 0000000..0d0e362
--- /dev/null
@@ -0,0 +1,106 @@
+#ifndef DALI_TOOLKIT_TEXT_LAYOUT_ENGINE_HELPER_FUNCTIONS_H
+#define DALI_TOOLKIT_TEXT_LAYOUT_ENGINE_HELPER_FUNCTIONS_H
+
+/*
+ * Copyright (c) 2022 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// INTERNAL INCLUDE
+#include <dali-toolkit/internal/text/logical-model-impl.h>
+#include <dali-toolkit/internal/text/visual-model-impl.h>
+
+namespace Dali
+{
+namespace Toolkit
+{
+namespace Text
+{
+namespace Layout
+{
+/**
+   * @brief Calculate glyph positions when set glyph positions for left to right.
+   *
+   * @param[in] visualModel The visual model.
+   * @param[in] logicalModel The logical model.
+   * @param[in] interGlyphExtraAdvance Extra advance added to each glyph.
+   * @param[in] numberOfGlyphs The number of glyphs.
+   * @param[in] startIndexForGlyph The index of the first glyph in the line.
+   * @param[in] startIndexForGlyphPositions The index of the first glyph for GlyphPositions.
+   * @param[in,out] glyphPositionsBuffer The glyph positions buffer.
+   * @param[in,out] penX The current position for the horizontal pen.
+   */
+void CalculateGlyphPositionsLTR(const VisualModelPtr&  visualModel,
+                                const LogicalModelPtr& logicalModel,
+                                const float            interGlyphExtraAdvance,
+                                const Length           numberOfGlyphs,
+                                const GlyphIndex       startIndexForGlyph,
+                                const GlyphIndex       startIndexForGlyphPositions,
+                                Vector2*               glyphPositionsBuffer,
+                                float&                 penX);
+
+/**
+   * @brief Calculate glyph positions when set glyph positions for right to left.
+   *
+   * @param[in] visualModel The visual model.
+   * @param[in] logicalModel The logical model.
+   * @param[in] bidiLineIndex Index to the line's bidirectional info.
+   * @param[in] startGlyphIndex The index of the first glyph in the line.
+   * @param[in,out] glyphPositionsBuffer The glyph positions buffer.
+   * @param[in] characterVisualIndex The character visual index.
+   * @param[in] characterLogicalIndex The character logical index.
+   * @param[in,out] penX The current position for the horizontal pen.
+   */
+void CalculateGlyphPositionsRTL(const VisualModelPtr&            visualModel,
+                                const LogicalModelPtr&           logicalModel,
+                                const BidirectionalLineRunIndex& bidiLineIndex,
+                                const GlyphIndex&                startGlyphIndex,
+                                Vector2*                         glyphPositionsBuffer,
+                                CharacterIndex&                  characterVisualIndex,
+                                CharacterIndex&                  characterLogicalIndex,
+                                float&                           penX);
+
+/**
+   * @brief Calculate glyph positions when set glyph positions for right to left.
+   *
+   * @param[in] visualModel The visual model.
+   * @param[in] textBuffer The text buffer.
+   * @param[in] startGlyphIndex The index of the first glyph in the line.
+   * @param[in] interGlyphExtraAdvance Extra advance added to each glyph.
+   * @param[in] bidiLineCharacterRun The initial character index within the whole text and the number of characters of the run for BidirectionalLine.
+   * @param[in] bidiLineVisualToLogicalMap Pointer to the visual to logical map table for BidirectionalLine.
+   * @param[in,out] glyphPositionsBuffer The glyph positions buffer.
+   * @param[in,out] characterLogicalIndex The character logical index.
+   * @param[in,out] penX The current position for the horizontal pen.
+   */
+void TraversesCharactersForGlyphPositionsRTL(const VisualModelPtr&  visualModel,
+                                             const Character* const textBuffer,
+                                             const GlyphIndex&      startGlyphIndex,
+                                             const float            interGlyphExtraAdvance,
+                                             const CharacterRun&    bidiLineCharacterRun,
+                                             CharacterIndex*        bidiLineVisualToLogicalMap,
+                                             Vector2*               glyphPositionsBuffer,
+                                             CharacterIndex&        characterLogicalIndex,
+                                             float&                 penX);
+
+} // namespace Layout
+
+} // namespace Text
+
+} // namespace Toolkit
+
+} // namespace Dali
+
+#endif // DALI_TOOLKIT_TEXT_LAYOUT_ENGINE_HELPER_FUNCTIONS_H
\ No newline at end of file
index 7610b67..c8addcc 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
@@ -28,6 +28,7 @@
 #include <dali-toolkit/internal/text/bidirectional-support.h>
 #include <dali-toolkit/internal/text/cursor-helper-functions.h>
 #include <dali-toolkit/internal/text/glyph-metrics-helper.h>
+#include <dali-toolkit/internal/text/layouts/layout-engine-helper-functions.h>
 #include <dali-toolkit/internal/text/layouts/layout-parameters.h>
 
 namespace Dali
@@ -42,6 +43,7 @@ float GetLineHeight(const LineRun lineRun)
   // However, the line descender has a negative value, hence the subtraction.
   return lineRun.ascender - lineRun.descender + lineRun.lineSpacing;
 }
+
 namespace Layout
 {
 namespace
@@ -250,10 +252,13 @@ struct Engine::Impl
 
     const float      outlineWidth                = static_cast<float>(parameters.textModel->GetOutlineWidth());
     const GlyphIndex lastGlyphOfParagraphPlusOne = parameters.startGlyphIndex + parameters.numberOfGlyphs;
+    const float      characterSpacing            = parameters.textModel->mVisualModel->GetCharacterSpacing();
 
     CharacterIndex characterLogicalIndex = 0u;
     CharacterIndex characterVisualIndex  = 0u;
 
+    float calculatedAdvance = 0.f;
+
     // If there are characters in the second half of Line then the first visual index mapped from visualToLogicalMapSecondHalf
     // Otherwise maps the first visual index from visualToLogicalMap.
     // This is to initialize the first visual index.
@@ -278,7 +283,8 @@ struct Engine::Impl
         {
           const GlyphInfo& glyphInfo = *(glyphsBuffer + *(charactersToGlyphsBuffer + characterVisualIndex));
 
-          whiteSpaceLengthEndOfLine += glyphInfo.advance;
+          calculatedAdvance = GetCalculatedAdvance(*(textBuffer + characterVisualIndex), characterSpacing, glyphInfo.advance);
+          whiteSpaceLengthEndOfLine += calculatedAdvance;
 
           ++characterLogicalIndex;
           characterVisualIndex = bidirectionalLineInfo.characterRunForSecondHalfLine.characterIndex + *(bidirectionalLineInfo.visualToLogicalMapSecondHalf + characterLogicalIndex);
@@ -299,7 +305,8 @@ struct Engine::Impl
         {
           const GlyphInfo& glyphInfo = *(glyphsBuffer + *(charactersToGlyphsBuffer + characterVisualIndex));
 
-          whiteSpaceLengthEndOfLine += glyphInfo.advance;
+          calculatedAdvance = GetCalculatedAdvance(*(textBuffer + characterVisualIndex), characterSpacing, glyphInfo.advance);
+          whiteSpaceLengthEndOfLine += calculatedAdvance;
 
           ++characterLogicalIndex;
           characterVisualIndex = bidirectionalLineInfo.characterRun.characterIndex + *(bidirectionalLineInfo.visualToLogicalMap + characterLogicalIndex);
@@ -316,11 +323,13 @@ struct Engine::Impl
                                                                   charactersPerGlyphBuffer);
 
     GlyphMetrics glyphMetrics;
+    calculatedAdvance = GetCalculatedAdvance(*(textBuffer + characterVisualIndex), characterSpacing, (*(glyphsBuffer + glyphIndex)).advance);
     GetGlyphsMetrics(glyphIndex,
                      numberOfGLyphsInGroup,
                      glyphMetrics,
                      glyphsBuffer,
-                     mMetrics);
+                     mMetrics,
+                     calculatedAdvance);
 
     float penX = -glyphMetrics.xBearing + mCursorWidth + outlineWidth;
 
@@ -345,11 +354,13 @@ struct Engine::Impl
         characterLogicalIndex += *(charactersPerGlyphBuffer + glyphIndex + numberOfGLyphsInGroup - 1u);
 
         GlyphMetrics glyphMetrics;
+        calculatedAdvance = GetCalculatedAdvance(*(textBuffer + characterVisualIndex), characterSpacing, (*(glyphsBuffer + glyphIndex)).advance);
         GetGlyphsMetrics(glyphIndex,
                          numberOfGLyphsInGroup,
                          glyphMetrics,
                          glyphsBuffer,
-                         mMetrics);
+                         mMetrics,
+                         calculatedAdvance);
 
         if(isWhiteSpace)
         {
@@ -405,11 +416,13 @@ struct Engine::Impl
       characterLogicalIndex += *(charactersPerGlyphBuffer + glyphIndex + numberOfGLyphsInGroup - 1u);
 
       GlyphMetrics glyphMetrics;
+      calculatedAdvance = GetCalculatedAdvance(*(textBuffer + characterVisualIndex), characterSpacing, (*(glyphsBuffer + glyphIndex)).advance);
       GetGlyphsMetrics(glyphIndex,
                        numberOfGLyphsInGroup,
                        glyphMetrics,
                        glyphsBuffer,
-                       mMetrics);
+                       mMetrics,
+                       calculatedAdvance);
 
       if(isWhiteSpace)
       {
@@ -639,13 +652,20 @@ struct Engine::Impl
     float widthFirstHalf = ((ellipsisPosition != DevelText::EllipsisPosition::MIDDLE) ? targetWidth : targetWidth - std::floor(targetWidth / 2));
 
     bool isSecondHalf = false;
+    // Character Spacing
+    const float             characterSpacing          = parameters.textModel->mVisualModel->GetCharacterSpacing();
+    float                   calculatedAdvance         = 0.f;
+    Vector<CharacterIndex>& glyphToCharacterMap       = parameters.textModel->mVisualModel->mGlyphsToCharacters;
+    const CharacterIndex*   glyphToCharacterMapBuffer = glyphToCharacterMap.Begin();
 
     GlyphMetrics glyphMetrics;
+    calculatedAdvance = GetCalculatedAdvance(*(textBuffer + (*(glyphToCharacterMapBuffer + lineLayout.glyphIndex))), characterSpacing, (*(glyphsBuffer + lineLayout.glyphIndex)).advance);
     GetGlyphsMetrics(lineLayout.glyphIndex,
                      numberOfGLyphsInGroup,
                      glyphMetrics,
                      glyphsBuffer,
-                     mMetrics);
+                     mMetrics,
+                     calculatedAdvance);
 
     // Set the direction of the first character of the line.
     lineLayout.characterIndex = *(glyphsToCharactersBuffer + lineLayout.glyphIndex);
@@ -680,11 +700,13 @@ struct Engine::Impl
                                                                     charactersPerGlyphBuffer);
 
       GlyphMetrics glyphMetrics;
+      calculatedAdvance = GetCalculatedAdvance(*(textBuffer + (*(glyphToCharacterMapBuffer + glyphIndex))), characterSpacing, (*(glyphsBuffer + glyphIndex)).advance);
       GetGlyphsMetrics(glyphIndex,
                        numberOfGLyphsInGroup,
                        glyphMetrics,
                        glyphsBuffer,
-                       mMetrics);
+                       mMetrics,
+                       calculatedAdvance);
 
       const bool isLastGlyph = glyphIndex + numberOfGLyphsInGroup == totalNumberOfGlyphs;
 
@@ -739,7 +761,8 @@ struct Engine::Impl
       if(isWhiteSpace)
       {
         // Add the length to the length of white spaces at the end of the line.
-        tmpLineLayout.whiteSpaceLengthEndOfLine += glyphMetrics.advance; // The advance is used as the width is always zero for the white spaces.
+        tmpLineLayout.whiteSpaceLengthEndOfLine += glyphMetrics.advance;
+        // The advance is used as the width is always zero for the white spaces.
       }
       else
       {
@@ -777,11 +800,13 @@ struct Engine::Impl
         while(tmpLineLayout.length + tmpLineLayout.whiteSpaceLengthEndOfLine > targetWidth && glyphIndexToRemove < glyphIndex)
         {
           GlyphMetrics glyphMetrics;
+          calculatedAdvance = GetCalculatedAdvance(*(textBuffer + (*(glyphToCharacterMapBuffer + glyphIndexToRemove))), characterSpacing, (*(glyphsBuffer + glyphIndexToRemove)).advance);
           GetGlyphsMetrics(glyphIndexToRemove,
                            numberOfGLyphsInGroup,
                            glyphMetrics,
                            glyphsBuffer,
-                           mMetrics);
+                           mMetrics,
+                           calculatedAdvance);
 
           const Length numberOfGLyphsInGroup = GetNumberOfGlyphsOfGroup(glyphIndexToRemove,
                                                                         lastGlyphOfParagraphPlusOne,
@@ -1008,16 +1033,14 @@ struct Engine::Impl
     const GlyphInfo& glyph = *(glyphsBuffer + startIndexForGlyph);
     float            penX  = -glyph.xBearing + mCursorWidth + outlineWidth; //
 
-    for(GlyphIndex i = 0u; i < numberOfGlyphs; ++i)
-    {
-      const GlyphInfo& glyph    = *(glyphsBuffer + startIndexForGlyph + i);
-      Vector2&         position = *(glyphPositionsBuffer + startIndexForGlyphPositions + i);
-
-      position.x = penX + glyph.xBearing;
-      position.y = -glyph.yBearing;
-
-      penX += (glyph.advance + interGlyphExtraAdvance);
-    }
+    CalculateGlyphPositionsLTR(layoutParameters.textModel->mVisualModel,
+                               layoutParameters.textModel->mLogicalModel,
+                               interGlyphExtraAdvance,
+                               numberOfGlyphs,
+                               startIndexForGlyph, // startIndexForGlyph is the index of the first glyph in the line
+                               startIndexForGlyphPositions,
+                               glyphPositionsBuffer,
+                               penX);
 
     if(layout.isSplitToTwoHalves)
     {
@@ -1025,16 +1048,14 @@ struct Engine::Impl
       const Length     numberOfGlyphsInSecondHalfLine         = layout.numberOfGlyphsInSecondHalfLine;
       const GlyphIndex startIndexForGlyphPositionsnSecondHalf = layout.glyphIndexInSecondHalfLine - layoutParameters.startGlyphIndex;
 
-      for(GlyphIndex i = 0u; i < numberOfGlyphsInSecondHalfLine; ++i)
-      {
-        const GlyphInfo& glyph    = *(glyphsBuffer + startIndexForGlyphInSecondHalf + i);
-        Vector2&         position = *(glyphPositionsBuffer + startIndexForGlyphPositionsnSecondHalf + i);
-
-        position.x = penX + glyph.xBearing;
-        position.y = -glyph.yBearing;
-
-        penX += (glyph.advance + interGlyphExtraAdvance);
-      }
+      CalculateGlyphPositionsLTR(layoutParameters.textModel->mVisualModel,
+                                 layoutParameters.textModel->mLogicalModel,
+                                 interGlyphExtraAdvance,
+                                 numberOfGlyphsInSecondHalfLine,
+                                 startIndexForGlyphInSecondHalf, // startIndexForGlyph is the index of the first glyph in the line
+                                 startIndexForGlyphPositionsnSecondHalf,
+                                 glyphPositionsBuffer,
+                                 penX);
     }
   }
 
@@ -1043,11 +1064,9 @@ struct Engine::Impl
                          LayoutBidiParameters& layoutBidiParameters,
                          const LineLayout&     layout)
   {
-    const Character* const          textBuffer               = layoutParameters.textModel->mLogicalModel->mText.Begin();
     const BidirectionalLineInfoRun& bidiLine                 = layoutParameters.textModel->mLogicalModel->mBidirectionalLineInfo[layoutBidiParameters.bidiLineIndex];
     const GlyphInfo* const          glyphsBuffer             = layoutParameters.textModel->mVisualModel->mGlyphs.Begin();
     const GlyphIndex* const         charactersToGlyphsBuffer = layoutParameters.textModel->mVisualModel->mCharactersToGlyph.Begin();
-    const Length* const             glyphsPerCharacterBuffer = layoutParameters.textModel->mVisualModel->mGlyphsPerCharacter.Begin();
 
     CharacterIndex characterLogicalIndex = 0u;
     CharacterIndex characterVisualIndex  = bidiLine.characterRunForSecondHalfLine.characterIndex + *(bidiLine.visualToLogicalMapSecondHalf + characterLogicalIndex);
@@ -1057,20 +1076,14 @@ struct Engine::Impl
 
     if(layout.isSplitToTwoHalves)
     {
-      while(TextAbstraction::IsWhiteSpace(*(textBuffer + characterVisualIndex)))
-      {
-        const GlyphIndex glyphIndex = *(charactersToGlyphsBuffer + characterVisualIndex);
-        const GlyphInfo& glyph      = *(glyphsBuffer + glyphIndex);
-
-        Vector2& position = *(glyphPositionsBuffer + glyphIndex - layoutParameters.startGlyphIndex);
-        position.x        = penX;
-        position.y        = -glyph.yBearing;
-
-        penX += glyph.advance;
-
-        ++characterLogicalIndex;
-        characterVisualIndex = bidiLine.characterRun.characterIndex + *(bidiLine.visualToLogicalMap + characterLogicalIndex);
-      }
+      CalculateGlyphPositionsRTL(layoutParameters.textModel->mVisualModel,
+                                 layoutParameters.textModel->mLogicalModel,
+                                 layoutBidiParameters.bidiLineIndex,
+                                 layoutParameters.startGlyphIndex,
+                                 glyphPositionsBuffer,
+                                 characterVisualIndex,
+                                 characterLogicalIndex,
+                                 penX);
     }
 
     if(characterLogicalIndex == bidiLine.characterRunForSecondHalfLine.numberOfCharacters)
@@ -1079,20 +1092,14 @@ struct Engine::Impl
       characterLogicalIndex = 0u;
       characterVisualIndex  = bidiLine.characterRun.characterIndex + *(bidiLine.visualToLogicalMap + characterLogicalIndex);
 
-      while(TextAbstraction::IsWhiteSpace(*(textBuffer + characterVisualIndex)))
-      {
-        const GlyphIndex glyphIndex = *(charactersToGlyphsBuffer + characterVisualIndex);
-        const GlyphInfo& glyph      = *(glyphsBuffer + glyphIndex);
-
-        Vector2& position = *(glyphPositionsBuffer + glyphIndex - layoutParameters.startGlyphIndex);
-        position.x        = penX;
-        position.y        = -glyph.yBearing;
-
-        penX += glyph.advance;
-
-        ++characterLogicalIndex;
-        characterVisualIndex = bidiLine.characterRun.characterIndex + *(bidiLine.visualToLogicalMap + characterLogicalIndex);
-      }
+      CalculateGlyphPositionsRTL(layoutParameters.textModel->mVisualModel,
+                                 layoutParameters.textModel->mLogicalModel,
+                                 layoutBidiParameters.bidiLineIndex,
+                                 layoutParameters.startGlyphIndex,
+                                 glyphPositionsBuffer,
+                                 characterVisualIndex,
+                                 characterLogicalIndex,
+                                 penX);
     }
 
     const GlyphIndex glyphIndex = *(charactersToGlyphsBuffer + characterVisualIndex);
@@ -1103,59 +1110,28 @@ struct Engine::Impl
     // Traverses the characters of the right to left paragraph.
     if(layout.isSplitToTwoHalves && !extendedToSecondHalf)
     {
-      for(; characterLogicalIndex < bidiLine.characterRunForSecondHalfLine.numberOfCharacters;
-          ++characterLogicalIndex)
-      {
-        // Convert the character in the logical order into the character in the visual order.
-        const CharacterIndex characterVisualIndex = bidiLine.characterRunForSecondHalfLine.characterIndex + *(bidiLine.visualToLogicalMapSecondHalf + characterLogicalIndex);
-
-        // Get the number of glyphs of the character.
-        const Length numberOfGlyphs = *(glyphsPerCharacterBuffer + characterVisualIndex);
-
-        for(GlyphIndex index = 0u; index < numberOfGlyphs; ++index)
-        {
-          // Convert the character in the visual order into the glyph in the visual order.
-          const GlyphIndex glyphIndex = *(charactersToGlyphsBuffer + characterVisualIndex) + index;
-
-          DALI_ASSERT_DEBUG(glyphIndex < layoutParameters.textModel->mVisualModel->mGlyphs.Count());
-
-          const GlyphInfo& glyph    = *(glyphsBuffer + glyphIndex);
-          Vector2&         position = *(glyphPositionsBuffer + glyphIndex - layoutParameters.startGlyphIndex);
-
-          position.x = penX + glyph.xBearing;
-          position.y = -glyph.yBearing;
-
-          penX += (glyph.advance + layoutParameters.interGlyphExtraAdvance);
-        }
-      }
+      TraversesCharactersForGlyphPositionsRTL(layoutParameters.textModel->mVisualModel,
+                                              layoutParameters.textModel->mLogicalModel->mText.Begin(),
+                                              layoutParameters.startGlyphIndex,
+                                              layoutParameters.interGlyphExtraAdvance,
+                                              bidiLine.characterRunForSecondHalfLine,
+                                              bidiLine.visualToLogicalMapSecondHalf,
+                                              glyphPositionsBuffer,
+                                              characterLogicalIndex,
+                                              penX);
     }
 
     characterLogicalIndex = extendedToSecondHalf ? characterLogicalIndex : 0u;
-    for(; characterLogicalIndex < bidiLine.characterRun.numberOfCharacters;
-        ++characterLogicalIndex)
-    {
-      // Convert the character in the logical order into the character in the visual order.
-      const CharacterIndex characterVisualIndex = bidiLine.characterRun.characterIndex + *(bidiLine.visualToLogicalMap + characterLogicalIndex);
-
-      // Get the number of glyphs of the character.
-      const Length numberOfGlyphs = *(glyphsPerCharacterBuffer + characterVisualIndex);
-
-      for(GlyphIndex index = 0u; index < numberOfGlyphs; ++index)
-      {
-        // Convert the character in the visual order into the glyph in the visual order.
-        const GlyphIndex glyphIndex = *(charactersToGlyphsBuffer + characterVisualIndex) + index;
 
-        DALI_ASSERT_DEBUG(glyphIndex < layoutParameters.textModel->mVisualModel->mGlyphs.Count());
-
-        const GlyphInfo& glyph    = *(glyphsBuffer + glyphIndex);
-        Vector2&         position = *(glyphPositionsBuffer + glyphIndex - layoutParameters.startGlyphIndex);
-
-        position.x = penX + glyph.xBearing;
-        position.y = -glyph.yBearing;
-
-        penX += (glyph.advance + layoutParameters.interGlyphExtraAdvance);
-      }
-    }
+    TraversesCharactersForGlyphPositionsRTL(layoutParameters.textModel->mVisualModel,
+                                            layoutParameters.textModel->mLogicalModel->mText.Begin(),
+                                            layoutParameters.startGlyphIndex,
+                                            layoutParameters.interGlyphExtraAdvance,
+                                            bidiLine.characterRun,
+                                            bidiLine.visualToLogicalMap,
+                                            glyphPositionsBuffer,
+                                            characterLogicalIndex,
+                                            penX);
   }
 
   /**
index 206d7f6..9946d49 100644 (file)
@@ -28,6 +28,7 @@
 // INTERNAL INCLUDES
 #include <dali-toolkit/devel-api/controls/control-depth-index-ranges.h>
 #include <dali-toolkit/internal/graphics/builtin-shader-extern-gen.h>
+#include <dali-toolkit/internal/text/glyph-metrics-helper.h>
 #include <dali-toolkit/internal/text/glyph-run.h>
 #include <dali-toolkit/internal/text/rendering/atlas/atlas-glyph-manager.h>
 #include <dali-toolkit/internal/text/rendering/atlas/atlas-mesh-factory.h>
@@ -475,6 +476,7 @@ struct AtlasRenderer::Impl
     const Vector4&              strikethroughColor(view.GetStrikethroughColor());
     const float                 strikethroughHeight = view.GetStrikethroughHeight();
     Vector4                     currentStrikethroughColor;
+    const float                 characterSpacing(view.GetCharacterSpacing());
 
     // Elided text info. Indices according to elided text.
     const auto startIndexOfGlyphs              = view.GetStartIndexOfElidedGlyphs();
@@ -525,8 +527,12 @@ struct AtlasRenderer::Impl
     uint32_t underlineChunkId = 0u;    // give id for each chunk.
     bool     isPreUnderlined  = false; // status of underlined for previous glyph.
 
-    uint32_t strikethroughChunkId     = 0u;    // give id for each chunk.
-    bool     isPrevGlyphStrikethrough = false; // status of strikethrough for previous glyph.
+    uint32_t                      strikethroughChunkId      = 0u;    // give id for each chunk.
+    bool                          isPrevGlyphStrikethrough  = false; // status of strikethrough for previous glyph.
+    const Character*              textBuffer                = view.GetTextBuffer();
+    float                         calculatedAdvance         = 0.f;
+    const Vector<CharacterIndex>& glyphToCharacterMap       = view.GetGlyphsToCharacters();
+    const CharacterIndex*         glyphToCharacterMapBuffer = glyphToCharacterMap.Begin();
 
     //Skip hyphenIndices less than startIndexOfGlyphs or between two middle of elided text
     if(hyphenIndices)
@@ -635,7 +641,8 @@ struct AtlasRenderer::Impl
         if(addHyphen)
         {
           GlyphInfo tempInfo = *(glyphsBuffer + i);
-          position.x         = position.x + tempInfo.advance - tempInfo.xBearing + glyph.xBearing;
+          calculatedAdvance  = GetCalculatedAdvance(*(textBuffer + (*(glyphToCharacterMapBuffer + i))), characterSpacing, tempInfo.advance);
+          position.x         = position.x + calculatedAdvance - tempInfo.xBearing + glyph.xBearing;
           position.y += tempInfo.yBearing - glyph.yBearing;
         }
 
index f7a1123..2e01c18 100644 (file)
@@ -25,6 +25,7 @@
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/devel-api/controls/text-controls/text-label-devel.h>
+#include <dali-toolkit/internal/text/glyph-metrics-helper.h>
 #include <dali-toolkit/internal/text/rendering/view-model.h>
 
 namespace Dali
@@ -939,6 +940,11 @@ Devel::PixelBuffer Typesetter::CreateImageBuffer(const unsigned int bufferWidth,
   TextAbstraction::FontClient fontClient  = TextAbstraction::FontClient::Get();
   Length                      hyphenIndex = 0;
 
+  const Character*              textBuffer                = mModel->GetTextBuffer();
+  float                         calculatedAdvance         = 0.f;
+  const Vector<CharacterIndex>& glyphToCharacterMap       = mModel->GetGlyphsToCharacters();
+  const CharacterIndex*         glyphToCharacterMapBuffer = glyphToCharacterMap.Begin();
+
   // Traverses the lines of the text.
   for(LineIndex lineIndex = 0u; lineIndex < modelNumberOfLines; ++lineIndex)
   {
@@ -987,10 +993,10 @@ Devel::PixelBuffer Typesetter::CreateImageBuffer(const unsigned int bufferWidth,
     const Text::Underline::Type underlineType        = mModel->GetUnderlineType();
     const float                 dashedUnderlineWidth = mModel->GetDashedUnderlineWidth();
     const float                 dashedUnderlineGap   = mModel->GetDashedUnderlineGap();
-
-    const bool     strikethroughEnabled = mModel->IsStrikethroughEnabled();
-    const Vector4& strikethroughColor   = mModel->GetStrikethroughColor();
-    const float    strikethroughHeight  = mModel->GetStrikethroughHeight();
+    const bool                  strikethroughEnabled = mModel->IsStrikethroughEnabled();
+    const Vector4&              strikethroughColor   = mModel->GetStrikethroughColor();
+    const float                 strikethroughHeight  = mModel->GetStrikethroughHeight();
+    const float                 characterSpacing     = mModel->GetCharacterSpacing();
 
     // Get the underline runs.
     const Length     numberOfUnderlineRuns = mModel->GetNumberOfUnderlineRuns();
@@ -1093,7 +1099,8 @@ Devel::PixelBuffer Typesetter::CreateImageBuffer(const unsigned int bufferWidth,
       if(addHyphen)
       {
         GlyphInfo tempInfo = *(glyphsBuffer + elidedGlyphIndex);
-        position.x         = position.x + tempInfo.advance - tempInfo.xBearing + glyphInfo->xBearing;
+        calculatedAdvance  = GetCalculatedAdvance(*(textBuffer + (*(glyphToCharacterMapBuffer + elidedGlyphIndex))), characterSpacing, tempInfo.advance);
+        position.x         = position.x + calculatedAdvance - tempInfo.xBearing + glyphInfo->xBearing;
         position.y         = -glyphInfo->yBearing;
       }
 
index e446294..5e014df 100644 (file)
@@ -24,6 +24,7 @@
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/internal/text/line-run.h>
+#include <dali-toolkit/internal/text/glyph-metrics-helper.h>
 
 namespace Dali
 {
@@ -314,13 +315,33 @@ Length ViewModel::GetHyphensCount() const
   return mModel->GetHyphensCount();
 }
 
+const float ViewModel::GetCharacterSpacing() const
+{
+  return mModel->GetCharacterSpacing();
+}
+
+const Character* ViewModel::GetTextBuffer() const
+{
+  return mModel->GetTextBuffer();
+}
+
+const Vector<CharacterIndex>& ViewModel::GetGlyphsToCharacters() const
+{
+  return mModel->GetGlyphsToCharacters();
+}
+
 void ViewModel::ElideGlyphs()
 {
   mIsTextElided             = false;
   mStartIndexOfElidedGlyphs = mFirstMiddleIndexOfElidedGlyphs = mSecondMiddleIndexOfElidedGlyphs = 0;
   mEndIndexOfElidedGlyphs                                                                        = mModel->GetNumberOfGlyphs() - 1u;
 
-  auto ellipsisPosition = GetEllipsisPosition();
+  auto                          ellipsisPosition          = GetEllipsisPosition();
+  auto                          characterSpacing          = GetCharacterSpacing();
+  const Character*              textBuffer                = GetTextBuffer();
+  const Vector<CharacterIndex>& glyphToCharacterMap       = GetGlyphsToCharacters();
+  const CharacterIndex*         glyphToCharacterMapBuffer = glyphToCharacterMap.Begin();
+  float                         calculatedAdvance         = 0.f;
 
   if(IsTextElideEnabled())
   {
@@ -484,7 +505,8 @@ void ViewModel::ElideGlyphs()
                 firstPenSet = true;
               }
 
-              removedGlypsWidth += std::min(glyphToRemove.advance, (glyphToRemove.xBearing + glyphToRemove.width));
+              calculatedAdvance = GetCalculatedAdvance(*(textBuffer + (*(glyphToCharacterMapBuffer + indexOfEllipsis))), characterSpacing, glyphToRemove.advance);
+              removedGlypsWidth += std::min(calculatedAdvance, (glyphToRemove.xBearing + glyphToRemove.width));
 
               // Calculate the width of the ellipsis glyph and check if it fits.
               const float ellipsisGlyphWidth = ellipsisGlyph.width + ellipsisGlyph.xBearing;
index e877baa..c3ee530 100644 (file)
@@ -276,6 +276,21 @@ public:
   Length GetHyphensCount() const override;
 
   /**
+  * @copydoc ModelInterface::GetCharacterSpacing()
+  */
+  const float GetCharacterSpacing() const override;
+
+  /**
+  * @copydoc ModelInterface::GetTextBuffer()
+  */
+  const Character* GetTextBuffer() const override;
+
+  /**
+  * @copydoc ModelInterface::GetGlyphsToCharacters()
+  */
+  const Vector<CharacterIndex>& GetGlyphsToCharacters() const override;
+
+  /**
    * @brief Does the text elide at the end, start or middle of text according to ellipsis position
    *
    * It stores a copy of the visible glyphs and removes as many glyphs as needed
index dda514f..72bfcde 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
 // INTERNAL INCLUDES
 #include <dali-toolkit/devel-api/controls/control-depth-index-ranges.h>
 #include <dali-toolkit/internal/graphics/builtin-shader-extern-gen.h>
+#include <dali-toolkit/internal/text/cursor-helper-functions.h>
 #include <dali-toolkit/internal/text/text-view.h>
 
 namespace Dali::Toolkit::Text
 {
-
 namespace
 {
 struct BackgroundVertex
@@ -44,7 +44,7 @@ struct BackgroundMesh
 };
 } // unnamed namespace
 
-Actor CreateControllerBackgroundActor(const View& textView, const VisualModelPtr& textVisualModel, Shader& textShaderBackground)
+Actor CreateControllerBackgroundActor(const View& textView, const VisualModelPtr& textVisualModel, const LogicalModelPtr& textLogicalModel, Shader& textShaderBackground)
 {
   // NOTE: Currently we only support background color for left-to-right text.
 
@@ -63,10 +63,10 @@ Actor CreateControllerBackgroundActor(const View& textView, const VisualModelPtr
     const LineRun* lineRun         = textVisualModel->mLines.Begin();
     float          alignmentOffset = lineRun->alignmentOffset;
     numberOfGlyphs                 = textView.GetGlyphs(glyphs.Begin(),
-                                                     positions.Begin(),
-                                                     alignmentOffset,
-                                                     0u,
-                                                     numberOfGlyphs);
+                                        positions.Begin(),
+                                        alignmentOffset,
+                                        0u,
+                                        numberOfGlyphs);
 
     glyphs.Resize(numberOfGlyphs);
     positions.Resize(numberOfGlyphs);
@@ -86,6 +86,10 @@ Actor CreateControllerBackgroundActor(const View& textView, const VisualModelPtr
     const Vector4* const    backgroundColorsBuffer       = textView.GetBackgroundColors();
     const ColorIndex* const backgroundColorIndicesBuffer = textView.GetBackgroundColorIndices();
     const Vector4&          defaultBackgroundColor       = textVisualModel->IsBackgroundEnabled() ? textVisualModel->GetBackgroundColor() : Color::TRANSPARENT;
+    const float             characterSpacing             = textVisualModel->GetCharacterSpacing();
+    Vector<CharacterIndex>& glyphToCharacterMap          = textVisualModel->mGlyphsToCharacters;
+    const CharacterIndex*   glyphToCharacterMapBuffer    = glyphToCharacterMap.Begin();
+    float                   calculatedAdvance            = 0.f;
 
     Vector4   quad;
     uint32_t  numberOfQuads = 0u;
@@ -117,33 +121,34 @@ Actor CreateControllerBackgroundActor(const View& textView, const VisualModelPtr
       if(backgroundColor != Color::TRANSPARENT)
       {
         const Vector2 position = *(positionsBuffer + i);
+        calculatedAdvance      = GetCalculatedAdvance(*(textLogicalModel->mText.Begin() + (*(glyphToCharacterMapBuffer + i))), characterSpacing, glyph.advance);
 
         if(i == 0u && glyphSize == 1u) // Only one glyph in the whole text
         {
           quad.x = position.x;
           quad.y = yLineOffset;
-          quad.z = quad.x + std::max(glyph.advance, glyph.xBearing + glyph.width);
+          quad.z = quad.x + std::max(calculatedAdvance, glyph.xBearing + glyph.width);
           quad.w = lineHeight;
         }
         else if((lineIndex != prevLineIndex) || (i == 0u)) // The first glyph in the line
         {
           quad.x = position.x;
           quad.y = yLineOffset;
-          quad.z = quad.x - glyph.xBearing + glyph.advance;
+          quad.z = quad.x - glyph.xBearing + calculatedAdvance;
           quad.w = quad.y + lineHeight;
         }
         else if(i == glyphSize - 1u) // The last glyph in the whole text
         {
           quad.x = position.x - glyph.xBearing;
           quad.y = yLineOffset;
-          quad.z = quad.x + std::max(glyph.advance, glyph.xBearing + glyph.width);
+          quad.z = quad.x + std::max(calculatedAdvance, glyph.xBearing + glyph.width);
           quad.w = quad.y + lineHeight;
         }
         else // The glyph in the middle of the text
         {
           quad.x = position.x - glyph.xBearing;
           quad.y = yLineOffset;
-          quad.z = quad.x + glyph.advance;
+          quad.z = quad.x + calculatedAdvance;
           quad.w = quad.y + lineHeight;
         }
 
index 5ad9084..41b549c 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_TOOLKIT_TEXT_CONTROLLER_BACKGROUND_ACTOR_H
 
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
@@ -23,6 +23,7 @@
 #include <dali/public-api/rendering/shader.h>
 
 // INTERNAL INCLUDES
+#include <dali-toolkit/internal/text/logical-model-impl.h>
 #include <dali-toolkit/internal/text/visual-model-impl.h>
 
 namespace Dali::Toolkit::Text
@@ -32,9 +33,14 @@ class View;
 /**
  * @brief Create an actor that renders the text background color
  *
+ * @param[in] textView The text view.
+ * @param[in] textVisualModel The text visual model.
+ * @param[in] textLogicalModel The text logical model.
+ * @param[in] textShaderBackground The text shader for background.
+ *
  * @return the created actor or an empty handle if no background color needs to be rendered.
  */
-Actor CreateControllerBackgroundActor(const View& textView, const VisualModelPtr& textVisualModel, Shader& textShaderBackground);
+Actor CreateControllerBackgroundActor(const View& textView, const VisualModelPtr& textVisualModel, const LogicalModelPtr& textLogicalModel, Shader& textShaderBackground);
 
 } // namespace Dali::Toolkit::Text
 
index 5ee189b..db6fde1 100644 (file)
 #include <dali/devel-api/adaptor-framework/window-devel.h>
 #include <dali/integration-api/debug.h>
 #include <dali/public-api/actors/layer.h>
+#include <dali/public-api/rendering/renderer.h>
 #include <cmath>
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/internal/text/character-set-conversion.h>
 #include <dali-toolkit/internal/text/cursor-helper-functions.h>
+#include <dali-toolkit/internal/text/glyph-metrics-helper.h>
 #include <dali-toolkit/internal/text/text-control-interface.h>
 #include <dali-toolkit/internal/text/text-controller-impl-data-clearer.h>
 #include <dali-toolkit/internal/text/text-controller-impl-event-handler.h>
@@ -691,7 +693,7 @@ bool Controller::Impl::SetDefaultLineSpacing(float lineSpacing)
   {
     mLayoutEngine.SetDefaultLineSpacing(lineSpacing);
 
-    RelayoutForNewLineSize();
+    RelayoutAllCharacters();
     return true;
   }
   return false;
@@ -703,7 +705,7 @@ bool Controller::Impl::SetDefaultLineSize(float lineSize)
   {
     mLayoutEngine.SetDefaultLineSize(lineSize);
 
-    RelayoutForNewLineSize();
+    RelayoutAllCharacters();
     return true;
   }
   return false;
@@ -1461,7 +1463,7 @@ void Controller::Impl::RequestRelayout()
   }
 }
 
-void Controller::Impl::RelayoutForNewLineSize()
+void Controller::Impl::RelayoutAllCharacters()
 {
   // relayout all characters
   mTextUpdateInfo.mCharacterIndex             = 0;
index a646e92..4b1db94 100644 (file)
@@ -369,6 +369,7 @@ struct Controller::Impl
     mClipboard  = Clipboard::Get();
 
     mView.SetVisualModel(mModel->mVisualModel);
+    mView.SetLogicalModel(mModel->mLogicalModel);
 
     // Use this to access FontClient i.e. to get down-scaled Emoji metrics.
     mMetrics = Metrics::New(mFontClient);
@@ -791,9 +792,16 @@ struct Controller::Impl
   void ScrollTextToMatchCursor();
 
   /**
-   * @brief fill needed relayout parameters when line size is changed & request relayout.
+   * @brief Create an actor that renders the text background color
+   *
+   * @return the created actor or an empty handle if no background color needs to be rendered.
+   */
+  Actor CreateBackgroundActor();
+
+  /**
+   * @brief fill needed relayout parameters whenever a property is changed and a re-layout is needed for the entire text.
    */
-  void RelayoutForNewLineSize();
+  void RelayoutAllCharacters();
 
   /**
    * @copydoc Controller::IsInputStyleChangedSignalsQueueEmpty
index f5d1bb7..1e1ab68 100644 (file)
@@ -1340,6 +1340,19 @@ void Controller::SetEllipsisPosition(Toolkit::DevelText::EllipsisPosition::Type
   mImpl->mModel->mVisualModel->SetEllipsisPosition(ellipsisPosition);
 }
 
+void Controller::SetCharacterSpacing(float characterSpacing)
+{
+  mImpl->mModel->mVisualModel->SetCharacterSpacing(characterSpacing);
+
+  mImpl->RelayoutAllCharacters();
+  mImpl->RequestRelayout();
+}
+
+const float Controller::GetCharacterSpacing() const
+{
+  return mImpl->mModel->mVisualModel->GetCharacterSpacing();
+}
+
 Controller::UpdateTextType Controller::Relayout(const Size& size, Dali::LayoutDirection::Type layoutDirection)
 {
   return Relayouter::Relayout(*this, size, layoutDirection);
@@ -1597,7 +1610,7 @@ bool Controller::ShouldClearFocusOnEscape() const
 
 Actor Controller::CreateBackgroundActor()
 {
-  return CreateControllerBackgroundActor(mImpl->mView, mImpl->mModel->mVisualModel, mImpl->mShaderBackground);
+  return CreateControllerBackgroundActor(mImpl->mView, mImpl->mModel->mVisualModel, mImpl->mModel->mLogicalModel, mImpl->mShaderBackground);
 }
 
 void Controller::GetAnchorActors(std::vector<Toolkit::TextAnchor>& anchorActors)
index 069db55..4c7a1ad 100644 (file)
@@ -1468,6 +1468,24 @@ public: // Default style & Input style
    */
   void SetAnchorControlInterface(AnchorControlInterface* anchorControlInterface);
 
+  /**
+   * @brief Sets the character spacing.
+   *
+   * @note A positive value will make the characters far apart (expanded) and a negative value will bring them closer (condensed).
+   *
+   * @param[in] characterSpacing The character spacing.
+   */
+  void SetCharacterSpacing(float characterSpacing);
+
+  /**
+   * @brief Retrieves the character spacing.
+   *
+   * @note A positive value will make the characters far apart (expanded) and a negative value will bring them closer (condensed).
+   *
+   * @return The character spacing.
+   */
+  const float GetCharacterSpacing() const;
+
 public: // Queries & retrieves.
   /**
    * @brief Return the layout engine.
index 128f587..7d51b16 100644 (file)
@@ -394,6 +394,29 @@ public:
    * @param[in] numberOfRuns Number of strikethrough runs to be copied.
    */
   virtual void GetStrikethroughRuns(StrikethroughGlyphRun* strikethroughRuns, StrikethroughRunIndex index, Length numberOfRuns) const = 0;
+
+  /**
+   * @brief Retrieves the character spacing.
+   *
+   * @note A positive value will make the characters far apart (expanded) and a negative value will bring them closer (condensed).
+   *
+   * @return The character spacing.
+   */
+  virtual const float GetCharacterSpacing() const = 0;
+
+  /**
+   * @brief Retrieves the text buffer.
+   *
+   * @return The text buffer.
+   */
+  virtual const Character* GetTextBuffer() const = 0;
+
+  /**
+   * @brief Retrieves the Glyphs to Characters Array.
+   *
+   * @return The GlyphsToCharacters.
+   */
+  virtual const Vector<CharacterIndex>& GetGlyphsToCharacters() const = 0;
 };
 
 } // namespace Text
index baa6b91..e19618e 100644 (file)
@@ -281,6 +281,21 @@ void Model::GetStrikethroughRuns(StrikethroughGlyphRun* strikethroughRuns, Strik
   mVisualModel->GetStrikethroughRuns(strikethroughRuns, index, numberOfRuns);
 }
 
+const float Model::GetCharacterSpacing() const
+{
+  return mVisualModel->GetCharacterSpacing();
+}
+
+const Character* Model::GetTextBuffer() const
+{
+  return mLogicalModel->mText.Begin();
+}
+
+const Vector<CharacterIndex>& Model::GetGlyphsToCharacters() const
+{
+  return mVisualModel->mGlyphsToCharacters;
+}
+
 Model::Model()
 : mLogicalModel(),
   mVisualModel(),
index 443f9ab..4f7b9e3 100644 (file)
@@ -277,6 +277,20 @@ public:
   const Vector4& GetStrikethroughColor() const override;
 
   bool IsStrikethroughEnabled() const override;
+  /**
+   * @copydoc ModelInterface::GetCharacterSpacing()
+   */
+  const float GetCharacterSpacing() const override;
+
+  /**
+   * @copydoc ModelInterface::GetTextBuffer()
+   */
+  const Character* GetTextBuffer() const override;
+
+  /**
+   * @copydoc ModelInterface::GetGlyphsToCharacters()
+   */
+  const Vector<CharacterIndex>& GetGlyphsToCharacters() const override;
 
   /**
    * @copydoc ModelInterface::GetNumberOfStrikethroughRuns()
index cf63deb..8e43a87 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
@@ -23,6 +23,7 @@
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/internal/text/cursor-helper-functions.h>
+#include <dali-toolkit/internal/text/glyph-metrics-helper.h>
 #include <dali-toolkit/internal/text/text-controller-impl-event-handler.h>
 
 using namespace Dali;
@@ -103,10 +104,13 @@ void SelectionHandleController::Reposition(Controller::Impl& impl)
   }
 
   // Get the indices to the first and last selected glyphs.
-  const CharacterIndex selectionEndMinusOne = selectionEnd - 1u;
-  const GlyphIndex     glyphStart           = *(charactersToGlyphBuffer + selectionStart);
-  const Length         numberOfGlyphs       = *(glyphsPerCharacterBuffer + selectionEndMinusOne);
-  const GlyphIndex     glyphEnd             = *(charactersToGlyphBuffer + selectionEndMinusOne) + ((numberOfGlyphs > 0) ? numberOfGlyphs - 1u : 0u);
+  const CharacterIndex    selectionEndMinusOne      = selectionEnd - 1u;
+  const GlyphIndex        glyphStart                = *(charactersToGlyphBuffer + selectionStart);
+  const Length            numberOfGlyphs            = *(glyphsPerCharacterBuffer + selectionEndMinusOne);
+  const GlyphIndex        glyphEnd                  = *(charactersToGlyphBuffer + selectionEndMinusOne) + ((numberOfGlyphs > 0) ? numberOfGlyphs - 1u : 0u);
+  const float             characterSpacing          = visualModel->GetCharacterSpacing();
+  Vector<CharacterIndex>& glyphToCharacterMap       = visualModel->mGlyphsToCharacters;
+  const CharacterIndex*   glyphToCharacterMapBuffer = glyphToCharacterMap.Begin();
 
   // Get the lines where the glyphs are laid-out.
   const LineRun* lineRun = visualModel->mLines.Begin();
@@ -163,18 +167,20 @@ void SelectionHandleController::Reposition(Controller::Impl& impl)
   // Count the actual number of quads.
   unsigned int actualNumberOfQuads = 0u;
   Vector4      quad;
+  float        calculatedAdvance = 0.f;
 
   // Traverse the glyphs.
   for(GlyphIndex index = glyphStart; index <= glyphEnd; ++index)
   {
     const GlyphInfo& glyph    = *(glyphsBuffer + index);
     const Vector2&   position = *(positionsBuffer + index);
+    calculatedAdvance         = GetCalculatedAdvance(*(logicalModel->mText.Begin() + (*(glyphToCharacterMapBuffer + index))), characterSpacing, glyph.advance);
 
     if(splitStartGlyph)
     {
       // If the first glyph is a ligature that must be broken it may be needed to add only part of the glyph to the highlight box.
 
-      const float          glyphAdvance    = glyph.advance / static_cast<float>(numberOfCharactersStart);
+      const float          glyphAdvance    = calculatedAdvance / static_cast<float>(numberOfCharactersStart);
       const CharacterIndex interGlyphIndex = selectionStart - *(glyphToCharacterBuffer + glyphStart);
       // Get the direction of the character.
       CharacterDirection isCurrentRightToLeft = false;
@@ -207,7 +213,7 @@ void SelectionHandleController::Reposition(Controller::Impl& impl)
     {
       // Equally, if the last glyph is a ligature that must be broken it may be needed to add only part of the glyph to the highlight box.
 
-      const float          glyphAdvance    = glyph.advance / static_cast<float>(numberOfCharactersEnd);
+      const float          glyphAdvance    = calculatedAdvance / static_cast<float>(numberOfCharactersEnd);
       const CharacterIndex interGlyphIndex = selectionEnd - *(glyphToCharacterBuffer + glyphEnd);
       // Get the direction of the character.
       CharacterDirection isCurrentRightToLeft = false;
@@ -237,7 +243,7 @@ void SelectionHandleController::Reposition(Controller::Impl& impl)
 
     quad.x = lineRun->alignmentOffset + position.x - glyph.xBearing + model->mScrollPosition.x;
     quad.y = selectionBoxInfo->lineOffset;
-    quad.z = quad.x + glyph.advance;
+    quad.z = quad.x + calculatedAdvance;
     quad.w = quad.y + selectionBoxInfo->lineHeight;
 
     // Store the min and max 'x' for each line.
index 67875b8..da6b4e1 100644 (file)
@@ -18,6 +18,9 @@
  *
  */
 
+// EXTERNAL INCLUDES
+#include <dali/public-api/common/dali-vector.h>
+
 // INTERNAL INCLUDES
 #include <dali-toolkit/devel-api/text/text-enumerations-devel.h>
 #include <dali-toolkit/internal/text/text-definitions.h>
@@ -328,6 +331,29 @@ public:
   virtual void GetStrikethroughRuns(StrikethroughGlyphRun* strikethroughRuns,
                                     StrikethroughRunIndex  index,
                                     Length                 numberOfRuns) const = 0;
+
+  /**
+   * @brief The spaces between characters in Pixels.
+   *
+   * @note A positive value will make the characters far apart (expanded) and a negative value will bring them closer (condensed).
+   *
+   * @return characterSpacing.
+   */
+  virtual const float GetCharacterSpacing() const = 0;
+
+  /**
+   * @brief The text buffer.
+   *
+   * @return The text buffer.
+   */
+  virtual const Character* GetTextBuffer() const = 0;
+
+  /**
+   * @brief The text Glyph to Characters Array.
+   *
+   * @return GetGlyphsToCharacters.
+   */
+  virtual const Vector<CharacterIndex>& GetGlyphsToCharacters() const = 0;
 };
 
 } // namespace Text
index 9b34dd4..b4644e7 100644 (file)
@@ -23,6 +23,9 @@
 #include <dali/public-api/math/vector2.h>
 #include <memory.h>
 
+// INTERNAL INCLUDES
+#include <dali-toolkit/internal/text/glyph-metrics-helper.h>
+
 namespace Dali
 {
 namespace Toolkit
@@ -32,6 +35,7 @@ namespace Text
 struct View::Impl
 {
   VisualModelPtr              mVisualModel;
+  LogicalModelPtr             mLogicalModel;
   TextAbstraction::FontClient mFontClient; ///< Handle to the font client.
 };
 
@@ -53,6 +57,11 @@ void View::SetVisualModel(VisualModelPtr visualModel)
   mImpl->mVisualModel = visualModel;
 }
 
+void View::SetLogicalModel(LogicalModelPtr logicalModel)
+{
+  mImpl->mLogicalModel = logicalModel;
+}
+
 const Vector2& View::GetControlSize() const
 {
   if(mImpl->mVisualModel)
@@ -96,8 +105,13 @@ Length View::GetGlyphs(GlyphInfo* glyphs,
                        GlyphIndex glyphIndex,
                        Length     numberOfGlyphs) const
 {
-  Length numberOfLaidOutGlyphs       = 0u;
-  Length numberOfActualLaidOutGlyphs = 0u;
+  Length                  numberOfLaidOutGlyphs       = 0u;
+  Length                  numberOfActualLaidOutGlyphs = 0u;
+  const float             characterSpacing            = mImpl->mVisualModel->GetCharacterSpacing();
+  Vector<CharacterIndex>& glyphToCharacterMap         = mImpl->mVisualModel->mGlyphsToCharacters;
+  const CharacterIndex*   glyphToCharacterMapBuffer   = glyphToCharacterMap.Begin();
+  float                   calculatedAdvance           = 0.f;
+  const Character*        textBuffer                  = mImpl->mLogicalModel->mText.Begin();
 
   if(mImpl->mVisualModel)
   {
@@ -342,7 +356,8 @@ Length View::GetGlyphs(GlyphInfo* glyphs,
                 firstPenSet = true;
               }
 
-              removedGlypsWidth += std::min(glyphToRemove.advance, (glyphToRemove.xBearing + glyphToRemove.width));
+              calculatedAdvance = GetCalculatedAdvance(*(textBuffer + (*(glyphToCharacterMapBuffer + indexOfEllipsis))), characterSpacing, glyphToRemove.advance);
+              removedGlypsWidth += std::min(calculatedAdvance, (glyphToRemove.xBearing + glyphToRemove.width));
 
               // Calculate the width of the ellipsis glyph and check if it fits.
               const float ellipsisGlyphWidth = ellipsisGlyph.width + ellipsisGlyph.xBearing;
@@ -809,6 +824,21 @@ void View::GetStrikethroughRuns(StrikethroughGlyphRun* strikethroughRuns,
   }
 }
 
+const float View::GetCharacterSpacing() const
+{
+  return (mImpl->mVisualModel) ? mImpl->mVisualModel->GetCharacterSpacing() : 0.f;
+}
+
+const Character* View::GetTextBuffer() const
+{
+  return (mImpl->mVisualModel) ? mImpl->mLogicalModel->mText.Begin() : nullptr;
+}
+
+const Vector<CharacterIndex>& View::GetGlyphsToCharacters() const
+{
+  return mImpl->mVisualModel->GetGlyphsToCharacters();
+}
+
 } // namespace Text
 
 } // namespace Toolkit
index 37d6e0f..f673e0e 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 // INTERNAL INCLUDES
+#include <dali-toolkit/internal/text/logical-model-impl.h>
 #include <dali-toolkit/internal/text/text-view-interface.h>
 #include <dali-toolkit/internal/text/visual-model-impl.h>
 
@@ -52,6 +53,13 @@ public:
   void SetVisualModel(VisualModelPtr visualModel);
 
   /**
+   * @brief Set the logical model.
+   *
+   * @param[in] logicalModel The logical model used by the View.
+   */
+  void SetLogicalModel(LogicalModelPtr logicalModel);
+
+  /**
    * @copydoc Dali::Toolkit::Text::ViewInterface::GetControlSize()
    */
   const Vector2& GetControlSize() const override;
@@ -239,6 +247,21 @@ public:
                             StrikethroughRunIndex  index,
                             Length                 numberOfRuns) const;
 
+  /**
+   * @copydoc Dali::Toolkit::Text::ViewInterface::GetCharacterSpacing()
+   */
+  const float GetCharacterSpacing() const override;
+
+  /**
+   * @copydoc Dali::Toolkit::Text::ViewInterface::GetTextBuffer()
+   */
+  const Character* GetTextBuffer() const override;
+
+  /**
+   * @copydoc Dali::Toolkit::Text::ViewInterface::GetGlyphsToCharacters()
+   */
+  const Vector<CharacterIndex>& GetGlyphsToCharacters() const override;
+
 private:
   // Undefined
   View(const View& handle);
index 6c4ff9b..3fa3975 100644 (file)
@@ -460,6 +460,11 @@ void VisualModel::SetStrikethroughHeight(float height)
   mStrikethroughHeight = height;
 }
 
+void VisualModel::SetCharacterSpacing(float characterSpacing)
+{
+  mCharacterSpacing = characterSpacing;
+}
+
 const Vector4& VisualModel::GetTextColor() const
 {
   return mTextColor;
@@ -525,6 +530,11 @@ const Vector4& VisualModel::GetBackgroundColor() const
   return mBackgroundColor;
 }
 
+const float VisualModel::GetCharacterSpacing() const
+{
+  return mCharacterSpacing;
+}
+
 bool VisualModel::IsBackgroundEnabled() const
 {
   return mBackgroundEnabled;
@@ -604,6 +614,11 @@ void VisualModel::ClearCaches()
   mCachedLineIndex = 0u;
 }
 
+const Vector<CharacterIndex>& VisualModel::GetGlyphsToCharacters() const
+{
+  return mGlyphsToCharacters;
+}
+
 VisualModel::~VisualModel()
 {
 }
@@ -644,7 +659,8 @@ VisualModel::VisualModel()
   mUnderlineColorSet(false),
   mBackgroundEnabled(false),
   mMarkupProcessorEnabled(false),
-  mStrikethroughEnabled(false)
+  mStrikethroughEnabled(false),
+  mCharacterSpacing(0.0f)
 
 {
 }
index 673156b..ebddb35 100644 (file)
@@ -552,6 +552,30 @@ public:
    * @return Returns the override height for a strikethrough, 0 indicates that font metrics will determine the height
    */
   float GetStrikethroughHeight() const;
+  /**
+   * @brief Set the override used for character spacing.
+   *
+   * @note A positive value will make the characters far apart (expanded) and a negative value will bring them closer (condensed).
+   *
+   * @param[in] characterSpacing The character spacing.
+   */
+  void SetCharacterSpacing(float characterSpacing);
+
+  /**
+   * @brief Retrieves the characterSpacing.
+   *
+   * @note A positive value will make the characters far apart (expanded) and a negative value will bring them closer (condensed).
+   *
+   * @return Returns the characterSpacing.
+   */
+  const float GetCharacterSpacing() const;
+
+  /**
+   * @brief Retrieves the Glyphs to Characters Array.
+   *
+   * @return The GlyphsToCharacters.
+   */
+  const Vector<CharacterIndex>& GetGlyphsToCharacters() const;
 
   /**
    * @brief Retrieves the strikethrough runs.
@@ -640,6 +664,7 @@ public:
   bool       mMarkupProcessorEnabled : 1; ///< Markup-processor enabled flag
   HyphenInfo mHyphen;                     ///< Contains hyphen glyph info & the character index to draw hyphen after.
   bool       mStrikethroughEnabled : 1;   ///< Strikethrough enabled flag
+  float      mCharacterSpacing;           ///< Contains the value of the character spacing.
 };
 
 } // namespace Text