-
Notifications
You must be signed in to change notification settings - Fork 29.8k
Load fonts in the order addFont is called #174253
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
87f37d9 to
d106b2a
Compare
Piinks
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, thanks for this. Sorry it appeared to have fallen through the review queue. 🙏
|
autosubmit label was removed for flutter/flutter/174253, because - The status or check suite Linux firebase_release_smoke_test has failed. Please fix the issues identified (or deflake) before re-applying this label. |
86c60f7 to
1b5feac
Compare
|
autosubmit label was removed for flutter/flutter/174253, because - The status or check suite Linux web_long_running_tests_5_5 has failed. Please fix the issues identified (or deflake) before re-applying this label.
|
|
autosubmit label was removed for flutter/flutter/174253, because - The status or check suite Linux_android_emu_vulkan_stable android_engine_vulkan_tests has failed. Please fix the issues identified (or deflake) before re-applying this label. |
|
Thanks! |
Manual roll requested by bmparr@google.com flutter/flutter@9ff2767...4a04204 2025-09-23 mohellebiabdessalem@gmail.com Simplify asserts in `FlutterMutatorTest` (flutter/flutter#175730) 2025-09-23 mohellebiabdessalem@gmail.com Improve code quality in `AccessibilityBridgeTest.java` (flutter/flutter#175718) 2025-09-23 mohellebiabdessalem@gmail.com Fix linter issues in `VsyncWaiterTest` Capital L for long values (flutter/flutter#175780) 2025-09-23 mohellebiabdessalem@gmail.com Fix wrong order of asserts arguments (flutter/flutter#175726) 2025-09-23 mohellebiabdessalem@gmail.com Simplify test asserts and use lambdas (flutter/flutter#175727) 2025-09-23 mohellebiabdessalem@gmail.com Remove unused imports, fix assertion order, add non null annotations to `ImageReaderPlatformViewRenderTargetTest.java` (flutter/flutter#175723) 2025-09-23 mohellebiabdessalem@gmail.com Remove unnecessary `String.valueOf` in `KeyboardManager.java` (flutter/flutter#175502) 2025-09-23 mohellebiabdessalem@gmail.com Fix outdated link of `intl` package to point to the correct new location (flutter/flutter#174498) 2025-09-23 engine-flutter-autoroll@skia.org Roll Packages from 45c9a84 to 3413b65 (4 revisions) (flutter/flutter#175854) 2025-09-23 mohellebiabdessalem@gmail.com Fix typo in tests `README` (flutter/flutter#175788) 2025-09-23 byoungchan.lee@gmx.com Update maximum known Gradle version to 9.1.0 (flutter/flutter#175543) 2025-09-23 engine-flutter-autoroll@skia.org Roll Dart SDK from 9e943fe076c8 to 14b4ced3022a (5 revisions) (flutter/flutter#175843) 2025-09-23 bruno.leroux@gmail.com Document how to hide counter in TextField.maxLength (flutter/flutter#175797) 2025-09-23 bruno.leroux@gmail.com [a11y-app] Fix Autocomplete semantics label (flutter/flutter#175409) 2025-09-23 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from CcCe3HpQtBYhTZscb... to naeytagBIBEpKgZNZ... (flutter/flutter#175824) 2025-09-23 engine-flutter-autoroll@skia.org Roll Skia from a38a531dec1d to cabeab8cb22c (16 revisions) (flutter/flutter#175822) 2025-09-23 jiahaog@users.noreply.github.com Load fonts in the order addFont is called (flutter/flutter#174253) 2025-09-22 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#175545) 2025-09-22 mohellebiabdessalem@gmail.com Remove `name` field form `SupportedPlatform` enum (flutter/flutter#175611) 2025-09-22 mdebbar@google.com [web] Cleanup opportunities post renderer unification (flutter/flutter#174659) 2025-09-22 mohellebiabdessalem@gmail.com Update `KeyChannelResponder.java` to use method reference (flutter/flutter#175510) 2025-09-22 dominik@roszkowski.dev Update docs/engine/contributing/Compiling-the-engine.md with macOS build steps (flutter/flutter#175716) 2025-09-22 bkonyi@google.com [ Widget Preview ] Allow for custom `Preview` annotations, add support for runtime transformations (flutter/flutter#175535) 2025-09-22 mohellebiabdessalem@gmail.com Remove unnecessary public modifier in `KeyboardManager.java` (flutter/flutter#175500) 2025-09-22 muhatashim@google.com bump robolectric and java to 21 (flutter/flutter#175550) 2025-09-22 dixita0607@users.noreply.github.com Fix: Update docs tool tag to sample in ImageProvider (flutter/flutter#175256) 2025-09-22 stuartmorgan@google.com Roll Packages from 3d5c419 to 45c9a84 (flutter/flutter#175794) 2025-09-21 dkwingsmt@users.noreply.github.com Correctly implement PlatformViews' cursors on Web (flutter/flutter#174300) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC bmparr@google.com,stuartmorgan@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Before this change, `load` loads fonts in a non-deterministic order. After this change, it loads the fonts sequentially. See cl/797583429 for the full context. We found that the order of how fonts load for a specific font family actually affects runtime behavior, and the current non-deterministic order of loading fonts leads to flakiness. Consider the following: - foo.ttf has glyphs 'A' and 'B' - foo-italic.ttf only has glyph 'B' If `addFont(foo-italic.ttf)` is called before `addFont(foo.ttf)`, the font loader will load `foo-italic.ttf` first and use that as the base font. When looking for the 'A' glyph, it may will look for the glyph only in `foo-italic.ttf`, which doesn't have it, and will show an incorrect empty placeholder glyph. ## 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], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. --------- Co-authored-by: Kate Lovett <katelovett@google.com>
|
Note that this was necessary in the cl/797583429 case because the italic TTF file used there did not contain the correct data indicating that it is an italic font. The scoring algorithm in However, in this situation the italic font asset was missing data like the Ideally the tables within that font should be fixed. But this PR will ensure that the results are consistent if there is an error in the font that produces the wrong scores. |
|
Thanks for looking it and sharing the root cause! |
Before this change, `load` loads fonts in a non-deterministic order. After this change, it loads the fonts sequentially. See cl/797583429 for the full context. We found that the order of how fonts load for a specific font family actually affects runtime behavior, and the current non-deterministic order of loading fonts leads to flakiness. Consider the following: - foo.ttf has glyphs 'A' and 'B' - foo-italic.ttf only has glyph 'B' If `addFont(foo-italic.ttf)` is called before `addFont(foo.ttf)`, the font loader will load `foo-italic.ttf` first and use that as the base font. When looking for the 'A' glyph, it may will look for the glyph only in `foo-italic.ttf`, which doesn't have it, and will show an incorrect empty placeholder glyph. ## 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], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. --------- Co-authored-by: Kate Lovett <katelovett@google.com>
Before this change,
loadloads fonts in a non-deterministic order. After this change, it loads the fonts sequentially.See cl/797583429 for the full context. We found that the order of how fonts load for a specific font family actually affects runtime behavior, and the current non-deterministic order of loading fonts leads to flakiness.
Consider the following:
If
addFont(foo-italic.ttf)is called beforeaddFont(foo.ttf), the font loader will loadfoo-italic.ttffirst and use that as the base font. When looking for the 'A' glyph, it may will look for the glyph only infoo-italic.ttf, which doesn't have it, and will show an incorrect empty placeholder glyph.Pre-launch Checklist
///).