-
-
Notifications
You must be signed in to change notification settings - Fork 3.4k
fonts: Compute applied variations depending on originating @font-face rule
#40647
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
2acbf6a to
441ed93
Compare
mrobinson
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.
Sorry for the delay in reviewing. I really meant to get to this sooner. This looks good to me, apart from a few nit-picky things which I've outlined below. Great work!
components/fonts/font_context.rs
Outdated
| Stylesheet( | ||
| Box<FontFaceRuleInitiator>, | ||
| StylesheetWebFontLoadFinishedCallback, | ||
| ), |
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.
I think we shouldn't add an intermediate type here and just keep these separate for clarity:
| Stylesheet( | |
| Box<FontFaceRuleInitiator>, | |
| StylesheetWebFontLoadFinishedCallback, | |
| ), | |
| Stylesheet { | |
| stylesheet: DocumentStyleSheet, | |
| font_face_rule: FontFaceRule, | |
| callback: StylesheetWebFontLoadFinishedCallback, | |
| }, |
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.
That makes clippy unhappy because the two enum variants now have a great difference in size. We have to Box something. I'll try and make it a bit cleaner.
|
Thanks for the review ^^ |
441ed93 to
6de185a
Compare
6de185a to
80aabfe
Compare
|
80aabfe to
c761b39
Compare
c761b39 to
481f47a
Compare
|
🔨 Triggering try run (#19598489099) for Linux (Unit Tests, Build libservo, WPT, Bencher), Windows (Unit Tests, Build libservo), Android, OpenHarmony, Lint |
|
|
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
…rule Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
0188406 to
1df26eb
Compare
|
🔨 Triggering try run (#19599310713) for Linux (Unit Tests, Build libservo, WPT, Bencher), Windows (Unit Tests, Build libservo), Android, OpenHarmony, Lint |
|
| Branch | 40647/PR |
| Testbed | self-hosted-image:servo-ubuntu2204-bench |
⚠️ WARNING: No Threshold found!Without a Threshold, no Alerts will ever be generated.
- score (Measure (units))
- Throughput (operations / second (ops/s))
- File Size (bytes (B))
- Latency (nanoseconds (ns))
Click here to create a new Threshold
For more information, see the Threshold documentation.
To only post results if a Threshold exists, set the--ci-only-thresholdsflag.
Click to view all benchmark results
| Benchmark | File Size | megabytes (MB) | Latency | milliseconds (ms) | Throughput | operations / second (ops/s) | score | Measure (units) |
|---|---|---|---|---|---|---|---|---|
| linux-release | 📈 view plot | 204.19 MB | ||||||
| release/Dromaeo/dom | 📈 view plot | 739.58 ops/s | ||||||
| release/Dromaeo/dom-attr | 📈 view plot | 5,092.80 ops/s | ||||||
| release/Dromaeo/dom-attr/element_expando | 📈 view plot | 79,607.20 ops/s | ||||||
| release/Dromaeo/dom-attr/element_expando = value | 📈 view plot | 20,489.40 ops/s | ||||||
| release/Dromaeo/dom-attr/element_property | 📈 view plot | 21,585.00 ops/s | ||||||
| release/Dromaeo/dom-attr/element_property = value | 📈 view plot | 124.03 ops/s | ||||||
| release/Dromaeo/dom-attr/getAttribute | 📈 view plot | 43,476.40 ops/s | ||||||
| release/Dromaeo/dom-attr/setAttribute | 📈 view plot | 91.90 ops/s | ||||||
| release/Dromaeo/dom-modify | 📈 view plot | 94.63 ops/s | ||||||
| release/Dromaeo/dom-modify/appendChild | 📈 view plot | 47.73 ops/s | ||||||
| release/Dromaeo/dom-modify/cloneNode | 📈 view plot | 46.42 ops/s | ||||||
| release/Dromaeo/dom-modify/createElement | 📈 view plot | 519.91 ops/s | ||||||
| release/Dromaeo/dom-modify/createTextNode | 📈 view plot | 346.53 ops/s | ||||||
| release/Dromaeo/dom-modify/innerHTML | 📈 view plot | 13.51 ops/s | ||||||
| release/Dromaeo/dom-modify/insertBefore | 📈 view plot | 133.15 ops/s | ||||||
| release/Dromaeo/dom-query | 📈 view plot | 1,356.97 ops/s | ||||||
| release/Dromaeo/dom-query/getElementById | 📈 view plot | 536.28 ops/s | ||||||
| release/Dromaeo/dom-query/getElementById (not in document) | 📈 view plot | 651.88 ops/s | ||||||
| release/Dromaeo/dom-query/getElementsByName | 📈 view plot | 0.15 ops/s | ||||||
| release/Dromaeo/dom-query/getElementsByName (not in document) | 📈 view plot | 0.24 ops/s | ||||||
| release/Dromaeo/dom-query/getElementsByTagName (not in document) | 📈 view plot | 78,086.00 ops/s | ||||||
| release/Dromaeo/dom-query/getElementsByTagName(*) | 📈 view plot | 63,754.00 ops/s | ||||||
| release/Dromaeo/dom-query/getElementsByTagName(a) | 📈 view plot | 63,242.40 ops/s | ||||||
| release/Dromaeo/dom-query/getElementsByTagName(div) | 📈 view plot | 63,510.40 ops/s | ||||||
| release/Dromaeo/dom-query/getElementsByTagName(p) | 📈 view plot | 63,339.20 ops/s | ||||||
| release/Dromaeo/dom-traverse | 📈 view plot | 288.74 ops/s | ||||||
| release/Dromaeo/dom-traverse/childNodes | 📈 view plot | 216.98 ops/s | ||||||
| release/Dromaeo/dom-traverse/firstChild | 📈 view plot | 282.66 ops/s | ||||||
| release/Dromaeo/dom-traverse/lastChild | 📈 view plot | 132.39 ops/s | ||||||
| release/Dromaeo/dom-traverse/nextSibling | 📈 view plot | 493.20 ops/s | ||||||
| release/Dromaeo/dom-traverse/previousSibling | 📈 view plot | 501.10 ops/s | ||||||
| release/Speedometer/Charts-observable-plot | 📈 view plot | 103.39 ms | ||||||
| release/Speedometer/Charts-observable-plot/Dotted | 📈 view plot | 23.36 ms | ||||||
| release/Speedometer/Charts-observable-plot/Dotted/Async | 📈 view plot | 4.81 ms | ||||||
| release/Speedometer/Charts-observable-plot/Dotted/Sync | 📈 view plot | 18.55 ms | ||||||
| release/Speedometer/Charts-observable-plot/Stacked by 20 | 📈 view plot | 44.87 ms | ||||||
| release/Speedometer/Charts-observable-plot/Stacked by 20/Async | 📈 view plot | 8.52 ms | ||||||
| release/Speedometer/Charts-observable-plot/Stacked by 20/Sync | 📈 view plot | 36.35 ms | ||||||
| release/Speedometer/Charts-observable-plot/Stacked by 6 | 📈 view plot | 35.17 ms | ||||||
| release/Speedometer/Charts-observable-plot/Stacked by 6/Async | 📈 view plot | 4.00 ms | ||||||
| release/Speedometer/Charts-observable-plot/Stacked by 6/Sync | 📈 view plot | 31.17 ms | ||||||
| release/Speedometer/Geomean | 📈 view plot | 132.24 ms | ||||||
| release/Speedometer/Iteration-0-Total | 📈 view plot | 248.26 ms | ||||||
| release/Speedometer/Iteration-1-Total | 📈 view plot | 229.27 ms | ||||||
| release/Speedometer/Iteration-2-Total | 📈 view plot | 232.51 ms | ||||||
| release/Speedometer/Iteration-3-Total | 📈 view plot | 229.95 ms | ||||||
| release/Speedometer/Iteration-4-Total | 📈 view plot | 228.62 ms | ||||||
| release/Speedometer/Iteration-5-Total | 📈 view plot | 233.47 ms | ||||||
| release/Speedometer/Iteration-6-Total | 📈 view plot | 232.17 ms | ||||||
| release/Speedometer/Iteration-7-Total | 📈 view plot | 229.15 ms | ||||||
| release/Speedometer/Iteration-8-Total | 📈 view plot | 228.75 ms | ||||||
| release/Speedometer/Iteration-9-Total | 📈 view plot | 231.09 ms | ||||||
| release/Speedometer/Score | 📈 view plot | 7.57 units | ||||||
| release/Speedometer/TodoMVC-Angular | 📈 view plot | 101.84 ms | ||||||
| release/Speedometer/TodoMVC-Angular/Adding100Items | 📈 view plot | 61.18 ms | ||||||
| release/Speedometer/TodoMVC-Angular/Adding100Items/Async | 📈 view plot | 5.77 ms | ||||||
| release/Speedometer/TodoMVC-Angular/Adding100Items/Sync | 📈 view plot | 55.41 ms | ||||||
| release/Speedometer/TodoMVC-Angular/CompletingAllItems | 📈 view plot | 22.16 ms | ||||||
| release/Speedometer/TodoMVC-Angular/CompletingAllItems/Async | 📈 view plot | 5.91 ms | ||||||
| release/Speedometer/TodoMVC-Angular/CompletingAllItems/Sync | 📈 view plot | 16.25 ms | ||||||
| release/Speedometer/TodoMVC-Angular/DeletingAllItems | 📈 view plot | 18.50 ms | ||||||
| release/Speedometer/TodoMVC-Angular/DeletingAllItems/Async | 📈 view plot | 2.14 ms | ||||||
| release/Speedometer/TodoMVC-Angular/DeletingAllItems/Sync | 📈 view plot | 16.36 ms | ||||||
| release/Speedometer/TodoMVC-JavaScript-ES5 | 📈 view plot | 558.13 ms | ||||||
| release/Speedometer/TodoMVC-JavaScript-ES5/Adding100Items | 📈 view plot | 458.74 ms | ||||||
| release/Speedometer/TodoMVC-JavaScript-ES5/Adding100Items/Async | 📈 view plot | 16.34 ms | ||||||
| release/Speedometer/TodoMVC-JavaScript-ES5/Adding100Items/Sync | 📈 view plot | 442.40 ms | ||||||
| release/Speedometer/TodoMVC-JavaScript-ES5/CompletingAllItems | 📈 view plot | 60.34 ms | ||||||
| release/Speedometer/TodoMVC-JavaScript-ES5/CompletingAllItems/Async | 📈 view plot | 6.87 ms | ||||||
| release/Speedometer/TodoMVC-JavaScript-ES5/CompletingAllItems/Sync | 📈 view plot | 53.46 ms | ||||||
| release/Speedometer/TodoMVC-JavaScript-ES5/DeletingAllItems | 📈 view plot | 39.05 ms | ||||||
| release/Speedometer/TodoMVC-JavaScript-ES5/DeletingAllItems/Async | 📈 view plot | 2.22 ms | ||||||
| release/Speedometer/TodoMVC-JavaScript-ES5/DeletingAllItems/Sync | 📈 view plot | 36.84 ms | ||||||
| release/Speedometer/TodoMVC-JavaScript-ES6-Webpack | 📈 view plot | 792.88 ms | ||||||
| release/Speedometer/TodoMVC-JavaScript-ES6-Webpack/Adding100Items | 📈 view plot | 651.01 ms | ||||||
| release/Speedometer/TodoMVC-JavaScript-ES6-Webpack/Adding100Items/Async | 📈 view plot | 8.13 ms | ||||||
| release/Speedometer/TodoMVC-JavaScript-ES6-Webpack/Adding100Items/Sync | 📈 view plot | 642.87 ms | ||||||
| release/Speedometer/TodoMVC-JavaScript-ES6-Webpack/CompletingAllItems | 📈 view plot | 86.27 ms | ||||||
| release/Speedometer/TodoMVC-JavaScript-ES6-Webpack/CompletingAllItems/Async | 📈 view plot | 6.57 ms | ||||||
| release/Speedometer/TodoMVC-JavaScript-ES6-Webpack/CompletingAllItems/Sync | 📈 view plot | 79.70 ms | ||||||
| release/Speedometer/TodoMVC-JavaScript-ES6-Webpack/DeletingAllItems | 📈 view plot | 55.61 ms | ||||||
| release/Speedometer/TodoMVC-JavaScript-ES6-Webpack/DeletingAllItems/Async | 📈 view plot | 2.19 ms | ||||||
| release/Speedometer/TodoMVC-JavaScript-ES6-Webpack/DeletingAllItems/Sync | 📈 view plot | 53.42 ms | ||||||
| release/Speedometer/TodoMVC-Preact | 📈 view plot | 40.88 ms | ||||||
| release/Speedometer/TodoMVC-Preact/Adding100Items | 📈 view plot | 22.53 ms | ||||||
| release/Speedometer/TodoMVC-Preact/Adding100Items/Async | 📈 view plot | 19.11 ms | ||||||
| release/Speedometer/TodoMVC-Preact/Adding100Items/Sync | 📈 view plot | 3.42 ms | ||||||
| release/Speedometer/TodoMVC-Preact/CompletingAllItems | 📈 view plot | 12.69 ms | ||||||
| release/Speedometer/TodoMVC-Preact/CompletingAllItems/Async | 📈 view plot | 8.64 ms | ||||||
| release/Speedometer/TodoMVC-Preact/CompletingAllItems/Sync | 📈 view plot | 4.05 ms | ||||||
| release/Speedometer/TodoMVC-Preact/DeletingAllItems | 📈 view plot | 5.65 ms | ||||||
| release/Speedometer/TodoMVC-Preact/DeletingAllItems/Async | 📈 view plot | 3.98 ms | ||||||
| release/Speedometer/TodoMVC-Preact/DeletingAllItems/Sync | 📈 view plot | 1.67 ms | ||||||
| release/Speedometer/TodoMVC-React | 📈 view plot | 102.45 ms | ||||||
| release/Speedometer/TodoMVC-React-Redux | 📈 view plot | 117.90 ms | ||||||
| release/Speedometer/TodoMVC-React-Redux/Adding100Items | 📈 view plot | 54.50 ms | ||||||
| release/Speedometer/TodoMVC-React-Redux/Adding100Items/Async | 📈 view plot | 8.28 ms | ||||||
| release/Speedometer/TodoMVC-React-Redux/Adding100Items/Sync | 📈 view plot | 46.23 ms | ||||||
| release/Speedometer/TodoMVC-React-Redux/CompletingAllItems | 📈 view plot | 40.47 ms | ||||||
| release/Speedometer/TodoMVC-React-Redux/CompletingAllItems/Async | 📈 view plot | 7.38 ms | ||||||
| release/Speedometer/TodoMVC-React-Redux/CompletingAllItems/Sync | 📈 view plot | 33.09 ms | ||||||
| release/Speedometer/TodoMVC-React-Redux/DeletingAllItems | 📈 view plot | 22.92 ms | ||||||
| release/Speedometer/TodoMVC-React-Redux/DeletingAllItems/Async | 📈 view plot | 2.15 ms | ||||||
| release/Speedometer/TodoMVC-React-Redux/DeletingAllItems/Sync | 📈 view plot | 20.77 ms | ||||||
| release/Speedometer/TodoMVC-React/Adding100Items | 📈 view plot | 51.87 ms | ||||||
| release/Speedometer/TodoMVC-React/Adding100Items/Async | 📈 view plot | 7.11 ms | ||||||
| release/Speedometer/TodoMVC-React/Adding100Items/Sync | 📈 view plot | 44.76 ms | ||||||
| release/Speedometer/TodoMVC-React/CompletingAllItems | 📈 view plot | 31.50 ms | ||||||
| release/Speedometer/TodoMVC-React/CompletingAllItems/Async | 📈 view plot | 7.42 ms | ||||||
| release/Speedometer/TodoMVC-React/CompletingAllItems/Sync | 📈 view plot | 24.08 ms | ||||||
| release/Speedometer/TodoMVC-React/DeletingAllItems | 📈 view plot | 19.08 ms | ||||||
| release/Speedometer/TodoMVC-React/DeletingAllItems/Async | 📈 view plot | 2.24 ms | ||||||
| release/Speedometer/TodoMVC-React/DeletingAllItems/Sync | 📈 view plot | 16.84 ms | ||||||
| release/Speedometer/TodoMVC-Svelte | 📈 view plot | 41.13 ms | ||||||
| release/Speedometer/TodoMVC-Svelte/Adding100Items | 📈 view plot | 23.65 ms | ||||||
| release/Speedometer/TodoMVC-Svelte/Adding100Items/Async | 📈 view plot | 18.51 ms | ||||||
| release/Speedometer/TodoMVC-Svelte/Adding100Items/Sync | 📈 view plot | 5.15 ms | ||||||
| release/Speedometer/TodoMVC-Svelte/CompletingAllItems | 📈 view plot | 11.15 ms | ||||||
| release/Speedometer/TodoMVC-Svelte/CompletingAllItems/Async | 📈 view plot | 7.24 ms | ||||||
| release/Speedometer/TodoMVC-Svelte/CompletingAllItems/Sync | 📈 view plot | 3.91 ms | ||||||
| release/Speedometer/TodoMVC-Svelte/DeletingAllItems | 📈 view plot | 6.33 ms | ||||||
| release/Speedometer/TodoMVC-Svelte/DeletingAllItems/Async | 📈 view plot | 4.43 ms | ||||||
| release/Speedometer/TodoMVC-Svelte/DeletingAllItems/Sync | 📈 view plot | 1.90 ms |
|
Test results for linux-wpt from try job (#19599310713): Flaky unexpected result (29)
Stable unexpected results that are known to be intermittent (27)
Stable unexpected results (1)
|
|
|
…e` rule (#40647) This change gives the font selection code access to the data from the `@font-face` rule that defined the font - and uses it to apply `font-variation-settings` inside `@font-face` rules. Testing: We don't run wpt with `layout_variable_fonts_enabled=true` yet. I've attached a test case that is fixed by this PR. Part of #37236 <details><summary>Testcase</summary> ```html <!DOCTYPE html> <html lang="en"><head> <style> h1, h2, h3, h4, h5, h6 { font-family: 'Montserrat', sans-serif; } </style> <style> @font-face { font-family: 'Montserrat'; font-display: swap; font-variation-settings: "wght" 500; src: url(https://fonts.gstatic.com/s/montserrat/v30/JTUSjIg1_i6t8kCHKm459Wlhyw.woff2) format('woff2'); } </style> <h2>The hackfest</h2> </body></html> ``` </details> --------- Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
This change gives the font selection code access to the data from the
@font-facerule that defined the font - and uses it to applyfont-variation-settingsinside@font-facerules.Testing: We don't run wpt with
layout_variable_fonts_enabled=trueyet. I've attached a test case that is fixed by this PR.Part of #37236
Testcase