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

Unified Diff: third_party/WebKit/Source/core/css/CSSSegmentedFontFace.cpp

Issue 1806363002: Revert of Shape unicode-range: font faces in only one iteration (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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/core/css/CSSSegmentedFontFace.cpp
diff --git a/third_party/WebKit/Source/core/css/CSSSegmentedFontFace.cpp b/third_party/WebKit/Source/core/css/CSSSegmentedFontFace.cpp
index 3efce5a35606776747076bb466824fdf9255b439..357d701cd38bc4771d21d30f9ed0693b2638510a 100644
--- a/third_party/WebKit/Source/core/css/CSSSegmentedFontFace.cpp
+++ b/third_party/WebKit/Source/core/css/CSSSegmentedFontFace.cpp
@@ -106,6 +106,19 @@
fontFace->cssFontFace()->clearSegmentedFontFace();
}
+static void appendFontData(SegmentedFontData* newFontData, PassRefPtr<SimpleFontData> prpFaceFontData, const UnicodeRangeSet& ranges)
+{
+ RefPtr<SimpleFontData> faceFontData = prpFaceFontData;
+ unsigned numRanges = ranges.size();
+ if (!numRanges) {
+ newFontData->appendRange(FontDataRange(0, 0x7FFFFFFF, faceFontData));
+ return;
+ }
+
+ for (unsigned j = 0; j < numRanges; ++j)
+ newFontData->appendRange(FontDataRange(ranges.rangeAt(j).from(), ranges.rangeAt(j).to(), faceFontData));
+}
+
PassRefPtr<FontData> CSSSegmentedFontFace::getFontData(const FontDescription& fontDescription)
{
if (!isValid())
@@ -115,7 +128,7 @@
FontCacheKey key = fontDescription.cacheKey(FontFaceCreationParams(), desiredTraits);
RefPtr<SegmentedFontData>& fontData = m_fontDataTable.add(key.hash(), nullptr).storedValue->value;
- if (fontData && fontData->numFaces())
+ if (fontData && fontData->numRanges())
return fontData; // No release, we have a reference to an object in the cache which should retain the ref count it has.
if (!fontData)
@@ -131,10 +144,10 @@
continue;
if (RefPtr<SimpleFontData> faceFontData = (*it)->cssFontFace()->getFontData(requestedFontDescription)) {
ASSERT(!faceFontData->isSegmented());
- fontData->appendFace(FontDataForRangeSet(faceFontData.release(), (*it)->cssFontFace()->ranges()));
+ appendFontData(fontData.get(), faceFontData.release(), (*it)->cssFontFace()->ranges());
}
}
- if (fontData->numFaces())
+ if (fontData->numRanges())
return fontData; // No release, we have a reference to an object in the cache which should retain the ref count it has.
return nullptr;
@@ -150,14 +163,14 @@
}
}
-void CSSSegmentedFontFace::willUseRange(const blink::FontDescription& fontDescription, const blink::FontDataForRangeSet& rangeSet)
+void CSSSegmentedFontFace::willUseRange(const blink::FontDescription& fontDescription, const blink::FontDataRange& range)
{
// Iterating backwards since later defined unicode-range faces override
// previously defined ones, according to the CSS3 fonts module.
// https://drafts.csswg.org/css-fonts/#composite-fonts
for (FontFaceList::reverse_iterator it = m_fontFaces.rbegin(); it != m_fontFaces.rend(); ++it) {
CSSFontFace* cssFontFace = (*it)->cssFontFace();
- if (cssFontFace->maybeScheduleFontLoad(fontDescription, rangeSet))
+ if (cssFontFace->maybeScheduleFontLoad(fontDescription, range))
break;
}
}
@@ -165,7 +178,7 @@
bool CSSSegmentedFontFace::checkFont(const String& text) const
{
for (const auto& fontFace : m_fontFaces) {
- if (fontFace->loadStatus() != FontFace::Loaded && fontFace->cssFontFace()->ranges()->intersectsWith(text))
+ if (fontFace->loadStatus() != FontFace::Loaded && fontFace->cssFontFace()->ranges().intersectsWith(text))
return false;
}
return true;
@@ -174,7 +187,7 @@
void CSSSegmentedFontFace::match(const String& text, WillBeHeapVector<RefPtrWillBeMember<FontFace>>& faces) const
{
for (const auto& fontFace : m_fontFaces) {
- if (fontFace->cssFontFace()->ranges()->intersectsWith(text))
+ if (fontFace->cssFontFace()->ranges().intersectsWith(text))
faces.append(fontFace);
}
}
« no previous file with comments | « third_party/WebKit/Source/core/css/CSSSegmentedFontFace.h ('k') | third_party/WebKit/Source/platform/blink_platform.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698