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;
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()));
return 0;
FontPlatformData alternateFontData(resultPattern.get(), font.fontDescription());
return getCachedFontData(&alternateFontData, DoNotRetain);
+#endif
}
SimpleFontData* FontCache::getSimilarFontPlatformData(const Font& font)