Created
February 15, 2025 03:07
-
-
Save marguerite/763fab09a7e0c072880bacdef837b220 to your computer and use it in GitHub Desktop.
marguerite's blink_font_stack_debug patch
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff -urN blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/core/css/css_font_selector.cc blink/renderer/core/css/css_font_selector.cc | |
--- blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/core/css/css_font_selector.cc 2025-02-15 09:43:10.732938782 +0800 | |
+++ blink/renderer/core/css/css_font_selector.cc 2025-02-15 09:50:27.682932708 +0800 | |
@@ -140,6 +140,7 @@ | |
.GetFrame() | |
->GetSettings() | |
->GetGenericFontFamilySettings(); | |
+ DVLOG(0) << "[CSSFontSelector::CSSFontSelector] call CSSFontSelector(&treescope) constructor"; | |
FontCache::Get().AddClient(this); | |
if (tree_scope.RootNode().IsDocumentNode()) { | |
font_face_cache_ = MakeGarbageCollected<FontFaceCache>(); | |
@@ -275,6 +276,10 @@ | |
return nullptr; | |
} | |
+ DVLOG(0) << "[CSSFontSelector::GetFontData] family_name: " << family_name; | |
+ DVLOG(0) << "[CSSFontSelector::GetFontData] settings_family_name: " << settings_family_name; | |
+ DVLOG(0) << "[CSSFontSelector::GetFontData] generic family: " << FontDescription::ToString(request_description.GenericFamily()); | |
+ | |
ReportFontFamilyLookupByGenericFamily( | |
family_name, request_description.GetScript(), | |
request_description.GenericFamily(), settings_family_name); | |
diff -urN blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/core/css/resolver/font_builder.cc blink/renderer/core/css/resolver/font_builder.cc | |
--- blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/core/css/resolver/font_builder.cc 2025-02-15 09:43:18.102826325 +0800 | |
+++ blink/renderer/core/css/resolver/font_builder.cc 2025-02-15 10:55:54.576872731 +0800 | |
@@ -35,6 +35,8 @@ | |
#include "third_party/blink/renderer/platform/font_family_names.h" | |
#include "third_party/blink/renderer/platform/fonts/font_description.h" | |
+#include "base/logging.h" | |
+ | |
namespace blink { | |
FontBuilder::FontBuilder(Document* document) : document_(document) { | |
@@ -520,12 +522,16 @@ | |
tree_scope->GetDocument().IsSVGDocument()); | |
// TODO(crbug.com/336876): Font selector should be based on tree_scope for | |
// tree-scoped references. | |
+ Element* body_element = reinterpret_cast<Element*>(tree_scope->GetDocument().body()); | |
+ DVLOG(0) << "[FontBuilder::FontSelectorFromTreeScope] tree_scope outerHTML " << body_element->outerHTML(); | |
+ DVLOG(0) << "[FontBuilder::FontSelectorFromTreeScope] tree_scope innerHTML " << body_element->innerHTML(); | |
return document_->GetStyleEngine().GetFontSelector(); | |
} | |
FontSelector* FontBuilder::ComputeFontSelector( | |
const ComputedStyleBuilder& builder) { | |
if (IsSet(PropertySetFlag::kFamily)) { | |
+ DVLOG(0) << "[FontBuilder::ComputeFontSelector] FontSelectorFromTreeScope"; | |
return FontSelectorFromTreeScope(family_tree_scope_); | |
} else { | |
return builder.GetFont().GetFontSelector(); | |
@@ -550,6 +556,8 @@ | |
UpdateSpecifiedSize(description, parent_description); | |
UpdateComputedSize(description, builder); | |
+ DVLOG(0) << "[FontBuilder::CreateFont] FontDescription{family: " << description.Family().ToString() << ", computedsize: " << description.ComputedSize() << "}"; | |
+ | |
FontSelector* font_selector = ComputeFontSelector(builder); | |
UpdateAdjustedSize(description, font_selector); | |
diff -urN blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/platform/fonts/font_cache.cc blink/renderer/platform/fonts/font_cache.cc | |
--- blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/platform/fonts/font_cache.cc 2025-02-15 09:45:37.880693566 +0800 | |
+++ blink/renderer/platform/fonts/font_cache.cc 2025-02-15 09:51:12.992228698 +0800 | |
@@ -62,6 +62,8 @@ | |
#include "third_party/skia/include/ports/SkTypeface_win.h" | |
#endif | |
+#include "base/logging.h" | |
+ | |
namespace blink { | |
const char kColorEmojiLocale[] = "und-Zsye"; | |
@@ -83,6 +85,7 @@ | |
#endif // BUILDFLAG(IS_WIN) | |
FontCache& FontCache::Get() { | |
+ DVLOG(0) << "running FontCache::Get()"; | |
return FontGlobalContext::GetFontCache(); | |
} | |
@@ -129,6 +132,22 @@ | |
} | |
#endif | |
+const char* AlternateFontNameToString(AlternateFontName font_name_) { | |
+ switch(font_name_) { | |
+ case AlternateFontName::kAllowAlternate : return "kAllowAlternate"; | |
+ case AlternateFontName::kNoAlternate : return "kNoAlternate"; | |
+ case AlternateFontName::kLocalUniqueFace : return "kLocalUniqueFace"; | |
+ case AlternateFontName::kLastResort : return "kLastResort"; | |
+ } | |
+} | |
+ | |
+const char* FontFaceCreationTypeToString(FontFaceCreationType creation_type) { | |
+ switch(creation_type) { | |
+ case FontFaceCreationType::kCreateFontByFamily: return "kCreateFontByFamily"; | |
+ case FontFaceCreationType::kCreateFontByFciIdAndTtcIndex: return "kCreateFontByFciIdAndTtcIndex"; | |
+ } | |
+} | |
+ | |
FontPlatformData* FontCache::GetFontPlatformData( | |
const FontDescription& font_description, | |
const FontFaceCreationParams& creation_params, | |
@@ -146,7 +165,17 @@ | |
return SystemFontPlatformData(font_description); | |
} | |
#endif | |
- | |
+ DVLOG(0) << "running FontCache::GetFontPlatformData()"; | |
+ DVLOG(0) << "[FontCache::GetFontPlatformData] font_description" << font_description.Family().ToString(); | |
+ DVLOG(0) << "[FontCache::GetFontPlatformData] creation_params creation_type " << FontFaceCreationTypeToString(creation_params.CreationType()); | |
+ if (creation_params.CreationType() == kCreateFontByFamily) | |
+ DVLOG(0) << "[FontCache::GetFontPlatformData] creation_params family " << creation_params.Family(); | |
+ if (creation_params.CreationType() == kCreateFontByFciIdAndTtcIndex) { | |
+ DVLOG(0) << "[FontCache::GetFontPlatformData] creation_params filename " << creation_params.Filename(); | |
+ DVLOG(0) << "[FontCache::GetFontPlatformData] creation_params FontconfigInterfaceId " << creation_params.FontconfigInterfaceId(); | |
+ DVLOG(0) << "[FontCache::GetFontPlatformData] creation_params TtcIndex " << creation_params.TtcIndex(); | |
+ } | |
+ DVLOG(0) << "[FontCache::GetFontPlatformData] alternative_font_name " << AlternateFontNameToString(alternate_font_name); | |
return font_platform_data_cache_->GetOrCreateFontPlatformData( | |
this, font_description, creation_params, alternate_font_name); | |
} | |
@@ -212,6 +241,7 @@ | |
const AtomicString& family, | |
AlternateFontName altername_font_name, | |
ShouldRetain should_retain) { | |
+ DVLOG(0) << "[FontCache::GetFontData] family " << family; | |
if (FontPlatformData* platform_data = GetFontPlatformData( | |
font_description, | |
FontFaceCreationParams( | |
diff -urN blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/platform/fonts/font_cache.h blink/renderer/platform/fonts/font_cache.h | |
--- blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/platform/fonts/font_cache.h 2025-02-15 09:45:41.570637260 +0800 | |
+++ blink/renderer/platform/fonts/font_cache.h 2025-02-15 09:51:16.475507895 +0800 | |
@@ -88,6 +88,8 @@ | |
kLastResort | |
}; | |
+const char* AlternateFontNameToString(AlternateFontName); | |
+ | |
typedef HashMap<FallbackListCompositeKey, | |
std::unique_ptr<NGShapeCache>, | |
FallbackListCompositeKeyTraits> | |
@@ -106,6 +108,8 @@ | |
extern const char kNotoColorEmojiCompat[]; | |
#endif | |
+const char* FontFaceCreationTypeToString(FontFaceCreationType creation_type); | |
+ | |
class PLATFORM_EXPORT FontCache final { | |
friend class FontCachePurgePreventer; | |
diff -urN blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/platform/fonts/font.cc blink/renderer/platform/fonts/font.cc | |
--- blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/platform/fonts/font.cc 2025-02-15 09:45:45.473911033 +0800 | |
+++ blink/renderer/platform/fonts/font.cc 2025-02-15 09:51:09.072289603 +0800 | |
@@ -46,6 +46,8 @@ | |
#include "third_party/skia/include/core/SkTextBlob.h" | |
#include "ui/gfx/geometry/rect_f.h" | |
+#include "base/logging.h" | |
+ | |
namespace blink { | |
namespace { | |
@@ -59,6 +61,9 @@ | |
scoped_refptr<FontFallbackList> GetOrCreateFontFallbackList( | |
const FontDescription& font_description, | |
FontSelector* font_selector) { | |
+ DVLOG(0) << "running GetOrCreateFontFallbackList"; | |
+ DVLOG(0) << "calling GetFontFallbackMap(font_selector).Get(font_description)"; | |
+ DVLOG(0) << "[GetOrCreateFontFallbackList] font_description " << font_description.Family().ToString(); | |
return GetFontFallbackMap(font_selector).Get(font_description); | |
} | |
@@ -73,7 +78,10 @@ | |
font_fallback_list_( | |
font_selector | |
? GetOrCreateFontFallbackList(font_description, font_selector) | |
- : nullptr) {} | |
+ : nullptr) { | |
+ if (font_selector) | |
+ DVLOG(0) << "[Font(font_description, font_selector)] Font constructor called with font_selector " << &font_selector; | |
+} | |
Font::Font(const Font& other) = default; | |
diff -urN blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/platform/fonts/font_fallback_iterator.cc blink/renderer/platform/fonts/font_fallback_iterator.cc | |
--- blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/platform/fonts/font_fallback_iterator.cc 2025-02-15 09:45:54.160445151 +0800 | |
+++ blink/renderer/platform/fonts/font_fallback_iterator.cc 2025-02-15 09:51:40.825129531 +0800 | |
@@ -10,6 +10,9 @@ | |
#include "third_party/blink/renderer/platform/fonts/segmented_font_data.h" | |
#include "third_party/blink/renderer/platform/fonts/simple_font_data.h" | |
+#include "base/logging.h" | |
+#include "unicode/unistr.h" | |
+ | |
namespace blink { | |
FontFallbackIterator::FontFallbackIterator( | |
@@ -23,6 +26,18 @@ | |
fallback_stage_(kFontGroupFonts), | |
font_fallback_priority_(font_fallback_priority) {} | |
+const char* FallbackStageToString(FontFallbackIterator::FallbackStage font_fallback_stage) { | |
+ switch(font_fallback_stage) { | |
+ case FontFallbackIterator::FallbackStage::kFallbackPriorityFonts: return "kFallbackPriorityFonts"; | |
+ case FontFallbackIterator::FallbackStage::kFontGroupFonts: return "kFontGroupFonts"; | |
+ case FontFallbackIterator::FallbackStage::kSegmentedFace: return "kSegmentedFace"; | |
+ case FontFallbackIterator::FallbackStage::kPreferencesFonts: return "kPreferencesFonts"; | |
+ case FontFallbackIterator::FallbackStage::kSystemFonts: return "kSystemFonts"; | |
+ case FontFallbackIterator::FallbackStage::kFirstCandidateForNotdefGlyph: return "kFirstCandidateForNotdefGlyph"; | |
+ case FontFallbackIterator::FallbackStage::kOutOfLuck: return "kOutOfLuck"; | |
+ } | |
+} | |
+ | |
bool FontFallbackIterator::AlreadyLoadingRangeForHintChar(UChar32 hint_char) { | |
for (auto* it = tracked_loading_range_sets_.begin(); | |
it != tracked_loading_range_sets_.end(); ++it) { | |
@@ -106,12 +121,18 @@ | |
scoped_refptr<FontDataForRangeSet> FontFallbackIterator::Next( | |
const Vector<UChar32>& hint_list) { | |
+ | |
+ // our dlog test | |
+ DVLOG(0) << "[FontFallbackIterator::Next] fallball_stage_: " << FallbackStageToString(fallback_stage_); | |
+ | |
if (fallback_stage_ == kOutOfLuck) | |
return base::AdoptRef(new FontDataForRangeSet()); | |
if (fallback_stage_ == kFallbackPriorityFonts) { | |
// Only try one fallback priority font, | |
// then proceed to regular system fallback. | |
+ | |
+ DVLOG(0) << "[FontFallbackIterator::Next] FallbackPriorityFont"; | |
fallback_stage_ = kSystemFonts; | |
scoped_refptr<FontDataForRangeSet> fallback_priority_font_range = | |
base::AdoptRef( | |
@@ -123,6 +144,12 @@ | |
if (fallback_stage_ == kSystemFonts) { | |
// We've reached pref + system fallback. | |
+ | |
+ DVLOG(0) << "[FontFallbackIterator::Next] UniqueSystemFontForHintList"; | |
+ std::string ustr; | |
+ icu_72::UnicodeString::fromUTF32(reinterpret_cast<UChar32*>(hint_list[0]), hint_list.size()).toUTF8String(ustr); | |
+ DVLOG(0) << "[FontFallbackIterator::Next] hint_list \"" << ustr << "\""; | |
+ | |
scoped_refptr<SimpleFontData> system_font = UniqueSystemFontForHintList(hint_list); | |
if (system_font) { | |
// Fallback fonts are not retained in the FontDataCache. | |
@@ -135,6 +162,10 @@ | |
// TODO: crbug.com/42217 Improve this by doing the last run with a last | |
// resort font that has glyphs for everything, for example the Unicode | |
// LastResort font, not just Times or Arial. | |
+ | |
+ DVLOG(0) << "[FontFallbackIterator::Next] GetLastResortFallbackFont"; | |
+ DVLOG(0) << "[FontFallbackIterator::Next] font_description_" << font_description_.Family().ToString(); | |
+ | |
FontCache& font_cache = FontCache::Get(); | |
fallback_stage_ = kFirstCandidateForNotdefGlyph; | |
scoped_refptr<SimpleFontData> last_resort = | |
@@ -152,6 +183,8 @@ | |
} | |
if (fallback_stage_ == kFirstCandidateForNotdefGlyph) { | |
+ DVLOG(0) << "[FontFallbackIterator::Next] kOutOfLuck"; | |
+ DVLOG(0) << "[FontFallbackIterator::Next] font_description_ " << font_description_.Family().ToString(); | |
fallback_stage_ = kOutOfLuck; | |
if (!first_candidate_) | |
FontCache::CrashWithFontInfo(&font_description_); | |
@@ -160,6 +193,9 @@ | |
DCHECK(fallback_stage_ == kFontGroupFonts || | |
fallback_stage_ == kSegmentedFace); | |
+ DVLOG(0) << "[FontFallbackIterator::Next] Running font_fallback_list_->FontDataAt"; | |
+ DVLOG(0) << "[FontFallbackIterator::Next] font_description_ " << font_description_.Family().ToString(); | |
+ DVLOG(0) << "[FontFallbackIterator::Next] current_font_data_index_(realized_font_index) " << current_font_data_index_; | |
const FontData* font_data = font_fallback_list_->FontDataAt( | |
font_description_, current_font_data_index_); | |
@@ -176,6 +212,7 @@ | |
// Otherwise we've received a fontData from the font-family: set of fonts, | |
// and a non-segmented one in this case. | |
if (!font_data->IsSegmented()) { | |
+ DVLOG(0) << "[FontFallbackIterator::Next] font_data is not segmented "; | |
// Skip forward to the next font family for the next call to next(). | |
current_font_data_index_++; | |
if (!font_data->IsLoading()) { | |
@@ -191,6 +228,7 @@ | |
} | |
// Iterate over ranges of a segmented font below. | |
+ DVLOG(0) << "[FontFallbackIterator::Next] continue with segmented font processing"; | |
const auto* segmented = To<SegmentedFontData>(font_data); | |
if (fallback_stage_ != kSegmentedFace) { | |
@@ -226,6 +264,13 @@ | |
scoped_refptr<SimpleFontData> FontFallbackIterator::FallbackPriorityFont( | |
UChar32 hint) { | |
+ std::string ustr; | |
+ icu_72::UnicodeString(hint).toUTF8String(ustr); | |
+ DVLOG(0) << "[FontFallbackIterator::FallbackPriorityFont] FontCache::Get().FallbackFontForCharacter"; | |
+ DVLOG(0) << "[FontFallbackIterator::FallbackPriorityFont] font_description_ " << font_description_.Family().ToString(); | |
+ DVLOG(0) << "[FontFallbackIterator::FallbackPriorityFont] hint " << ustr; | |
+ DVLOG(0) << "[FontFallbackIterator::FallbackPriorityFont] fallback_priority_ " << FontFallbackPriorityToString(font_fallback_priority_); | |
+ DVLOG(0) << "[FontFallbackIterator::FallbackPriorityFont] font_fallback_list_->PrimarySimpleFontData(font_description_)" << font_fallback_list_->PrimarySimpleFontData(font_description_)->PlatformData().FontFamilyName(); | |
scoped_refptr<SimpleFontData> font_data = | |
FontCache::Get().FallbackFontForCharacter( | |
font_description_, hint, | |
@@ -267,6 +312,10 @@ | |
if (!hint_list.size()) | |
return nullptr; | |
+ std::string ustr; | |
+ icu_72::UnicodeString::fromUTF32(reinterpret_cast<UChar32*>(hint_list[0]), hint_list.size()).toUTF8String(ustr); | |
+ DVLOG(0) << "[FontFallbackIterator::UniqueSystemFontForHintList] FallbackFontForCharacter " << ustr; | |
+ | |
FontCache& font_cache = FontCache::Get(); | |
UChar32 hint = hint_list[ChooseHintIndex(hint_list)]; | |
diff -urN blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/platform/fonts/font_fallback_iterator.h blink/renderer/platform/fonts/font_fallback_iterator.h | |
--- blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/platform/fonts/font_fallback_iterator.h 2025-02-15 09:46:04.606952416 +0800 | |
+++ blink/renderer/platform/fonts/font_fallback_iterator.h 2025-02-15 09:51:40.825129531 +0800 | |
@@ -45,6 +45,16 @@ | |
// fonts without passing in characters. | |
scoped_refptr<FontDataForRangeSet> Next(const Vector<UChar32>& hint_list); | |
+ enum FallbackStage { | |
+ kFallbackPriorityFonts, | |
+ kFontGroupFonts, | |
+ kSegmentedFace, | |
+ kPreferencesFonts, | |
+ kSystemFonts, | |
+ kFirstCandidateForNotdefGlyph, | |
+ kOutOfLuck | |
+ }; | |
+ | |
private: | |
bool RangeSetContributesForHint(const Vector<UChar32>& hint_list, | |
const FontDataForRangeSet*); | |
@@ -64,16 +74,6 @@ | |
int current_font_data_index_; | |
unsigned segmented_face_index_; | |
- enum FallbackStage { | |
- kFallbackPriorityFonts, | |
- kFontGroupFonts, | |
- kSegmentedFace, | |
- kPreferencesFonts, | |
- kSystemFonts, | |
- kFirstCandidateForNotdefGlyph, | |
- kOutOfLuck | |
- }; | |
- | |
FallbackStage fallback_stage_; | |
HashSet<UChar32> previously_asked_for_hint_; | |
// FontFallbackIterator is meant for single use by HarfBuzzShaper, | |
@@ -89,6 +89,7 @@ | |
FontFallbackPriority font_fallback_priority_; | |
}; | |
+const char* FallbackStageToString(FontFallbackIterator::FallbackStage); | |
} // namespace blink | |
#endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_FONTS_FONT_FALLBACK_ITERATOR_H_ | |
diff -urN blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/platform/fonts/font_fallback_list.cc blink/renderer/platform/fonts/font_fallback_list.cc | |
--- blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/platform/fonts/font_fallback_list.cc 2025-02-15 09:45:59.590362297 +0800 | |
+++ blink/renderer/platform/fonts/font_fallback_list.cc 2025-02-15 09:51:45.328392881 +0800 | |
@@ -40,6 +40,8 @@ | |
#include "third_party/blink/renderer/platform/fonts/segmented_font_data.h" | |
#include "third_party/blink/renderer/platform/wtf/text/character_names.h" | |
+#include "base/logging.h" | |
+ | |
namespace blink { | |
FontFallbackList::FontFallbackList(FontFallbackMap& font_fallback_map) | |
@@ -111,15 +113,20 @@ | |
if (!font_data) { | |
// All fonts are custom fonts and are loading. Return the first FontData. | |
font_data = FontDataAt(font_description, 0); | |
- if (font_data) | |
+ if (font_data) { | |
+ DVLOG(0) << "[FontFallbackList::DeterminePrimarySimpleFontDataCore] FontDataForCharacter " << const_cast<SimpleFontData*>(To<SimpleFontData>(font_data))->PlatformData().FontFamilyName(); | |
return font_data->FontDataForCharacter(kSpaceCharacter); | |
+ } | |
FontCache& font_cache = FontCache::Get(); | |
SimpleFontData* last_resort_fallback = | |
font_cache.GetLastResortFallbackFont(font_description).get(); | |
DCHECK(last_resort_fallback); | |
+ DVLOG(0) << "[FontFallbackList::DeterminePrimarySimpleFontDataCore] GetLastResortFallbackFont " << last_resort_fallback->PlatformData().FontFamilyName(); | |
return last_resort_fallback; | |
} | |
+ | |
+ DVLOG(0) << "[FontFallbackList::DeterminePrimarySimpleFontDataCore] SegmentedFontData processing"; | |
const auto* segmented = DynamicTo<SegmentedFontData>(font_data); | |
if (segmented && !segmented->ContainsCharacter(kSpaceCharacter)) | |
@@ -132,15 +139,19 @@ | |
// When a custom font is loading, we should use the correct fallback font to | |
// layout the text. Here skip the temporary font for the loading custom | |
// font which may not act as the correct fallback font. | |
- if (!font_data_for_space->IsLoadingFallback()) | |
+ if (!font_data_for_space->IsLoadingFallback()) { | |
+ DVLOG(0) << "[FontFallbackList::DeterminePrimarySimpleFontDataCore] font_data_for_space " << font_data_for_space->PlatformData().FontFamilyName(); | |
return font_data_for_space; | |
+ } | |
if (segmented) { | |
for (unsigned i = 0; i < segmented->NumFaces(); i++) { | |
const SimpleFontData* range_font_data = | |
segmented->FaceAt(i)->FontData(); | |
- if (!range_font_data->IsLoadingFallback()) | |
+ if (!range_font_data->IsLoadingFallback()) { | |
+ DVLOG(0) << "[FontFallbackList::DeterminePrimarySimpleFontDataCore] segmented->FaceAt(" << i << ")->FontData() " << range_font_data->PlatformData().FontFamilyName(); | |
return range_font_data; | |
+ } | |
} | |
if (font_data->IsLoading()) | |
should_load_custom_font = false; | |
@@ -161,10 +172,13 @@ | |
curr_family = curr_family->Next(); | |
for (; curr_family; curr_family = curr_family->Next()) { | |
+ DVLOG(0) << "[FontFallbackList::GetFontData] curr_family " << curr_family->FamilyName(); | |
family_index_++; | |
if (!GetFontSelector()) { | |
+ DVLOG(0) << "[FontFallbackList::GetFontData] GetFontSelector returns non-nullptr"; | |
// Don't query system fonts for empty font family name. | |
if (!curr_family->FamilyName().empty()) { | |
+ DVLOG(0) << "[FontFallbackList::GetFontData] running FontCache::Get().GetFontData(), font_description" << font_description.Family().ToString() << ", family_name" << curr_family->FamilyName(); | |
if (auto result = FontCache::Get().GetFontData( | |
font_description, curr_family->FamilyName())) { | |
return result; | |
@@ -173,10 +187,12 @@ | |
continue; | |
} | |
+ DVLOG(0) << "[FontFallbackList::GetFontData] running font_selector_.GetFontData(), font_description" << font_description.Family().ToString() << ", family_name" << curr_family->FamilyName(); | |
scoped_refptr<FontData> result = | |
GetFontSelector()->GetFontData(font_description, *curr_family); | |
// Don't query system fonts for empty font family name. | |
if (!result && !curr_family->FamilyName().empty()) { | |
+ DVLOG(0) << "[FontFallbackList::GetFontData] running FontCache::Get().GetFontData(), font_description" << font_description.Family().ToString() << ", family_name" << curr_family->FamilyName(); | |
result = FontCache::Get().GetFontData(font_description, | |
curr_family->FamilyName()); | |
GetFontSelector()->ReportFontLookupByUniqueOrFamilyName( | |
@@ -195,6 +211,7 @@ | |
if (GetFontSelector()) { | |
// Try the user's preferred standard font. | |
+ DVLOG(0) << "[FontFallbackList::GetFontData] try the user's preferred standard font"; | |
FontFamily font_family; | |
font_family.SetFamily(font_family_names::kWebkitStandard, | |
FontFamily::Type::kGenericFamily); | |
@@ -204,6 +221,7 @@ | |
} | |
// Still no result. Hand back our last resort fallback font. | |
+ DVLOG(0) << "[FontFallbackList::GetFontData] FontCache::Get().GetLastResortFallbackFont, font_description" << font_description.Family().ToString(); | |
auto last_resort = | |
FontCache::Get().GetLastResortFallbackFont(font_description); | |
if (GetFontSelector()) { | |
@@ -251,8 +269,12 @@ | |
const FontDescription& font_description, | |
unsigned realized_font_index) { | |
// This fallback font is already in our list. | |
- if (realized_font_index < font_list_.size()) | |
+ if (realized_font_index < font_list_.size()) { | |
+ DVLOG(0) << "[FontFallbackList::FontDataAt] This fallback font is already in our list: "; | |
+ DVLOG(0) << "[FontFallbackList::FontDataAt] realized_font_index of font_list_ size (" << realized_font_index << "/" << font_list_.size() << ")"; | |
+ DVLOG(0) << "[FontFallbackList::FontDataAt] the result FontData: " << const_cast<SimpleFontData*>(To<SimpleFontData>(font_list_[realized_font_index].get()))->PlatformData().FontFamilyName(); | |
return font_list_[realized_font_index].get(); | |
+ } | |
// Make sure we're not passing in some crazy value here. | |
DCHECK_EQ(realized_font_index, font_list_.size()); | |
@@ -266,13 +288,19 @@ | |
// the same spot in the list twice. GetFontData will adjust our | |
// |family_index_| as it scans for the right font to make. | |
DCHECK_EQ(FontCache::Get().Generation(), generation_); | |
+ DVLOG(0) << "[FontFallbackList::FontDataAt] Running GetFontData, font_description" << font_description.Family().ToString() << ", realized_font_index " << realized_font_index; | |
scoped_refptr<FontData> result = GetFontData(font_description); | |
if (result) { | |
+ DVLOG(0) << "[FontFallbackList::FontDataAt] Got result"; | |
font_list_.push_back(result); | |
- if (result->IsLoadingFallback()) | |
+ if (result->IsLoadingFallback()) { | |
+ DVLOG(0) << "[FontFallbackList::FontDataAt] result->IsLoadingFallback is true"; | |
has_loading_fallback_ = true; | |
- if (result->IsCustomFont()) | |
+ } | |
+ if (result->IsCustomFont()) { | |
+ DVLOG(0) << "[FontFallbackList::FontDataAt] result->IsCustomFont is true"; | |
has_custom_font_ = true; | |
+ } | |
} | |
return result.get(); | |
} | |
diff -urN blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/platform/fonts/font_fallback_map.cc blink/renderer/platform/fonts/font_fallback_map.cc | |
--- blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/platform/fonts/font_fallback_map.cc 2025-02-15 09:46:08.493559777 +0800 | |
+++ blink/renderer/platform/fonts/font_fallback_map.cc 2025-02-15 09:51:57.578202518 +0800 | |
@@ -6,6 +6,8 @@ | |
#include "third_party/blink/renderer/platform/fonts/font_selector.h" | |
+#include "base/logging.h" | |
+ | |
namespace blink { | |
void FontFallbackMap::Trace(Visitor* visitor) const { | |
@@ -23,8 +25,10 @@ | |
auto iter = fallback_list_for_description_.find(font_description); | |
if (iter != fallback_list_for_description_.end()) { | |
DCHECK(iter->value->IsValid()); | |
+ DVLOG(0) << "[FontFallbackMap::Get] found existing FontFallbacklist in fallback_list_for_description_"; | |
return iter->value; | |
} | |
+ DVLOG(0) << "[FontFallbackMap::Get] running FontFallbacklist::Create(*this fontfallbackmap)"; | |
auto add_result = fallback_list_for_description_.insert( | |
font_description, FontFallbackList::Create(*this)); | |
return add_result.stored_value->value; | |
diff -urN blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/platform/fonts/font_fallback_priority.cc blink/renderer/platform/fonts/font_fallback_priority.cc | |
--- blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/platform/fonts/font_fallback_priority.cc 2025-02-15 09:46:12.900159205 +0800 | |
+++ blink/renderer/platform/fonts/font_fallback_priority.cc 2025-02-15 09:52:01.294811430 +0800 | |
@@ -11,4 +11,13 @@ | |
fallback_priority == FontFallbackPriority::kEmojiEmoji; | |
} | |
+const char* FontFallbackPriorityToString(FontFallbackPriority fallback_priority) { | |
+ switch(fallback_priority) { | |
+ case FontFallbackPriority::kText: return "kText"; | |
+ case FontFallbackPriority::kEmojiText: return "kEmojiText"; | |
+ case FontFallbackPriority::kEmojiEmoji: return "kEmojiEmoji"; | |
+ case FontFallbackPriority::kInvalid: return "kInvalid"; | |
+ } | |
+} | |
+ | |
} // namespace blink | |
diff -urN blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/platform/fonts/font_fallback_priority.h blink/renderer/platform/fonts/font_fallback_priority.h | |
--- blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/platform/fonts/font_fallback_priority.h 2025-02-15 09:46:17.406757105 +0800 | |
+++ blink/renderer/platform/fonts/font_fallback_priority.h 2025-02-15 09:52:01.294811430 +0800 | |
@@ -22,6 +22,8 @@ | |
kInvalid | |
}; | |
+const char* FontFallbackPriorityToString(FontFallbackPriority); | |
+ | |
bool IsNonTextFallbackPriority(FontFallbackPriority); | |
} // namespace blink | |
diff -urN blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/platform/fonts/font_platform_data_cache.cc blink/renderer/platform/fonts/font_platform_data_cache.cc | |
--- blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/platform/fonts/font_platform_data_cache.cc 2025-02-15 09:46:21.400029505 +0800 | |
+++ blink/renderer/platform/fonts/font_platform_data_cache.cc 2025-02-15 09:52:14.317942383 +0800 | |
@@ -36,6 +36,8 @@ | |
#include "third_party/blink/renderer/platform/fonts/font_cache.h" | |
#include "third_party/blink/renderer/platform/wtf/std_lib_extras.h" | |
+#include "base/logging.h" | |
+ | |
namespace blink { | |
namespace { | |
@@ -70,6 +72,8 @@ | |
is_generic_family); | |
DCHECK(!key.IsHashTableDeletedValue()); | |
+ DVLOG(0) << "[FontPlatformDataCache::GetOrCreateFontPlatformData] FontCacheKey hash " << key.GetHash(); | |
+ | |
if (no_size_in_key_) { | |
// Clear font size from they key. Size is not required in the primary key | |
// because per-size FontPlatformData are held in a nested map. | |
@@ -81,6 +85,9 @@ | |
const unsigned rounded_size = size * FontCacheKey::PrecisionMultiplier(); | |
+ DVLOG(0) << "[FontPlatformDataCache::GetOrCreateFontPlatformData] font-size " << size; | |
+ DVLOG(0) << "[FontPlatformDataCache::GetOrCreateFontPlatformData] rounded_size " << rounded_size; | |
+ | |
// Assert that the computed hash map key rounded_size value does not hit | |
// the empty (max()) or deleted (max()-1) sentinel values of the hash map, | |
// compare IntWithZeroKeyHashTraits() in hash_traits.h. | |
@@ -186,6 +193,7 @@ | |
return found->get(); | |
if (!another_size) { | |
+ DVLOG(0) << "[FontPlatformDataCache::SizedFontPlatformDataSet::GetOrCreateFontPlatformData] running font_cache->CreateFontPlatformData"; | |
*found = font_cache->CreateFontPlatformData( | |
font_description, creation_params, size, alternate_font_name); | |
return found->get(); | |
diff -urN blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/platform/fonts/linux/font_cache_linux.cc blink/renderer/platform/fonts/linux/font_cache_linux.cc | |
--- blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/platform/fonts/linux/font_cache_linux.cc 2025-02-15 09:47:34.008921611 +0800 | |
+++ blink/renderer/platform/fonts/linux/font_cache_linux.cc 2025-02-15 09:52:25.051108908 +0800 | |
@@ -31,6 +31,8 @@ | |
#include "third_party/blink/renderer/platform/fonts/simple_font_data.h" | |
#include "ui/gfx/font_fallback_linux.h" | |
+#include "base/logging.h" | |
+ | |
namespace blink { | |
static AtomicString& MutableSystemFontFamily() { | |
@@ -76,8 +78,11 @@ | |
if (font_manager_) { | |
AtomicString family_name = GetFamilyNameForCharacter( | |
font_manager_.get(), c, font_description, nullptr, fallback_priority); | |
- if (family_name.empty()) | |
+ DVLOG(0) << "[FontCache::PlatformFallbackFontForCharacter] GetFamilyNameForCharacter " << family_name; | |
+ if (family_name.empty()) { | |
+ DVLOG(0) << "[FontCache::PlatformFallbackFontForCharacter] GetLastResortFallbackFont"; | |
return GetLastResortFallbackFont(font_description, kDoNotRetain); | |
+ } | |
return FontDataFromFontPlatformData( | |
GetFontPlatformData(font_description, | |
FontFaceCreationParams(family_name)), | |
diff -urN blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/platform/fonts/shaping/harfbuzz_shaper.cc blink/renderer/platform/fonts/shaping/harfbuzz_shaper.cc | |
--- blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/platform/fonts/shaping/harfbuzz_shaper.cc 2025-02-15 09:47:55.731923482 +0800 | |
+++ blink/renderer/platform/fonts/shaping/harfbuzz_shaper.cc 2025-02-15 09:52:35.587611886 +0800 | |
@@ -33,6 +33,7 @@ | |
#include <hb.h> | |
#include <unicode/uchar.h> | |
+#include <unicode/unistr.h> | |
#include <unicode/uscript.h> | |
#include <algorithm> | |
#include <hb-cplusplus.hh> | |
@@ -749,6 +750,10 @@ | |
font_description.VariantCaps() != FontDescription::kCapsNormal; | |
OpenTypeCapsSupport caps_support; | |
+ // our dvlog test | |
+ DVLOG(0) << "[HarfBuzzShaper::ShapeSegment] font_description: " << font_description.Family().ToString(); | |
+ DVLOG(0) << "[HarfBuzzShaper::ShapeSegment] font_fallback_priority: " << FontFallbackPriorityToString(segment.font_fallback_priority); | |
+ | |
FontFallbackIterator fallback_iterator( | |
font->CreateFontFallbackIterator(segment.font_fallback_priority)); | |
@@ -779,6 +784,11 @@ | |
break; | |
} | |
+ // our dvlog test | |
+ std::string ustr; | |
+ icu_72::UnicodeString::fromUTF32(reinterpret_cast<UChar32*>(&fallback_chars_hint[0]), fallback_chars_hint.size()).toUTF8String(ustr); | |
+ DVLOG(0) << "[HarfbuzzShaper::ShapeSegment] fallback_chars_hint: \"" << ustr << "\""; | |
+ | |
current_font_data_for_range_set = | |
fallback_iterator.Next(fallback_chars_hint); | |
if (!current_font_data_for_range_set->FontData()) { | |
diff -urN blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/platform/fonts/skia/font_cache_skia.cc blink/renderer/platform/fonts/skia/font_cache_skia.cc | |
--- blink-ada7d6231602a093e52abc3340cc697674c9fae9.orig/renderer/platform/fonts/skia/font_cache_skia.cc 2025-02-15 09:47:43.525443067 +0800 | |
+++ blink/renderer/platform/fonts/skia/font_cache_skia.cc 2025-02-15 09:52:45.147463359 +0800 | |
@@ -58,6 +58,8 @@ | |
#error This file should not be used by MacOS. | |
#endif | |
+#include "base/logging.h" | |
+ | |
namespace blink { | |
AtomicString ToAtomicString(const SkString& str) { | |
@@ -120,9 +122,26 @@ | |
return nullptr; | |
} | |
+/* | |
+const char* GenericFallbackFontFamilyToString(inline const AtomicString& family_) { | |
+ switch(family_) { | |
+ case FontDescription::kSansSerifFamily: return "kSansSerif"; | |
+ case FontDescription::kSerifFamily: return "kSerif"; | |
+ case FontDescription::kMonospaceFamily: return "kMonospace"; | |
+ case FontDescription::kCursiveFamily: return "kCursive"; | |
+ case FontDescription::kFantasyFamily: return "kFantasy"; | |
+ default: return "g_empty_atom(System Defaul)"; | |
+ } | |
+} | |
+*/ | |
+ | |
scoped_refptr<SimpleFontData> FontCache::GetLastResortFallbackFont( | |
const FontDescription& description, | |
ShouldRetain should_retain) { | |
+ | |
+ DVLOG(0) << "[FontCache::GetLastResortFallbackFont] description " << description.Family().ToString(); | |
+ | |
+ DVLOG(0) << "[FontCache::GetLastResortFallbackFont] GetFallbackFontFamily(description)" << GetFallbackFontFamily(description); | |
const FontFaceCreationParams fallback_creation_params( | |
GetFallbackFontFamily(description)); | |
const FontPlatformData* font_platform_data = GetFontPlatformData( | |
@@ -131,6 +150,7 @@ | |
// We should at least have Sans or Arial which is the last resort fallback of | |
// SkFontHost ports. | |
if (!font_platform_data) { | |
+ DVLOG(0) << "[FontCache::GetLastResortFallbackFont] Testing Sans"; | |
DEFINE_THREAD_SAFE_STATIC_LOCAL(const FontFaceCreationParams, | |
sans_creation_params, | |
(font_family_names::kSans)); | |
@@ -138,6 +158,7 @@ | |
AlternateFontName::kLastResort); | |
} | |
if (!font_platform_data) { | |
+ DVLOG(0) << "[FontCache::GetLastResortFallbackFont] Testing Arial"; | |
DEFINE_THREAD_SAFE_STATIC_LOCAL(const FontFaceCreationParams, | |
arial_creation_params, | |
(font_family_names::kArial)); | |
@@ -206,6 +227,7 @@ | |
// TODO(fuchsia): Revisit this and other font code for Fuchsia. | |
if (creation_params.CreationType() == kCreateFontByFciIdAndTtcIndex) { | |
+ DVLOG(0) << "[FontCache::CreateTypeface] creation_params.CreationType() is kCreateFontByFciIdAndTtcIndex"; | |
if (Platform::Current()->GetSandboxSupport()) { | |
return SkTypeface_Factory::FromFontConfigInterfaceIdAndTtcIndex( | |
creation_params.FontconfigInterfaceId(), creation_params.TtcIndex()); | |
@@ -232,7 +254,16 @@ | |
// TODO(https://crbug.com/1425390: Assign FontCache::font_manager_ in the | |
// ctor. | |
+ if (font_manager_) { | |
+ DVLOG(0) << "[FontCache::CreateTypeface] existing font_manager_"; | |
+ } else { | |
+ DVLOG(0) << "[FontCache::CreateTypeface] initializing new SkFontMgr::RefDefault()"; | |
+ } | |
auto font_manager = font_manager_ ? font_manager_ : SkFontMgr::RefDefault(); | |
+ DVLOG(0) << "[FontCache::CreateTypeface] font_manager->matchFamilyStyle"; | |
+ if (!name.empty()) | |
+ DVLOG(0) << "[FontCache::CreateTypeface] name.c_str() " << name.c_str(); | |
+ DVLOG(0) << "[FontCache::CreateTypeface] font_description.SkiaFontStyle(width: " << font_description.SkiaFontStyle().width() << ", weight: " << font_description.SkiaFontStyle().weight() << ", slant: " << font_description.SkiaFontStyle().slant() << ")"; | |
return sk_sp<SkTypeface>(font_manager->matchFamilyStyle( | |
name.empty() ? nullptr : name.c_str(), font_description.SkiaFontStyle())); | |
} | |
@@ -264,14 +295,28 @@ | |
noto_color_emoji_from_gmscore)) { | |
typeface = CreateTypefaceFromUniqueName(creation_params); | |
} else { | |
+ DVLOG(0) << "[FontCache::CreateFontPlatformData] CreateTypeface(font_description, creation_params, name)"; | |
+ DVLOG(0) << "[FontCache::CreateFontPlatformData] font_description " << font_description.Family().ToString(); | |
+ DVLOG(0) << "[FontCache::CreateFontPlatformData] creation_params creation_type " << FontFaceCreationTypeToString(creation_params.CreationType()); | |
+ if (creation_params.CreationType() == kCreateFontByFamily) | |
+ DVLOG(0) << "[FontCache::CreateFontPlatformData] creation_params family " << creation_params.Family(); | |
+ if (creation_params.CreationType() == kCreateFontByFciIdAndTtcIndex) { | |
+ DVLOG(0) << "[FontCache::CreateFontPlatformData] creation_params filename " << creation_params.Filename(); | |
+ DVLOG(0) << "[FontCache::CreateFontPlatformData] creation_params FontconfigInterfaceId " << creation_params.FontconfigInterfaceId(); | |
+ DVLOG(0) << "[FontCache::CreateFontPlatformData] creation_params TtcIndex " << creation_params.TtcIndex(); | |
+ } | |
+ if (!name.empty()) | |
+ DVLOG(0) << "[FontCache::CreateFontPlatformData] name " << name; | |
typeface = CreateTypeface(font_description, creation_params, name); | |
} | |
#else | |
typeface = CreateTypeface(font_description, creation_params, name); | |
#endif | |
- if (!typeface) | |
+ if (!typeface) { | |
+ DVLOG(0) << "[FontCache::CreateFontPlatformData] NULL typeface " << name; | |
return nullptr; | |
+ } | |
bool synthetic_bold = | |
(font_description.Weight() > | |
@@ -293,6 +338,17 @@ | |
->GetResolvedFontFeatures() | |
: ResolvedFontFeatures(); | |
+ DVLOG(0) << "[FontCache::CreateFontPlatformData] std::make_unique<FontPlatformData> name " << name; | |
+ SkString typeface_family_name_; | |
+ typeface->getFamilyName(&typeface_family_name_); | |
+ DVLOG(0) << "[FontCache::CreateFontPlatformData] typeface getFamilyName() " << typeface_family_name_.c_str(); | |
+ DVLOG(0) << "[FontCache::CreateFontPlatformData] font_size " << font_size; | |
+ int is_synthetic_bold = synthetic_bold ? 1 : 0; | |
+ DVLOG(0) << "[FontCache::CreateFontPlatformData] synthetic_bold " << is_synthetic_bold; | |
+ int is_synthetic_italic = synthetic_italic ? 1 : 0; | |
+ DVLOG(0) << "[FontCache::CreateFontPlatformData] synthetic_italic " << is_synthetic_italic; | |
+ DVLOG(0) << "[FontCache::CreateFontPlatformData] text_rendering " << ToString(font_description.TextRendering()); | |
+ | |
std::unique_ptr<FontPlatformData> font_platform_data = | |
std::make_unique<FontPlatformData>( | |
typeface, name, font_size, synthetic_bold, synthetic_italic, | |
@@ -302,6 +358,7 @@ | |
font_platform_data->SetAvoidEmbeddedBitmaps( | |
BitmapGlyphsBlockList::ShouldAvoidEmbeddedBitmapsForTypeface(*typeface)); | |
+ DVLOG(0) << "[FontCache::CreateFontPlatformData] font_platform_data.FontFamilyName() " << font_platform_data->FontFamilyName(); | |
return font_platform_data; | |
} | |
#endif // !BUILDFLAG(IS_WIN) |
example debug log output of the following html:
<html>
<head/>
<body>
<h1 style="font-family: 'Segoe UI','Roboto',sans-serif; font-size:20pt;">你好😃,我能吃玻璃而不伤身体</h1>
</body>
</html>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
DevTools listening on ws://127.0.0.1:42871/devtools/browser/9fa689f4-a4cc-492a-a51a-1db07e797cd8
[28433:28433:0215/105512.488618:INFO:css_font_selector.cc(143)] [CSSFontSelector::CSSFontSelector] call CSSFontSelector(&treescope) constructor
[28433:28433:0215/105512.488721:INFO:font_cache.cc(88)] running FontCache::Get()
[28433:28433:0215/105512.488854:INFO:font.cc(64)] running GetOrCreateFontFallbackList
[28433:28433:0215/105512.488886:INFO:font.cc(65)] calling GetFontFallbackMap(font_selector).Get(font_description)
[28433:28433:0215/105512.488913:INFO:font.cc(66)] [GetOrCreateFontFallbackList] font_description "Times New Roman"
[28433:28433:0215/105512.488955:INFO:font_fallback_map.cc(31)] [FontFallbackMap::Get] running FontFallbacklist::Create(*this fontfallbackmap)
[28433:28433:0215/105512.488984:INFO:font_cache.cc(88)] running FontCache::Get()
[28433:28433:0215/105512.489024:INFO:font.cc(83)] [Font(font_description, font_selector)] Font constructor called with font_selector 0x7fff55309610
[28433:28433:0215/105512.921570:INFO:css_font_selector.cc(143)] [CSSFontSelector::CSSFontSelector] call CSSFontSelector(&treescope) constructor
[28433:28433:0215/105512.921667:INFO:font_cache.cc(88)] running FontCache::Get()
[28433:28433:0215/105512.921779:INFO:font.cc(64)] running GetOrCreateFontFallbackList
[28433:28433:0215/105512.921816:INFO:font.cc(65)] calling GetFontFallbackMap(font_selector).Get(font_description)
[28433:28433:0215/105512.921843:INFO:font.cc(66)] [GetOrCreateFontFallbackList] font_description "Times New Roman"
[28433:28433:0215/105512.921882:INFO:font_fallback_map.cc(31)] [FontFallbackMap::Get] running FontFallbacklist::Create(*this fontfallbackmap)
[28433:28433:0215/105512.921910:INFO:font_cache.cc(88)] running FontCache::Get()
[28433:28433:0215/105512.921940:INFO:font.cc(83)] [Font(font_description, font_selector)] Font constructor called with font_selector 0x7fff55308b10
[28433:28433:0215/105512.927462:INFO:font.cc(64)] running GetOrCreateFontFallbackList
[28433:28433:0215/105512.927568:INFO:font.cc(65)] calling GetFontFallbackMap(font_selector).Get(font_description)
[28433:28433:0215/105512.927601:INFO:font.cc(66)] [GetOrCreateFontFallbackList] font_description "Times New Roman"
[28433:28433:0215/105512.927643:INFO:font_fallback_map.cc(28)] [FontFallbackMap::Get] found existing FontFallbacklist in fallback_list_for_description_
[28433:28433:0215/105512.927671:INFO:font.cc(83)] [Font(font_description, font_selector)] Font constructor called with font_selector 0x7fff553008c0
[28433:28433:0215/105512.928097:INFO:font_builder.cc(559)] [FontBuilder::CreateFont] FontDescription{family: "Segoe UI, Roboto, sans-serif", computedsize: 26.6667}
[28433:28433:0215/105512.928169:INFO:font_builder.cc(534)] [FontBuilder::ComputeFontSelector] FontSelectorFromTreeScope
[28433:28433:0215/105512.928199:INFO:font_builder.cc(526)] [FontBuilder::FontSelectorFromTreeScope] tree_scope outerHTML "\n<h1 style="font-family: 'Segoe UI','Roboto',sans-serif; font-size:20pt;">\u4F60\u597D\uD83D\uDE03\uFF0C\u6211\u80FD\u5403\u73BB\u7483\u800C\u4E0D\u4F24\u8EAB\u4F53\n\n\n"
[28433:28433:0215/105512.928286:INFO:font_builder.cc(527)] [FontBuilder::FontSelectorFromTreeScope] tree_scope innerHTML "\n<h1 style="font-family: 'Segoe UI','Roboto',sans-serif; font-size:20pt;">\u4F60\u597D\uD83D\uDE03\uFF0C\u6211\u80FD\u5403\u73BB\u7483\u800C\u4E0D\u4F24\u8EAB\u4F53\n\n\n"
[28433:28433:0215/105512.928343:INFO:font.cc(64)] running GetOrCreateFontFallbackList
[28433:28433:0215/105512.928368:INFO:font.cc(65)] calling GetFontFallbackMap(font_selector).Get(font_description)
[28433:28433:0215/105512.928399:INFO:font.cc(66)] [GetOrCreateFontFallbackList] font_description "Segoe UI, Roboto, sans-serif"
[28433:28433:0215/105512.928434:INFO:font_fallback_map.cc(31)] [FontFallbackMap::Get] running FontFallbacklist::Create(*this fontfallbackmap)
[28433:28433:0215/105512.928462:INFO:font_cache.cc(88)] running FontCache::Get()
[28433:28433:0215/105512.928489:INFO:font.cc(83)] [Font(font_description, font_selector)] Font constructor called with font_selector 0x7fff552ff910
[28433:28433:0215/105512.928767:INFO:font.cc(64)] running GetOrCreateFontFallbackList
[28433:28433:0215/105512.928810:INFO:font.cc(65)] calling GetFontFallbackMap(font_selector).Get(font_description)
[28433:28433:0215/105512.928833:INFO:font.cc(66)] [GetOrCreateFontFallbackList] font_description "Times New Roman"
[28433:28433:0215/105512.928867:INFO:font_fallback_map.cc(28)] [FontFallbackMap::Get] found existing FontFallbacklist in fallback_list_for_description_
[28433:28433:0215/105512.928889:INFO:font.cc(83)] [Font(font_description, font_selector)] Font constructor called with font_selector 0x7fff5530b290
[28433:28433:0215/105512.929000:INFO:font_cache.cc(88)] running FontCache::Get()
[28433:28433:0215/105512.929292:INFO:font_cache.cc(88)] running FontCache::Get()
[28433:28433:0215/105512.929332:INFO:font_fallback_list.cc(291)] [FontFallbackList::FontDataAt] Running GetFontData, font_description"Segoe UI, Roboto, sans-serif", realized_font_index 0
[28433:28433:0215/105512.929369:INFO:font_fallback_list.cc(175)] [FontFallbackList::GetFontData] curr_family "Segoe UI"
[28433:28433:0215/105512.929395:INFO:font_fallback_list.cc(190)] [FontFallbackList::GetFontData] running font_selector_.GetFontData(), font_description"Segoe UI, Roboto, sans-serif", family_name"Segoe UI"
[28433:28433:0215/105512.929453:INFO:font_fallback_list.cc(195)] [FontFallbackList::GetFontData] running FontCache::Get().GetFontData(), font_description"Segoe UI, Roboto, sans-serif", family_name"Segoe UI"
[28433:28433:0215/105512.929487:INFO:font_cache.cc(88)] running FontCache::Get()
[28433:28433:0215/105512.929507:INFO:font_cache.cc(244)] [FontCache::GetFontData] family "Segoe UI"
[28433:28433:0215/105512.929533:INFO:font_cache.cc(168)] running FontCache::GetFontPlatformData()
[28433:28433:0215/105512.929555:INFO:font_cache.cc(169)] [FontCache::GetFontPlatformData] font_description"Segoe UI, Roboto, sans-serif"
[28433:28433:0215/105512.929584:INFO:font_cache.cc(170)] [FontCache::GetFontPlatformData] creation_params creation_type kCreateFontByFamily
[28433:28433:0215/105512.929607:INFO:font_cache.cc(172)] [FontCache::GetFontPlatformData] creation_params family "Segoe UI"
[28433:28433:0215/105512.929631:INFO:font_cache.cc(178)] [FontCache::GetFontPlatformData] alternative_font_name kAllowAlternate
[28433:28433:0215/105512.929658:INFO:font_platform_data_cache.cc(75)] [FontPlatformDataCache::GetOrCreateFontPlatformData] FontCacheKey hash 2683763
[28433:28433:0215/105512.929681:INFO:font_platform_data_cache.cc(88)] [FontPlatformDataCache::GetOrCreateFontPlatformData] font-size 26.66
[28433:28433:0215/105512.929705:INFO:font_platform_data_cache.cc(89)] [FontPlatformDataCache::GetOrCreateFontPlatformData] rounded_size 2666
[28433:28433:0215/105512.929740:INFO:font_platform_data_cache.cc(196)] [FontPlatformDataCache::SizedFontPlatformDataSet::GetOrCreateFontPlatformData] running font_cache->CreateFontPlatformData
[28433:28433:0215/105512.929765:INFO:font_cache_skia.cc(298)] [FontCache::CreateFontPlatformData] CreateTypeface(font_description, creation_params, name)
[28433:28433:0215/105512.929787:INFO:font_cache_skia.cc(299)] [FontCache::CreateFontPlatformData] font_description "Segoe UI, Roboto, sans-serif"
[28433:28433:0215/105512.929816:INFO:font_cache_skia.cc(300)] [FontCache::CreateFontPlatformData] creation_params creation_type kCreateFontByFamily
[28433:28433:0215/105512.929838:INFO:font_cache_skia.cc(302)] [FontCache::CreateFontPlatformData] creation_params family "Segoe UI"
[28433:28433:0215/105512.929866:INFO:font_cache_skia.cc(260)] [FontCache::CreateTypeface] initializing new SkFontMgr::RefDefault()
[28433:28433:0215/105512.929888:INFO:font_cache_skia.cc(263)] [FontCache::CreateTypeface] font_manager->matchFamilyStyle
[28433:28433:0215/105512.929910:INFO:font_cache_skia.cc(265)] [FontCache::CreateTypeface] name.c_str() Segoe UI
[28433:28433:0215/105512.929931:INFO:font_cache_skia.cc(266)] [FontCache::CreateTypeface] font_description.SkiaFontStyle(width: 5, weight: 700, slant: 0)
[28433:28433:0215/105512.934528:INFO:font_cache_skia.cc(317)] [FontCache::CreateFontPlatformData] NULL typeface Segoe UI
[28433:28433:0215/105512.934623:INFO:font_fallback_list.cc(175)] [FontFallbackList::GetFontData] curr_family "Roboto"
[28433:28433:0215/105512.934666:INFO:font_fallback_list.cc(190)] [FontFallbackList::GetFontData] running font_selector_.GetFontData(), font_description"Segoe UI, Roboto, sans-serif", family_name"Roboto"
[28433:28433:0215/105512.934714:INFO:font_fallback_list.cc(195)] [FontFallbackList::GetFontData] running FontCache::Get().GetFontData(), font_description"Segoe UI, Roboto, sans-serif", family_name"Roboto"
[28433:28433:0215/105512.934755:INFO:font_cache.cc(88)] running FontCache::Get()
[28433:28433:0215/105512.934782:INFO:font_cache.cc(244)] [FontCache::GetFontData] family "Roboto"
[28433:28433:0215/105512.934808:INFO:font_cache.cc(168)] running FontCache::GetFontPlatformData()
[28433:28433:0215/105512.934831:INFO:font_cache.cc(169)] [FontCache::GetFontPlatformData] font_description"Segoe UI, Roboto, sans-serif"
[28433:28433:0215/105512.934861:INFO:font_cache.cc(170)] [FontCache::GetFontPlatformData] creation_params creation_type kCreateFontByFamily
[28433:28433:0215/105512.934883:INFO:font_cache.cc(172)] [FontCache::GetFontPlatformData] creation_params family "Roboto"
[28433:28433:0215/105512.934907:INFO:font_cache.cc(178)] [FontCache::GetFontPlatformData] alternative_font_name kAllowAlternate
[28433:28433:0215/105512.934931:INFO:font_platform_data_cache.cc(75)] [FontPlatformDataCache::GetOrCreateFontPlatformData] FontCacheKey hash 14838767
[28433:28433:0215/105512.934956:INFO:font_platform_data_cache.cc(88)] [FontPlatformDataCache::GetOrCreateFontPlatformData] font-size 26.66
[28433:28433:0215/105512.934980:INFO:font_platform_data_cache.cc(89)] [FontPlatformDataCache::GetOrCreateFontPlatformData] rounded_size 2666
[28433:28433:0215/105512.935009:INFO:font_platform_data_cache.cc(196)] [FontPlatformDataCache::SizedFontPlatformDataSet::GetOrCreateFontPlatformData] running font_cache->CreateFontPlatformData
[28433:28433:0215/105512.935032:INFO:font_cache_skia.cc(298)] [FontCache::CreateFontPlatformData] CreateTypeface(font_description, creation_params, name)
[28433:28433:0215/105512.935054:INFO:font_cache_skia.cc(299)] [FontCache::CreateFontPlatformData] font_description "Segoe UI, Roboto, sans-serif"
[28433:28433:0215/105512.935083:INFO:font_cache_skia.cc(300)] [FontCache::CreateFontPlatformData] creation_params creation_type kCreateFontByFamily
[28433:28433:0215/105512.935105:INFO:font_cache_skia.cc(302)] [FontCache::CreateFontPlatformData] creation_params family "Roboto"
[28433:28433:0215/105512.935130:INFO:font_cache_skia.cc(260)] [FontCache::CreateTypeface] initializing new SkFontMgr::RefDefault()
[28433:28433:0215/105512.935152:INFO:font_cache_skia.cc(263)] [FontCache::CreateTypeface] font_manager->matchFamilyStyle
[28433:28433:0215/105512.935174:INFO:font_cache_skia.cc(265)] [FontCache::CreateTypeface] name.c_str() Roboto
[28433:28433:0215/105512.935196:INFO:font_cache_skia.cc(266)] [FontCache::CreateTypeface] font_description.SkiaFontStyle(width: 5, weight: 700, slant: 0)
[28433:28433:0215/105512.938809:INFO:font_cache_skia.cc(317)] [FontCache::CreateFontPlatformData] NULL typeface Roboto
[28433:28433:0215/105512.938892:INFO:font_fallback_list.cc(175)] [FontFallbackList::GetFontData] curr_family "sans-serif"
[28433:28433:0215/105512.938944:INFO:font_fallback_list.cc(190)] [FontFallbackList::GetFontData] running font_selector_.GetFontData(), font_description"Segoe UI, Roboto, sans-serif", family_name"sans-serif"
[28433:28433:0215/105512.939118:INFO:css_font_selector.cc(279)] [CSSFontSelector::GetFontData] family_name: "sans-serif"
[28433:28433:0215/105512.939194:INFO:css_font_selector.cc(280)] [CSSFontSelector::GetFontData] settings_family_name: "Arial"
[28433:28433:0215/105512.939243:INFO:css_font_selector.cc(281)] [CSSFontSelector::GetFontData] generic family: "SansSerif"
[28433:28433:0215/105512.939277:INFO:font_cache.cc(88)] running FontCache::Get()
[28433:28433:0215/105512.939301:INFO:font_cache.cc(244)] [FontCache::GetFontData] family "Arial"
[28433:28433:0215/105512.939327:INFO:font_cache.cc(168)] running FontCache::GetFontPlatformData()
[28433:28433:0215/105512.939352:INFO:font_cache.cc(169)] [FontCache::GetFontPlatformData] font_description"Segoe UI, Roboto, sans-serif"
[28433:28433:0215/105512.939383:INFO:font_cache.cc(170)] [FontCache::GetFontPlatformData] creation_params creation_type kCreateFontByFamily
[28433:28433:0215/105512.939406:INFO:font_cache.cc(172)] [FontCache::GetFontPlatformData] creation_params family "Arial"
[28433:28433:0215/105512.939430:INFO:font_cache.cc(178)] [FontCache::GetFontPlatformData] alternative_font_name kAllowAlternate
[28433:28433:0215/105512.939453:INFO:font_platform_data_cache.cc(75)] [FontPlatformDataCache::GetOrCreateFontPlatformData] FontCacheKey hash 7595885
[28433:28433:0215/105512.939477:INFO:font_platform_data_cache.cc(88)] [FontPlatformDataCache::GetOrCreateFontPlatformData] font-size 26.66
[28433:28433:0215/105512.939501:INFO:font_platform_data_cache.cc(89)] [FontPlatformDataCache::GetOrCreateFontPlatformData] rounded_size 2666
[28433:28433:0215/105512.939529:INFO:font_platform_data_cache.cc(196)] [FontPlatformDataCache::SizedFontPlatformDataSet::GetOrCreateFontPlatformData] running font_cache->CreateFontPlatformData
[28433:28433:0215/105512.939553:INFO:font_cache_skia.cc(298)] [FontCache::CreateFontPlatformData] CreateTypeface(font_description, creation_params, name)
[28433:28433:0215/105512.939574:INFO:font_cache_skia.cc(299)] [FontCache::CreateFontPlatformData] font_description "Segoe UI, Roboto, sans-serif"
[28433:28433:0215/105512.939603:INFO:font_cache_skia.cc(300)] [FontCache::CreateFontPlatformData] creation_params creation_type kCreateFontByFamily
[28433:28433:0215/105512.939625:INFO:font_cache_skia.cc(302)] [FontCache::CreateFontPlatformData] creation_params family "Arial"
[28433:28433:0215/105512.939649:INFO:font_cache_skia.cc(260)] [FontCache::CreateTypeface] initializing new SkFontMgr::RefDefault()
[28433:28433:0215/105512.939671:INFO:font_cache_skia.cc(263)] [FontCache::CreateTypeface] font_manager->matchFamilyStyle
[28433:28433:0215/105512.939693:INFO:font_cache_skia.cc(265)] [FontCache::CreateTypeface] name.c_str() Arial
[28433:28433:0215/105512.939714:INFO:font_cache_skia.cc(266)] [FontCache::CreateTypeface] font_description.SkiaFontStyle(width: 5, weight: 700, slant: 0)
[28433:28433:0215/105512.943475:INFO:font_cache_skia.cc(317)] [FontCache::CreateFontPlatformData] NULL typeface Arial
[28433:28433:0215/105512.943581:INFO:font_platform_data_cache.cc(75)] [FontPlatformDataCache::GetOrCreateFontPlatformData] FontCacheKey hash 13622740
[28433:28433:0215/105512.943629:INFO:font_platform_data_cache.cc(88)] [FontPlatformDataCache::GetOrCreateFontPlatformData] font-size 26.66
[28433:28433:0215/105512.943677:INFO:font_platform_data_cache.cc(89)] [FontPlatformDataCache::GetOrCreateFontPlatformData] rounded_size 2666
[28433:28433:0215/105512.943764:INFO:font_platform_data_cache.cc(196)] [FontPlatformDataCache::SizedFontPlatformDataSet::GetOrCreateFontPlatformData] running font_cache->CreateFontPlatformData
[28433:28433:0215/105512.943813:INFO:font_cache_skia.cc(298)] [FontCache::CreateFontPlatformData] CreateTypeface(font_description, creation_params, name)
[28433:28433:0215/105512.943855:INFO:font_cache_skia.cc(299)] [FontCache::CreateFontPlatformData] font_description "Segoe UI, Roboto, sans-serif"
[28433:28433:0215/105512.943919:INFO:font_cache_skia.cc(300)] [FontCache::CreateFontPlatformData] creation_params creation_type kCreateFontByFamily
[28433:28433:0215/105512.943964:INFO:font_cache_skia.cc(302)] [FontCache::CreateFontPlatformData] creation_params family "Helvetica"
[28433:28433:0215/105512.944010:INFO:font_cache_skia.cc(260)] [FontCache::CreateTypeface] initializing new SkFontMgr::RefDefault()
[28433:28433:0215/105512.944052:INFO:font_cache_skia.cc(263)] [FontCache::CreateTypeface] font_manager->matchFamilyStyle
[28433:28433:0215/105512.944098:INFO:font_cache_skia.cc(265)] [FontCache::CreateTypeface] name.c_str() Helvetica
[28433:28433:0215/105512.944139:INFO:font_cache_skia.cc(266)] [FontCache::CreateTypeface] font_description.SkiaFontStyle(width: 5, weight: 700, slant: 0)
[28433:28433:0215/105512.947826:INFO:font_cache_skia.cc(317)] [FontCache::CreateFontPlatformData] NULL typeface Helvetica
[28433:28433:0215/105512.947920:INFO:font_fallback_list.cc(195)] [FontFallbackList::GetFontData] running FontCache::Get().GetFontData(), font_description"Segoe UI, Roboto, sans-serif", family_name"sans-serif"
[28433:28433:0215/105512.948002:INFO:font_cache.cc(88)] running FontCache::Get()
[28433:28433:0215/105512.948043:INFO:font_cache.cc(244)] [FontCache::GetFontData] family "sans-serif"
[28433:28433:0215/105512.948089:INFO:font_cache.cc(168)] running FontCache::GetFontPlatformData()
[28433:28433:0215/105512.948130:INFO:font_cache.cc(169)] [FontCache::GetFontPlatformData] font_description"Segoe UI, Roboto, sans-serif"
[28433:28433:0215/105512.948187:INFO:font_cache.cc(170)] [FontCache::GetFontPlatformData] creation_params creation_type kCreateFontByFamily
[28433:28433:0215/105512.948226:INFO:font_cache.cc(172)] [FontCache::GetFontPlatformData] creation_params family "sans-serif"
[28433:28433:0215/105512.948271:INFO:font_cache.cc(178)] [FontCache::GetFontPlatformData] alternative_font_name kAllowAlternate
[28433:28433:0215/105512.948313:INFO:font_platform_data_cache.cc(75)] [FontPlatformDataCache::GetOrCreateFontPlatformData] FontCacheKey hash 1945870
[28433:28433:0215/105512.948355:INFO:font_platform_data_cache.cc(88)] [FontPlatformDataCache::GetOrCreateFontPlatformData] font-size 26.66
[28433:28433:0215/105512.948397:INFO:font_platform_data_cache.cc(89)] [FontPlatformDataCache::GetOrCreateFontPlatformData] rounded_size 2666
[28433:28433:0215/105512.948447:INFO:font_platform_data_cache.cc(196)] [FontPlatformDataCache::SizedFontPlatformDataSet::GetOrCreateFontPlatformData] running font_cache->CreateFontPlatformData
[28433:28433:0215/105512.948488:INFO:font_cache_skia.cc(298)] [FontCache::CreateFontPlatformData] CreateTypeface(font_description, creation_params, name)
[28433:28433:0215/105512.948527:INFO:font_cache_skia.cc(299)] [FontCache::CreateFontPlatformData] font_description "Segoe UI, Roboto, sans-serif"
[28433:28433:0215/105512.948584:INFO:font_cache_skia.cc(300)] [FontCache::CreateFontPlatformData] creation_params creation_type kCreateFontByFamily
[28433:28433:0215/105512.948609:INFO:font_cache_skia.cc(302)] [FontCache::CreateFontPlatformData] creation_params family "sans-serif"
[28433:28433:0215/105512.948634:INFO:font_cache_skia.cc(260)] [FontCache::CreateTypeface] initializing new SkFontMgr::RefDefault()
[28433:28433:0215/105512.948655:INFO:font_cache_skia.cc(263)] [FontCache::CreateTypeface] font_manager->matchFamilyStyle
[28433:28433:0215/105512.948677:INFO:font_cache_skia.cc(265)] [FontCache::CreateTypeface] name.c_str() sans-serif
[28433:28433:0215/105512.948698:INFO:font_cache_skia.cc(266)] [FontCache::CreateTypeface] font_description.SkiaFontStyle(width: 5, weight: 700, slant: 0)
[28433:28433:0215/105512.952041:INFO:font_cache_skia.cc(317)] [FontCache::CreateFontPlatformData] NULL typeface sans-serif
[28433:28433:0215/105512.952095:INFO:font_fallback_list.cc(214)] [FontFallbackList::GetFontData] try the user's preferred standard font
[28433:28433:0215/105512.952134:INFO:css_font_selector.cc(279)] [CSSFontSelector::GetFontData] family_name: "-webkit-standard"
[28433:28433:0215/105512.952166:INFO:css_font_selector.cc(280)] [CSSFontSelector::GetFontData] settings_family_name: "Times New Roman"
[28433:28433:0215/105512.952195:INFO:css_font_selector.cc(281)] [CSSFontSelector::GetFontData] generic family: "SansSerif"
[28433:28433:0215/105512.952226:INFO:font_cache.cc(88)] running FontCache::Get()
[28433:28433:0215/105512.952248:INFO:font_cache.cc(244)] [FontCache::GetFontData] family "Times New Roman"
[28433:28433:0215/105512.952274:INFO:font_cache.cc(168)] running FontCache::GetFontPlatformData()
[28433:28433:0215/105512.952296:INFO:font_cache.cc(169)] [FontCache::GetFontPlatformData] font_description"Segoe UI, Roboto, sans-serif"
[28433:28433:0215/105512.952325:INFO:font_cache.cc(170)] [FontCache::GetFontPlatformData] creation_params creation_type kCreateFontByFamily
[28433:28433:0215/105512.952347:INFO:font_cache.cc(172)] [FontCache::GetFontPlatformData] creation_params family "Times New Roman"
[28433:28433:0215/105512.952372:INFO:font_cache.cc(178)] [FontCache::GetFontPlatformData] alternative_font_name kAllowAlternate
[28433:28433:0215/105512.952395:INFO:font_platform_data_cache.cc(75)] [FontPlatformDataCache::GetOrCreateFontPlatformData] FontCacheKey hash 6716121
[28433:28433:0215/105512.952418:INFO:font_platform_data_cache.cc(88)] [FontPlatformDataCache::GetOrCreateFontPlatformData] font-size 26.66
[28433:28433:0215/105512.952442:INFO:font_platform_data_cache.cc(89)] [FontPlatformDataCache::GetOrCreateFontPlatformData] rounded_size 2666
[28433:28433:0215/105512.952473:INFO:font_platform_data_cache.cc(196)] [FontPlatformDataCache::SizedFontPlatformDataSet::GetOrCreateFontPlatformData] running font_cache->CreateFontPlatformData
[28433:28433:0215/105512.952496:INFO:font_cache_skia.cc(298)] [FontCache::CreateFontPlatformData] CreateTypeface(font_description, creation_params, name)
[28433:28433:0215/105512.952519:INFO:font_cache_skia.cc(299)] [FontCache::CreateFontPlatformData] font_description "Segoe UI, Roboto, sans-serif"
[28433:28433:0215/105512.952548:INFO:font_cache_skia.cc(300)] [FontCache::CreateFontPlatformData] creation_params creation_type kCreateFontByFamily
[28433:28433:0215/105512.952570:INFO:font_cache_skia.cc(302)] [FontCache::CreateFontPlatformData] creation_params family "Times New Roman"
[28433:28433:0215/105512.952595:INFO:font_cache_skia.cc(260)] [FontCache::CreateTypeface] initializing new SkFontMgr::RefDefault()
[28433:28433:0215/105512.952617:INFO:font_cache_skia.cc(263)] [FontCache::CreateTypeface] font_manager->matchFamilyStyle
[28433:28433:0215/105512.952639:INFO:font_cache_skia.cc(265)] [FontCache::CreateTypeface] name.c_str() Times New Roman
[28433:28433:0215/105512.952660:INFO:font_cache_skia.cc(266)] [FontCache::CreateTypeface] font_description.SkiaFontStyle(width: 5, weight: 700, slant: 0)
[28433:28433:0215/105512.955056:INFO:font_cache_skia.cc(317)] [FontCache::CreateFontPlatformData] NULL typeface Times New Roman
[28433:28433:0215/105512.955107:INFO:font_platform_data_cache.cc(75)] [FontPlatformDataCache::GetOrCreateFontPlatformData] FontCacheKey hash 544830
[28433:28433:0215/105512.955133:INFO:font_platform_data_cache.cc(88)] [FontPlatformDataCache::GetOrCreateFontPlatformData] font-size 26.66
[28433:28433:0215/105512.955159:INFO:font_platform_data_cache.cc(89)] [FontPlatformDataCache::GetOrCreateFontPlatformData] rounded_size 2666
[28433:28433:0215/105512.955189:INFO:font_platform_data_cache.cc(196)] [FontPlatformDataCache::SizedFontPlatformDataSet::GetOrCreateFontPlatformData] running font_cache->CreateFontPlatformData
[28433:28433:0215/105512.955215:INFO:font_cache_skia.cc(298)] [FontCache::CreateFontPlatformData] CreateTypeface(font_description, creation_params, name)
[28433:28433:0215/105512.955238:INFO:font_cache_skia.cc(299)] [FontCache::CreateFontPlatformData] font_description "Segoe UI, Roboto, sans-serif"
[28433:28433:0215/105512.955273:INFO:font_cache_skia.cc(300)] [FontCache::CreateFontPlatformData] creation_params creation_type kCreateFontByFamily
[28433:28433:0215/105512.955295:INFO:font_cache_skia.cc(302)] [FontCache::CreateFontPlatformData] creation_params family "Times"
[28433:28433:0215/105512.955320:INFO:font_cache_skia.cc(260)] [FontCache::CreateTypeface] initializing new SkFontMgr::RefDefault()
[28433:28433:0215/105512.955350:INFO:font_cache_skia.cc(263)] [FontCache::CreateTypeface] font_manager->matchFamilyStyle
[28433:28433:0215/105512.955371:INFO:font_cache_skia.cc(265)] [FontCache::CreateTypeface] name.c_str() Times
[28433:28433:0215/105512.955392:INFO:font_cache_skia.cc(266)] [FontCache::CreateTypeface] font_description.SkiaFontStyle(width: 5, weight: 700, slant: 0)
[28433:28433:0215/105512.957886:INFO:font_cache_skia.cc(317)] [FontCache::CreateFontPlatformData] NULL typeface Times
[28433:28433:0215/105512.957984:INFO:font_fallback_list.cc(224)] [FontFallbackList::GetFontData] FontCache::Get().GetLastResortFallbackFont, font_description"Segoe UI, Roboto, sans-serif"
[28433:28433:0215/105512.958065:INFO:font_cache.cc(88)] running FontCache::Get()
[28433:28433:0215/105512.958107:INFO:font_cache_skia.cc(142)] [FontCache::GetLastResortFallbackFont] description "Segoe UI, Roboto, sans-serif"
[28433:28433:0215/105512.958165:INFO:font_cache_skia.cc(144)] [FontCache::GetLastResortFallbackFont] GetFallbackFontFamily(description)"sans-serif"
[28433:28433:0215/105512.958213:INFO:font_cache.cc(168)] running FontCache::GetFontPlatformData()
[28433:28433:0215/105512.958254:INFO:font_cache.cc(169)] [FontCache::GetFontPlatformData] font_description"Segoe UI, Roboto, sans-serif"
[28433:28433:0215/105512.958309:INFO:font_cache.cc(170)] [FontCache::GetFontPlatformData] creation_params creation_type kCreateFontByFamily
[28433:28433:0215/105512.958348:INFO:font_cache.cc(172)] [FontCache::GetFontPlatformData] creation_params family "sans-serif"
[28433:28433:0215/105512.958393:INFO:font_cache.cc(178)] [FontCache::GetFontPlatformData] alternative_font_name kLastResort
[28433:28433:0215/105512.958436:INFO:font_platform_data_cache.cc(75)] [FontPlatformDataCache::GetOrCreateFontPlatformData] FontCacheKey hash 1945870
[28433:28433:0215/105512.958479:INFO:font_platform_data_cache.cc(88)] [FontPlatformDataCache::GetOrCreateFontPlatformData] font-size 26.66
[28433:28433:0215/105512.958524:INFO:font_platform_data_cache.cc(89)] [FontPlatformDataCache::GetOrCreateFontPlatformData] rounded_size 2666
[28433:28433:0215/105512.958570:INFO:font_cache_skia.cc(153)] [FontCache::GetLastResortFallbackFont] Testing Sans
[28433:28433:0215/105512.958613:INFO:font_cache.cc(168)] running FontCache::GetFontPlatformData()
[28433:28433:0215/105512.958654:INFO:font_cache.cc(169)] [FontCache::GetFontPlatformData] font_description"Segoe UI, Roboto, sans-serif"
[28433:28433:0215/105512.958701:INFO:font_cache.cc(170)] [FontCache::GetFontPlatformData] creation_params creation_type kCreateFontByFamily
[28433:28433:0215/105512.958728:INFO:font_cache.cc(172)] [FontCache::GetFontPlatformData] creation_params family "Sans"
[28433:28433:0215/105512.958752:INFO:font_cache.cc(178)] [FontCache::GetFontPlatformData] alternative_font_name kLastResort
[28433:28433:0215/105512.958774:INFO:font_platform_data_cache.cc(75)] [FontPlatformDataCache::GetOrCreateFontPlatformData] FontCacheKey hash 12895598
[28433:28433:0215/105512.958797:INFO:font_platform_data_cache.cc(88)] [FontPlatformDataCache::GetOrCreateFontPlatformData] font-size 26.66
[28433:28433:0215/105512.958819:INFO:font_platform_data_cache.cc(89)] [FontPlatformDataCache::GetOrCreateFontPlatformData] rounded_size 2666
[28433:28433:0215/105512.958871:INFO:font_platform_data_cache.cc(196)] [FontPlatformDataCache::SizedFontPlatformDataSet::GetOrCreateFontPlatformData] running font_cache->CreateFontPlatformData
[28433:28433:0215/105512.958895:INFO:font_cache_skia.cc(298)] [FontCache::CreateFontPlatformData] CreateTypeface(font_description, creation_params, name)
[28433:28433:0215/105512.958916:INFO:font_cache_skia.cc(299)] [FontCache::CreateFontPlatformData] font_description "Segoe UI, Roboto, sans-serif"
[28433:28433:0215/105512.958946:INFO:font_cache_skia.cc(300)] [FontCache::CreateFontPlatformData] creation_params creation_type kCreateFontByFamily
[28433:28433:0215/105512.958968:INFO:font_cache_skia.cc(302)] [FontCache::CreateFontPlatformData] creation_params family "Sans"
[28433:28433:0215/105512.958993:INFO:font_cache_skia.cc(260)] [FontCache::CreateTypeface] initializing new SkFontMgr::RefDefault()
[28433:28433:0215/105512.959016:INFO:font_cache_skia.cc(263)] [FontCache::CreateTypeface] font_manager->matchFamilyStyle
[28433:28433:0215/105512.959037:INFO:font_cache_skia.cc(265)] [FontCache::CreateTypeface] name.c_str() Sans
[28433:28433:0215/105512.959059:INFO:font_cache_skia.cc(266)] [FontCache::CreateTypeface] font_description.SkiaFontStyle(width: 5, weight: 700, slant: 0)
[28433:28433:0215/105512.962680:INFO:font_cache_skia.cc(341)] [FontCache::CreateFontPlatformData] std::make_unique name Sans
[28433:28433:0215/105512.962785:INFO:font_cache_skia.cc(344)] [FontCache::CreateFontPlatformData] typeface getFamilyName() Noto Sans CJK SC
[28433:28433:0215/105512.962838:INFO:font_cache_skia.cc(345)] [FontCache::CreateFontPlatformData] font_size 26.66
[28433:28433:0215/105512.962887:INFO:font_cache_skia.cc(347)] [FontCache::CreateFontPlatformData] synthetic_bold 0
[28433:28433:0215/105512.962930:INFO:font_cache_skia.cc(349)] [FontCache::CreateFontPlatformData] synthetic_italic 0
[28433:28433:0215/105512.962971:INFO:font_cache_skia.cc(350)] [FontCache::CreateFontPlatformData] text_rendering "Auto"
[28433:28433:0215/105512.966600:INFO:font_cache_skia.cc(361)] [FontCache::CreateFontPlatformData] font_platform_data.FontFamilyName() "Noto Sans CJK SC"
[28433:28433:0215/105512.968127:INFO:font_fallback_list.cc(294)] [FontFallbackList::FontDataAt] Got result
[28433:28433:0215/105512.968189:INFO:font_fallback_list.cc(129)] [FontFallbackList::DeterminePrimarySimpleFontDataCore] SegmentedFontData processing
[28433:28433:0215/105512.968218:INFO:font_fallback_list.cc(143)] [FontFallbackList::DeterminePrimarySimpleFontDataCore] font_data_for_space "Noto Sans CJK SC"
[28433:28433:0215/105512.968297:INFO:harfbuzz_shaper.cc(754)] [HarfBuzzShaper::ShapeSegment] font_description: "Segoe UI, Roboto, sans-serif"
[28433:28433:0215/105512.968336:INFO:harfbuzz_shaper.cc(755)] [HarfBuzzShaper::ShapeSegment] font_fallback_priority: kText
[28433:28433:0215/105512.968367:INFO:font_fallback_list.cc(273)] [FontFallbackList::FontDataAt] This fallback font is already in our list:
[28433:28433:0215/105512.968391:INFO:font_fallback_list.cc(274)] [FontFallbackList::FontDataAt] realized_font_index of font_list_ size (0/1)
[28433:28433:0215/105512.968418:INFO:font_fallback_list.cc(275)] [FontFallbackList::FontDataAt] the result FontData: "Noto Sans CJK SC"
[28433:28433:0215/105512.968457:INFO:font_fallback_list.cc(273)] [FontFallbackList::FontDataAt] This fallback font is already in our list:
[28433:28433:0215/105512.968481:INFO:font_fallback_list.cc(274)] [FontFallbackList::FontDataAt] realized_font_index of font_list_ size (0/1)
[28433:28433:0215/105512.968505:INFO:font_fallback_list.cc(275)] [FontFallbackList::FontDataAt] the result FontData: "Noto Sans CJK SC"
[28433:28433:0215/105512.968561:INFO:harfbuzz_shaper.cc(790)] [HarfbuzzShaper::ShapeSegment] fallback_chars_hint: "你"
[28433:28433:0215/105512.968589:INFO:font_fallback_iterator.cc(126)] [FontFallbackIterator::Next] fallball_stage_: kFontGroupFonts
[28433:28433:0215/105512.968613:INFO:font_fallback_iterator.cc(196)] [FontFallbackIterator::Next] Running font_fallback_list_->FontDataAt
[28433:28433:0215/105512.968637:INFO:font_fallback_iterator.cc(197)] [FontFallbackIterator::Next] font_description_ "Segoe UI, Roboto, sans-serif"
[28433:28433:0215/105512.968668:INFO:font_fallback_iterator.cc(198)] [FontFallbackIterator::Next] current_font_data_index_(realized_font_index) 0
[28433:28433:0215/105512.968692:INFO:font_fallback_list.cc(273)] [FontFallbackList::FontDataAt] This fallback font is already in our list:
[28433:28433:0215/105512.968715:INFO:font_fallback_list.cc(274)] [FontFallbackList::FontDataAt] realized_font_index of font_list_ size (0/1)
[28433:28433:0215/105512.968740:INFO:font_fallback_list.cc(275)] [FontFallbackList::FontDataAt] the result FontData: "Noto Sans CJK SC"
[28433:28433:0215/105512.968776:INFO:font_fallback_iterator.cc(215)] [FontFallbackIterator::Next] font_data is not segmented
[28433:28433:0215/105512.969658:INFO:harfbuzz_shaper.cc(754)] [HarfBuzzShaper::ShapeSegment] font_description: "Segoe UI, Roboto, sans-serif"
[28433:28433:0215/105512.969724:INFO:harfbuzz_shaper.cc(755)] [HarfBuzzShaper::ShapeSegment] font_fallback_priority: kEmojiEmoji
[28433:28433:0215/105512.969752:INFO:font_fallback_list.cc(273)] [FontFallbackList::FontDataAt] This fallback font is already in our list:
[28433:28433:0215/105512.969776:INFO:font_fallback_list.cc(274)] [FontFallbackList::FontDataAt] realized_font_index of font_list_ size (0/1)
[28433:28433:0215/105512.969801:INFO:font_fallback_list.cc(275)] [FontFallbackList::FontDataAt] the result FontData: "Noto Sans CJK SC"
[28433:28433:0215/105512.969849:INFO:font_fallback_list.cc(273)] [FontFallbackList::FontDataAt] This fallback font is already in our list:
[28433:28433:0215/105512.969874:INFO:font_fallback_list.cc(274)] [FontFallbackList::FontDataAt] realized_font_index of font_list_ size (0/1)
[28433:28433:0215/105512.969898:INFO:font_fallback_list.cc(275)] [FontFallbackList::FontDataAt] the result FontData: "Noto Sans CJK SC"
[28433:28433:0215/105512.969938:INFO:harfbuzz_shaper.cc(790)] [HarfbuzzShaper::ShapeSegment] fallback_chars_hint: "😃"
[28433:28433:0215/105512.969962:INFO:font_fallback_iterator.cc(126)] [FontFallbackIterator::Next] fallball_stage_: kFontGroupFonts
[28433:28433:0215/105512.969985:INFO:font_fallback_iterator.cc(196)] [FontFallbackIterator::Next] Running font_fallback_list_->FontDataAt
[28433:28433:0215/105512.970009:INFO:font_fallback_iterator.cc(197)] [FontFallbackIterator::Next] font_description_ "Segoe UI, Roboto, sans-serif"
[28433:28433:0215/105512.970039:INFO:font_fallback_iterator.cc(198)] [FontFallbackIterator::Next] current_font_data_index_(realized_font_index) 0
[28433:28433:0215/105512.970063:INFO:font_fallback_list.cc(273)] [FontFallbackList::FontDataAt] This fallback font is already in our list:
[28433:28433:0215/105512.970085:INFO:font_fallback_list.cc(274)] [FontFallbackList::FontDataAt] realized_font_index of font_list_ size (0/1)
[28433:28433:0215/105512.970109:INFO:font_fallback_list.cc(275)] [FontFallbackList::FontDataAt] the result FontData: "Noto Sans CJK SC"
[28433:28433:0215/105512.970145:INFO:font_fallback_iterator.cc(215)] [FontFallbackIterator::Next] font_data is not segmented
[28433:28433:0215/105512.970213:INFO:harfbuzz_shaper.cc(790)] [HarfbuzzShaper::ShapeSegment] fallback_chars_hint: "😃"
[28433:28433:0215/105512.970245:INFO:font_fallback_iterator.cc(126)] [FontFallbackIterator::Next] fallball_stage_: kFontGroupFonts
[28433:28433:0215/105512.970269:INFO:font_fallback_iterator.cc(196)] [FontFallbackIterator::Next] Running font_fallback_list_->FontDataAt
[28433:28433:0215/105512.970292:INFO:font_fallback_iterator.cc(197)] [FontFallbackIterator::Next] font_description_ "Segoe UI, Roboto, sans-serif"
[28433:28433:0215/105512.970326:INFO:font_fallback_iterator.cc(198)] [FontFallbackIterator::Next] current_font_data_index_(realized_font_index) 1
[28433:28433:0215/105512.970349:INFO:font_fallback_iterator.cc(126)] [FontFallbackIterator::Next] fallball_stage_: kFallbackPriorityFonts
[28433:28433:0215/105512.970372:INFO:font_fallback_iterator.cc(135)] [FontFallbackIterator::Next] FallbackPriorityFont
[28433:28433:0215/105512.970396:INFO:font_fallback_iterator.cc(269)] [FontFallbackIterator::FallbackPriorityFont] FontCache::Get().FallbackFontForCharacter
[28433:28433:0215/105512.970420:INFO:font_fallback_iterator.cc(270)] [FontFallbackIterator::FallbackPriorityFont] font_description_ "Segoe UI, Roboto, sans-serif"
[28433:28433:0215/105512.970456:INFO:font_fallback_iterator.cc(271)] [FontFallbackIterator::FallbackPriorityFont] hint 😃
[28433:28433:0215/105512.970482:INFO:font_fallback_iterator.cc(272)] [FontFallbackIterator::FallbackPriorityFont] fallback_priority_ kEmojiEmoji
[28433:28433:0215/105512.970506:INFO:font_fallback_iterator.cc(273)] [FontFallbackIterator::FallbackPriorityFont] font_fallback_list_->PrimarySimpleFontData(font_description_)"Noto Sans CJK SC"
[28433:28433:0215/105512.970546:INFO:font_cache.cc(88)] running FontCache::Get()
[28433:28433:0215/105512.977816:INFO:font_cache.cc(168)] running FontCache::GetFontPlatformData()
[28433:28433:0215/105512.977999:INFO:font_cache.cc(169)] [FontCache::GetFontPlatformData] font_description"Segoe UI, Roboto, sans-serif"
[28433:28433:0215/105512.978145:INFO:font_cache.cc(170)] [FontCache::GetFontPlatformData] creation_params creation_type kCreateFontByFciIdAndTtcIndex
[28433:28433:0215/105512.978206:INFO:font_cache.cc(174)] [FontCache::GetFontPlatformData] creation_params filename /usr/share/fonts/truetype/NotoColorEmoji.ttf
[28433:28433:0215/105512.978259:INFO:font_cache.cc(175)] [FontCache::GetFontPlatformData] creation_params FontconfigInterfaceId 1
[28433:28433:0215/105512.978319:INFO:font_cache.cc(176)] [FontCache::GetFontPlatformData] creation_params TtcIndex 0
[28433:28433:0215/105512.978370:INFO:font_cache.cc(178)] [FontCache::GetFontPlatformData] alternative_font_name kAllowAlternate
[28433:28433:0215/105512.978427:INFO:font_platform_data_cache.cc(75)] [FontPlatformDataCache::GetOrCreateFontPlatformData] FontCacheKey hash 9186465
[28433:28433:0215/105512.978478:INFO:font_platform_data_cache.cc(88)] [FontPlatformDataCache::GetOrCreateFontPlatformData] font-size 26.66
[28433:28433:0215/105512.978531:INFO:font_platform_data_cache.cc(89)] [FontPlatformDataCache::GetOrCreateFontPlatformData] rounded_size 2666
[28433:28433:0215/105512.978595:INFO:font_platform_data_cache.cc(196)] [FontPlatformDataCache::SizedFontPlatformDataSet::GetOrCreateFontPlatformData] running font_cache->CreateFontPlatformData
[28433:28433:0215/105512.978643:INFO:font_cache_skia.cc(298)] [FontCache::CreateFontPlatformData] CreateTypeface(font_description, creation_params, name)
[28433:28433:0215/105512.978666:INFO:font_cache_skia.cc(299)] [FontCache::CreateFontPlatformData] font_description "Segoe UI, Roboto, sans-serif"
[28433:28433:0215/105512.978697:INFO:font_cache_skia.cc(300)] [FontCache::CreateFontPlatformData] creation_params creation_type kCreateFontByFciIdAndTtcIndex
[28433:28433:0215/105512.978720:INFO:font_cache_skia.cc(304)] [FontCache::CreateFontPlatformData] creation_params filename /usr/share/fonts/truetype/NotoColorEmoji.ttf
[28433:28433:0215/105512.978742:INFO:font_cache_skia.cc(305)] [FontCache::CreateFontPlatformData] creation_params FontconfigInterfaceId 1
[28433:28433:0215/105512.978766:INFO:font_cache_skia.cc(306)] [FontCache::CreateFontPlatformData] creation_params TtcIndex 0
[28433:28433:0215/105512.978789:INFO:font_cache_skia.cc(230)] [FontCache::CreateTypeface] creation_params.CreationType() is kCreateFontByFciIdAndTtcIndex
[28433:28433:0215/105512.979505:INFO:font_cache_skia.cc(341)] [FontCache::CreateFontPlatformData] std::make_unique name
[28433:28433:0215/105512.979545:INFO:font_cache_skia.cc(344)] [FontCache::CreateFontPlatformData] typeface getFamilyName() Noto Color Emoji
[28433:28433:0215/105512.979569:INFO:font_cache_skia.cc(345)] [FontCache::CreateFontPlatformData] font_size 26.66
[28433:28433:0215/105512.979593:INFO:font_cache_skia.cc(347)] [FontCache::CreateFontPlatformData] synthetic_bold 0
[28433:28433:0215/105512.979616:INFO:font_cache_skia.cc(349)] [FontCache::CreateFontPlatformData] synthetic_italic 0
[28433:28433:0215/105512.979639:INFO:font_cache_skia.cc(350)] [FontCache::CreateFontPlatformData] text_rendering "Auto"
[28433:28433:0215/105512.979678:INFO:font_cache_skia.cc(361)] [FontCache::CreateFontPlatformData] font_platform_data.FontFamilyName() "Noto Color Emoji"
[28433:28433:0215/105512.980592:INFO:harfbuzz_shaper.cc(754)] [HarfBuzzShaper::ShapeSegment] font_description: "Segoe UI, Roboto, sans-serif"
[28433:28433:0215/105512.980649:INFO:harfbuzz_shaper.cc(755)] [HarfBuzzShaper::ShapeSegment] font_fallback_priority: kText
[28433:28433:0215/105512.980676:INFO:font_fallback_list.cc(273)] [FontFallbackList::FontDataAt] This fallback font is already in our list:
[28433:28433:0215/105512.980698:INFO:font_fallback_list.cc(274)] [FontFallbackList::FontDataAt] realized_font_index of font_list_ size (0/1)
[28433:28433:0215/105512.980768:INFO:font_fallback_list.cc(275)] [FontFallbackList::FontDataAt] the result FontData: "Noto Sans CJK SC"
[28433:28433:0215/105512.980902:INFO:font_fallback_list.cc(273)] [FontFallbackList::FontDataAt] This fallback font is already in our list:
[28433:28433:0215/105512.980950:INFO:font_fallback_list.cc(274)] [FontFallbackList::FontDataAt] realized_font_index of font_list_ size (0/1)
[28433:28433:0215/105512.980994:INFO:font_fallback_list.cc(275)] [FontFallbackList::FontDataAt] the result FontData: "Noto Sans CJK SC"
[28433:28433:0215/105512.981076:INFO:harfbuzz_shaper.cc(790)] [HarfbuzzShaper::ShapeSegment] fallback_chars_hint: ",我"
[28433:28433:0215/105512.981119:INFO:font_fallback_iterator.cc(126)] [FontFallbackIterator::Next] fallball_stage_: kFontGroupFonts
[28433:28433:0215/105512.981161:INFO:font_fallback_iterator.cc(196)] [FontFallbackIterator::Next] Running font_fallback_list_->FontDataAt
[28433:28433:0215/105512.981202:INFO:font_fallback_iterator.cc(197)] [FontFallbackIterator::Next] font_description_ "Segoe UI, Roboto, sans-serif"
[28433:28433:0215/105512.981259:INFO:font_fallback_iterator.cc(198)] [FontFallbackIterator::Next] current_font_data_index_(realized_font_index) 0
[28433:28433:0215/105512.981299:INFO:font_fallback_list.cc(273)] [FontFallbackList::FontDataAt] This fallback font is already in our list:
[28433:28433:0215/105512.981338:INFO:font_fallback_list.cc(274)] [FontFallbackList::FontDataAt] realized_font_index of font_list_ size (0/1)
[28433:28433:0215/105512.981379:INFO:font_fallback_list.cc(275)] [FontFallbackList::FontDataAt] the result FontData: "Noto Sans CJK SC"
[28433:28433:0215/105512.981444:INFO:font_fallback_iterator.cc(215)] [FontFallbackIterator::Next] font_data is not segmented
[28433:28433:0215/105512.982724:INFO:font_cache.cc(88)] running FontCache::Get()
[28433:28433:0215/105512.983562:INFO:font_cache.cc(88)] running FontCache::Get()
[28433:28433:0215/105512.984267:INFO:font_cache.cc(88)] running FontCache::Get()