Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 9524a18

Browse files
authored
Fix text missing in performance overlay (on Android) (#49035)
The Android fontmgr does not return a default typeface when a nullptr style is passed in [1] (I'm not sure if this is a feature or a bug). However, calling legacyMakeTypeface will use a default sans-serif font. This adds in that backup behavior. [1] https://github.com/google/skia/blob/4170fba2d89fc0319aad5702a15acdee4470f606/src/ports/SkFontMgr_android.cpp#L310-L312 ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide] and the [C++, Objective-C, Java style guides]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I added new tests to check the change I am making or feature I am adding, or the PR is [test-exempt]. See [testing the engine] for instructions on writing and running engine tests. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I signed the [CLA]. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/wiki/Tree-hygiene#overview [Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene [test-exempt]: https://github.com/flutter/flutter/wiki/Tree-hygiene#tests [Flutter Style Guide]: https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style [testing the engine]: https://github.com/flutter/flutter/wiki/Testing-the-engine [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/wiki/Chat
1 parent 7a50221 commit 9524a18

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

flow/layers/performance_overlay_layer.cc

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,19 @@ sk_sp<SkTextBlob> PerformanceOverlayLayer::MakeStatisticsText(
7676
SkFont font;
7777
sk_sp<SkFontMgr> font_mgr = txt::GetDefaultFontManager();
7878
if (font_path == "") {
79-
font = SkFont(font_mgr->matchFamilyStyle(nullptr, {}), 15);
79+
if (sk_sp<SkTypeface> face = font_mgr->matchFamilyStyle(nullptr, {})) {
80+
font = SkFont(face, 15);
81+
} else {
82+
// In Skia's Android fontmgr, matchFamilyStyle can return null instead
83+
// of falling back to a default typeface. If that's the case, we can use
84+
// legacyMakeTypeface, which *does* use that default typeface.
85+
font = SkFont(font_mgr->legacyMakeTypeface(nullptr, {}), 15);
86+
}
8087
} else {
8188
font = SkFont(font_mgr->makeFromFile(font_path.c_str()), 15);
8289
}
90+
// Make sure there's not an empty typeface returned, or we won't see any text.
91+
FML_DCHECK(font.getTypeface()->countGlyphs() > 0);
8392

8493
double max_ms_per_frame = stopwatch.MaxDelta().ToMillisecondsF();
8594
double average_ms_per_frame = stopwatch.AverageDelta().ToMillisecondsF();

0 commit comments

Comments
 (0)