fonts: Add support for WOFF2 and properly load web fonts from @imports (#31879)

This change also makes two fixes that are necessary to get WOFF2 fonts
working:

1. It adds support for loading web fonts from stylesheets included via
   @import rules.
2. It ensure that when web fonts are loaded synchronusly they invalidate
   the font cache. This led to incorrect font rendering when running
   tests before.

Fixes #31598.
This commit is contained in:
Martin Robinson 2024-03-26 21:31:52 +01:00 committed by GitHub
parent b55d0a2053
commit 8dece05980
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
100 changed files with 196 additions and 218 deletions

View file

@ -9,7 +9,6 @@ use malloc_size_of_derive::MallocSizeOf;
use msg::constellation_msg::BrowsingContextId;
use profile_traits::mem::ReportsChan;
use script_traits::{Painter, ScrollState, WindowSizeData};
use servo_arc::Arc as ServoArc;
use servo_atoms::Atom;
use servo_url::ImmutableOrigin;
use style::animation::DocumentAnimationSet;
@ -18,21 +17,12 @@ use style::dom::OpaqueNode;
use style::invalidation::element::restyle_hints::RestyleHint;
use style::properties::PropertyId;
use style::selector_parser::{PseudoElement, RestyleDamage, Snapshot};
use style::stylesheets::Stylesheet;
use crate::rpc::LayoutRPC;
use crate::{PendingImage, TrustedNodeAddress};
/// Asynchronous messages that script can send to layout.
pub enum Msg {
/// Adds the given stylesheet to the document. The second stylesheet is the
/// insertion point (if it exists, the sheet needs to be inserted before
/// it).
AddStylesheet(ServoArc<Stylesheet>, Option<ServoArc<Stylesheet>>),
/// Removes a stylesheet from the document.
RemoveStylesheet(ServoArc<Stylesheet>),
/// Change the quirks mode.
SetQuirksMode(QuirksMode),