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

Side by Side Diff: third_party/WebKit/Source/platform/fonts/FontCache.cpp

Issue 2386333002: reflow comments in platform/fonts (Closed)
Patch Set: comments Created 4 years, 2 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2008 Apple Inc. All rights reserved.
3 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com> 3 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com>
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 8 *
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 bool checkingAlternateName) { 104 bool checkingAlternateName) {
105 if (!gFontPlatformDataCache) { 105 if (!gFontPlatformDataCache) {
106 gFontPlatformDataCache = new FontPlatformDataCache; 106 gFontPlatformDataCache = new FontPlatformDataCache;
107 platformInit(); 107 platformInit();
108 } 108 }
109 109
110 float size = fontDescription.effectiveFontSize(); 110 float size = fontDescription.effectiveFontSize();
111 unsigned roundedSize = size * FontCacheKey::precisionMultiplier(); 111 unsigned roundedSize = size * FontCacheKey::precisionMultiplier();
112 FontCacheKey key = fontDescription.cacheKey(creationParams); 112 FontCacheKey key = fontDescription.cacheKey(creationParams);
113 113
114 // Remove the font size from the cache key, and handle the font size separatel y in the inner 114 // Remove the font size from the cache key, and handle the font size
115 // HashMap. So that different size of FontPlatformData can share underlying Sk Typeface. 115 // separately in the inner HashMap. So that different size of FontPlatformData
116 // can share underlying SkTypeface.
116 if (RuntimeEnabledFeatures::fontCacheScalingEnabled()) 117 if (RuntimeEnabledFeatures::fontCacheScalingEnabled())
117 key.clearFontSize(); 118 key.clearFontSize();
118 119
119 FontPlatformData* result; 120 FontPlatformData* result;
120 bool foundResult; 121 bool foundResult;
121 122
122 { 123 {
123 // addResult's scope must end before we recurse for alternate family names b elow, 124 // addResult's scope must end before we recurse for alternate family names
124 // to avoid trigering its dtor hash-changed asserts. 125 // below, to avoid trigering its dtor hash-changed asserts.
125 SizedFontPlatformDataSet* sizedFonts = 126 SizedFontPlatformDataSet* sizedFonts =
126 &gFontPlatformDataCache->add(key, SizedFontPlatformDataSet()) 127 &gFontPlatformDataCache->add(key, SizedFontPlatformDataSet())
127 .storedValue->value; 128 .storedValue->value;
128 bool wasEmpty = sizedFonts->isEmpty(); 129 bool wasEmpty = sizedFonts->isEmpty();
129 130
130 // Take a different size instance of the same font before adding an entry to |sizedFont|. 131 // Take a different size instance of the same font before adding an entry to
132 // |sizedFont|.
131 FontPlatformData* anotherSize = 133 FontPlatformData* anotherSize =
132 wasEmpty ? nullptr : sizedFonts->begin()->value.get(); 134 wasEmpty ? nullptr : sizedFonts->begin()->value.get();
133 auto addResult = sizedFonts->add(roundedSize, nullptr); 135 auto addResult = sizedFonts->add(roundedSize, nullptr);
134 std::unique_ptr<FontPlatformData>* found = &addResult.storedValue->value; 136 std::unique_ptr<FontPlatformData>* found = &addResult.storedValue->value;
135 if (addResult.isNewEntry) { 137 if (addResult.isNewEntry) {
136 if (wasEmpty) 138 if (wasEmpty)
137 *found = createFontPlatformData(fontDescription, creationParams, size); 139 *found = createFontPlatformData(fontDescription, creationParams, size);
138 else if (anotherSize) 140 else if (anotherSize)
139 *found = scaleFontPlatformData(*anotherSize, fontDescription, 141 *found = scaleFontPlatformData(*anotherSize, fontDescription,
140 creationParams, size); 142 creationParams, size);
141 } 143 }
142 144
143 result = found->get(); 145 result = found->get();
144 foundResult = result || !addResult.isNewEntry; 146 foundResult = result || !addResult.isNewEntry;
145 } 147 }
146 148
147 if (!foundResult && !checkingAlternateName && 149 if (!foundResult && !checkingAlternateName &&
148 creationParams.creationType() == CreateFontByFamily) { 150 creationParams.creationType() == CreateFontByFamily) {
149 // We were unable to find a font. We have a small set of fonts that we alias to other names, 151 // We were unable to find a font. We have a small set of fonts that we alias
150 // e.g., Arial/Helvetica, Courier/Courier New, etc. Try looking up the font under the aliased name. 152 // to other names, e.g., Arial/Helvetica, Courier/Courier New, etc. Try
153 // looking up the font under the aliased name.
151 const AtomicString& alternateName = 154 const AtomicString& alternateName =
152 alternateFamilyName(creationParams.family()); 155 alternateFamilyName(creationParams.family());
153 if (!alternateName.isEmpty()) { 156 if (!alternateName.isEmpty()) {
154 FontFaceCreationParams createByAlternateFamily(alternateName); 157 FontFaceCreationParams createByAlternateFamily(alternateName);
155 result = 158 result =
156 getFontPlatformData(fontDescription, createByAlternateFamily, true); 159 getFontPlatformData(fontDescription, createByAlternateFamily, true);
157 } 160 }
158 if (result) { 161 if (result) {
159 // Cache the result under the old name. 162 // Cache the result under the old name.
160 auto adding = 163 auto adding =
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 FontVerticalDataCache; 206 FontVerticalDataCache;
204 207
205 FontVerticalDataCache& fontVerticalDataCacheInstance() { 208 FontVerticalDataCache& fontVerticalDataCacheInstance() {
206 DEFINE_STATIC_LOCAL(FontVerticalDataCache, fontVerticalDataCache, ()); 209 DEFINE_STATIC_LOCAL(FontVerticalDataCache, fontVerticalDataCache, ());
207 return fontVerticalDataCache; 210 return fontVerticalDataCache;
208 } 211 }
209 212
210 void FontCache::setFontManager(const sk_sp<SkFontMgr>& fontManager) { 213 void FontCache::setFontManager(const sk_sp<SkFontMgr>& fontManager) {
211 DCHECK(!s_staticFontManager); 214 DCHECK(!s_staticFontManager);
212 s_staticFontManager = fontManager.get(); 215 s_staticFontManager = fontManager.get();
213 // Explicitly AddRef since we're going to hold on to the object for the life o f the program. 216 // Explicitly AddRef since we're going to hold on to the object for the life
217 // of the program.
214 s_staticFontManager->ref(); 218 s_staticFontManager->ref();
215 } 219 }
216 220
217 PassRefPtr<OpenTypeVerticalData> FontCache::getVerticalData( 221 PassRefPtr<OpenTypeVerticalData> FontCache::getVerticalData(
218 const FontFileKey& key, 222 const FontFileKey& key,
219 const FontPlatformData& platformData) { 223 const FontPlatformData& platformData) {
220 FontVerticalDataCache& fontVerticalDataCache = 224 FontVerticalDataCache& fontVerticalDataCache =
221 fontVerticalDataCacheInstance(); 225 fontVerticalDataCacheInstance();
222 FontVerticalDataCache::iterator result = fontVerticalDataCache.find(key); 226 FontVerticalDataCache::iterator result = fontVerticalDataCache.find(key);
223 if (result != fontVerticalDataCache.end()) 227 if (result != fontVerticalDataCache.end())
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 DEFINE_STATIC_LOCAL(CustomCountHistogram, shapeCacheHistogram, 351 DEFINE_STATIC_LOCAL(CustomCountHistogram, shapeCacheHistogram,
348 ("Blink.Fonts.ShapeCache", 1, 1000000, 50)); 352 ("Blink.Fonts.ShapeCache", 1, 1000000, 50));
349 shapeCacheHistogram.count(items); 353 shapeCacheHistogram.count(items);
350 } 354 }
351 355
352 void FontCache::invalidateShapeCache() { 356 void FontCache::invalidateShapeCache() {
353 purgeFallbackListShaperCache(); 357 purgeFallbackListShaperCache();
354 } 358 }
355 359
356 void FontCache::purge(PurgeSeverity PurgeSeverity) { 360 void FontCache::purge(PurgeSeverity PurgeSeverity) {
357 // We should never be forcing the purge while the FontCachePurgePreventer is i n scope. 361 // We should never be forcing the purge while the FontCachePurgePreventer is
362 // in scope.
358 ASSERT(!m_purgePreventCount || PurgeSeverity == PurgeIfNeeded); 363 ASSERT(!m_purgePreventCount || PurgeSeverity == PurgeIfNeeded);
359 if (m_purgePreventCount) 364 if (m_purgePreventCount)
360 return; 365 return;
361 366
362 if (!gFontDataCache || !gFontDataCache->purge(PurgeSeverity)) 367 if (!gFontDataCache || !gFontDataCache->purge(PurgeSeverity))
363 return; 368 return;
364 369
365 purgePlatformFontDataCache(); 370 purgePlatformFontDataCache();
366 purgeFontVerticalDataCache(); 371 purgeFontVerticalDataCache();
367 purgeFallbackListShaperCache(); 372 purgeFallbackListShaperCache();
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
444 for (iter = gFallbackListShaperCache->begin(); 449 for (iter = gFallbackListShaperCache->begin();
445 iter != gFallbackListShaperCache->end(); ++iter) { 450 iter != gFallbackListShaperCache->end(); ++iter) {
446 shapeResultCacheSize += iter->value->byteSize(); 451 shapeResultCacheSize += iter->value->byteSize();
447 } 452 }
448 dump->AddScalar("size", "bytes", shapeResultCacheSize); 453 dump->AddScalar("size", "bytes", shapeResultCacheSize);
449 memoryDump->AddSuballocation(dump->guid(), 454 memoryDump->AddSuballocation(dump->guid(),
450 WTF::Partitions::kAllocatedObjectPoolName); 455 WTF::Partitions::kAllocatedObjectPoolName);
451 } 456 }
452 457
453 } // namespace blink 458 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/platform/fonts/Font.cpp ('k') | third_party/WebKit/Source/platform/fonts/FontData.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698