From 9eccfe9c7df92a1e86ed6d6f2f99e1dc41dc5738 Mon Sep 17 00:00:00 2001 From: "dongsug.song" Date: Tue, 15 Nov 2016 11:50:27 +0900 Subject: [PATCH] Revert "[3.0] Fix for multi-language support." This reverts commit cbd77719557367affbd50a1ff3682b72cd4c4419. Change-Id: Ia038878230e5cfc7a18a59a6b35c5d60e396271b --- .../dali-toolkit-test-utils/toolkit-text-model.cpp | 13 +- .../dali-toolkit-internal/utc-Dali-Text-Layout.cpp | 421 ++++++++------------- .../utc-Dali-Text-MultiLanguage.cpp | 88 ++--- .../toolkit-text-abstraction.cpp | 6 +- .../text/multi-language-helper-functions.cpp | 187 +++++---- .../text/multi-language-helper-functions.h | 22 +- .../internal/text/multi-language-support-impl.cpp | 83 ++-- .../internal/text/multi-language-support-impl.h | 8 +- .../internal/text/multi-language-support.cpp | 6 +- .../internal/text/multi-language-support.h | 8 +- .../internal/text/text-controller-impl.cpp | 13 +- dali-toolkit/internal/text/text-controller.cpp | 2 +- dali-toolkit/internal/text/text-font-style.cpp | 44 +-- 13 files changed, 384 insertions(+), 517 deletions(-) diff --git a/automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/toolkit-text-model.cpp b/automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/toolkit-text-model.cpp index 104b3c8..21d9f42 100644 --- a/automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/toolkit-text-model.cpp +++ b/automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/toolkit-text-model.cpp @@ -150,19 +150,24 @@ void CreateTextModel( const std::string& text, fontDescriptionRuns = fontDescriptions; Vector& validFonts = logicalModel->mFontRuns; - // The default font description. - TextAbstraction::FontDescription fontDescription; + // The default font id. + FontDefaults fontDefaults; + fontDefaults.mFontDescription.family = ""; + fontDefaults.familyDefined = true; + fontDefaults.mDefaultPointSize = 12.f; + fontDefaults.sizeDefined = true; TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get(); fontClient.SetDpi( 96u, 96u ); + const FontId defaultFontId = fontDefaults.GetFontId( fontClient ); + // Validates the fonts. If there is a character with no assigned font it sets a default one. // After this call, fonts are validated. multilanguageSupport.ValidateFonts( utf32Characters, scripts, fontDescriptionRuns, - fontDescription, - TextAbstraction::FontClient::DEFAULT_POINT_SIZE, + defaultFontId, 0u, numberOfCharacters, validFonts ); diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Layout.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Layout.cpp index 36ab916..08a0a97 100644 --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Layout.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Layout.cpp @@ -961,7 +961,7 @@ int UtcDaliTextLayoutMultilineText02(void) // Set a known font description FontDescriptionRun fontDescriptionRun2; fontDescriptionRun2.characterRun.characterIndex = 17u; - fontDescriptionRun2.characterRun.numberOfCharacters = 9u; + fontDescriptionRun2.characterRun.numberOfCharacters = 11u; fontDescriptionRun2.familyLength = fontFamily2.size(); fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength]; memcpy( fontDescriptionRun2.familyName, fontFamily2.c_str(), fontDescriptionRun2.familyLength ); @@ -971,12 +971,12 @@ int UtcDaliTextLayoutMultilineText02(void) fontDescriptionRun2.slantDefined = false; fontDescriptionRun2.sizeDefined = false; - const std::string fontFamily3( "TizenSans" ); + const std::string fontFamily3( "TizenSansHebrew" ); // Set a known font description FontDescriptionRun fontDescriptionRun3; - fontDescriptionRun3.characterRun.characterIndex = 26u; - fontDescriptionRun3.characterRun.numberOfCharacters = 2u; + fontDescriptionRun3.characterRun.characterIndex = 28u; + fontDescriptionRun3.characterRun.numberOfCharacters = 10u; fontDescriptionRun3.familyLength = fontFamily3.size(); fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength]; memcpy( fontDescriptionRun3.familyName, fontFamily3.c_str(), fontDescriptionRun3.familyLength ); @@ -986,12 +986,12 @@ int UtcDaliTextLayoutMultilineText02(void) fontDescriptionRun3.slantDefined = false; fontDescriptionRun3.sizeDefined = false; - const std::string fontFamily4( "TizenSansHebrew" ); + const std::string fontFamily4( "TizenSans" ); // Set a known font description FontDescriptionRun fontDescriptionRun4; - fontDescriptionRun4.characterRun.characterIndex = 28u; - fontDescriptionRun4.characterRun.numberOfCharacters = 10u; + fontDescriptionRun4.characterRun.characterIndex = 38u; + fontDescriptionRun4.characterRun.numberOfCharacters = 17u; fontDescriptionRun4.familyLength = fontFamily4.size(); fontDescriptionRun4.familyName = new char[fontDescriptionRun4.familyLength]; memcpy( fontDescriptionRun4.familyName, fontFamily4.c_str(), fontDescriptionRun4.familyLength ); @@ -1001,34 +1001,18 @@ int UtcDaliTextLayoutMultilineText02(void) fontDescriptionRun4.slantDefined = false; fontDescriptionRun4.sizeDefined = false; - const std::string fontFamily5( "TizenSans" ); - - // Set a known font description - FontDescriptionRun fontDescriptionRun5; - fontDescriptionRun5.characterRun.characterIndex = 38u; - fontDescriptionRun5.characterRun.numberOfCharacters = 17u; - fontDescriptionRun5.familyLength = fontFamily5.size(); - fontDescriptionRun5.familyName = new char[fontDescriptionRun5.familyLength]; - memcpy( fontDescriptionRun5.familyName, fontFamily5.c_str(), fontDescriptionRun5.familyLength ); - fontDescriptionRun5.familyDefined = true; - fontDescriptionRun5.weightDefined = false; - fontDescriptionRun5.widthDefined = false; - fontDescriptionRun5.slantDefined = false; - fontDescriptionRun5.sizeDefined = false; - Vector 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); float positions[] = { 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f, + 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 32.f, -2.f, 35.f, -11.f, 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, @@ -1061,7 +1045,7 @@ int UtcDaliTextLayoutMultilineText02(void) { { 22u, 6u }, { 22u, 6u }, - 34.f, + 36.f, 15.f, -5.f, 0.f, @@ -1119,7 +1103,7 @@ int UtcDaliTextLayoutMultilineText02(void) "Hello world demo שלום עולם.\n" "שלום עולם hello world demo.", textArea, - 5u, + 4u, fontDescriptionRuns.Begin(), layoutSize, 55u, @@ -1470,7 +1454,7 @@ int UtcDaliTextUpdateLayout01(void) // Set a known font description FontDescriptionRun fontDescriptionRun02; fontDescriptionRun02.characterRun.characterIndex = 17u; - fontDescriptionRun02.characterRun.numberOfCharacters = 9u; + fontDescriptionRun02.characterRun.numberOfCharacters = 11u; fontDescriptionRun02.familyLength = fontHebrew.size(); fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength ); @@ -1482,11 +1466,11 @@ int UtcDaliTextUpdateLayout01(void) // Set a known font description FontDescriptionRun fontDescriptionRun03; - fontDescriptionRun03.characterRun.characterIndex = 26u; - fontDescriptionRun03.characterRun.numberOfCharacters = 2u; - fontDescriptionRun03.familyLength = fontLatin.size(); + fontDescriptionRun03.characterRun.characterIndex = 28u; + fontDescriptionRun03.characterRun.numberOfCharacters = 14u; + fontDescriptionRun03.familyLength = fontArabic.size(); fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; - memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength ); + memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength ); fontDescriptionRun03.familyDefined = true; fontDescriptionRun03.weightDefined = false; fontDescriptionRun03.widthDefined = false; @@ -1495,11 +1479,11 @@ int UtcDaliTextUpdateLayout01(void) // Set a known font description FontDescriptionRun fontDescriptionRun04; - fontDescriptionRun04.characterRun.characterIndex = 28u; - fontDescriptionRun04.characterRun.numberOfCharacters = 14u; - fontDescriptionRun04.familyLength = fontArabic.size(); + fontDescriptionRun04.characterRun.characterIndex = 42u; + fontDescriptionRun04.characterRun.numberOfCharacters = 12u; + fontDescriptionRun04.familyLength = fontLatin.size(); fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; - memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength ); + memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength ); fontDescriptionRun04.familyDefined = true; fontDescriptionRun04.weightDefined = false; fontDescriptionRun04.widthDefined = false; @@ -1508,11 +1492,11 @@ int UtcDaliTextUpdateLayout01(void) // Set a known font description FontDescriptionRun fontDescriptionRun05; - fontDescriptionRun05.characterRun.characterIndex = 42u; - fontDescriptionRun05.characterRun.numberOfCharacters = 12u; - fontDescriptionRun05.familyLength = fontLatin.size(); + fontDescriptionRun05.characterRun.characterIndex = 54u; + fontDescriptionRun05.characterRun.numberOfCharacters = 10u; + fontDescriptionRun05.familyLength = fontHebrew.size(); fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; - memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength ); + memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength ); fontDescriptionRun05.familyDefined = true; fontDescriptionRun05.weightDefined = false; fontDescriptionRun05.widthDefined = false; @@ -1521,7 +1505,7 @@ int UtcDaliTextUpdateLayout01(void) // Set a known font description FontDescriptionRun fontDescriptionRun06; - fontDescriptionRun06.characterRun.characterIndex = 54u; + fontDescriptionRun06.characterRun.characterIndex = 64u; fontDescriptionRun06.characterRun.numberOfCharacters = 10u; fontDescriptionRun06.familyLength = fontHebrew.size(); fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; @@ -1534,11 +1518,11 @@ int UtcDaliTextUpdateLayout01(void) // Set a known font description FontDescriptionRun fontDescriptionRun07; - fontDescriptionRun07.characterRun.characterIndex = 64u; - fontDescriptionRun07.characterRun.numberOfCharacters = 10u; - fontDescriptionRun07.familyLength = fontHebrew.size(); + fontDescriptionRun07.characterRun.characterIndex = 74u; + fontDescriptionRun07.characterRun.numberOfCharacters = 18u; + fontDescriptionRun07.familyLength = fontLatin.size(); fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength]; - memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength ); + memcpy( fontDescriptionRun07.familyName, fontLatin.c_str(), fontDescriptionRun07.familyLength ); fontDescriptionRun07.familyDefined = true; fontDescriptionRun07.weightDefined = false; fontDescriptionRun07.widthDefined = false; @@ -1547,8 +1531,8 @@ int UtcDaliTextUpdateLayout01(void) // Set a known font description FontDescriptionRun fontDescriptionRun08; - fontDescriptionRun08.characterRun.characterIndex = 74u; - fontDescriptionRun08.characterRun.numberOfCharacters = 18u; + fontDescriptionRun08.characterRun.characterIndex = 92u; + fontDescriptionRun08.characterRun.numberOfCharacters = 12u; fontDescriptionRun08.familyLength = fontLatin.size(); fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength]; memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength ); @@ -1560,11 +1544,11 @@ int UtcDaliTextUpdateLayout01(void) // Set a known font description FontDescriptionRun fontDescriptionRun09; - fontDescriptionRun09.characterRun.characterIndex = 92u; - fontDescriptionRun09.characterRun.numberOfCharacters = 12u; - fontDescriptionRun09.familyLength = fontLatin.size(); + fontDescriptionRun09.characterRun.characterIndex = 104u; + fontDescriptionRun09.characterRun.numberOfCharacters = 14u; + fontDescriptionRun09.familyLength = fontArabic.size(); fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength]; - memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength ); + memcpy( fontDescriptionRun09.familyName, fontArabic.c_str(), fontDescriptionRun09.familyLength ); fontDescriptionRun09.familyDefined = true; fontDescriptionRun09.weightDefined = false; fontDescriptionRun09.widthDefined = false; @@ -1573,11 +1557,11 @@ int UtcDaliTextUpdateLayout01(void) // Set a known font description FontDescriptionRun fontDescriptionRun10; - fontDescriptionRun10.characterRun.characterIndex = 104u; - fontDescriptionRun10.characterRun.numberOfCharacters = 14u; - fontDescriptionRun10.familyLength = fontArabic.size(); + fontDescriptionRun10.characterRun.characterIndex = 118u; + fontDescriptionRun10.characterRun.numberOfCharacters = 10u; + fontDescriptionRun10.familyLength = fontHebrew.size(); fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength]; - memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength ); + memcpy( fontDescriptionRun10.familyName, fontHebrew.c_str(), fontDescriptionRun10.familyLength ); fontDescriptionRun10.familyDefined = true; fontDescriptionRun10.weightDefined = false; fontDescriptionRun10.widthDefined = false; @@ -1586,11 +1570,11 @@ int UtcDaliTextUpdateLayout01(void) // Set a known font description FontDescriptionRun fontDescriptionRun11; - fontDescriptionRun11.characterRun.characterIndex = 118u; - fontDescriptionRun11.characterRun.numberOfCharacters = 10u; - fontDescriptionRun11.familyLength = fontHebrew.size(); + fontDescriptionRun11.characterRun.characterIndex = 128u; + fontDescriptionRun11.characterRun.numberOfCharacters = 17u; + fontDescriptionRun11.familyLength = fontLatin.size(); fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength]; - memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength ); + memcpy( fontDescriptionRun11.familyName, fontLatin.c_str(), fontDescriptionRun11.familyLength ); fontDescriptionRun11.familyDefined = true; fontDescriptionRun11.weightDefined = false; fontDescriptionRun11.widthDefined = false; @@ -1599,11 +1583,11 @@ int UtcDaliTextUpdateLayout01(void) // Set a known font description FontDescriptionRun fontDescriptionRun12; - fontDescriptionRun12.characterRun.characterIndex = 128u; - fontDescriptionRun12.characterRun.numberOfCharacters = 17u; - fontDescriptionRun12.familyLength = fontLatin.size(); + fontDescriptionRun12.characterRun.characterIndex = 145u; + fontDescriptionRun12.characterRun.numberOfCharacters = 11u; + fontDescriptionRun12.familyLength = fontHebrew.size(); fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength]; - memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength ); + memcpy( fontDescriptionRun12.familyName, fontHebrew.c_str(), fontDescriptionRun12.familyLength ); fontDescriptionRun12.familyDefined = true; fontDescriptionRun12.weightDefined = false; fontDescriptionRun12.widthDefined = false; @@ -1612,8 +1596,8 @@ int UtcDaliTextUpdateLayout01(void) // Set a known font description FontDescriptionRun fontDescriptionRun13; - fontDescriptionRun13.characterRun.characterIndex = 145u; - fontDescriptionRun13.characterRun.numberOfCharacters = 9u; + fontDescriptionRun13.characterRun.characterIndex = 156u; + fontDescriptionRun13.characterRun.numberOfCharacters = 10u; fontDescriptionRun13.familyLength = fontHebrew.size(); fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength]; memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength ); @@ -1625,8 +1609,8 @@ int UtcDaliTextUpdateLayout01(void) // Set a known font description FontDescriptionRun fontDescriptionRun14; - fontDescriptionRun14.characterRun.characterIndex = 154u; - fontDescriptionRun14.characterRun.numberOfCharacters = 2u; + fontDescriptionRun14.characterRun.characterIndex = 166u; + fontDescriptionRun14.characterRun.numberOfCharacters = 12u; fontDescriptionRun14.familyLength = fontLatin.size(); fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength]; memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength ); @@ -1638,43 +1622,17 @@ int UtcDaliTextUpdateLayout01(void) // Set a known font description FontDescriptionRun fontDescriptionRun15; - fontDescriptionRun15.characterRun.characterIndex = 156u; - fontDescriptionRun15.characterRun.numberOfCharacters = 10u; - fontDescriptionRun15.familyLength = fontHebrew.size(); + fontDescriptionRun15.characterRun.characterIndex = 178u; + fontDescriptionRun15.characterRun.numberOfCharacters = 14u; + fontDescriptionRun15.familyLength = fontArabic.size(); fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength]; - memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength ); + memcpy( fontDescriptionRun15.familyName, fontArabic.c_str(), fontDescriptionRun15.familyLength ); fontDescriptionRun15.familyDefined = true; fontDescriptionRun15.weightDefined = false; fontDescriptionRun15.widthDefined = false; fontDescriptionRun15.slantDefined = false; fontDescriptionRun15.sizeDefined = false; - // Set a known font description - FontDescriptionRun fontDescriptionRun16; - fontDescriptionRun16.characterRun.characterIndex = 166u; - fontDescriptionRun16.characterRun.numberOfCharacters = 12u; - fontDescriptionRun16.familyLength = fontLatin.size(); - fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength]; - memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength ); - fontDescriptionRun16.familyDefined = true; - fontDescriptionRun16.weightDefined = false; - fontDescriptionRun16.widthDefined = false; - fontDescriptionRun16.slantDefined = false; - fontDescriptionRun16.sizeDefined = false; - - // Set a known font description - FontDescriptionRun fontDescriptionRun17; - fontDescriptionRun17.characterRun.characterIndex = 178u; - fontDescriptionRun17.characterRun.numberOfCharacters = 14u; - fontDescriptionRun17.familyLength = fontArabic.size(); - fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength]; - memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength ); - fontDescriptionRun17.familyDefined = true; - fontDescriptionRun17.weightDefined = false; - fontDescriptionRun17.widthDefined = false; - fontDescriptionRun17.slantDefined = false; - fontDescriptionRun17.sizeDefined = false; - Vector fontDescriptionRuns; fontDescriptionRuns.PushBack( fontDescriptionRun01 ); fontDescriptionRuns.PushBack( fontDescriptionRun02 ); @@ -1691,27 +1649,25 @@ int UtcDaliTextUpdateLayout01(void) fontDescriptionRuns.PushBack( fontDescriptionRun13 ); fontDescriptionRuns.PushBack( fontDescriptionRun14 ); fontDescriptionRuns.PushBack( fontDescriptionRun15 ); - fontDescriptionRuns.PushBack( fontDescriptionRun16 ); - fontDescriptionRuns.PushBack( fontDescriptionRun17 ); Size textArea(100.f, 300.f); Size layoutSize(92.f, 380.f); float positions[] = { 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f, + 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 32.f, -2.f, 35.f, -11.f, 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 68.f, -9.f, 76.f, -13.f, 80.f, -13.f, 83.f, -9.f, 92.f, -0.f, 0.f, -9.f, 11.f, -9.f, 21.f, -9.f, 27.f, -13.f, 30.f, -13.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f, 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, - 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -12.f, + 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -11.f, 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f, 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f, 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f, + 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 32.f, -2.f, 35.f, -11.f, 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, @@ -1745,7 +1701,7 @@ int UtcDaliTextUpdateLayout01(void) { { 22u, 6u }, { 22u, 6u }, - 34.f, + 36.f, 15.f, -5.f, 0.f, @@ -1889,7 +1845,7 @@ int UtcDaliTextUpdateLayout01(void) { { 150u, 6u }, { 150u, 6u }, - 34.f, + 36.f, 15.f, -5.f, 0.f, @@ -1976,7 +1932,7 @@ int UtcDaliTextUpdateLayout01(void) "Hello world demo שלום עולם.\n" "שלום עולם hello world مرحبا بالعالم\n", textArea, - 17u, + 15u, fontDescriptionRuns.Begin(), layoutSize, 192u, @@ -2026,7 +1982,7 @@ int UtcDaliTextUpdateLayout02(void) // Set a known font description FontDescriptionRun fontDescriptionRun02; fontDescriptionRun02.characterRun.characterIndex = 17u; - fontDescriptionRun02.characterRun.numberOfCharacters = 9u; + fontDescriptionRun02.characterRun.numberOfCharacters = 11u; fontDescriptionRun02.familyLength = fontHebrew.size(); fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength ); @@ -2038,11 +1994,11 @@ int UtcDaliTextUpdateLayout02(void) // Set a known font description FontDescriptionRun fontDescriptionRun03; - fontDescriptionRun03.characterRun.characterIndex = 26u; - fontDescriptionRun03.characterRun.numberOfCharacters = 2u; - fontDescriptionRun03.familyLength = fontLatin.size(); + fontDescriptionRun03.characterRun.characterIndex = 28u; + fontDescriptionRun03.characterRun.numberOfCharacters = 14u; + fontDescriptionRun03.familyLength = fontArabic.size(); fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; - memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength ); + memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength ); fontDescriptionRun03.familyDefined = true; fontDescriptionRun03.weightDefined = false; fontDescriptionRun03.widthDefined = false; @@ -2051,11 +2007,11 @@ int UtcDaliTextUpdateLayout02(void) // Set a known font description FontDescriptionRun fontDescriptionRun04; - fontDescriptionRun04.characterRun.characterIndex = 28u; - fontDescriptionRun04.characterRun.numberOfCharacters = 14u; - fontDescriptionRun04.familyLength = fontArabic.size(); + fontDescriptionRun04.characterRun.characterIndex = 42u; + fontDescriptionRun04.characterRun.numberOfCharacters = 12u; + fontDescriptionRun04.familyLength = fontLatin.size(); fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; - memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength ); + memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength ); fontDescriptionRun04.familyDefined = true; fontDescriptionRun04.weightDefined = false; fontDescriptionRun04.widthDefined = false; @@ -2064,11 +2020,11 @@ int UtcDaliTextUpdateLayout02(void) // Set a known font description FontDescriptionRun fontDescriptionRun05; - fontDescriptionRun05.characterRun.characterIndex = 42u; - fontDescriptionRun05.characterRun.numberOfCharacters = 12u; - fontDescriptionRun05.familyLength = fontLatin.size(); + fontDescriptionRun05.characterRun.characterIndex = 54u; + fontDescriptionRun05.characterRun.numberOfCharacters = 10u; + fontDescriptionRun05.familyLength = fontHebrew.size(); fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; - memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength ); + memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength ); fontDescriptionRun05.familyDefined = true; fontDescriptionRun05.weightDefined = false; fontDescriptionRun05.widthDefined = false; @@ -2077,7 +2033,7 @@ int UtcDaliTextUpdateLayout02(void) // Set a known font description FontDescriptionRun fontDescriptionRun06; - fontDescriptionRun06.characterRun.characterIndex = 54u; + fontDescriptionRun06.characterRun.characterIndex = 64u; fontDescriptionRun06.characterRun.numberOfCharacters = 10u; fontDescriptionRun06.familyLength = fontHebrew.size(); fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; @@ -2090,11 +2046,11 @@ int UtcDaliTextUpdateLayout02(void) // Set a known font description FontDescriptionRun fontDescriptionRun07; - fontDescriptionRun07.characterRun.characterIndex = 64u; - fontDescriptionRun07.characterRun.numberOfCharacters = 10u; - fontDescriptionRun07.familyLength = fontHebrew.size(); + fontDescriptionRun07.characterRun.characterIndex = 74u; + fontDescriptionRun07.characterRun.numberOfCharacters = 18u; + fontDescriptionRun07.familyLength = fontLatin.size(); fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength]; - memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength ); + memcpy( fontDescriptionRun07.familyName, fontLatin.c_str(), fontDescriptionRun07.familyLength ); fontDescriptionRun07.familyDefined = true; fontDescriptionRun07.weightDefined = false; fontDescriptionRun07.widthDefined = false; @@ -2103,8 +2059,8 @@ int UtcDaliTextUpdateLayout02(void) // Set a known font description FontDescriptionRun fontDescriptionRun08; - fontDescriptionRun08.characterRun.characterIndex = 74u; - fontDescriptionRun08.characterRun.numberOfCharacters = 18u; + fontDescriptionRun08.characterRun.characterIndex = 92u; + fontDescriptionRun08.characterRun.numberOfCharacters = 12u; fontDescriptionRun08.familyLength = fontLatin.size(); fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength]; memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength ); @@ -2116,11 +2072,11 @@ int UtcDaliTextUpdateLayout02(void) // Set a known font description FontDescriptionRun fontDescriptionRun09; - fontDescriptionRun09.characterRun.characterIndex = 92u; - fontDescriptionRun09.characterRun.numberOfCharacters = 12u; - fontDescriptionRun09.familyLength = fontLatin.size(); + fontDescriptionRun09.characterRun.characterIndex = 104u; + fontDescriptionRun09.characterRun.numberOfCharacters = 14u; + fontDescriptionRun09.familyLength = fontArabic.size(); fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength]; - memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength ); + memcpy( fontDescriptionRun09.familyName, fontArabic.c_str(), fontDescriptionRun09.familyLength ); fontDescriptionRun09.familyDefined = true; fontDescriptionRun09.weightDefined = false; fontDescriptionRun09.widthDefined = false; @@ -2129,11 +2085,11 @@ int UtcDaliTextUpdateLayout02(void) // Set a known font description FontDescriptionRun fontDescriptionRun10; - fontDescriptionRun10.characterRun.characterIndex = 104u; - fontDescriptionRun10.characterRun.numberOfCharacters = 14u; - fontDescriptionRun10.familyLength = fontArabic.size(); + fontDescriptionRun10.characterRun.characterIndex = 118u; + fontDescriptionRun10.characterRun.numberOfCharacters = 10u; + fontDescriptionRun10.familyLength = fontHebrew.size(); fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength]; - memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength ); + memcpy( fontDescriptionRun10.familyName, fontHebrew.c_str(), fontDescriptionRun10.familyLength ); fontDescriptionRun10.familyDefined = true; fontDescriptionRun10.weightDefined = false; fontDescriptionRun10.widthDefined = false; @@ -2142,11 +2098,11 @@ int UtcDaliTextUpdateLayout02(void) // Set a known font description FontDescriptionRun fontDescriptionRun11; - fontDescriptionRun11.characterRun.characterIndex = 118u; - fontDescriptionRun11.characterRun.numberOfCharacters = 10u; - fontDescriptionRun11.familyLength = fontHebrew.size(); + fontDescriptionRun11.characterRun.characterIndex = 128u; + fontDescriptionRun11.characterRun.numberOfCharacters = 17u; + fontDescriptionRun11.familyLength = fontLatin.size(); fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength]; - memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength ); + memcpy( fontDescriptionRun11.familyName, fontLatin.c_str(), fontDescriptionRun11.familyLength ); fontDescriptionRun11.familyDefined = true; fontDescriptionRun11.weightDefined = false; fontDescriptionRun11.widthDefined = false; @@ -2155,11 +2111,11 @@ int UtcDaliTextUpdateLayout02(void) // Set a known font description FontDescriptionRun fontDescriptionRun12; - fontDescriptionRun12.characterRun.characterIndex = 128u; - fontDescriptionRun12.characterRun.numberOfCharacters = 17u; - fontDescriptionRun12.familyLength = fontLatin.size(); + fontDescriptionRun12.characterRun.characterIndex = 145u; + fontDescriptionRun12.characterRun.numberOfCharacters = 11u; + fontDescriptionRun12.familyLength = fontHebrew.size(); fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength]; - memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength ); + memcpy( fontDescriptionRun12.familyName, fontHebrew.c_str(), fontDescriptionRun12.familyLength ); fontDescriptionRun12.familyDefined = true; fontDescriptionRun12.weightDefined = false; fontDescriptionRun12.widthDefined = false; @@ -2168,8 +2124,8 @@ int UtcDaliTextUpdateLayout02(void) // Set a known font description FontDescriptionRun fontDescriptionRun13; - fontDescriptionRun13.characterRun.characterIndex = 145u; - fontDescriptionRun13.characterRun.numberOfCharacters = 9u; + fontDescriptionRun13.characterRun.characterIndex = 156u; + fontDescriptionRun13.characterRun.numberOfCharacters = 10u; fontDescriptionRun13.familyLength = fontHebrew.size(); fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength]; memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength ); @@ -2181,8 +2137,8 @@ int UtcDaliTextUpdateLayout02(void) // Set a known font description FontDescriptionRun fontDescriptionRun14; - fontDescriptionRun14.characterRun.characterIndex = 154u; - fontDescriptionRun14.characterRun.numberOfCharacters = 2u; + fontDescriptionRun14.characterRun.characterIndex = 166u; + fontDescriptionRun14.characterRun.numberOfCharacters = 12u; fontDescriptionRun14.familyLength = fontLatin.size(); fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength]; memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength ); @@ -2194,43 +2150,17 @@ int UtcDaliTextUpdateLayout02(void) // Set a known font description FontDescriptionRun fontDescriptionRun15; - fontDescriptionRun15.characterRun.characterIndex = 156u; - fontDescriptionRun15.characterRun.numberOfCharacters = 10u; - fontDescriptionRun15.familyLength = fontHebrew.size(); + fontDescriptionRun15.characterRun.characterIndex = 178u; + fontDescriptionRun15.characterRun.numberOfCharacters = 14u; + fontDescriptionRun15.familyLength = fontArabic.size(); fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength]; - memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength ); + memcpy( fontDescriptionRun15.familyName, fontArabic.c_str(), fontDescriptionRun15.familyLength ); fontDescriptionRun15.familyDefined = true; fontDescriptionRun15.weightDefined = false; fontDescriptionRun15.widthDefined = false; fontDescriptionRun15.slantDefined = false; fontDescriptionRun15.sizeDefined = false; - // Set a known font description - FontDescriptionRun fontDescriptionRun16; - fontDescriptionRun16.characterRun.characterIndex = 166u; - fontDescriptionRun16.characterRun.numberOfCharacters = 12u; - fontDescriptionRun16.familyLength = fontLatin.size(); - fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength]; - memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength ); - fontDescriptionRun16.familyDefined = true; - fontDescriptionRun16.weightDefined = false; - fontDescriptionRun16.widthDefined = false; - fontDescriptionRun16.slantDefined = false; - fontDescriptionRun16.sizeDefined = false; - - // Set a known font description - FontDescriptionRun fontDescriptionRun17; - fontDescriptionRun17.characterRun.characterIndex = 178u; - fontDescriptionRun17.characterRun.numberOfCharacters = 14u; - fontDescriptionRun17.familyLength = fontArabic.size(); - fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength]; - memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength ); - fontDescriptionRun17.familyDefined = true; - fontDescriptionRun17.weightDefined = false; - fontDescriptionRun17.widthDefined = false; - fontDescriptionRun17.slantDefined = false; - fontDescriptionRun17.sizeDefined = false; - Vector fontDescriptionRuns; fontDescriptionRuns.PushBack( fontDescriptionRun01 ); fontDescriptionRuns.PushBack( fontDescriptionRun02 ); @@ -2247,27 +2177,25 @@ int UtcDaliTextUpdateLayout02(void) fontDescriptionRuns.PushBack( fontDescriptionRun13 ); fontDescriptionRuns.PushBack( fontDescriptionRun14 ); fontDescriptionRuns.PushBack( fontDescriptionRun15 ); - fontDescriptionRuns.PushBack( fontDescriptionRun16 ); - fontDescriptionRuns.PushBack( fontDescriptionRun17 ); Size textArea(100.f, 300.f); Size layoutSize(92.f, 380.f); float positions[] = { 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f, + 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 32.f, -2.f, 35.f, -11.f, 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 68.f, -9.f, 76.f, -13.f, 80.f, -13.f, 83.f, -9.f, 92.f, -0.f, 0.f, -9.f, 11.f, -9.f, 21.f, -9.f, 27.f, -13.f, 30.f, -13.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f, 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, - 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -12.f, + 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -11.f, 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f, 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f, 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f, + 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 32.f, -2.f, 35.f, -11.f, 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, @@ -2301,7 +2229,7 @@ int UtcDaliTextUpdateLayout02(void) { { 22u, 6u }, { 22u, 6u }, - 34.f, + 36.f, 15.f, -5.f, 0.f, @@ -2445,7 +2373,7 @@ int UtcDaliTextUpdateLayout02(void) { { 150u, 6u }, { 150u, 6u }, - 34.f, + 36.f, 15.f, -5.f, 0.f, @@ -2532,7 +2460,7 @@ int UtcDaliTextUpdateLayout02(void) "Hello world demo שלום עולם.\n" "שלום עולם hello world مرحبا بالعالم\n", textArea, - 17u, + 15u, fontDescriptionRuns.Begin(), layoutSize, 192u, @@ -2582,7 +2510,7 @@ int UtcDaliTextUpdateLayout03(void) // Set a known font description FontDescriptionRun fontDescriptionRun02; fontDescriptionRun02.characterRun.characterIndex = 17u; - fontDescriptionRun02.characterRun.numberOfCharacters = 9u; + fontDescriptionRun02.characterRun.numberOfCharacters = 11u; fontDescriptionRun02.familyLength = fontHebrew.size(); fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength ); @@ -2594,11 +2522,11 @@ int UtcDaliTextUpdateLayout03(void) // Set a known font description FontDescriptionRun fontDescriptionRun03; - fontDescriptionRun03.characterRun.characterIndex = 26u; - fontDescriptionRun03.characterRun.numberOfCharacters = 2u; - fontDescriptionRun03.familyLength = fontLatin.size(); + fontDescriptionRun03.characterRun.characterIndex = 28u; + fontDescriptionRun03.characterRun.numberOfCharacters = 14u; + fontDescriptionRun03.familyLength = fontArabic.size(); fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; - memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength ); + memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength ); fontDescriptionRun03.familyDefined = true; fontDescriptionRun03.weightDefined = false; fontDescriptionRun03.widthDefined = false; @@ -2607,11 +2535,11 @@ int UtcDaliTextUpdateLayout03(void) // Set a known font description FontDescriptionRun fontDescriptionRun04; - fontDescriptionRun04.characterRun.characterIndex = 28u; - fontDescriptionRun04.characterRun.numberOfCharacters = 14u; - fontDescriptionRun04.familyLength = fontArabic.size(); + fontDescriptionRun04.characterRun.characterIndex = 42u; + fontDescriptionRun04.characterRun.numberOfCharacters = 12u; + fontDescriptionRun04.familyLength = fontLatin.size(); fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; - memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength ); + memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength ); fontDescriptionRun04.familyDefined = true; fontDescriptionRun04.weightDefined = false; fontDescriptionRun04.widthDefined = false; @@ -2620,11 +2548,11 @@ int UtcDaliTextUpdateLayout03(void) // Set a known font description FontDescriptionRun fontDescriptionRun05; - fontDescriptionRun05.characterRun.characterIndex = 42u; - fontDescriptionRun05.characterRun.numberOfCharacters = 12u; - fontDescriptionRun05.familyLength = fontLatin.size(); + fontDescriptionRun05.characterRun.characterIndex = 54u; + fontDescriptionRun05.characterRun.numberOfCharacters = 10u; + fontDescriptionRun05.familyLength = fontHebrew.size(); fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; - memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength ); + memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength ); fontDescriptionRun05.familyDefined = true; fontDescriptionRun05.weightDefined = false; fontDescriptionRun05.widthDefined = false; @@ -2633,7 +2561,7 @@ int UtcDaliTextUpdateLayout03(void) // Set a known font description FontDescriptionRun fontDescriptionRun06; - fontDescriptionRun06.characterRun.characterIndex = 54u; + fontDescriptionRun06.characterRun.characterIndex = 64u; fontDescriptionRun06.characterRun.numberOfCharacters = 10u; fontDescriptionRun06.familyLength = fontHebrew.size(); fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; @@ -2646,11 +2574,11 @@ int UtcDaliTextUpdateLayout03(void) // Set a known font description FontDescriptionRun fontDescriptionRun07; - fontDescriptionRun07.characterRun.characterIndex = 64u; - fontDescriptionRun07.characterRun.numberOfCharacters = 10u; - fontDescriptionRun07.familyLength = fontHebrew.size(); + fontDescriptionRun07.characterRun.characterIndex = 74u; + fontDescriptionRun07.characterRun.numberOfCharacters = 18u; + fontDescriptionRun07.familyLength = fontLatin.size(); fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength]; - memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength ); + memcpy( fontDescriptionRun07.familyName, fontLatin.c_str(), fontDescriptionRun07.familyLength ); fontDescriptionRun07.familyDefined = true; fontDescriptionRun07.weightDefined = false; fontDescriptionRun07.widthDefined = false; @@ -2659,8 +2587,8 @@ int UtcDaliTextUpdateLayout03(void) // Set a known font description FontDescriptionRun fontDescriptionRun08; - fontDescriptionRun08.characterRun.characterIndex = 74u; - fontDescriptionRun08.characterRun.numberOfCharacters = 18u; + fontDescriptionRun08.characterRun.characterIndex = 92u; + fontDescriptionRun08.characterRun.numberOfCharacters = 12u; fontDescriptionRun08.familyLength = fontLatin.size(); fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength]; memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength ); @@ -2672,11 +2600,11 @@ int UtcDaliTextUpdateLayout03(void) // Set a known font description FontDescriptionRun fontDescriptionRun09; - fontDescriptionRun09.characterRun.characterIndex = 92u; - fontDescriptionRun09.characterRun.numberOfCharacters = 12u; - fontDescriptionRun09.familyLength = fontLatin.size(); + fontDescriptionRun09.characterRun.characterIndex = 104u; + fontDescriptionRun09.characterRun.numberOfCharacters = 14u; + fontDescriptionRun09.familyLength = fontArabic.size(); fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength]; - memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength ); + memcpy( fontDescriptionRun09.familyName, fontArabic.c_str(), fontDescriptionRun09.familyLength ); fontDescriptionRun09.familyDefined = true; fontDescriptionRun09.weightDefined = false; fontDescriptionRun09.widthDefined = false; @@ -2685,11 +2613,11 @@ int UtcDaliTextUpdateLayout03(void) // Set a known font description FontDescriptionRun fontDescriptionRun10; - fontDescriptionRun10.characterRun.characterIndex = 104u; - fontDescriptionRun10.characterRun.numberOfCharacters = 14u; - fontDescriptionRun10.familyLength = fontArabic.size(); + fontDescriptionRun10.characterRun.characterIndex = 118u; + fontDescriptionRun10.characterRun.numberOfCharacters = 10u; + fontDescriptionRun10.familyLength = fontHebrew.size(); fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength]; - memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength ); + memcpy( fontDescriptionRun10.familyName, fontHebrew.c_str(), fontDescriptionRun10.familyLength ); fontDescriptionRun10.familyDefined = true; fontDescriptionRun10.weightDefined = false; fontDescriptionRun10.widthDefined = false; @@ -2698,11 +2626,11 @@ int UtcDaliTextUpdateLayout03(void) // Set a known font description FontDescriptionRun fontDescriptionRun11; - fontDescriptionRun11.characterRun.characterIndex = 118u; - fontDescriptionRun11.characterRun.numberOfCharacters = 10u; - fontDescriptionRun11.familyLength = fontHebrew.size(); + fontDescriptionRun11.characterRun.characterIndex = 128u; + fontDescriptionRun11.characterRun.numberOfCharacters = 17u; + fontDescriptionRun11.familyLength = fontLatin.size(); fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength]; - memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength ); + memcpy( fontDescriptionRun11.familyName, fontLatin.c_str(), fontDescriptionRun11.familyLength ); fontDescriptionRun11.familyDefined = true; fontDescriptionRun11.weightDefined = false; fontDescriptionRun11.widthDefined = false; @@ -2711,11 +2639,11 @@ int UtcDaliTextUpdateLayout03(void) // Set a known font description FontDescriptionRun fontDescriptionRun12; - fontDescriptionRun12.characterRun.characterIndex = 128u; - fontDescriptionRun12.characterRun.numberOfCharacters = 17u; - fontDescriptionRun12.familyLength = fontLatin.size(); + fontDescriptionRun12.characterRun.characterIndex = 145u; + fontDescriptionRun12.characterRun.numberOfCharacters = 11u; + fontDescriptionRun12.familyLength = fontHebrew.size(); fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength]; - memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength ); + memcpy( fontDescriptionRun12.familyName, fontHebrew.c_str(), fontDescriptionRun12.familyLength ); fontDescriptionRun12.familyDefined = true; fontDescriptionRun12.weightDefined = false; fontDescriptionRun12.widthDefined = false; @@ -2724,8 +2652,8 @@ int UtcDaliTextUpdateLayout03(void) // Set a known font description FontDescriptionRun fontDescriptionRun13; - fontDescriptionRun13.characterRun.characterIndex = 145u; - fontDescriptionRun13.characterRun.numberOfCharacters = 9u; + fontDescriptionRun13.characterRun.characterIndex = 156u; + fontDescriptionRun13.characterRun.numberOfCharacters = 10u; fontDescriptionRun13.familyLength = fontHebrew.size(); fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength]; memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength ); @@ -2737,8 +2665,8 @@ int UtcDaliTextUpdateLayout03(void) // Set a known font description FontDescriptionRun fontDescriptionRun14; - fontDescriptionRun14.characterRun.characterIndex = 154u; - fontDescriptionRun14.characterRun.numberOfCharacters = 2u; + fontDescriptionRun14.characterRun.characterIndex = 166u; + fontDescriptionRun14.characterRun.numberOfCharacters = 12u; fontDescriptionRun14.familyLength = fontLatin.size(); fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength]; memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength ); @@ -2750,43 +2678,17 @@ int UtcDaliTextUpdateLayout03(void) // Set a known font description FontDescriptionRun fontDescriptionRun15; - fontDescriptionRun15.characterRun.characterIndex = 156u; - fontDescriptionRun15.characterRun.numberOfCharacters = 10u; - fontDescriptionRun15.familyLength = fontHebrew.size(); + fontDescriptionRun15.characterRun.characterIndex = 178u; + fontDescriptionRun15.characterRun.numberOfCharacters = 14u; + fontDescriptionRun15.familyLength = fontArabic.size(); fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength]; - memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength ); + memcpy( fontDescriptionRun15.familyName, fontArabic.c_str(), fontDescriptionRun15.familyLength ); fontDescriptionRun15.familyDefined = true; fontDescriptionRun15.weightDefined = false; fontDescriptionRun15.widthDefined = false; fontDescriptionRun15.slantDefined = false; fontDescriptionRun15.sizeDefined = false; - // Set a known font description - FontDescriptionRun fontDescriptionRun16; - fontDescriptionRun16.characterRun.characterIndex = 166u; - fontDescriptionRun16.characterRun.numberOfCharacters = 12u; - fontDescriptionRun16.familyLength = fontLatin.size(); - fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength]; - memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength ); - fontDescriptionRun16.familyDefined = true; - fontDescriptionRun16.weightDefined = false; - fontDescriptionRun16.widthDefined = false; - fontDescriptionRun16.slantDefined = false; - fontDescriptionRun16.sizeDefined = false; - - // Set a known font description - FontDescriptionRun fontDescriptionRun17; - fontDescriptionRun17.characterRun.characterIndex = 178u; - fontDescriptionRun17.characterRun.numberOfCharacters = 14u; - fontDescriptionRun17.familyLength = fontArabic.size(); - fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength]; - memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength ); - fontDescriptionRun17.familyDefined = true; - fontDescriptionRun17.weightDefined = false; - fontDescriptionRun17.widthDefined = false; - fontDescriptionRun17.slantDefined = false; - fontDescriptionRun17.sizeDefined = false; - Vector fontDescriptionRuns; fontDescriptionRuns.PushBack( fontDescriptionRun01 ); fontDescriptionRuns.PushBack( fontDescriptionRun02 ); @@ -2803,27 +2705,25 @@ int UtcDaliTextUpdateLayout03(void) fontDescriptionRuns.PushBack( fontDescriptionRun13 ); fontDescriptionRuns.PushBack( fontDescriptionRun14 ); fontDescriptionRuns.PushBack( fontDescriptionRun15 ); - fontDescriptionRuns.PushBack( fontDescriptionRun16 ); - fontDescriptionRuns.PushBack( fontDescriptionRun17 ); Size textArea(100.f, 300.f); Size layoutSize(92.f, 380.f); float positions[] = { 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f, + 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 32.f, -2.f, 35.f, -11.f, 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 68.f, -9.f, 76.f, -13.f, 80.f, -13.f, 83.f, -9.f, 92.f, -0.f, 0.f, -9.f, 11.f, -9.f, 21.f, -9.f, 27.f, -13.f, 30.f, -13.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f, 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, - 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -12.f, + 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -11.f, 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f, 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f, 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f, + 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 32.f, -2.f, 35.f, -11.f, 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, @@ -2857,7 +2757,7 @@ int UtcDaliTextUpdateLayout03(void) { { 22u, 6u }, { 22u, 6u }, - 34.f, + 36.f, 15.f, -5.f, 0.f, @@ -3001,7 +2901,7 @@ int UtcDaliTextUpdateLayout03(void) { { 150u, 6u }, { 150u, 6u }, - 34.f, + 36.f, 15.f, -5.f, 0.f, @@ -3057,6 +2957,7 @@ int UtcDaliTextUpdateLayout03(void) false, false }; + Vector lines; lines.PushBack( line01 ); lines.PushBack( line02 ); @@ -3088,7 +2989,7 @@ int UtcDaliTextUpdateLayout03(void) "Hello world demo שלום עולם.\n" "שלום עולם hello world مرحبا بالعالم\n", textArea, - 17u, + 15u, fontDescriptionRuns.Begin(), layoutSize, 192u, diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-MultiLanguage.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-MultiLanguage.cpp index 3be899f..8dd64f9 100644 --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-MultiLanguage.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-MultiLanguage.cpp @@ -36,12 +36,12 @@ using namespace Text; // Tests the following functions with different scripts. // // void MergeFontDescriptions( const Vector& fontDescriptions, +// Vector& fontIds, +// Vector& isDefaultFont, // const TextAbstraction::FontDescription& defaultFontDescription, // TextAbstraction::PointSize26Dot6 defaultPointSize, -// CharacterIndex characterIndex, -// TextAbstraction::FontDescription& fontDescription, -// TextAbstraction::PointSize26Dot6& fontPointSize, -// bool& isDefaultFont ); +// CharacterIndex startIndex, +// Length numberOfCharacters ); // // Script GetScript( Length index, // Vector::ConstIterator& scriptRunIt, @@ -57,8 +57,7 @@ using namespace Text; // void MultilanguageSupport::ValidateFonts( const Vector& text, // const Vector& scripts, // const Vector& fontDescriptions, -// const TextAbstraction::FontDescription& defaultFontDescription, -// TextAbstraction::PointSize26Dot6 defaultFontPointSize, +// FontId defaultFontId, // CharacterIndex startIndex, // Length numberOfCharacters, // Vector& fonts ); @@ -106,50 +105,21 @@ struct ValidateFontsData }; ////////////////////////////////////////////////////////// -void PrintFontDescription( FontId id ) -{ - TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get(); - - TextAbstraction::FontDescription description; - fontClient.GetDescription( id, description ); - - const TextAbstraction::PointSize26Dot6 pointSize = fontClient.GetPointSize( id ); - - std::cout << std::endl << " font description for font id : " << id << std::endl; - std::cout << " font family : [" << description.family << "]" << std::endl; - std::cout << " font width : [" << TextAbstraction::FontWidth::Name[description.width] << "]" << std::endl; - std::cout << " font weight : [" << TextAbstraction::FontWeight::Name[description.weight] << "]" << std::endl; - std::cout << " font slant : [" << TextAbstraction::FontSlant::Name[description.slant] << "]" << std::endl; - std::cout << " font size : " << pointSize << std::endl; -} bool MergeFontDescriptionsTest( const MergeFontDescriptionsData& data ) { - TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get(); - Vector fontIds; fontIds.Resize( data.startIndex + data.numberOfCharacters, 0u ); Vector isDefaultFont; isDefaultFont.Resize( data.startIndex + data.numberOfCharacters, true ); - for( unsigned int index = data.startIndex; index < data.startIndex + data.numberOfCharacters; ++index ) - { - TextAbstraction::FontDescription fontDescription; - TextAbstraction::PointSize26Dot6 fontPointSize = TextAbstraction::FontClient::DEFAULT_POINT_SIZE; - - MergeFontDescriptions( data.fontDescriptionRuns, - data.defaultFontDescription, - data.defaultPointSize, - index, - fontDescription, - fontPointSize, - isDefaultFont[index] ); - - if( !isDefaultFont[index] ) - { - fontIds[index] = fontClient.GetFontId( fontDescription, fontPointSize ); - } - } + MergeFontDescriptions( data.fontDescriptionRuns, + fontIds, + isDefaultFont, + data.defaultFontDescription, + data.defaultPointSize, + data.startIndex, + data.numberOfCharacters ); if( fontIds.Count() != data.expectedFontIds.Count() ) { @@ -291,10 +261,6 @@ bool ValidateFontTest( const ValidateFontsData& data ) // Get the default font id. const FontId defaultFontId = fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + data.defaultFont, data.defaultFontSize ); - TextAbstraction::FontDescription defaultFontDescription; - fontClient.GetDescription( defaultFontId, defaultFontDescription ); - - const TextAbstraction::PointSize26Dot6 defaultPointSize = fontClient.GetPointSize( defaultFontId ); Vector fontRuns; @@ -302,8 +268,7 @@ bool ValidateFontTest( const ValidateFontsData& data ) multilanguageSupport.ValidateFonts( utf32, scripts, data.fontDescriptionRuns, - defaultFontDescription, - defaultPointSize, + defaultFontId, 0u, numberOfCharacters, fontRuns ); @@ -319,8 +284,7 @@ bool ValidateFontTest( const ValidateFontsData& data ) multilanguageSupport.ValidateFonts( utf32, scripts, data.fontDescriptionRuns, - defaultFontDescription, - defaultPointSize, + defaultFontId, data.index, data.numberOfCharacters, fontRuns ); @@ -489,9 +453,9 @@ int UtcDaliTextMergeFontDescriptions(void) }, const_cast( "DejaVu Sans" ), 11u, - TextAbstraction::FontWeight::NONE, - TextAbstraction::FontWidth::NONE, - TextAbstraction::FontSlant::NONE, + TextAbstraction::FontWeight::NORMAL, + TextAbstraction::FontWidth::NORMAL, + TextAbstraction::FontSlant::NORMAL, TextAbstraction::FontClient::DEFAULT_POINT_SIZE, true, false, @@ -507,8 +471,8 @@ int UtcDaliTextMergeFontDescriptions(void) }, NULL, 0u, - TextAbstraction::FontWeight::NONE, - TextAbstraction::FontWidth::NONE, + TextAbstraction::FontWeight::NORMAL, + TextAbstraction::FontWidth::NORMAL, TextAbstraction::FontSlant::ITALIC, TextAbstraction::FontClient::DEFAULT_POINT_SIZE, false, @@ -526,8 +490,8 @@ int UtcDaliTextMergeFontDescriptions(void) NULL, 0u, TextAbstraction::FontWeight::BOLD, - TextAbstraction::FontWidth::NONE, - TextAbstraction::FontSlant::NONE, + TextAbstraction::FontWidth::NORMAL, + TextAbstraction::FontSlant::NORMAL, TextAbstraction::FontClient::DEFAULT_POINT_SIZE, false, true, @@ -543,9 +507,9 @@ int UtcDaliTextMergeFontDescriptions(void) }, NULL, 0u, - TextAbstraction::FontWeight::NONE, - TextAbstraction::FontWidth::NONE, - TextAbstraction::FontSlant::NONE, + TextAbstraction::FontWeight::NORMAL, + TextAbstraction::FontWidth::NORMAL, + TextAbstraction::FontSlant::NORMAL, NON_DEFAULT_FONT_SIZE, false, false, @@ -561,9 +525,9 @@ int UtcDaliTextMergeFontDescriptions(void) }, NULL, 0u, - TextAbstraction::FontWeight::NONE, + TextAbstraction::FontWeight::NORMAL, TextAbstraction::FontWidth::EXPANDED, - TextAbstraction::FontSlant::NONE, + TextAbstraction::FontSlant::NORMAL, TextAbstraction::FontClient::DEFAULT_POINT_SIZE, false, false, diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-text-abstraction.cpp b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-text-abstraction.cpp index d06ba71..33a8744 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-text-abstraction.cpp +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-text-abstraction.cpp @@ -142,7 +142,7 @@ public: void GetDescription( FontId id, FontDescription& fontDescription ){} PointSize26Dot6 GetPointSize( FontId id ){return 9;} FontId FindDefaultFont( Character charcode, PointSize26Dot6 pointSize, bool preferColor ){return 0;} - FontId FindFallbackFont( Character charcode, const FontDescription& fontDescription, PointSize26Dot6 pointSize, bool preferColor ){return 0;} + FontId FindFallbackFont( FontId preferredFont, Character charcode, PointSize26Dot6 pointSize, bool preferColor ){return 0;} FontId GetFontId( const FontPath& path, PointSize26Dot6 pointSize, FaceIndex faceIndex ){return 0;} FontId GetFontId( const FontDescription& fontDescription,PointSize26Dot6 pointSize, FaceIndex faceIndex ){return 0;} bool IsScalable( const FontPath& path ){return true;} @@ -407,9 +407,9 @@ FontId FontClient::FindDefaultFont( Character charcode, PointSize26Dot6 pointSiz return GetImplementation(*this).FindDefaultFont( charcode, pointSize, preferColor ); } -FontId FontClient::FindFallbackFont( Character charcode, const FontDescription& fontDescription, PointSize26Dot6 pointSize, bool preferColor ) +FontId FontClient::FindFallbackFont( FontId preferredFont, Character charcode, PointSize26Dot6 pointSize, bool preferColor ) { - return GetImplementation(*this).FindFallbackFont( charcode, fontDescription, pointSize, preferColor ); + return GetImplementation(*this).FindFallbackFont( preferredFont, charcode, pointSize, preferColor ); } FontId FontClient::GetFontId( const FontPath& path, PointSize26Dot6 pointSize, FaceIndex faceIndex ) diff --git a/dali-toolkit/internal/text/multi-language-helper-functions.cpp b/dali-toolkit/internal/text/multi-language-helper-functions.cpp index 3fad598..731b89d 100644 --- a/dali-toolkit/internal/text/multi-language-helper-functions.cpp +++ b/dali-toolkit/internal/text/multi-language-helper-functions.cpp @@ -31,23 +31,25 @@ namespace Text { void MergeFontDescriptions( const Vector& fontDescriptions, + Vector& fontIds, + Vector& isDefaultFont, const TextAbstraction::FontDescription& defaultFontDescription, TextAbstraction::PointSize26Dot6 defaultPointSize, - CharacterIndex characterIndex, - TextAbstraction::FontDescription& fontDescription, - TextAbstraction::PointSize26Dot6& fontPointSize, - bool& isDefaultFont ) + CharacterIndex startIndex, + Length numberOfCharacters ) { - // Initialize with the default font's point size. - fontPointSize = defaultPointSize; + // Get the handle to the font client. + TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get(); - // Initialize with the style parameters of the default font's style. - fontDescription = defaultFontDescription; + // Pointer to the font id buffer. + FontId* fontIdsBuffer = fontIds.Begin(); - // Initialize as a default font. - isDefaultFont = true; + // Pointer to the 'is default' font buffer. + bool* isDefaultFontBuffer = isDefaultFont.Begin(); - Length runIndex = 0u; + // Used to temporarily store the style per character. + TextAbstraction::FontDescription fontDescription; + TextAbstraction::PointSize26Dot6 fontSize; Length familyIndex = 0u; Length weightIndex = 0u; @@ -55,88 +57,119 @@ void MergeFontDescriptions( const Vector& fontDescriptions, Length slantIndex = 0u; Length sizeIndex = 0u; - bool familyOverriden = false; - bool weightOverriden = false; - bool widthOverriden = false; - bool slantOverriden = false; - bool sizeOverriden = false; - - // Traverse all the font descriptions. - const FontDescriptionRun* const fontDescriptionsBuffer = fontDescriptions.Begin(); - for( Vector::ConstIterator it = fontDescriptionsBuffer, - endIt = fontDescriptions.End(); - it != endIt; - ++it, ++runIndex ) + // Traverse all the characters. + const CharacterIndex lastCharacterPlusOne = startIndex + numberOfCharacters; + for( CharacterIndex index = startIndex; index < lastCharacterPlusOne; ++index ) { - // Check whether the character's font is modified by the current font description. - const FontDescriptionRun& fontRun = *it; - if( ( characterIndex >= fontRun.characterRun.characterIndex ) && - ( characterIndex < fontRun.characterRun.characterIndex + fontRun.characterRun.numberOfCharacters ) ) + bool& defaultFont = *(isDefaultFontBuffer + index - startIndex ); + + Length runIndex = 0u; + + bool familyOverriden = false; + bool weightOverriden = false; + bool widthOverriden = false; + bool slantOverriden = false; + bool sizeOverriden = false; + + // Traverse all the font descriptions. + const FontDescriptionRun* const fontDescriptionsBuffer = fontDescriptions.Begin(); + for( Vector::ConstIterator it = fontDescriptionsBuffer, + endIt = fontDescriptions.End(); + it != endIt; + ++it, ++runIndex ) { - if( fontRun.familyDefined ) + // Check whether the character's font is modified by the current font description. + const FontDescriptionRun& fontRun = *it; + if( ( index >= fontRun.characterRun.characterIndex ) && + ( index < fontRun.characterRun.characterIndex + fontRun.characterRun.numberOfCharacters ) ) { - isDefaultFont = false; - familyOverriden = true; - familyIndex = runIndex; + if( fontRun.familyDefined ) + { + defaultFont = false; + familyOverriden = true; + familyIndex = runIndex; + } + if( fontRun.weightDefined ) + { + defaultFont = false; + weightOverriden = true; + weightIndex = runIndex; + } + if( fontRun.widthDefined ) + { + defaultFont = false; + widthOverriden = true; + widthIndex = runIndex; + } + if( fontRun.slantDefined ) + { + defaultFont = false; + slantOverriden = true; + slantIndex = runIndex; + } + if( fontRun.sizeDefined ) + { + defaultFont = false; + sizeOverriden = true; + sizeIndex = runIndex; + } } - if( fontRun.weightDefined ) + } + + // Get the font id if is not the default font. + if( !defaultFont ) + { + if( familyOverriden ) { - isDefaultFont = false; - weightOverriden = true; - weightIndex = runIndex; + const FontDescriptionRun& fontRun = *( fontDescriptionsBuffer + familyIndex ); + fontDescription.family = std::string( fontRun.familyName, fontRun.familyLength ); // TODO Could use move constructor when switch to c++11. } - if( fontRun.widthDefined ) + else { - isDefaultFont = false; - widthOverriden = true; - widthIndex = runIndex; + fontDescription.family = defaultFontDescription.family; } - if( fontRun.slantDefined ) + + if( weightOverriden ) { - isDefaultFont = false; - slantOverriden = true; - slantIndex = runIndex; + const FontDescriptionRun& fontRun = *( fontDescriptionsBuffer + weightIndex ); + fontDescription.weight = fontRun.weight; } - if( fontRun.sizeDefined ) + else { - isDefaultFont = false; - sizeOverriden = true; - sizeIndex = runIndex; + fontDescription.weight = defaultFontDescription.weight; } - } - } - // Get the font's description if is not the default font. - if( !isDefaultFont ) - { - if( familyOverriden ) - { - const FontDescriptionRun& fontRun = *( fontDescriptionsBuffer + familyIndex ); - fontDescription.family = std::string( fontRun.familyName, fontRun.familyLength ); - } - - if( weightOverriden ) - { - const FontDescriptionRun& fontRun = *( fontDescriptionsBuffer + weightIndex ); - fontDescription.weight = fontRun.weight; - } + if( widthOverriden ) + { + const FontDescriptionRun& fontRun = *( fontDescriptionsBuffer + widthIndex ); + fontDescription.width = fontRun.width; + } + else + { + fontDescription.width = defaultFontDescription.width; + } - if( widthOverriden ) - { - const FontDescriptionRun& fontRun = *( fontDescriptionsBuffer + widthIndex ); - fontDescription.width = fontRun.width; - } + if( slantOverriden ) + { + const FontDescriptionRun& fontRun = *( fontDescriptionsBuffer + slantIndex ); + fontDescription.slant = fontRun.slant; + } + else + { + fontDescription.slant = defaultFontDescription.slant; + } - if( slantOverriden ) - { - const FontDescriptionRun& fontRun = *( fontDescriptionsBuffer + slantIndex ); - fontDescription.slant = fontRun.slant; - } + if( sizeOverriden ) + { + const FontDescriptionRun& fontRun = *( fontDescriptionsBuffer + sizeIndex ); + fontSize = fontRun.size; + } + else + { + fontSize = defaultPointSize; + } - if( sizeOverriden ) - { - const FontDescriptionRun& fontRun = *( fontDescriptionsBuffer + sizeIndex ); - fontPointSize = fontRun.size; + *( fontIdsBuffer + index - startIndex ) = fontClient.GetFontId( fontDescription, fontSize ); } } } diff --git a/dali-toolkit/internal/text/multi-language-helper-functions.h b/dali-toolkit/internal/text/multi-language-helper-functions.h index 14dee1b..8052638 100644 --- a/dali-toolkit/internal/text/multi-language-helper-functions.h +++ b/dali-toolkit/internal/text/multi-language-helper-functions.h @@ -35,23 +35,23 @@ namespace Text { /** - * @brief Merges font's descriptions to retrieve the combined font's description for a given character. + * @brief Merges the font descriptions to retrieve the font Id for each character. * - * @param[in] fontDescriptions The font's descriptions for the whole text. - * @param[in] defaultFontDescription The default font's description. - * @param[in] defaultPointSize The default font's point size. - * @param[in] characterIndex Index to the character to retrieve its font's description. - * @param[out] fontDescription The font's description for the character. - * @param[out] fontPointSize The font's point size for the character. + * @param[in] fontDescriptions The font descriptions. + * @param[out] fontIds The font id for each character. * @param[out] isDefaultFont Whether the font is a default one. + * @param[in] defaultFontDescription The default font description. + * @param[in] defaultPointSize The default font size. + * @param[in] startIndex The character from where the fonts are merged. + * @param[in] numberOfCharacters The number of characters to set the font. */ void MergeFontDescriptions( const Vector& fontDescriptions, + Vector& fontIds, + Vector& isDefaultFont, const TextAbstraction::FontDescription& defaultFontDescription, TextAbstraction::PointSize26Dot6 defaultPointSize, - CharacterIndex characterIndex, - TextAbstraction::FontDescription& fontDescription, - TextAbstraction::PointSize26Dot6& fontPointSize, - bool& isDefaultFont ); + CharacterIndex startIndex, + Length numberOfCharacters ); /** * @brief Retrieves the script Id from the script run for a given character's @p index. diff --git a/dali-toolkit/internal/text/multi-language-support-impl.cpp b/dali-toolkit/internal/text/multi-language-support-impl.cpp index 750fab7..8b491b0 100644 --- a/dali-toolkit/internal/text/multi-language-support-impl.cpp +++ b/dali-toolkit/internal/text/multi-language-support-impl.cpp @@ -63,9 +63,7 @@ bool ValidateFontsPerScript::IsValidFont( FontId fontId ) const return false; } -FontId DefaultFonts::FindFont( TextAbstraction::FontClient& fontClient, - const TextAbstraction::FontDescription& description, - PointSize26Dot6 size ) const +FontId DefaultFonts::FindFont( TextAbstraction::FontClient& fontClient, PointSize26Dot6 size ) const { for( Vector::ConstIterator it = mFonts.Begin(), endIt = mFonts.End(); @@ -73,13 +71,7 @@ FontId DefaultFonts::FindFont( TextAbstraction::FontClient& fontClient, ++it ) { const FontId fontId = *it; - TextAbstraction::FontDescription fontDescription; - fontClient.GetDescription( fontId, fontDescription ); - - if( ( size == fontClient.GetPointSize( fontId ) ) && - ( description.weight == fontDescription.weight ) && - ( description.width == fontDescription.width ) && - ( description.slant == fontDescription.slant ) ) + if( size == fontClient.GetPointSize( fontId ) ) { return fontId; } @@ -382,8 +374,7 @@ void MultilanguageSupport::SetScripts( const Vector& text, void MultilanguageSupport::ValidateFonts( const Vector& text, const Vector& scripts, const Vector& fontDescriptions, - const TextAbstraction::FontDescription& defaultFontDescription, - TextAbstraction::PointSize26Dot6 defaultFontPointSize, + FontId defaultFontId, CharacterIndex startIndex, Length numberOfCharacters, Vector& fonts ) @@ -433,13 +424,36 @@ void MultilanguageSupport::ValidateFonts( const Vector& text, // Get the font client. TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get(); - const Character* const textBuffer = text.Begin(); + // Get the default font description and default size. + TextAbstraction::FontDescription defaultFontDescription; + TextAbstraction::PointSize26Dot6 defaultPointSize = TextAbstraction::FontClient::DEFAULT_POINT_SIZE; + if( defaultFontId > 0u ) + { + fontClient.GetDescription( defaultFontId, defaultFontDescription ); + defaultPointSize = fontClient.GetPointSize( defaultFontId ); + } + + // Merge font descriptions + Vector fontIds; + fontIds.Resize( numberOfCharacters, defaultFontId ); + Vector isDefaultFont; + isDefaultFont.Resize( numberOfCharacters, true ); + MergeFontDescriptions( fontDescriptions, + fontIds, + isDefaultFont, + defaultFontDescription, + defaultPointSize, + startIndex, + numberOfCharacters ); - // Iterators of the script runs. + const Character* const textBuffer = text.Begin(); + const FontId* const fontIdsBuffer = fontIds.Begin(); + const bool* const isDefaultFontBuffer = isDefaultFont.Begin(); Vector::ConstIterator scriptRunIt = scripts.Begin(); Vector::ConstIterator scriptRunEndIt = scripts.End(); bool isNewParagraphCharacter = false; + PointSize26Dot6 currentPointSize = defaultPointSize; FontId currentFontId = 0u; FontId previousFontId = 0u; bool isPreviousEmojiScript = false; @@ -454,26 +468,24 @@ void MultilanguageSupport::ValidateFonts( const Vector& text, // Get the current character. const Character character = *( textBuffer + index ); - TextAbstraction::FontDescription currentFontDescription; - TextAbstraction::PointSize26Dot6 currentFontPointSize = defaultFontPointSize; - bool isDefaultFont = true; - MergeFontDescriptions( fontDescriptions, - defaultFontDescription, - defaultFontPointSize, - index, - currentFontDescription, - currentFontPointSize, - isDefaultFont ); - // Get the font for the current character. - FontId fontId = fontClient.GetFontId( currentFontDescription, currentFontPointSize ); - currentFontId = fontId; + FontId fontId = *( fontIdsBuffer + index - startIndex ); + + // Whether the font being validated for the current character is a default one not set by the user. + const bool isDefault = *( isDefaultFontBuffer + index - startIndex ); // Get the script for the current character. const Script script = GetScript( index, scriptRunIt, scriptRunEndIt ); + // Get the current point size. + if( currentFontId != fontId ) + { + currentPointSize = fontClient.GetPointSize( fontId ); + currentFontId = fontId; + } + #ifdef DEBUG_ENABLED { Dali::TextAbstraction::FontDescription description; @@ -497,9 +509,7 @@ void MultilanguageSupport::ValidateFonts( const Vector& text, FontId cachedDefaultFontId = 0u; if( NULL != defaultFonts ) { - cachedDefaultFontId = defaultFonts->FindFont( fontClient, - currentFontDescription, - currentFontPointSize ); + cachedDefaultFontId = defaultFonts->FindFont( fontClient, currentPointSize ); } // Whether the cached default font is valid. @@ -552,7 +562,7 @@ void MultilanguageSupport::ValidateFonts( const Vector& text, if( isCommonScript ) { if( isValidCachedDefaultFont && - ( isDefaultFont || ( currentFontId == previousFontId ) ) && + ( isDefault || ( currentFontId == previousFontId ) ) && !isEmojiScript ) { // At this point the character common for all scripts has no font assigned. @@ -621,10 +631,7 @@ void MultilanguageSupport::ValidateFonts( const Vector& text, const bool preferColor = ( TextAbstraction::EMOJI == script ); // Find a fallback-font. - fontId = fontClient.FindFallbackFont( character, - currentFontDescription, - currentFontPointSize, - preferColor ); + fontId = fontClient.FindFallbackFont( currentFontId, character, currentPointSize, preferColor ); if( 0u == fontId ) { @@ -632,15 +639,13 @@ void MultilanguageSupport::ValidateFonts( const Vector& text, defaultFontsPerScript = *( defaultFontPerScriptCacheBuffer + TextAbstraction::LATIN ); if( NULL != defaultFontsPerScript ) { - fontId = defaultFontsPerScript->FindFont( fontClient, - currentFontDescription, - currentFontPointSize ); + fontId = defaultFontsPerScript->FindFont( fontClient, currentPointSize ); } } if( 0u == fontId ) { - fontId = fontClient.FindDefaultFont( UTF32_A, currentFontPointSize ); + fontId = fontClient.FindDefaultFont( UTF32_A, currentPointSize ); } // Cache the font. diff --git a/dali-toolkit/internal/text/multi-language-support-impl.h b/dali-toolkit/internal/text/multi-language-support-impl.h index 3f568a2..ff5e94d 100644 --- a/dali-toolkit/internal/text/multi-language-support-impl.h +++ b/dali-toolkit/internal/text/multi-language-support-impl.h @@ -94,14 +94,11 @@ struct DefaultFonts * @brief Finds a default font for the given @p size. * * @param[in] fontClient The font client. - * @param[in] description The font's description. * @param[in] size The given size. * * @return The font id of a default font for the given @p size. If there isn't any font cached it returns 0. */ - FontId FindFont( TextAbstraction::FontClient& fontClient, - const TextAbstraction::FontDescription& description, - PointSize26Dot6 size ) const; + FontId FindFont( TextAbstraction::FontClient& fontClient, PointSize26Dot6 size ) const; Vector mFonts; }; @@ -144,8 +141,7 @@ public: void ValidateFonts( const Vector& text, const Vector& scripts, const Vector& fontDescriptions, - const TextAbstraction::FontDescription& defaultFontDescription, - TextAbstraction::PointSize26Dot6 defaultFontPointSize, + FontId defaultFontId, CharacterIndex startIndex, Length numberOfCharacters, Vector& fonts ); diff --git a/dali-toolkit/internal/text/multi-language-support.cpp b/dali-toolkit/internal/text/multi-language-support.cpp index 795e7ae..e612054 100644 --- a/dali-toolkit/internal/text/multi-language-support.cpp +++ b/dali-toolkit/internal/text/multi-language-support.cpp @@ -62,8 +62,7 @@ void MultilanguageSupport::SetScripts( const Vector& text, void MultilanguageSupport::ValidateFonts( const Vector& text, const Vector& scripts, const Vector& fontDescriptions, - const TextAbstraction::FontDescription& defaultFontDescription, - TextAbstraction::PointSize26Dot6 defaultFontPointSize, + FontId defaultFontId, CharacterIndex startIndex, Length numberOfCharacters, Vector& fonts ) @@ -71,8 +70,7 @@ void MultilanguageSupport::ValidateFonts( const Vector& text, GetImplementation( *this ).ValidateFonts( text, scripts, fontDescriptions, - defaultFontDescription, - defaultFontPointSize, + defaultFontId, startIndex, numberOfCharacters, fonts ); diff --git a/dali-toolkit/internal/text/multi-language-support.h b/dali-toolkit/internal/text/multi-language-support.h index 718ecdb..d4fd1c7 100644 --- a/dali-toolkit/internal/text/multi-language-support.h +++ b/dali-toolkit/internal/text/multi-language-support.h @@ -112,9 +112,8 @@ public: * * @param[in] text Vector of UTF-32 characters. * @param[in] scripts Vector containing the script runs for the whole text. - * @param[in] fontDescriptions The fonts set through the mark-up string or the input style set through the property system. - * @param[in] defaultFontDescription The default font's description set through the property system. - * @param[in] defaultFontPointSize The default font's point size set through the property system. + * @param[in] fontDescriptions The fonts set by the application developers. + * @param[in] defaultFontId The default font's id. * @param[in] startIndex The character from where the font info is set. * @param[in] numberOfCharacters The number of characters to set the font. * @param[out] fonts The validated fonts. @@ -122,8 +121,7 @@ public: void ValidateFonts( const Vector& text, const Vector& scripts, const Vector& fontDescriptions, - const TextAbstraction::FontDescription& defaultFontDescription, - TextAbstraction::PointSize26Dot6 defaultFontPointSize, + FontId defaultFontId, CharacterIndex startIndex, Length numberOfCharacters, Vector& fonts ); diff --git a/dali-toolkit/internal/text/text-controller-impl.cpp b/dali-toolkit/internal/text/text-controller-impl.cpp index 14670ae..95115da 100644 --- a/dali-toolkit/internal/text/text-controller-impl.cpp +++ b/dali-toolkit/internal/text/text-controller-impl.cpp @@ -824,22 +824,15 @@ bool Controller::Impl::UpdateModel( OperationsMask operationsRequired ) // Validate the fonts set through the mark-up string. Vector& fontDescriptionRuns = mLogicalModel->mFontDescriptionRuns; - // Get the default font's description. - TextAbstraction::FontDescription defaultFontDescription; - TextAbstraction::PointSize26Dot6 defaultPointSize = TextAbstraction::FontClient::DEFAULT_POINT_SIZE; - if( NULL != mFontDefaults ) - { - defaultFontDescription = mFontDefaults->mFontDescription; - defaultPointSize = mFontDefaults->mDefaultPointSize * 64u; - } + // Get the default font id. + const FontId defaultFontId = ( NULL == mFontDefaults ) ? 0u : mFontDefaults->GetFontId( mFontClient ); // Validates the fonts. If there is a character with no assigned font it sets a default one. // After this call, fonts are validated. multilanguageSupport.ValidateFonts( utf32Characters, scripts, fontDescriptionRuns, - defaultFontDescription, - defaultPointSize, + defaultFontId, startIndex, requestedNumberOfCharacters, validFonts ); diff --git a/dali-toolkit/internal/text/text-controller.cpp b/dali-toolkit/internal/text/text-controller.cpp index f6544cb..4c0316f 100644 --- a/dali-toolkit/internal/text/text-controller.cpp +++ b/dali-toolkit/internal/text/text-controller.cpp @@ -428,7 +428,7 @@ void Controller::SetDefaultFontFamily( const std::string& defaultFontFamily ) mImpl->mFontDefaults->mFontDescription.family = defaultFontFamily; DALI_LOG_INFO( gLogFilter, Debug::General, "Controller::SetDefaultFontFamily %s\n", defaultFontFamily.c_str()); - mImpl->mFontDefaults->familyDefined = !defaultFontFamily.empty(); + mImpl->mFontDefaults->familyDefined = true; // Clear the font-specific data ClearFontData(); diff --git a/dali-toolkit/internal/text/text-font-style.cpp b/dali-toolkit/internal/text/text-font-style.cpp index 190a3f3..b31decb 100644 --- a/dali-toolkit/internal/text/text-font-style.cpp +++ b/dali-toolkit/internal/text/text-font-style.cpp @@ -78,7 +78,7 @@ void SetFontStyleProperty( ControllerPtr controller, const Property::Value& valu /// Weight key Property::Value* weightValue = map.Find( WEIGHT_KEY ); - FontWeight weight = TextAbstraction::FontWeight::NONE; + FontWeight weight = TextAbstraction::FontWeight::NORMAL; const bool weightDefined = weightValue != NULL; if( weightDefined ) { @@ -93,7 +93,7 @@ void SetFontStyleProperty( ControllerPtr controller, const Property::Value& valu /// Width key Property::Value* widthValue = map.Find( WIDTH_KEY ); - FontWidth width = TextAbstraction::FontWidth::NONE; + FontWidth width = TextAbstraction::FontWidth::NORMAL; const bool widthDefined = widthValue != NULL; if( widthDefined ) { @@ -108,7 +108,7 @@ void SetFontStyleProperty( ControllerPtr controller, const Property::Value& valu /// Slant key Property::Value* slantValue = map.Find( SLANT_KEY ); - FontSlant slant = TextAbstraction::FontSlant::NONE; + FontSlant slant = TextAbstraction::FontSlant::NORMAL; const bool slantDefined = slantValue != NULL; if( slantDefined ) { @@ -125,20 +125,17 @@ void SetFontStyleProperty( ControllerPtr controller, const Property::Value& valu case FontStyle::DEFAULT: { // Sets the default font's style values. - if( !weightDefined || - ( weightDefined && ( controller->GetDefaultFontWeight() != weight ) ) ) + if( weightDefined && ( controller->GetDefaultFontWeight() != weight ) ) { controller->SetDefaultFontWeight( weight ); } - if( !widthDefined || - ( widthDefined && ( controller->GetDefaultFontWidth() != width ) ) ) + if( widthDefined && ( controller->GetDefaultFontWidth() != width ) ) { controller->SetDefaultFontWidth( width ); } - if( !slantDefined || - ( slantDefined && ( controller->GetDefaultFontSlant() != slant ) ) ) + if( slantDefined && ( controller->GetDefaultFontSlant() != slant ) ) { controller->SetDefaultFontSlant( slant ); } @@ -147,46 +144,23 @@ void SetFontStyleProperty( ControllerPtr controller, const Property::Value& valu case FontStyle::INPUT: { // Sets the input font's style values. - if( !weightDefined || - ( weightDefined && ( controller->GetInputFontWeight() != weight ) ) ) + if( weightDefined && ( controller->GetInputFontWeight() != weight ) ) { controller->SetInputFontWeight( weight ); } - if( !widthDefined || - ( widthDefined && ( controller->GetInputFontWidth() != width ) ) ) + if( widthDefined && ( controller->GetInputFontWidth() != width ) ) { controller->SetInputFontWidth( width ); } - if( !slantDefined || - ( slantDefined && ( controller->GetInputFontSlant() != slant ) ) ) + if( slantDefined && ( controller->GetInputFontSlant() != slant ) ) { controller->SetInputFontSlant( slant ); } break; } } - } // map not empty - else - { - switch( type ) - { - case FontStyle::DEFAULT: - { - controller->SetDefaultFontWeight( TextAbstraction::FontWeight::NONE ); - controller->SetDefaultFontWidth( TextAbstraction::FontWidth::NONE ); - controller->SetDefaultFontSlant( TextAbstraction::FontSlant::NONE ); - break; - } - case FontStyle::INPUT: - { - controller->SetInputFontWeight( TextAbstraction::FontWeight::NONE ); - controller->SetInputFontWidth( TextAbstraction::FontWidth::NONE ); - controller->SetInputFontSlant( TextAbstraction::FontSlant::NONE ); - break; - } - } } } } -- 2.7.4