servo/components
Andreu Botella 8ec5344f70
feat: Support font-relative ch and ic units (#32171)
* feat: Support font-relative `ch` and `ic` units

After #31966, which made it possible for the first time to resolve
font-relative CSS units, this change adds support for the `ch` and
`ic` units.

One difference with the `ex` unit that was added in that PR is that
these units must reflect the advance width of a character (the zero
digit in the case of `ch`, and the CJK water radical for `ic`) as it
would be rendered by the current font group. This means that the size
of these units don't only depend on the first available font, in the
case where that font does not contain a glyph for that character.

This is implemented by adding the advance width for these two
characters as optional fields of `FontMetrics`, so the advance width
computation happens in advance. Then, when the font metrics are
queried as part of unit resolution, the font group is searched for the
first font containing that character.

This change only implements support for these units in upright
typesetting modes, since Servo does not yet have support for vertical
writing modes. This means that many of the WPT tests that test for the
behavior of these units with vertical writing modes do not pass.

This change also makes a number of WPT tests pass, which relied on the
`ch` and `ic` units. It, however, also makes the test
`/css/css-text/white-space/text-wrap-balance-overflow-002.html` fail,
since it tests `text-wrap: balance`, which Servo does not yet
implement, and it was only previously passing by chance due to the
previous behavior of these units.

* Revert Python 3.10-related changes to wss

* Fix formatting

* Remove test expectation
2024-05-02 07:17:32 +00:00
..
allocator rustdoc: Add some basic Safety sections to unsafe functions (#31639) 2024-03-13 10:44:59 +00:00
background_hang_monitor fix: missing thread name when spawning (#31656) 2024-03-14 10:40:58 +00:00
bluetooth clippy: fix warnings in components/bluetooth (#31566) 2024-03-07 23:32:35 +00:00
canvas Simplify FontHandle and rename it to PlatformFont (#32101) 2024-04-17 17:44:34 +00:00
compositing fonts: Use FontInstanceFlags::EMBEDDED_BITMAPS for color fonts on MacOS (#32203) 2024-05-02 06:50:59 +00:00
config compositor: Remove the is_running_problem_test setting (#31589) 2024-03-09 02:29:43 +00:00
config_plugins clippy: fix warnings in components/config* (#31562) 2024-03-08 07:15:56 +00:00
constellation Update WebView variants of ConstellationMsg (#32163) 2024-04-29 07:59:52 +00:00
deny_public_fields Strict import formatting (grouping and granularity) (#30325) 2023-09-11 19:16:54 +00:00
devtools clippy: Allow too_many_arguments for existing functions (#31974) 2024-04-02 12:50:45 +00:00
dom_struct clippy: fix warnings in various modules in components (#31568) 2024-03-08 14:28:04 +00:00
domobject_derive clippy: fix warnings in various modules in components (#31568) 2024-03-08 14:28:04 +00:00
geometry dependencies: Upgrade to WebRender 0.64 (#31486) 2024-03-14 17:40:54 +00:00
gfx feat: Support font-relative ch and ic units (#32171) 2024-05-02 07:17:32 +00:00
hyper_serde clippy: fix warnings in various modules in components (#31568) 2024-03-08 14:28:04 +00:00
jstraceable_derive Update to syn 2 where possible (#30387) 2023-09-19 15:57:37 +00:00
layout Turn white-space into a shorthand (#32146) 2024-04-29 10:40:44 +00:00
layout_2020 layout: Ensure empty list items are at least as tall as outside markers (#32152) 2024-04-29 16:58:14 +00:00
layout_thread script: Include layout when collecting memory reports (#32204) 2024-05-01 09:35:46 +00:00
layout_thread_2020 feat: Support font-relative ch and ic units (#32171) 2024-05-02 07:17:32 +00:00
media clippy: fix result_unit_err warnings (#31791) 2024-03-21 12:51:45 +00:00
metrics clippy: Fix assorted warnings in components/ (#31628) 2024-03-13 08:31:58 +00:00
net Backout Host-header related change from #32024. (#32093) 2024-04-16 12:38:25 +00:00
pixels clippy: fix warnings in various modules in components (#31568) 2024-03-08 14:28:04 +00:00
profile clippy: fix warnings in various modules in components (#31568) 2024-03-08 14:28:04 +00:00
rand Fix clippy warnings in components/rand (#31549) 2024-03-07 23:16:42 +00:00
range clippy: fix warnings in various modules in components (#31568) 2024-03-08 14:28:04 +00:00
script script: Include layout when collecting memory reports (#32204) 2024-05-01 09:35:46 +00:00
servo fonts: Use FontInstanceFlags::EMBEDDED_BITMAPS for color fonts on MacOS (#32203) 2024-05-02 06:50:59 +00:00
shared fonts: Use FontInstanceFlags::EMBEDDED_BITMAPS for color fonts on MacOS (#32203) 2024-05-02 06:50:59 +00:00
url url: Only truncate data URLs for Debug (#32177) 2024-04-29 15:29:47 +00:00
webdriver_server clippy: Allow too_many_arguments for existing functions (#31974) 2024-04-02 12:50:45 +00:00
webgpu webgpu: Use safe callbacks & try_recv_timeout (#32008) 2024-04-30 11:47:57 +00:00