-
Notifications
You must be signed in to change notification settings - Fork 3.6k
[google_fonts] Fix file type priority in asset path lookup #10907
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
base: main
Are you sure you want to change the base?
Conversation
Follow-up to flutter#10703 which added WOFF/WOFF2 support for web. The previous implementation iterated through manifest assets first, then checked file extensions. This meant if a .ttf file appeared before a .woff2 file in the manifest, the .ttf would be selected even though .woff2 should be preferred on web. This fix inverts the loop order to iterate by file type priority first (woff2 > woff > ttf > otf on web), ensuring the preferred format is selected regardless of manifest order.
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.
Code Review
This pull request fixes a bug in how bundled font assets are selected. The logic in findFamilyWithVariantAssetPath has been changed to prioritize more optimized font formats (like WOFF2/WOFF on web) over others, regardless of their order in the asset manifest. This is achieved by iterating through a list of preferred file types first, then searching the manifest for a matching asset. The change is supported by an updated test to verify the new behavior, a version bump to 8.0.1, and a corresponding changelog entry.
guidezpl
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.
This is consistent with guidance on asset manifests which says that the order doesn't matter
██╗ ██████╗ ████████╗███╗ ███╗
██║ ██╔════╝ ╚══██╔══╝████╗ ████║
██║ ██║ ███╗ ██║ ██╔████╔██║
██║ ██║ ██║ ██║ ██║╚██╔╝██║
███████╗╚██████╔╝ ██║ ██║ ╚═╝ ██║
╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝
|
@Frank3K While waiting for the secondary review, the analyzer issue that's causing CI failures will need to be fixed before this can land. |
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.
This LGTM! Thank you! Once the failures in CI are addressed, we can land this. 👍
Description
Follow-up to #10703 which added WOFF/WOFF2 support for web.
The previous implementation iterated through manifest assets first, then checked file extensions. This meant if a
.ttffile appeared before a.woff2file in the manifest, the.ttfwould be selected even though.woff2should be preferred on web.This fix inverts the loop order to iterate by file type priority first (woff2 > woff > ttf > otf on web), ensuring the preferred format is selected regardless of manifest order.
While working on #10703 I already looked at the specific for-loop, but not immediately notice this might be an issue. For Flutter projects with web-only support it is not; one can just include the woff2 fonts only. But for cross-platform projects it is an issue. Sample from an
assets.gen.dartfile:With the old loop, the
.ttfwould be selected, even though a better alternative (the.woff2) is present.Pre-Review Checklist
[shared_preferences]pubspec.yamlwith an appropriate new version according to the pub versioning philosophy, or I have commented below to indicate which version change exemption this PR falls under1.CHANGELOG.mdto add a description of the change, following repository CHANGELOG style, or I have commented below to indicate which CHANGELOG exemption this PR falls under1.///).If you need help, consider asking for advice on the #hackers-new channel on Discord.
Note: The Flutter team is currently trialing the use of Gemini Code Assist for GitHub. Comments from the
gemini-code-assistbot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.Footnotes
Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling. ↩ ↩2 ↩3