| commit | 9f448d3f4e744d2b7de4d72929320e071934be79 | [log] [tgz] |
|---|---|---|
| author | Jonah Williams <[email protected]> | Tue May 28 06:08:05 2024 |
| committer | GitHub <[email protected]> | Tue May 28 06:08:05 2024 |
| tree | 5835641cf7ba58eb2c1bb0d81ec317ec99566bb4 | |
| parent | b1751088c7e98c217d8a1357ea8b76d9134b99b2 [diff] |
[Impeller] Use scaled font to determine bounds, match Skia position rounding behavior, add subpixel X/Y/All/None positioning. (#53042) Multiple fixes to text rendering that match skia behavior on almost all bugs I've found, except for the glyphs are still _slightly_ too fine for some CJK text. The fixes are: 1. Compute the gylph size in the typographer context, using text size * scale factor text, instead of computing smaller bounds and scaling it up. This was not accurate and as a result we would positon glyphs incorrect by multiple pixels sometimes, causing uneven rows. 2. Match Skia's rounding behavior. previously we were rounding in multiple places, Skia rounds once. This is important to prevent jumping. 3. Use 4 subpixel X positions for rendering. This is the big one that ensures the visible layout matches exactly. Adds support for Y, both, and none positioning too. I couldn't find any examples of just Y or both. Some fonts may specify that have no subpixel positioning. So we don't bother to compute it for those. Fixes https://github.com/flutter/flutter/issues/138386 / mostly, except slightly not bold enough. Fixes https://github.com/flutter/flutter/issues/147577 / mostly, except slightly not bold enough. Fixes https://github.com/flutter/flutter/issues/140475 Fixes https://github.com/flutter/flutter/issues/141467 Fixes https://github.com/flutter/flutter/issues/135523 Fixes https://github.com/flutter/flutter/issues/127815
Flutter is Google's SDK for crafting beautiful, fast user experiences for mobile, web, and desktop from a single codebase. Flutter works with existing code, is used by developers and organizations around the world, and is free and open source.
The Flutter Engine is a portable runtime for hosting Flutter applications. It implements Flutter's core libraries, including animation and graphics, file and network I/O, accessibility support, plugin architecture, and a Dart runtime and compile toolchain. Most developers will interact with Flutter via the Flutter Framework, which provides a modern, reactive framework, and a rich set of platform, layout and foundation widgets.
If you want to run/contribute to Flutter Web engine, more tooling can be found at felt. This is a tool written to make web engine development experience easy.
If you are new to Flutter, then you will find more general information on the Flutter project, including tutorials and samples, on our Web site at Flutter.dev. For specific information about Flutter's APIs, consider our API reference which can be found at the docs.flutter.dev.
Flutter is a fully open source project, and we welcome contributions. Information on how to get started can be found at our contributor guide.