Changeset 229164 in webkit
- Timestamp:
- Mar 1, 2018 10:40:56 PM (6 years ago)
- Location:
- trunk
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r229160 r229164 1 2018-03-01 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 [FreeType] Remove FontPlatformData fallbacks 4 https://bugs.webkit.org/show_bug.cgi?id=183210 5 6 Reviewed by Michael Catanzaro. 7 8 Rebaseline 3 tests that progressed. 9 10 * platform/gtk/fast/text/international/bidi-LDB-2-CSS-expected.png: 11 * platform/gtk/fast/text/international/bidi-LDB-2-CSS-expected.txt: 12 * platform/gtk/fast/text/international/bidi-LDB-2-HTML-expected.png: 13 * platform/gtk/fast/text/international/bidi-LDB-2-HTML-expected.txt: 14 * platform/gtk/fast/text/international/bidi-LDB-2-formatting-characters-expected.png: 15 * platform/gtk/fast/text/international/bidi-LDB-2-formatting-characters-expected.txt: 16 1 17 2018-03-01 Youenn Fablet <youenn@apple.com> 2 18 -
trunk/LayoutTests/platform/gtk/fast/text/international/bidi-LDB-2-CSS-expected.txt
r222681 r229164 5 5 RenderBody {BODY} at (8,21) size 784x517 6 6 RenderBlock {H1} at (0,0) size 784x37 7 RenderText {#text} at (0,0) size 488x368 text run at (0,0) width 488: "Bidirectional Text Test 2 - CSS"7 RenderText {#text} at (0,0) size 547x36 8 text run at (0,0) width 547: "Bidirectional Text Test 2 - CSS" 9 9 RenderBlock {P} at (0,58) size 784x19 10 10 RenderText {#text} at (0,0) size 167x17 -
trunk/LayoutTests/platform/gtk/fast/text/international/bidi-LDB-2-HTML-expected.txt
r222681 r229164 5 5 RenderBody {BODY} at (8,21) size 784x465 6 6 RenderBlock {H1} at (0,0) size 784x37 7 RenderText {#text} at (0,0) size 5 16x368 text run at (0,0) width 5 16: "Bidirectional Text Test 2 - HTML"7 RenderText {#text} at (0,0) size 579x36 8 text run at (0,0) width 579: "Bidirectional Text Test 2 - HTML" 9 9 RenderBlock {P} at (0,58) size 784x19 10 10 RenderText {#text} at (0,0) size 167x17 -
trunk/LayoutTests/platform/gtk/fast/text/international/bidi-LDB-2-formatting-characters-expected.txt
r222681 r229164 5 5 RenderBody {BODY} at (8,21) size 769x596 6 6 RenderBlock {H1} at (0,0) size 769x74 7 RenderText {#text} at (0,0) size 6 03x738 text run at (0,0) width 6 03: "Bidirectional Text Test 2 - Formatting"9 text run at (0,37) width 1 76: "Characters"7 RenderText {#text} at (0,0) size 680x73 8 text run at (0,0) width 680: "Bidirectional Text Test 2 - Formatting" 9 text run at (0,37) width 197: "Characters" 10 10 RenderBlock {P} at (0,95) size 769x19 11 11 RenderText {#text} at (0,0) size 167x17 -
trunk/Source/WebCore/ChangeLog
r229163 r229164 1 2018-03-01 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 [FreeType] Remove FontPlatformData fallbacks 4 https://bugs.webkit.org/show_bug.cgi?id=183210 5 6 Reviewed by Michael Catanzaro. 7 8 They are only used by FontCache::systemFallbackForCharacters() where a direct FcFontMatch provides the same 9 or better results. 10 11 * platform/graphics/FontPlatformData.h: Remove fallbacks. 12 * platform/graphics/freetype/FontCacheFreeType.cpp: 13 (WebCore::FontCache::systemFallbackForCharacters): Use FcFontMatch() only. 14 * platform/graphics/freetype/FontPlatformDataFreeType.cpp: 15 (WebCore::FontPlatformData::fallbacks): Removed. 16 1 17 2018-03-01 Commit Queue <commit-queue@webkit.org> 2 18 -
trunk/Source/WebCore/platform/graphics/FontPlatformData.h
r228524 r229164 165 165 HarfBuzzFace& harfBuzzFace() const; 166 166 bool hasCompatibleCharmap() const; 167 FcFontSet* fallbacks() const;168 167 #endif 169 168 … … 243 242 #if USE(FREETYPE) 244 243 RefPtr<FcPattern> m_pattern; 245 mutable FcUniquePtr<FcFontSet> m_fallbacks;246 244 mutable std::unique_ptr<HarfBuzzFace> m_harfBuzzFace; 247 245 #endif -
trunk/Source/WebCore/platform/graphics/freetype/FontCacheFreeType.cpp
r229128 r229164 79 79 } 80 80 81 static RefPtr<FcPattern> createFontConfigPatternForCharacters(const FontDescription& fontDescription, const UChar* characters, int bufferLength) 82 { 83 RefPtr<FcPattern> pattern = adoptRef(FcPatternCreate()); 81 RefPtr<Font> FontCache::systemFallbackForCharacters(const FontDescription& description, const Font*, bool, const UChar* characters, unsigned length) 82 { 84 83 FcUniquePtr<FcCharSet> fontConfigCharSet(FcCharSetCreate()); 85 86 UTF16UChar32Iterator iterator(characters, bufferLength); 84 UTF16UChar32Iterator iterator(characters, length); 87 85 UChar32 character = iterator.next(); 88 86 while (character != iterator.end()) { … … 91 89 } 92 90 91 RefPtr<FcPattern> pattern = adoptRef(FcPatternCreate()); 93 92 FcPatternAddCharSet(pattern.get(), FC_CHARSET, fontConfigCharSet.get()); 94 93 95 94 FcPatternAddBool(pattern.get(), FC_SCALABLE, FcTrue); 96 95 97 if (!configurePatternForFontDescription(pattern.get(), fontDescription))96 if (!configurePatternForFontDescription(pattern.get(), description)) 98 97 return nullptr; 99 98 … … 101 100 cairo_ft_font_options_substitute(getDefaultCairoFontOptions(), pattern.get()); 102 101 FcDefaultSubstitute(pattern.get()); 103 return pattern;104 }105 106 static RefPtr<FcPattern> findBestFontGivenFallbacks(const FontPlatformData& fontData, FcPattern* pattern)107 {108 FcFontSet* fallbacks = fontData.fallbacks();109 if (!fallbacks)110 return nullptr;111 102 112 103 FcResult fontConfigResult; 113 return adoptRef(FcFontSetMatch(nullptr, &fallbacks, 1, pattern, &fontConfigResult)); 114 } 115 116 RefPtr<Font> FontCache::systemFallbackForCharacters(const FontDescription& description, const Font* originalFontData, bool, const UChar* characters, unsigned length) 117 { 118 RefPtr<FcPattern> pattern = createFontConfigPatternForCharacters(description, characters, length); 119 if (!pattern) 120 return nullptr; 121 122 123 if (RefPtr<FcPattern> fallbackPattern = findBestFontGivenFallbacks(originalFontData->platformData(), pattern.get())) { 124 FontPlatformData alternateFontData(fallbackPattern.get(), description); 125 return fontForPlatformData(alternateFontData); 126 } 127 128 FcResult fontConfigResult; 129 if (RefPtr<FcPattern> resultPattern = adoptRef(FcFontMatch(nullptr, pattern.get(), &fontConfigResult))) { 130 FontPlatformData alternateFontData(resultPattern.get(), description); 131 return fontForPlatformData(alternateFontData); 132 } 133 134 return nullptr; 104 RefPtr<FcPattern> resultPattern = adoptRef(FcFontMatch(nullptr, pattern.get(), &fontConfigResult)); 105 if (!resultPattern) 106 return nullptr; 107 108 FontPlatformData alternateFontData(resultPattern.get(), description); 109 return fontForPlatformData(alternateFontData); 135 110 } 136 111 -
trunk/Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp
r229128 r229164 199 199 200 200 // This will be re-created on demand. 201 m_fallbacks = nullptr;202 201 m_harfBuzzFace = nullptr; 203 202 … … 244 243 m_harfBuzzFace = std::make_unique<HarfBuzzFace>(const_cast<FontPlatformData&>(*this), hash()); 245 244 return *m_harfBuzzFace; 246 }247 248 FcFontSet* FontPlatformData::fallbacks() const249 {250 if (m_fallbacks)251 return m_fallbacks.get();252 253 if (m_pattern) {254 FcResult fontConfigResult;255 FcUniquePtr<FcFontSet> unpreparedFallbacks(FcFontSort(nullptr, m_pattern.get(), FcTrue, nullptr, &fontConfigResult));256 m_fallbacks.reset(FcFontSetCreate());257 for (int i = 0; i < unpreparedFallbacks.get()->nfont; i++)258 FcFontSetAdd(m_fallbacks.get(), FcFontRenderPrepare(nullptr, m_pattern.get(), unpreparedFallbacks.get()->fonts[i]));259 }260 return m_fallbacks.get();261 245 } 262 246
Note: See TracChangeset
for help on using the changeset viewer.