+ 8u,
+ 5u,
+ },
+ TextAbstraction::HANGUL
+ };
+ scriptRuns07.PushBack( scriptRun0700 );
+ scriptRuns07.PushBack( scriptRun0701 );
+
+ // White spaces between different scripts and differetn directions. Starting LTR.
+ Vector<ScriptRun> scriptRuns08;
+ ScriptRun scriptRun0800 =
+ {
+ {
+ 0u,
+ 18u,
+ },
+ TextAbstraction::LATIN
+ };
+ ScriptRun scriptRun0801 =
+ {
+ {
+ 18u,
+ 14u,
+ },
+ TextAbstraction::ARABIC
+ };
+ ScriptRun scriptRun0802 =
+ {
+ {
+ 32u,
+ 18u,
+ },
+ TextAbstraction::HANGUL
+ };
+ scriptRuns08.PushBack( scriptRun0800 );
+ scriptRuns08.PushBack( scriptRun0801 );
+ scriptRuns08.PushBack( scriptRun0802 );
+
+ // White spaces between different scripts and differetn directions. Starting RTL.
+ Vector<ScriptRun> scriptRuns09;
+ ScriptRun scriptRun0900 =
+ {
+ {
+ 0u,
+ 21u,
+ },
+ TextAbstraction::ARABIC
+ };
+ ScriptRun scriptRun0901 =
+ {
+ {
+ 21u,
+ 16u,
+ },
+ TextAbstraction::LATIN
+ };
+ ScriptRun scriptRun0902 =
+ {
+ {
+ 37u,
+ 10u,
+ },
+ TextAbstraction::HANGUL
+ };
+ ScriptRun scriptRun0903 =
+ {
+ {
+ 47u,
+ 20u,
+ },
+ TextAbstraction::ARABIC
+ };
+ scriptRuns09.PushBack( scriptRun0900 );
+ scriptRuns09.PushBack( scriptRun0901 );
+ scriptRuns09.PushBack( scriptRun0902 );
+ scriptRuns09.PushBack( scriptRun0903 );
+
+ // Paragraphs with different directions.
+ Vector<ScriptRun> scriptRuns10;
+ ScriptRun scriptRun1000 =
+ {
+ {
+ 0u,
+ 20u,
+ },
+ TextAbstraction::ARABIC
+ };
+ ScriptRun scriptRun1001 =
+ {
+ {
+ 20u,
+ 12u,
+ },
+ TextAbstraction::HEBREW
+ };
+ ScriptRun scriptRun1002 =
+ {
+ {
+ 32u,
+ 17u,
+ },
+ TextAbstraction::ARABIC
+ };
+ ScriptRun scriptRun1003 =
+ {
+ {
+ 49u,
+ 18u,
+ },
+ TextAbstraction::LATIN
+ };
+ ScriptRun scriptRun1004 =
+ {
+ {
+ 67u,
+ 14u,
+ },
+ TextAbstraction::HANGUL
+ };
+ ScriptRun scriptRun1005 =
+ {
+ {
+ 81u,
+ 19u,
+ },
+ TextAbstraction::ARABIC
+ };
+ ScriptRun scriptRun1006 =
+ {
+ {
+ 100u,
+ 13u,
+ },
+ TextAbstraction::LATIN
+ };
+ ScriptRun scriptRun1007 =
+ {
+ {
+ 113u,
+ 16u,
+ },
+ TextAbstraction::HEBREW
+ };
+ ScriptRun scriptRun1008 =
+ {
+ {
+ 129u,
+ 20u,
+ },
+ TextAbstraction::LATIN
+ };
+ ScriptRun scriptRun1009 =
+ {
+ {
+ 149u,
+ 14u,
+ },
+ TextAbstraction::ARABIC
+ };
+ ScriptRun scriptRun1010 =
+ {
+ {
+ 163u,
+ 18u,
+ },
+ TextAbstraction::HANGUL
+ };
+ ScriptRun scriptRun1011 =
+ {
+ {
+ 181u,
+ 17u,
+ },
+ TextAbstraction::HANGUL
+ };
+ scriptRuns10.PushBack( scriptRun1000 );
+ scriptRuns10.PushBack( scriptRun1001 );
+ scriptRuns10.PushBack( scriptRun1002 );
+ scriptRuns10.PushBack( scriptRun1003 );
+ scriptRuns10.PushBack( scriptRun1004 );
+ scriptRuns10.PushBack( scriptRun1005 );
+ scriptRuns10.PushBack( scriptRun1006 );
+ scriptRuns10.PushBack( scriptRun1007 );
+ scriptRuns10.PushBack( scriptRun1008 );
+ scriptRuns10.PushBack( scriptRun1009 );
+ scriptRuns10.PushBack( scriptRun1010 );
+ scriptRuns10.PushBack( scriptRun1011 );
+
+ // Paragraphs with no scripts mixed with paragraphs with scripts.
+ Vector<ScriptRun> scriptRuns11;
+ ScriptRun scriptRun1100 =
+ {
+ {
+ 0u,
+ 3u,
+ },
+ TextAbstraction::UNKNOWN
+ };
+ ScriptRun scriptRun1101 =
+ {
+ {
+ 3u,
+ 3u,
+ },
+ TextAbstraction::UNKNOWN
+ };
+ ScriptRun scriptRun1102 =
+ {
+ {
+ 6u,
+ 19u,
+ },
+ TextAbstraction::LATIN
+ };
+ ScriptRun scriptRun1103 =
+ {
+ {
+ 25u,
+ 3u,
+ },
+ TextAbstraction::UNKNOWN
+ };
+ ScriptRun scriptRun1104 =
+ {
+ {
+ 28u,
+ 3u,
+ },
+ TextAbstraction::UNKNOWN
+ };
+ ScriptRun scriptRun1105 =
+ {
+ {
+ 31u,
+ 15u,
+ },
+ TextAbstraction::HEBREW
+ };
+ ScriptRun scriptRun1106 =
+ {
+ {
+ 46u,
+ 2u,
+ },
+ TextAbstraction::UNKNOWN
+ };
+ ScriptRun scriptRun1107 =
+ {
+ {
+ 48u,
+ 2u,
+ },
+ TextAbstraction::UNKNOWN
+ };
+ ScriptRun scriptRun1108 =
+ {
+ {
+ 50u,
+ 2u,
+ },
+ TextAbstraction::UNKNOWN
+ };
+ scriptRuns11.PushBack( scriptRun1100 );
+ scriptRuns11.PushBack( scriptRun1101 );
+ scriptRuns11.PushBack( scriptRun1102 );
+ scriptRuns11.PushBack( scriptRun1103 );
+ scriptRuns11.PushBack( scriptRun1104 );
+ scriptRuns11.PushBack( scriptRun1105 );
+ scriptRuns11.PushBack( scriptRun1106 );
+ scriptRuns11.PushBack( scriptRun1107 );
+ scriptRuns11.PushBack( scriptRun1108 );
+
+ // Paragraphs with no scripts.
+ Vector<ScriptRun> scriptRuns12;
+ ScriptRun scriptRun1200 =
+ {
+ {
+ 0u,
+ 3u,
+ },
+ TextAbstraction::UNKNOWN
+ };
+ ScriptRun scriptRun1201 =
+ {
+ {
+ 3u,
+ 3u,
+ },
+ TextAbstraction::UNKNOWN
+ };
+ ScriptRun scriptRun1202 =
+ {
+ {
+ 6u,
+ 3u,
+ },
+ TextAbstraction::UNKNOWN
+ };
+ ScriptRun scriptRun1203 =
+ {
+ {
+ 9u,
+ 2u,
+ },
+ TextAbstraction::UNKNOWN
+ };
+ scriptRuns12.PushBack( scriptRun1200 );
+ scriptRuns12.PushBack( scriptRun1201 );
+ scriptRuns12.PushBack( scriptRun1202 );
+ scriptRuns12.PushBack( scriptRun1203 );
+
+ Vector<ScriptRun> scriptRuns13;
+ ScriptRun scriptRun1301 =
+ {
+ {
+ 0u,
+ 4u,
+ },
+ TextAbstraction::UNKNOWN
+ };
+ scriptRuns13.PushBack( scriptRun1301 );
+
+ const ScriptsData data[] =
+ {
+ {
+ "void text",
+ "",
+ 0u,
+ 0u,
+ scriptRuns00,
+ },
+ {
+ "Easy latin script",
+ "Hello world",
+ 0u,
+ 11u,
+ scriptRuns01,
+ },
+ {
+ "Mix of LTR '\\n'and RTL",
+ "Hello world\nمرحبا بالعالم",
+ 0u,
+ 25u,
+ scriptRuns02,
+ },
+ {
+ "Update mix of LTR '\\n'and RTL. Update LTR",
+ "Hello world\nمرحبا بالعالم",
+ 0u,
+ 12u,
+ scriptRuns02,
+ },
+ {
+ "Update mix of LTR '\\n'and RTL. Update RTL",
+ "Hello world\nمرحبا بالعالم",
+ 12u,
+ 13u,
+ scriptRuns02,
+ },
+ {
+ "Mix of RTL '\\n'and LTR",
+ "مرحبا بالعالم\nHello world",
+ 0u,
+ 25u,
+ scriptRuns03,
+ },
+ {
+ "Update mix of RTL '\\n'and LTR. Update RTL",
+ "مرحبا بالعالم\nHello world",
+ 0u,
+ 14u,
+ scriptRuns03,
+ },
+ {
+ "Update mix of RTL '\\n'and LTR. Update LTR",
+ "مرحبا بالعالم\nHello world",
+ 14u,
+ 11u,
+ scriptRuns03,
+ },
+ {
+ "White spaces. At the beginning of the text.",
+ " Hello world",
+ 0u,
+ 15u,
+ scriptRuns04,
+ },
+ {
+ "White spaces. At the end of the text.",
+ "Hello world ",
+ 0u,
+ 15u,
+ scriptRuns05,
+ },
+ {
+ "White spaces. At the middle of the text.",
+ "Hello world",
+ 0u,
+ 15u,
+ scriptRuns06,
+ },
+ {
+ "White spaces between different scripts.",
+ " Hel 세계 ",
+ 0u,
+ 13u,
+ scriptRuns07,
+ },
+ {
+ "White spaces between different scripts and differetn directions. Starting LTR.",
+ " Hello world مرحبا بالعالم 안녕하세요 세계 ",
+ 0u,
+ 50u,
+ scriptRuns08,
+ },
+ {
+ "White spaces between different scripts and differetn directions. Starting RTL.",
+ " مرحبا بالعالم Hello world 안녕하세요 세계 مرحبا بالعالم ",
+ 0u,
+ 67u,
+ scriptRuns09
+ },
+ {
+ "Paragraphs with different directions.",
+ " مرحبا بالعالم שלום עולם مرحبا بالعالم \n "
+ " Hello world 안녕하세요 세계 \n "
+ " مرحبا بالعالم Hello world שלום עולם \n "
+ " Hello world مرحبا بالعالم 안녕하세요 세계 \n "
+ " 안녕하세요 세계 ",
+ 0u,
+ 198u,
+ scriptRuns10
+ },
+ {
+ "Update paragraphs with different directions. Update initial paragraphs.",
+ " مرحبا بالعالم שלום עולם مرحبا بالعالم \n "
+ " Hello world 안녕하세요 세계 \n "
+ " مرحبا بالعالم Hello world שלום עולם \n "
+ " Hello world مرحبا بالعالم 안녕하세요 세계 \n "
+ " 안녕하세요 세계 ",
+ 0u,
+ 81u,
+ scriptRuns10
+ },
+ {
+ "Update paragraphs with different directions. Update middle paragraphs.",
+ " مرحبا بالعالم שלום עולם مرحبا بالعالم \n "
+ " Hello world 안녕하세요 세계 \n "
+ " مرحبا بالعالم Hello world שלום עולם \n "
+ " Hello world مرحبا بالعالم 안녕하세요 세계 \n "
+ " 안녕하세요 세계 ",
+ 49u,
+ 80u,
+ scriptRuns10
+ },
+ {
+ "Update paragraphs with different directions. Update final paragraphs.",
+ " مرحبا بالعالم שלום עולם مرحبا بالعالم \n "
+ " Hello world 안녕하세요 세계 \n "
+ " مرحبا بالعالم Hello world שלום עולם \n "
+ " Hello world مرحبا بالعالم 안녕하세요 세계 \n "
+ " 안녕하세요 세계 ",
+ 129u,
+ 69u,
+ scriptRuns10
+ },
+ {
+ "Paragraphs with no scripts mixed with paragraphs with scripts.",
+ " \n \n Hello world \n \n \n שלום עולם \n \n \n ",
+ 0u,
+ 52u,
+ scriptRuns11
+ },
+ {
+ "Paragraphs with no scripts.",
+ " \n \n \n ",
+ 0u,
+ 11u,
+ scriptRuns12
+ },
+ {
+ "Update paragraphs with no scripts. Update initial paragraphs.",
+ " \n \n \n ",
+ 0u,
+ 3u,
+ scriptRuns12
+ },
+ {
+ "Update paragraphs with no scripts. Update middle paragraphs.",
+ " \n \n \n ",
+ 3u,
+ 6u,
+ scriptRuns12
+ },
+ {
+ "Update paragraphs with no scripts. Update final paragraphs.",
+ " \n \n \n ",
+ 9u,
+ 2u,
+ scriptRuns12
+ },
+ {
+ "Unknown scripts.",
+ "ᚩᚯᚱᚸ", // Runic script not currentlu supported.
+ 0u,
+ 4u,
+ scriptRuns13
+ }
+ };
+ const unsigned int numberOfTests = 24u;
+
+ for( unsigned int index = 0u; index < numberOfTests; ++index )
+ {
+ if( !ScriptsTest( data[index] ) )
+ {
+ tet_result(TET_FAIL);
+ }
+ }
+
+ tet_result(TET_PASS);
+ END_TEST;
+}
+
+int UtcDaliTextMultiLanguageValidateFonts01(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline(" UtcDaliTextMultiLanguageValidateFonts");
+
+ TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
+
+ char* pathNamePtr = get_current_dir_name();
+ const std::string pathName( pathNamePtr );
+ free( pathNamePtr );
+
+ const PointSize26Dot6 pointSize01 = static_cast<PointSize26Dot6>( 21.f * 64.f );
+ const PointSize26Dot6 pointSize02 = static_cast<PointSize26Dot6>( 35.f * 64.f );
+
+ // Load some fonts.
+ fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
+ fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
+ fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/BreezeColorEmoji.ttf", EMOJI_FONT_SIZE );
+ fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf", pointSize01 );
+ fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf", pointSize02 );
+ fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf", pointSize01 );
+ fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf", pointSize02 );
+
+ // Font id 1 --> TizenSansArabicRegular.ttf
+ // Font id 2 --> TizenSansHebrewRegular.ttf
+ // Font id 3 --> BreezeColorEmoji.ttf
+ // Font id 4 --> TizenSansRegular.ttf, size 8
+ // Font id 5 --> TizenSansRegular.ttf, size 16
+ // Font id 6 --> TizenSansHebrewRegular.ttf, size 8
+ // Font id 7 --> TizenSansHebrewRegular.ttf, size 16
+ // Font id 8 --> (default)
+
+ Vector<FontRun> fontRuns01;
+ Vector<FontDescriptionRun> fontDescriptions01;
+
+ FontRun fontRun0201 =
+ {
+ {
+ 0u,
+ 11u
+ },
+ 8u
+ };
+ Vector<FontRun> fontRuns02;
+ fontRuns02.PushBack( fontRun0201 );
+
+ FontDescriptionRun fontDescription0201 =
+ {
+ {
+ 0u,
+ 11u
+ },
+ const_cast<char*>( "TizenSans" ),
+ 9u,
+ TextAbstraction::FontWeight::NORMAL,
+ TextAbstraction::FontWidth::NORMAL,
+ TextAbstraction::FontSlant::NORMAL,
+ 0u,
+ true,
+ false,
+ false,
+ false,
+ false
+ };
+ Vector<FontDescriptionRun> fontDescriptions02;
+ fontDescriptions02.PushBack( fontDescription0201 );
+
+ FontRun fontRun0301 =
+ {
+ {
+ 0u,
+ 12u
+ },
+ 8u
+ };
+ FontRun fontRun0302 =
+ {
+ {
+ 12u,
+ 12u
+ },
+ 8u
+ };
+ FontRun fontRun0303 =
+ {
+ {
+ 24u,
+ 4u
+ },
+ 8u
+ };
+ Vector<FontRun> fontRuns03;
+ fontRuns03.PushBack( fontRun0301 );
+ fontRuns03.PushBack( fontRun0302 );
+ fontRuns03.PushBack( fontRun0303 );
+
+ Vector<FontDescriptionRun> fontDescriptions03;
+
+ FontRun fontRun0701 =
+ {
+ {
+ 0u,
+ 4u
+ },
+ 2u
+ };
+ FontRun fontRun0702 =
+ {
+ {
+ 4u,
+ 1u
+ },
+ 8u
+ };
+ FontRun fontRun0703 =
+ {
+ {
+ 5u,
+ 4u
+ },
+ 2u
+ };
+ Vector<FontRun> fontRuns07;
+ fontRuns07.PushBack( fontRun0701 );
+ fontRuns07.PushBack( fontRun0702 );
+ fontRuns07.PushBack( fontRun0703 );
+
+ FontDescriptionRun fontDescription0701 =
+ {
+ {
+ 0u,
+ 4u
+ },
+ const_cast<char*>( "TizenSansHebrew" ),
+ 15u,
+ TextAbstraction::FontWeight::NORMAL,
+ TextAbstraction::FontWidth::NORMAL,
+ TextAbstraction::FontSlant::NORMAL,
+ 0u,
+ true,
+ false,
+ false,
+ false,
+ false
+ };
+ FontDescriptionRun fontDescription0702 =
+ {
+ {
+ 5u,
+ 4u
+ },
+ const_cast<char*>( "TizenSansHebrew" ),
+ 15u,
+ TextAbstraction::FontWeight::NORMAL,
+ TextAbstraction::FontWidth::NORMAL,
+ TextAbstraction::FontSlant::NORMAL,
+ 0u,
+ true,
+ false,
+ false,
+ false,
+ false
+ };
+ Vector<FontDescriptionRun> fontDescriptions07;
+ fontDescriptions07.PushBack( fontDescription0701 );
+ fontDescriptions07.PushBack( fontDescription0702 );
+
+ FontRun fontRun0801 =
+ {
+ {
+ 0u,
+ 9u
+ },
+ 2u
+ };
+ Vector<FontRun> fontRuns08;
+ fontRuns08.PushBack( fontRun0801 );
+
+ Vector<FontDescriptionRun> fontDescriptions08;
+
+ FontRun fontRun0901 =
+ {
+ {
+ 0u,
+ 4u
+ },
+ 3u
+ };
+ Vector<FontRun> fontRuns09;
+ fontRuns09.PushBack( fontRun0901 );
+
+ Vector<FontDescriptionRun> fontDescriptions09;
+ FontDescriptionRun fontDescription0901 =
+ {
+ {
+ 0u,
+ 4u
+ },
+ const_cast<char*>( "BreezeColorEmoji" ),
+ 16u,
+ TextAbstraction::FontWeight::NORMAL,
+ TextAbstraction::FontWidth::NORMAL,
+ TextAbstraction::FontSlant::NORMAL,
+ EMOJI_FONT_SIZE,
+ true,
+ false,
+ false,
+ false,
+ true
+ };
+ fontDescriptions09.PushBack( fontDescription0901 );
+
+ FontRun fontRun1001 =
+ {
+ {
+ 0u,
+ 13u
+ },
+ 4u
+ };
+ FontRun fontRun1002 =
+ {
+ {
+ 13u,
+ 9u
+ },
+ 6u
+ };
+ FontRun fontRun1003 =
+ {
+ {
+ 22u,
+ 15u
+ },
+ 5u
+ };
+ FontRun fontRun1004 =
+ {
+ {
+ 37u,
+ 9u
+ },
+ 7u
+ };
+ Vector<FontRun> fontRuns10;
+ fontRuns10.PushBack( fontRun1001 );
+ fontRuns10.PushBack( fontRun1002 );
+ fontRuns10.PushBack( fontRun1003 );
+ fontRuns10.PushBack( fontRun1004 );
+
+ FontDescriptionRun fontDescription1001 =
+ {
+ {
+ 0u,
+ 13u
+ },
+ const_cast<char*>( "TizenSans" ),
+ 9u,
+ TextAbstraction::FontWeight::NORMAL,
+ TextAbstraction::FontWidth::NORMAL,
+ TextAbstraction::FontSlant::NORMAL,
+ pointSize01,
+ true,
+ false,
+ false,
+ false,
+ true
+ };
+ FontDescriptionRun fontDescription1002 =
+ {
+ {
+ 13u,
+ 9u
+ },
+ const_cast<char*>( "TizenSansHebrew" ),
+ 15u,
+ TextAbstraction::FontWeight::NORMAL,
+ TextAbstraction::FontWidth::NORMAL,
+ TextAbstraction::FontSlant::NORMAL,
+ pointSize01,
+ true,
+ false,
+ false,
+ false,
+ true
+ };
+ FontDescriptionRun fontDescription1003 =
+ {
+ {
+ 22u,
+ 15u
+ },
+ const_cast<char*>( "TizenSans" ),
+ 9u,
+ TextAbstraction::FontWeight::NORMAL,
+ TextAbstraction::FontWidth::NORMAL,
+ TextAbstraction::FontSlant::NORMAL,
+ pointSize02,
+ true,
+ false,
+ false,
+ false,
+ true
+ };
+ FontDescriptionRun fontDescription1004 =
+ {
+ {
+ 37u,
+ 9u
+ },
+ const_cast<char*>( "TizenSansHebrew" ),
+ 15u,
+ TextAbstraction::FontWeight::NORMAL,
+ TextAbstraction::FontWidth::NORMAL,
+ TextAbstraction::FontSlant::NORMAL,
+ pointSize02,
+ true,
+ false,
+ false,
+ false,
+ true
+ };
+ Vector<FontDescriptionRun> fontDescriptions10;
+ fontDescriptions10.PushBack( fontDescription1001 );
+ fontDescriptions10.PushBack( fontDescription1002 );
+ fontDescriptions10.PushBack( fontDescription1003 );
+ fontDescriptions10.PushBack( fontDescription1004 );
+
+ FontRun fontRun1101 =
+ {
+ {
+ 0u,
+ 22u
+ },
+ 5u
+ };
+ Vector<FontRun> fontRuns11;
+ fontRuns11.PushBack( fontRun1101 );
+
+ FontDescriptionRun fontDescription1101 =
+ {
+ {
+ 0,
+ 22u
+ },
+ const_cast<char*>( "TizenSans" ),
+ 9u,
+ TextAbstraction::FontWeight::NORMAL,
+ TextAbstraction::FontWidth::NORMAL,
+ TextAbstraction::FontSlant::NORMAL,
+ pointSize02,
+ true,
+ false,
+ false,
+ false,
+ true
+ };
+ Vector<FontDescriptionRun> fontDescriptions11;
+ fontDescriptions11.PushBack( fontDescription1101 );
+
+ FontRun fontRun1201 =
+ {
+ {
+ 0u,
+ 6u
+ },
+ 8u
+ };
+ FontRun fontRun1202 =
+ {
+ {
+ 6u,
+ 1u
+ },
+ 9u
+ };
+ FontRun fontRun1203 =
+ {
+ {
+ 7u,
+ 5u
+ },
+ 8u
+ };
+ Vector<FontRun> fontRuns12;
+ fontRuns12.PushBack( fontRun1201 );
+ fontRuns12.PushBack( fontRun1202 );
+ fontRuns12.PushBack( fontRun1203 );
+
+ FontDescriptionRun fontDescription1201 =
+ {
+ {
+ 0u,
+ 6u
+ },
+ const_cast<char*>( "TizenSans" ),
+ 9u,
+ TextAbstraction::FontWeight::NORMAL,
+ TextAbstraction::FontWidth::NORMAL,
+ TextAbstraction::FontSlant::NORMAL,
+ 0u,
+ true,
+ false,
+ false,
+ false,
+ false
+ };
+ FontDescriptionRun fontDescription1202 =
+ {
+ {
+ 6u,
+ 1u
+ },
+ const_cast<char*>( "TizenSans" ),
+ 9u,
+ TextAbstraction::FontWeight::NORMAL,
+ TextAbstraction::FontWidth::NORMAL,
+ TextAbstraction::FontSlant::NORMAL,
+ 0u,
+ true,
+ false,
+ false,
+ false,
+ false
+ };
+ FontDescriptionRun fontDescription1203 =
+ {
+ {
+ 7u,
+ 5u
+ },
+ const_cast<char*>( "TizenSans" ),
+ 9u,
+ TextAbstraction::FontWeight::NORMAL,
+ TextAbstraction::FontWidth::NORMAL,
+ TextAbstraction::FontSlant::NORMAL,
+ 0u,
+ true,
+ false,
+ false,
+ false,
+ false
+ };
+ Vector<FontDescriptionRun> fontDescriptions12;
+ fontDescriptions12.PushBack( fontDescription1201 );
+ fontDescriptions12.PushBack( fontDescription1202 );
+ fontDescriptions12.PushBack( fontDescription1203 );
+
+ const ValidateFontsData data[] =
+ {
+ {
+ "void text.",
+ "",
+ "/tizen/TizenSansRegular.ttf",
+ TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
+ 0u,
+ 0u,
+ fontDescriptions01,
+ fontRuns01
+ },
+ {
+ "Easy latin script.",
+ "Hello world",
+ "/tizen/TizenSansRegular.ttf",
+ TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
+ 0u,
+ 11u,
+ fontDescriptions02,
+ fontRuns02
+ },
+ {
+ "Different paragraphs.",
+ "Hello world\nhello world\ndemo",
+ "/tizen/TizenSansRegular.ttf",
+ TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
+ 0u,
+ 28u,
+ fontDescriptions03,
+ fontRuns03
+ },
+ {
+ "Different paragraphs. Update the initial paragraph.",
+ "Hello world\nhello world\ndemo",
+ "/tizen/TizenSansRegular.ttf",
+ TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
+ 0u,
+ 12u,
+ fontDescriptions03,
+ fontRuns03
+ },
+ {
+ "Different paragraphs. Update the middle paragraph.",
+ "Hello world\nhello world\ndemo",
+ "/tizen/TizenSansRegular.ttf",
+ TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
+ 12u,
+ 12u,
+ fontDescriptions03,
+ fontRuns03
+ },
+ {
+ "Different paragraphs. Update the final paragraph.",
+ "Hello world\nhello world\ndemo",
+ "/tizen/TizenSansRegular.ttf",
+ TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
+ 24u,
+ 4u,
+ fontDescriptions03,
+ fontRuns03
+ },
+ {
+ "Hebrew text. Default font: latin",
+ "שלום עולם",
+ "/tizen/TizenSansRegular.ttf",
+ TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
+ 0u,
+ 9u,
+ fontDescriptions07,
+ fontRuns07
+ },
+ {
+ "Hebrew text. Default font: hebrew",
+ "שלום עולם",
+ "/tizen/TizenSansHebrewRegular.ttf",
+ TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
+ 0u,
+ 9u,
+ fontDescriptions08,
+ fontRuns08
+ },
+ {
+ "Emojis",
+ "\xF0\x9F\x98\x81\xF0\x9F\x98\x82\xF0\x9F\x98\x83\xF0\x9F\x98\x84",
+ "/tizen/BreezeColorEmoji.ttf",
+ EMOJI_FONT_SIZE,
+ 0u,
+ 4u,
+ fontDescriptions09,
+ fontRuns09
+ },
+ {
+ "Mix text. Default font: latin. Different font sizes",
+ "Hello world, שלום עולם, hello world, שלום עולם",
+ "/tizen/TizenSansRegular.ttf",
+ TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
+ 0u,
+ 46u,
+ fontDescriptions10,
+ fontRuns10
+ },
+ {
+ "Unknown script -> changed to LATIN",
+ "WRC – The Official App",
+ "/tizen/TizenSansRegular.ttf",
+ TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
+ 0u,
+ 22u,
+ fontDescriptions11,
+ fontRuns11
+ },
+ {
+ "Common script.",
+ "Hello \tworld",
+ "/tizen/TizenSansRegular.ttf",
+ TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
+ 0u,
+ 12u,
+ fontDescriptions12,
+ fontRuns12