// Tests the following functions with different scripts.
//
// void MergeFontDescriptions( const Vector<FontDescriptionRun>& fontDescriptions,
-// Vector<FontId>& fontIds,
// const TextAbstraction::FontDescription& defaultFontDescription,
// TextAbstraction::PointSize26Dot6 defaultPointSize,
-// CharacterIndex startIndex,
-// Length numberOfCharacters );
+// CharacterIndex characterIndex,
+// TextAbstraction::FontDescription& fontDescription,
+// TextAbstraction::PointSize26Dot6& fontPointSize,
+// bool& isDefaultFont );
//
// Script GetScript( Length index,
// Vector<ScriptRun>::ConstIterator& scriptRunIt,
// void MultilanguageSupport::ValidateFonts( const Vector<Character>& text,
// const Vector<ScriptRun>& scripts,
// const Vector<FontDescriptionRun>& fontDescriptions,
-// FontId defaultFontId,
+// const TextAbstraction::FontDescription& defaultFontDescription,
+// TextAbstraction::PointSize26Dot6 defaultFontPointSize,
// CharacterIndex startIndex,
// Length numberOfCharacters,
// Vector<FontRun>& fonts );
unsigned int startIndex; ///< The start index.
unsigned int numberOfCharacters; ///< The number of characters.
Vector<FontId> expectedFontIds; ///< The expected font ids.
+ Vector<bool> expectedIsDefault; ///< The expected font ids.
};
struct ScriptsData
};
//////////////////////////////////////////////////////////
+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<FontId> fontIds;
fontIds.Resize( data.startIndex + data.numberOfCharacters, 0u );
+ Vector<bool> 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] );
- MergeFontDescriptions( data.fontDescriptionRuns,
- fontIds,
- data.defaultFontDescription,
- data.defaultPointSize,
- data.startIndex,
- data.numberOfCharacters );
+ if( !isDefaultFont[index] )
+ {
+ fontIds[index] = fontClient.GetFontId( fontDescription, fontPointSize );
+ }
+ }
if( fontIds.Count() != data.expectedFontIds.Count() )
{
std::cout << std::endl;
return false;
}
+
+ if( isDefaultFont[index] != data.expectedIsDefault[index] )
+ {
+ std::cout << data.description << " Different 'is font default' at index : " << index << ", is font default : " << isDefaultFont[index] << ", expected : " << data.expectedIsDefault[index] << std::endl;
+ return false;
+ }
}
return true;
if( scripts.Count() != data.scriptRuns.Count() )
{
tet_printf("ScriptsTest FAIL: different number of scripts. %d, should be %d\n", scripts.Count(), data.scriptRuns.Count() );
+ for( Vector<ScriptRun>::ConstIterator it = scripts.Begin(); it != scripts.End(); ++it)
+ {
+ const ScriptRun& run = *it;
+
+ std::cout << " index : " << run.characterRun.characterIndex << ", num chars : " << run.characterRun.numberOfCharacters << ", script : [" << TextAbstraction::ScriptName[run.script] << "]" << std::endl;
+ }
return false;
}
// 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<FontRun> fontRuns;
multilanguageSupport.ValidateFonts( utf32,
scripts,
data.fontDescriptionRuns,
- defaultFontId,
+ defaultFontDescription,
+ defaultPointSize,
0u,
numberOfCharacters,
fontRuns );
multilanguageSupport.ValidateFonts( utf32,
scripts,
data.fontDescriptionRuns,
- defaultFontId,
+ defaultFontDescription,
+ defaultPointSize,
data.index,
data.numberOfCharacters,
fontRuns );
TextAbstraction::FontDescription defaultFontDescription01;
Vector<FontDescriptionRun> fontDescriptionRuns01;
Vector<FontId> expectedFontIds01;
+ Vector<bool> expectedIsFontDefault01;
TextAbstraction::FontDescription defaultFontDescription02;
Vector<FontDescriptionRun> fontDescriptionRuns02;
Vector<FontId> expectedFontIds02;
expectedFontIds02.PushBack( 0u );
expectedFontIds02.PushBack( 0u );
+ Vector<bool> expectedIsFontDefault02;
+ expectedIsFontDefault02.PushBack( true );
+ expectedIsFontDefault02.PushBack( true );
TextAbstraction::FontDescription defaultFontDescription03;
defaultFontDescription03.family = "DejaVu Serif";
},
const_cast<char*>( "DejaVu Sans" ),
11u,
- TextAbstraction::FontWeight::NORMAL,
- TextAbstraction::FontWidth::NORMAL,
- TextAbstraction::FontSlant::NORMAL,
+ TextAbstraction::FontWeight::NONE,
+ TextAbstraction::FontWidth::NONE,
+ TextAbstraction::FontSlant::NONE,
TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
true,
false,
},
NULL,
0u,
- TextAbstraction::FontWeight::NORMAL,
- TextAbstraction::FontWidth::NORMAL,
+ TextAbstraction::FontWeight::NONE,
+ TextAbstraction::FontWidth::NONE,
TextAbstraction::FontSlant::ITALIC,
TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
false,
NULL,
0u,
TextAbstraction::FontWeight::BOLD,
- TextAbstraction::FontWidth::NORMAL,
- TextAbstraction::FontSlant::NORMAL,
+ TextAbstraction::FontWidth::NONE,
+ TextAbstraction::FontSlant::NONE,
TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
false,
true,
},
NULL,
0u,
- TextAbstraction::FontWeight::NORMAL,
- TextAbstraction::FontWidth::NORMAL,
- TextAbstraction::FontSlant::NORMAL,
+ TextAbstraction::FontWeight::NONE,
+ TextAbstraction::FontWidth::NONE,
+ TextAbstraction::FontSlant::NONE,
NON_DEFAULT_FONT_SIZE,
false,
false,
},
NULL,
0u,
- TextAbstraction::FontWeight::NORMAL,
+ TextAbstraction::FontWeight::NONE,
TextAbstraction::FontWidth::EXPANDED,
- TextAbstraction::FontSlant::NORMAL,
+ TextAbstraction::FontSlant::NONE,
TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
false,
false,
expectedFontIds03.PushBack( 3u );
expectedFontIds03.PushBack( 6u );
expectedFontIds03.PushBack( 6u );
+ Vector<bool> expectedIsFontDefault03;
+ expectedIsFontDefault03.PushBack( false );
+ expectedIsFontDefault03.PushBack( false );
+ expectedIsFontDefault03.PushBack( false );
+ expectedIsFontDefault03.PushBack( false );
+ expectedIsFontDefault03.PushBack( false );
+ expectedIsFontDefault03.PushBack( false );
+ expectedIsFontDefault03.PushBack( false );
+ expectedIsFontDefault03.PushBack( false );
+ expectedIsFontDefault03.PushBack( false );
+ expectedIsFontDefault03.PushBack( false );
const MergeFontDescriptionsData data[] =
{
TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
0u,
0u,
- expectedFontIds01
+ expectedFontIds01,
+ expectedIsFontDefault01
},
{
"No description runs.",
TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
0u,
2u,
- expectedFontIds02
+ expectedFontIds02,
+ expectedIsFontDefault02
},
{
"Some description runs.",
TextAbstraction::FontClient::DEFAULT_POINT_SIZE,
0u,
10u,
- expectedFontIds03
+ expectedFontIds03,
+ expectedIsFontDefault03
}
};
const unsigned int numberOfTests = 3u;
{
{
0u,
- 16u,
+ 15u,
},
TextAbstraction::LATIN
};
{
{
0u,
- 16u,
+ 15u,
},
TextAbstraction::LATIN
};
{
{
0u,
- 16u,
+ 15u,
},
TextAbstraction::LATIN
};
},
{
"White spaces. At the beginning of the text.",
- " Hello world.",
+ " Hello world",
0u,
- 16u,
+ 15u,
scriptRuns04,
},
{
"White spaces. At the end of the text.",
- "Hello world. ",
+ "Hello world ",
0u,
- 16u,
+ 15u,
scriptRuns05,
},
{
"White spaces. At the middle of the text.",
- "Hello world.",
+ "Hello world",
0u,
- 16u,
+ 15u,
scriptRuns06,
},
{
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/TizenColorEmoji.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 --> TizenColorEmoji.ttf
- // Font id 4 --> (default)
+ // 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;
0u,
11u
},
- 4u
+ 8u
};
Vector<FontRun> fontRuns02;
fontRuns02.PushBack( fontRun0201 );
0u,
12u
},
- 4u
+ 8u
};
FontRun fontRun0302 =
{
12u,
12u
},
- 4u
+ 8u
};
FontRun fontRun0303 =
{
24u,
4u
},
- 4u
+ 8u
};
Vector<FontRun> fontRuns03;
fontRuns03.PushBack( fontRun0301 );
4u,
1u
},
- 4u
+ 8u
};
FontRun fontRun0703 =
{
};
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 );
+
const ValidateFontsData data[] =
{
{
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
+ },
};
- const unsigned int numberOfTests = 9u;
+ const unsigned int numberOfTests = 10u;
for( unsigned int index = 0u; index < numberOfTests; ++index )
{