From: Hyeonji Kim Date: Wed, 8 May 2013 05:45:42 +0000 (+0900) Subject: Modified TIZEN_USER_SETTINGS_FONT for Samsung Sans font X-Git-Tag: 2.2.1_release~25^2 X-Git-Url: http://review.tizen.org/git/?p=framework%2Fweb%2Fwebkit-efl.git;a=commitdiff_plain;h=5911b0be73e3e5e0fc36dd8b6e40462a66864181 Modified TIZEN_USER_SETTINGS_FONT for Samsung Sans font [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 --- diff --git a/Source/WebCore/platform/graphics/freetype/FontCacheFreeType.cpp b/Source/WebCore/platform/graphics/freetype/FontCacheFreeType.cpp old mode 100755 new mode 100644 index 9b8b822..878b898 --- a/Source/WebCore/platform/graphics/freetype/FontCacheFreeType.cpp +++ b/Source/WebCore/platform/graphics/freetype/FontCacheFreeType.cpp @@ -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 createTizenPattern() -{ - RefPtr pattern = adoptRef(FcPatternCreate()); - if (!FcPatternAddString(pattern.get(), FC_FAMILY, reinterpret_cast("Tizen"))) + if (!FcPatternAddString(pattern, FC_FAMILY, reinterpret_cast("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 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 pattern = adoptRef(createFontConfigPatternForCharacters(characters, length)); + +#if ENABLE(TIZEN_USER_SETTING_FONT) + FcResult fontConfigResult; + RefPtr 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 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)