Cache fallback font lists for each requested font
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / text / multi-language-support-impl.cpp
index bb33981..37cf040 100644 (file)
@@ -32,7 +32,7 @@ namespace Toolkit
 namespace
 {
 #if defined(DEBUG_ENABLED)
-Debug::Filter* gLogFilter = Debug::Filter::New(Debug::Concise, true, "LOG_MULTI_LANGUAGE_SUPPORT");
+Debug::Filter* gLogFilter = Debug::Filter::New(Debug::NoLogging, true, "LOG_MULTI_LANGUAGE_SUPPORT");
 #endif
 
 const Dali::Toolkit::Text::Character UTF32_A = 0x0041;
@@ -351,12 +351,12 @@ void MultilanguageSupport::ValidateFonts( const Vector<Character>& text,
                                           const Vector<ScriptRun>& scripts,
                                           Vector<FontRun>& fonts )
 {
-  DALI_LOG_INFO( gLogFilter, Debug::Verbose, "-->MultilanguageSupport::ValidateFonts\n" );
+  DALI_LOG_INFO( gLogFilter, Debug::General, "-->MultilanguageSupport::ValidateFonts\n" );
   const Length numberOfCharacters = text.Count();
 
   if( 0u == numberOfCharacters )
   {
-    DALI_LOG_INFO( gLogFilter, Debug::Verbose, "<--MultilanguageSupport::ValidateFonts\n" );
+    DALI_LOG_INFO( gLogFilter, Debug::General, "<--MultilanguageSupport::ValidateFonts\n" );
     // Nothing to do if there are no characters.
     return;
   }
@@ -428,6 +428,7 @@ void MultilanguageSupport::ValidateFonts( const Vector<Character>& text,
 
     // Whether the font being validated is a default one not set by the user.
     const bool isDefault = ( 0u == fontId );
+    FontId preferredFont = fontId;
 
     DALI_LOG_INFO( gLogFilter,
                    Debug::Verbose,
@@ -525,8 +526,8 @@ void MultilanguageSupport::ValidateFonts( const Vector<Character>& text,
         // Emojis are present in many monochrome fonts; prefer color by default.
         bool preferColor = ( TextAbstraction::EMOJI == script );
 
-        // Find a default font.
-        fontId = fontClient.FindDefaultFont( character, pointSize, preferColor );
+        // Find a fallback-font.
+        fontId = fontClient.FindFallbackFont( preferredFont, character, pointSize, preferColor );
 
         // If the system does not support a suitable font, fallback to Latin
         if( 0u == fontId )
@@ -585,7 +586,7 @@ void MultilanguageSupport::ValidateFonts( const Vector<Character>& text,
     // Store the last run.
     fonts.PushBack( currentFontRun );
   }
-  DALI_LOG_INFO( gLogFilter, Debug::Verbose, "<--MultilanguageSupport::ValidateFonts\n" );
+  DALI_LOG_INFO( gLogFilter, Debug::General, "<--MultilanguageSupport::ValidateFonts\n" );
 }
 
 } // namespace Internal