Modified TIZEN_USER_SETTINGS_FONT for Samsung Sans font
authorHyeonji Kim <hyeonji.kim@samsung.com>
Wed, 8 May 2013 05:45:42 +0000 (14:45 +0900)
committerHyeonji Kim <hyeonji.kim@samsung.com>
Thu, 24 Oct 2013 09:16:17 +0000 (18:16 +0900)
[Title] Modified TIZEN_USER_SETTINGS_FONT for Samsung Sans font
[Issue#] N/A
[Problem] When Samsung Sans font is added as system font and Samsung sans is set at Settings, chocoCooky font is used for Korean language.
[Cause] char set affect Font matching, so we should use FcFontMatch API.
[Solution] use FcFontMatch API instead of FcFontSetMatch API

Change-Id: I14a05ca0006e49483e308b939da7766daa8d7def

Source/WebCore/platform/graphics/freetype/FontCacheFreeType.cpp [changed mode: 0755->0644]

old mode 100755 (executable)
new mode 100644 (file)
index 9b8b822..878b898
@@ -68,40 +68,19 @@ FcPattern* createFontConfigPatternForCharacters(const UChar* characters, int len
     FcCharSetDestroy(fontConfigCharSet);
 
     FcPatternAddBool(pattern, FC_SCALABLE, FcTrue);
-    FcConfigSubstitute(0, pattern, FcMatchPattern);
-    FcDefaultSubstitute(pattern);
-    return pattern;
-}
 
 #if ENABLE(TIZEN_USER_SETTING_FONT)
-PassRefPtr<FcPattern> createTizenPattern()
-{
-    RefPtr<FcPattern> pattern = adoptRef(FcPatternCreate());
-    if (!FcPatternAddString(pattern.get(), FC_FAMILY, reinterpret_cast<const FcChar8*>("Tizen")))
+    if (!FcPatternAddString(pattern, FC_FAMILY, reinterpret_cast<const FcChar8*>("Tizen")))
         return 0;
+#endif
 
-    FcConfigSubstitute(0, pattern.get(), FcMatchPattern);
-    FcDefaultSubstitute(pattern.get());
-    return pattern.release();
+    FcConfigSubstitute(0, pattern, FcMatchPattern);
+    FcDefaultSubstitute(pattern);
+    return pattern;
 }
-#endif
 
 FcPattern* findBestFontGivenFallbacks(const FontPlatformData& fontData, FcPattern* pattern)
 {
-#if ENABLE(TIZEN_USER_SETTING_FONT)
-    //If we don't find glyphs for characters, we can use SLP fallback font that is selected by user in Setting
-    static RefPtr<FcPattern> settingsPattern = createTizenPattern();
-
-    FcResult fallbackFontConfigResult;
-    if (!fontData.m_fallbacks)
-        fontData.m_fallbacks = FcFontSort(0, settingsPattern.get(), FcTrue, 0, &fallbackFontConfigResult);
-
-    if (!fontData.m_fallbacks)
-        return 0;
-
-    FcFontSet* fcSets[] = { fontData.m_fallbacks };
-    return FcFontSetMatch(0, fcSets, 1, pattern, &fallbackFontConfigResult);
-#else
     if (!fontData.m_pattern)
         return 0;
 
@@ -116,12 +95,20 @@ FcPattern* findBestFontGivenFallbacks(const FontPlatformData& fontData, FcPatter
     FcFontSet* sets[] = { fontData.m_fallbacks };
     FcResult fontConfigResult;
     return FcFontSetMatch(0, sets, 1, pattern, &fontConfigResult);
-#endif
 }
 
 const SimpleFontData* FontCache::getFontDataForCharacters(const Font& font, const UChar* characters, int length)
 {
     RefPtr<FcPattern> pattern = adoptRef(createFontConfigPatternForCharacters(characters, length));
+
+#if ENABLE(TIZEN_USER_SETTING_FONT)
+    FcResult fontConfigResult;
+    RefPtr<FcPattern> resultPattern = adoptRef(FcFontMatch(0, pattern.get(), &fontConfigResult));
+    if (!resultPattern)
+        return 0;
+    FontPlatformData alternateFontData(resultPattern.get(), font.fontDescription());
+    return getCachedFontData(&alternateFontData, DoNotRetain);
+#else
     const FontPlatformData& fontData = font.primaryFont()->platformData();
 
     RefPtr<FcPattern> fallbackPattern = adoptRef(findBestFontGivenFallbacks(fontData, pattern.get()));
@@ -136,6 +123,7 @@ const SimpleFontData* FontCache::getFontDataForCharacters(const Font& font, cons
         return 0;
     FontPlatformData alternateFontData(resultPattern.get(), font.fontDescription());
     return getCachedFontData(&alternateFontData, DoNotRetain);
+#endif
 }
 
 SimpleFontData* FontCache::getSimilarFontPlatformData(const Font& font)