diff --git a/third_party/txt/src/txt/font_collection.cc b/third_party/txt/src/txt/font_collection.cc index 90fd5db378c43..70104d90f8506 100644 --- a/third_party/txt/src/txt/font_collection.cc +++ b/third_party/txt/src/txt/font_collection.cc @@ -315,19 +315,20 @@ void FontCollection::ClearFontFamilyCache() { sk_sp FontCollection::CreateSktFontCollection() { - sk_sp skt_collection = - sk_make_sp(); - - skt_collection->setDefaultFontManager(default_font_manager_, - GetDefaultFontFamily().c_str()); - skt_collection->setAssetFontManager(asset_font_manager_); - skt_collection->setDynamicFontManager(dynamic_font_manager_); - skt_collection->setTestFontManager(test_font_manager_); - if (!enable_font_fallback_) { - skt_collection->disableFontFallback(); + if (!skt_collection_) { + skt_collection_ = sk_make_sp(); + + skt_collection_->setDefaultFontManager(default_font_manager_, + GetDefaultFontFamily().c_str()); + skt_collection_->setAssetFontManager(asset_font_manager_); + skt_collection_->setDynamicFontManager(dynamic_font_manager_); + skt_collection_->setTestFontManager(test_font_manager_); + if (!enable_font_fallback_) { + skt_collection_->disableFontFallback(); + } } - return skt_collection; + return skt_collection_; } #endif // FLUTTER_ENABLE_SKSHAPER diff --git a/third_party/txt/src/txt/font_collection.h b/third_party/txt/src/txt/font_collection.h index c1b3d9f0938fb..67e62cacbb874 100644 --- a/third_party/txt/src/txt/font_collection.h +++ b/third_party/txt/src/txt/font_collection.h @@ -107,6 +107,11 @@ class FontCollection : public std::enable_shared_from_this { fallback_fonts_for_locale_; bool enable_font_fallback_; +#if FLUTTER_ENABLE_SKSHAPER + // An equivalent font collection usable by the Skia text shaper library. + sk_sp skt_collection_; +#endif + // Performs the actual work of MatchFallbackFont. The result is cached in // fallback_match_cache_. const std::shared_ptr& DoMatchFallbackFont(