Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(357)

Unified Diff: third_party/WebKit/Source/platform/fonts/FontFallbackIterator.h

Issue 2230233002: Skip redundant fonts returned by FontFallbackIterator (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Logging removed Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/platform/fonts/FontFallbackIterator.h
diff --git a/third_party/WebKit/Source/platform/fonts/FontFallbackIterator.h b/third_party/WebKit/Source/platform/fonts/FontFallbackIterator.h
index 7f1a065bae1e4a2d868c359b1dc13d5d2a6f80ea..2563a4e4fc07abe308e50bc48b94ddffd220fd08 100644
--- a/third_party/WebKit/Source/platform/fonts/FontFallbackIterator.h
+++ b/third_party/WebKit/Source/platform/fonts/FontFallbackIterator.h
@@ -30,11 +30,6 @@ public:
static PassRefPtr<FontFallbackIterator> create(const FontDescription&, PassRefPtr<FontFallbackList>,
FontFallbackPriority);
- // Returns whether a list of all remaining characters to be shaped is
- // needed. Needed by the FontfallbackIterator in order to check whether a
- // font from a segmented range should be loaded.
- bool needsHintList() const;
-
bool hasNext() const { return m_fallbackStage != OutOfLuck; };
// Some system fallback APIs (Windows, Android) require a character, or a
@@ -49,6 +44,8 @@ private:
bool alreadyLoadingRangeForHintChar(UChar32 hintChar);
void willUseRange(const AtomicString& family, const FontDataForRangeSet&);
+ const PassRefPtr<FontDataForRangeSet> uniqueOrNext(PassRefPtr<FontDataForRangeSet> candidate, const Vector<UChar32>& hintList);
+
const PassRefPtr<SimpleFontData> fallbackPriorityFont(UChar32 hint);
const PassRefPtr<SimpleFontData> uniqueSystemFontForHint(UChar32 hint);
@@ -68,6 +65,12 @@ private:
FallbackStage m_fallbackStage;
HashSet<UChar32> m_previouslyAskedForHint;
+ // FontFallbackIterator is meant for single use by HarfBuzzShaper,
+ // traversing through the fonts for shaping only once. We must not return
+ // duplicate FontDataForRangeSet objects from the next() iteration functions
+ // as returning a duplicate value causes a shaping run that won't return any
+ // results.
+ HashSet<uint32_t> m_uniqueFontDataForRangeSetsReturned;
Vector<RefPtr<FontDataForRangeSet>> m_trackedLoadingRangeSets;
FontFallbackPriority m_fontFallbackPriority;
};

Powered by Google App Engine
This is Rietveld 408576698